]> scripts.mit.edu Git - autoinstalls/wordpress.git/commitdiff
Wordpress 3.5 wordpress-3.5
authorEdward Z. Yang <ezyang@mit.edu>
Fri, 14 Dec 2012 23:14:54 +0000 (15:14 -0800)
committerEdward Z. Yang <ezyang@mit.edu>
Fri, 14 Dec 2012 23:14:54 +0000 (15:14 -0800)
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
947 files changed:
readme.html
wp-activate.php
wp-admin/about.php
wp-admin/admin-ajax.php
wp-admin/admin-footer.php
wp-admin/admin-header.php
wp-admin/admin.php
wp-admin/async-upload.php
wp-admin/credits.php
wp-admin/css/color-picker-rtl.css [new file with mode: 0644]
wp-admin/css/color-picker-rtl.min.css [new file with mode: 0644]
wp-admin/css/color-picker.css [new file with mode: 0644]
wp-admin/css/color-picker.min.css [new file with mode: 0644]
wp-admin/css/colors-classic.css
wp-admin/css/colors-classic.dev.css [deleted file]
wp-admin/css/colors-classic.min.css [new file with mode: 0644]
wp-admin/css/colors-fresh.css
wp-admin/css/colors-fresh.dev.css [deleted file]
wp-admin/css/colors-fresh.min.css [new file with mode: 0644]
wp-admin/css/customize-controls-rtl.css
wp-admin/css/customize-controls-rtl.dev.css [deleted file]
wp-admin/css/customize-controls-rtl.min.css [new file with mode: 0644]
wp-admin/css/customize-controls.css
wp-admin/css/customize-controls.dev.css [deleted file]
wp-admin/css/customize-controls.min.css [new file with mode: 0644]
wp-admin/css/ie-rtl.css
wp-admin/css/ie-rtl.dev.css [deleted file]
wp-admin/css/ie-rtl.min.css [new file with mode: 0644]
wp-admin/css/ie.css
wp-admin/css/ie.dev.css [deleted file]
wp-admin/css/ie.min.css [new file with mode: 0644]
wp-admin/css/install.css
wp-admin/css/install.dev.css [deleted file]
wp-admin/css/install.min.css [new file with mode: 0644]
wp-admin/css/media-rtl.css
wp-admin/css/media-rtl.dev.css [deleted file]
wp-admin/css/media-rtl.min.css [new file with mode: 0644]
wp-admin/css/media.css
wp-admin/css/media.dev.css [deleted file]
wp-admin/css/media.min.css [new file with mode: 0644]
wp-admin/css/wp-admin-rtl.css
wp-admin/css/wp-admin-rtl.dev.css [deleted file]
wp-admin/css/wp-admin-rtl.min.css [new file with mode: 0644]
wp-admin/css/wp-admin.css
wp-admin/css/wp-admin.dev.css [deleted file]
wp-admin/css/wp-admin.min.css [new file with mode: 0644]
wp-admin/custom-background.php
wp-admin/custom-header.php
wp-admin/customize.php
wp-admin/edit-comments.php
wp-admin/edit-form-advanced.php
wp-admin/edit-form-comment.php
wp-admin/edit-link-form.php
wp-admin/edit-tag-form.php
wp-admin/edit-tags.php
wp-admin/edit.php
wp-admin/export.php
wp-admin/freedoms.php
wp-admin/gears-manifest.php [deleted file]
wp-admin/images/align-center-2x.png [new file with mode: 0644]
wp-admin/images/align-center.png
wp-admin/images/align-left-2x.png [new file with mode: 0644]
wp-admin/images/align-left.png
wp-admin/images/align-none-2x.png [new file with mode: 0644]
wp-admin/images/align-none.png
wp-admin/images/align-right-2x.png [new file with mode: 0644]
wp-admin/images/align-right.png
wp-admin/images/archive-link.png [deleted file]
wp-admin/images/arrows-2x.png [new file with mode: 0644]
wp-admin/images/arrows-dark-2x.png [new file with mode: 0644]
wp-admin/images/arrows-dark-vs-2x.png [new file with mode: 0644]
wp-admin/images/arrows-dark-vs.png
wp-admin/images/arrows-dark.png
wp-admin/images/arrows-vs-2x.png [new file with mode: 0644]
wp-admin/images/arrows-vs.png
wp-admin/images/arrows.png
wp-admin/images/blue-grad.png [deleted file]
wp-admin/images/bubble_bg-2x.gif [new file with mode: 0644]
wp-admin/images/bubble_bg-rtl-2x.gif [new file with mode: 0644]
wp-admin/images/button-grad-active.png [deleted file]
wp-admin/images/button-grad.png [deleted file]
wp-admin/images/comment-grey-bubble-2x.png [new file with mode: 0644]
wp-admin/images/comment-grey-bubble.png
wp-admin/images/date-button-2x.gif [new file with mode: 0644]
wp-admin/images/date-button.gif
wp-admin/images/ed-bg-vs.gif [deleted file]
wp-admin/images/ed-bg.gif [deleted file]
wp-admin/images/fade-butt.png [deleted file]
wp-admin/images/fav-arrow-rtl.gif [deleted file]
wp-admin/images/fav-arrow.gif [deleted file]
wp-admin/images/fav-vs.png [deleted file]
wp-admin/images/fav.png [deleted file]
wp-admin/images/generic.png
wp-admin/images/gray-grad.png [deleted file]
wp-admin/images/icons32-2x.png
wp-admin/images/icons32-vs-2x.png
wp-admin/images/icons32-vs.png
wp-admin/images/icons32.png
wp-admin/images/imgedit-icons-2x.png [new file with mode: 0644]
wp-admin/images/imgedit-icons.png
wp-admin/images/list-2x.png [new file with mode: 0644]
wp-admin/images/list.png
wp-admin/images/loading-publish.gif [deleted file]
wp-admin/images/logo-ghost.png [deleted file]
wp-admin/images/logo.gif [deleted file]
wp-admin/images/marker.png
wp-admin/images/mask.png
wp-admin/images/media-button-2x.png [new file with mode: 0644]
wp-admin/images/media-button.png
wp-admin/images/menu-2x.png
wp-admin/images/menu-arrow-frame-rtl.png [deleted file]
wp-admin/images/menu-arrow-frame.png [deleted file]
wp-admin/images/menu-arrows.gif [deleted file]
wp-admin/images/menu-bits-rtl-vs.gif [deleted file]
wp-admin/images/menu-bits-rtl.gif [deleted file]
wp-admin/images/menu-bits-vs.gif [deleted file]
wp-admin/images/menu-bits.gif [deleted file]
wp-admin/images/menu-dark-rtl-vs.gif [deleted file]
wp-admin/images/menu-dark-rtl.gif [deleted file]
wp-admin/images/menu-dark-vs.gif [deleted file]
wp-admin/images/menu-dark.gif [deleted file]
wp-admin/images/menu-shadow-rtl.png
wp-admin/images/menu-shadow.png
wp-admin/images/menu-vs-2x.png [new file with mode: 0644]
wp-admin/images/menu-vs.png
wp-admin/images/menu.png
wp-admin/images/no.png
wp-admin/images/press-this-2x.png [new file with mode: 0644]
wp-admin/images/press-this.png
wp-admin/images/required.gif [deleted file]
wp-admin/images/resize-2x.gif [new file with mode: 0644]
wp-admin/images/resize-rtl-2x.gif [new file with mode: 0644]
wp-admin/images/screen-options-toggle-vs.gif [deleted file]
wp-admin/images/screen-options-toggle.gif [deleted file]
wp-admin/images/screenshots/about-color-picker.png [new file with mode: 0644]
wp-admin/images/screenshots/about-media.png [new file with mode: 0644]
wp-admin/images/screenshots/about-retina.png [new file with mode: 0644]
wp-admin/images/screenshots/about-twenty-twelve.png [new file with mode: 0644]
wp-admin/images/screenshots/captions-1.png [deleted file]
wp-admin/images/screenshots/captions-2.png [deleted file]
wp-admin/images/screenshots/flex-header-1.png [deleted file]
wp-admin/images/screenshots/flex-header-2.png [deleted file]
wp-admin/images/screenshots/flex-header-3.png [deleted file]
wp-admin/images/screenshots/flex-header-media-library.png [deleted file]
wp-admin/images/screenshots/theme-customizer.png [deleted file]
wp-admin/images/screenshots/twitter-embed-1.png [deleted file]
wp-admin/images/screenshots/twitter-embed-2.png [deleted file]
wp-admin/images/se.png
wp-admin/images/sort-2x.gif [new file with mode: 0644]
wp-admin/images/stars-2x.png [new file with mode: 0644]
wp-admin/images/stars-rtl-2x.png [new file with mode: 0644]
wp-admin/images/stars-rtl.png
wp-admin/images/stars.png
wp-admin/images/toggle-arrow-rtl.gif [deleted file]
wp-admin/images/toggle-arrow.gif [deleted file]
wp-admin/images/upload-classic.png [deleted file]
wp-admin/images/upload-fresh.png [deleted file]
wp-admin/images/welcome-icons-2x.png [new file with mode: 0644]
wp-admin/images/welcome-icons.png [new file with mode: 0644]
wp-admin/images/wheel.png
wp-admin/images/white-grad-active.png [deleted file]
wp-admin/images/white-grad.png [deleted file]
wp-admin/images/widgets-arrow-vs.gif [deleted file]
wp-admin/images/widgets-arrow.gif [deleted file]
wp-admin/images/wordpress-logo.png
wp-admin/images/wp-badge.png
wp-admin/images/wp-logo-2x.png [new file with mode: 0644]
wp-admin/images/wp-logo-vs-2x.png [new file with mode: 0644]
wp-admin/images/wp-logo-vs.png
wp-admin/images/wp-logo.png
wp-admin/images/wpspin_dark.gif [deleted file]
wp-admin/images/wpspin_light-2x.gif [new file with mode: 0644]
wp-admin/images/xit-2x.gif [new file with mode: 0644]
wp-admin/images/yes.png
wp-admin/import.php
wp-admin/includes/ajax-actions.php
wp-admin/includes/bookmark.php
wp-admin/includes/class-wp-comments-list-table.php
wp-admin/includes/class-wp-filesystem-base.php
wp-admin/includes/class-wp-filesystem-ftpext.php
wp-admin/includes/class-wp-filesystem-ftpsockets.php
wp-admin/includes/class-wp-importer.php
wp-admin/includes/class-wp-links-list-table.php
wp-admin/includes/class-wp-list-table.php
wp-admin/includes/class-wp-media-list-table.php
wp-admin/includes/class-wp-ms-sites-list-table.php
wp-admin/includes/class-wp-ms-themes-list-table.php
wp-admin/includes/class-wp-ms-users-list-table.php
wp-admin/includes/class-wp-plugin-install-list-table.php
wp-admin/includes/class-wp-plugins-list-table.php
wp-admin/includes/class-wp-posts-list-table.php
wp-admin/includes/class-wp-terms-list-table.php
wp-admin/includes/class-wp-theme-install-list-table.php
wp-admin/includes/class-wp-themes-list-table.php
wp-admin/includes/class-wp-upgrader.php
wp-admin/includes/class-wp-users-list-table.php
wp-admin/includes/dashboard.php
wp-admin/includes/deprecated.php
wp-admin/includes/export.php
wp-admin/includes/file.php
wp-admin/includes/image-edit.php
wp-admin/includes/image.php
wp-admin/includes/import.php
wp-admin/includes/list-table.php
wp-admin/includes/manifest.php [deleted file]
wp-admin/includes/media.php
wp-admin/includes/meta-boxes.php
wp-admin/includes/misc.php
wp-admin/includes/ms-deprecated.php
wp-admin/includes/ms.php
wp-admin/includes/nav-menu.php
wp-admin/includes/plugin-install.php
wp-admin/includes/plugin.php
wp-admin/includes/post.php
wp-admin/includes/schema.php
wp-admin/includes/screen.php
wp-admin/includes/template.php
wp-admin/includes/theme-install.php
wp-admin/includes/theme.php
wp-admin/includes/update-core.php
wp-admin/includes/update.php
wp-admin/includes/upgrade.php
wp-admin/includes/user.php
wp-admin/includes/widgets.php
wp-admin/index.php
wp-admin/install.php
wp-admin/js/cat.dev.js [deleted file]
wp-admin/js/cat.js
wp-admin/js/cat.min.js [new file with mode: 0644]
wp-admin/js/categories.dev.js [deleted file]
wp-admin/js/categories.js
wp-admin/js/categories.min.js [new file with mode: 0644]
wp-admin/js/color-picker.js [new file with mode: 0644]
wp-admin/js/color-picker.min.js [new file with mode: 0644]
wp-admin/js/comment.dev.js [deleted file]
wp-admin/js/comment.js
wp-admin/js/comment.min.js [new file with mode: 0644]
wp-admin/js/common.dev.js [deleted file]
wp-admin/js/common.js
wp-admin/js/common.min.js [new file with mode: 0644]
wp-admin/js/custom-background.dev.js [deleted file]
wp-admin/js/custom-background.js
wp-admin/js/custom-background.min.js [new file with mode: 0644]
wp-admin/js/custom-fields.dev.js [deleted file]
wp-admin/js/custom-fields.js
wp-admin/js/custom-fields.min.js [new file with mode: 0644]
wp-admin/js/custom-header.js [new file with mode: 0644]
wp-admin/js/customize-controls.dev.js [deleted file]
wp-admin/js/customize-controls.js
wp-admin/js/customize-controls.min.js [new file with mode: 0644]
wp-admin/js/dashboard.dev.js [deleted file]
wp-admin/js/dashboard.js
wp-admin/js/dashboard.min.js [new file with mode: 0644]
wp-admin/js/edit-comments.dev.js [deleted file]
wp-admin/js/edit-comments.js
wp-admin/js/edit-comments.min.js [new file with mode: 0644]
wp-admin/js/editor.dev.js [deleted file]
wp-admin/js/editor.js
wp-admin/js/editor.min.js [new file with mode: 0644]
wp-admin/js/gallery.dev.js [deleted file]
wp-admin/js/gallery.js
wp-admin/js/gallery.min.js [new file with mode: 0644]
wp-admin/js/image-edit.dev.js [deleted file]
wp-admin/js/image-edit.js
wp-admin/js/image-edit.min.js [new file with mode: 0644]
wp-admin/js/inline-edit-post.dev.js [deleted file]
wp-admin/js/inline-edit-post.js
wp-admin/js/inline-edit-post.min.js [new file with mode: 0644]
wp-admin/js/inline-edit-tax.dev.js [deleted file]
wp-admin/js/inline-edit-tax.js
wp-admin/js/inline-edit-tax.min.js [new file with mode: 0644]
wp-admin/js/iris.min.js [new file with mode: 0644]
wp-admin/js/link.dev.js [deleted file]
wp-admin/js/link.js
wp-admin/js/link.min.js [new file with mode: 0644]
wp-admin/js/media-gallery.dev.js [deleted file]
wp-admin/js/media-gallery.js
wp-admin/js/media-gallery.min.js [new file with mode: 0644]
wp-admin/js/media-upload.dev.js [deleted file]
wp-admin/js/media-upload.js
wp-admin/js/media-upload.min.js [new file with mode: 0644]
wp-admin/js/media.dev.js [deleted file]
wp-admin/js/media.js
wp-admin/js/media.min.js [new file with mode: 0644]
wp-admin/js/nav-menu.dev.js [deleted file]
wp-admin/js/nav-menu.js
wp-admin/js/nav-menu.min.js [new file with mode: 0644]
wp-admin/js/password-strength-meter.dev.js [deleted file]
wp-admin/js/password-strength-meter.js
wp-admin/js/password-strength-meter.min.js [new file with mode: 0644]
wp-admin/js/plugin-install.dev.js [deleted file]
wp-admin/js/plugin-install.js
wp-admin/js/plugin-install.min.js [new file with mode: 0644]
wp-admin/js/post.dev.js [deleted file]
wp-admin/js/post.js
wp-admin/js/post.min.js [new file with mode: 0644]
wp-admin/js/postbox.dev.js [deleted file]
wp-admin/js/postbox.js
wp-admin/js/postbox.min.js [new file with mode: 0644]
wp-admin/js/set-post-thumbnail.dev.js [deleted file]
wp-admin/js/set-post-thumbnail.js
wp-admin/js/set-post-thumbnail.min.js [new file with mode: 0644]
wp-admin/js/tags.dev.js [deleted file]
wp-admin/js/tags.js
wp-admin/js/tags.min.js [new file with mode: 0644]
wp-admin/js/theme-preview.dev.js [deleted file]
wp-admin/js/theme-preview.js
wp-admin/js/theme-preview.min.js [new file with mode: 0644]
wp-admin/js/theme.dev.js [deleted file]
wp-admin/js/theme.js
wp-admin/js/theme.min.js [new file with mode: 0644]
wp-admin/js/user-profile.dev.js [deleted file]
wp-admin/js/user-profile.js
wp-admin/js/user-profile.min.js [new file with mode: 0644]
wp-admin/js/user-suggest.dev.js [deleted file]
wp-admin/js/user-suggest.js
wp-admin/js/user-suggest.min.js [new file with mode: 0644]
wp-admin/js/widgets.dev.js [deleted file]
wp-admin/js/widgets.js
wp-admin/js/widgets.min.js [new file with mode: 0644]
wp-admin/js/word-count.dev.js [deleted file]
wp-admin/js/word-count.js
wp-admin/js/word-count.min.js [new file with mode: 0644]
wp-admin/js/wp-fullscreen.dev.js [deleted file]
wp-admin/js/wp-fullscreen.js
wp-admin/js/wp-fullscreen.min.js [new file with mode: 0644]
wp-admin/js/xfn.dev.js [deleted file]
wp-admin/js/xfn.js
wp-admin/js/xfn.min.js [new file with mode: 0644]
wp-admin/link.php
wp-admin/load-scripts.php
wp-admin/load-styles.php
wp-admin/maint/repair.php
wp-admin/media-new.php
wp-admin/media-upload.php
wp-admin/menu-header.php
wp-admin/menu.php
wp-admin/ms-delete-site.php
wp-admin/nav-menus.php
wp-admin/network.php
wp-admin/network/menu.php
wp-admin/network/settings.php
wp-admin/network/site-info.php
wp-admin/network/site-new.php
wp-admin/network/site-themes.php
wp-admin/network/site-users.php
wp-admin/network/sites.php
wp-admin/network/themes.php
wp-admin/network/upgrade.php
wp-admin/network/users.php
wp-admin/options-discussion.php
wp-admin/options-general.php
wp-admin/options-media.php
wp-admin/options-permalink.php
wp-admin/options-privacy.php [deleted file]
wp-admin/options-reading.php
wp-admin/options-writing.php
wp-admin/options.php
wp-admin/plugin-editor.php
wp-admin/plugin-install.php
wp-admin/plugins.php
wp-admin/post-new.php
wp-admin/post.php
wp-admin/press-this.php
wp-admin/setup-config.php
wp-admin/theme-editor.php
wp-admin/theme-install.php
wp-admin/themes.php
wp-admin/update-core.php
wp-admin/update.php
wp-admin/upgrade.php
wp-admin/upload.php
wp-admin/user-edit.php
wp-admin/user-new.php
wp-admin/users.php
wp-admin/widgets.php
wp-app.php [deleted file]
wp-content/themes/twentyeleven/colors/dark.css
wp-content/themes/twentyeleven/comments.php
wp-content/themes/twentyeleven/content-aside.php
wp-content/themes/twentyeleven/content-featured.php
wp-content/themes/twentyeleven/content-gallery.php
wp-content/themes/twentyeleven/content-image.php
wp-content/themes/twentyeleven/content-link.php
wp-content/themes/twentyeleven/content-quote.php
wp-content/themes/twentyeleven/content-status.php
wp-content/themes/twentyeleven/content.php
wp-content/themes/twentyeleven/editor-style.css
wp-content/themes/twentyeleven/footer.php
wp-content/themes/twentyeleven/functions.php
wp-content/themes/twentyeleven/images/comment-bubble-dark-rtl.png
wp-content/themes/twentyeleven/images/comment-bubble-dark.png
wp-content/themes/twentyeleven/images/comment-bubble-rtl.png
wp-content/themes/twentyeleven/images/comment-bubble.png
wp-content/themes/twentyeleven/images/headers/chessboard.jpg
wp-content/themes/twentyeleven/images/headers/hanoi.jpg
wp-content/themes/twentyeleven/images/headers/lanterns-thumbnail.jpg
wp-content/themes/twentyeleven/images/headers/lanterns.jpg
wp-content/themes/twentyeleven/images/headers/pine-cone.jpg
wp-content/themes/twentyeleven/images/headers/shore.jpg
wp-content/themes/twentyeleven/images/headers/trolley.jpg
wp-content/themes/twentyeleven/images/headers/wheel.jpg
wp-content/themes/twentyeleven/images/headers/willow.jpg
wp-content/themes/twentyeleven/images/search.png
wp-content/themes/twentyeleven/inc/images/content-sidebar.png
wp-content/themes/twentyeleven/inc/images/content.png
wp-content/themes/twentyeleven/inc/images/dark.png
wp-content/themes/twentyeleven/inc/images/light.png
wp-content/themes/twentyeleven/inc/images/sidebar-content.png
wp-content/themes/twentyeleven/inc/widgets.php
wp-content/themes/twentyeleven/js/html5.js
wp-content/themes/twentyeleven/languages/twentyeleven.pot
wp-content/themes/twentyeleven/screenshot.png
wp-content/themes/twentyeleven/showcase.php
wp-content/themes/twentyeleven/single.php
wp-content/themes/twentyeleven/style.css
wp-content/themes/twentyten/404.php [deleted file]
wp-content/themes/twentyten/archive.php [deleted file]
wp-content/themes/twentyten/attachment.php [deleted file]
wp-content/themes/twentyten/author.php [deleted file]
wp-content/themes/twentyten/category.php [deleted file]
wp-content/themes/twentyten/comments.php [deleted file]
wp-content/themes/twentyten/editor-style-rtl.css [deleted file]
wp-content/themes/twentyten/editor-style.css [deleted file]
wp-content/themes/twentyten/footer.php [deleted file]
wp-content/themes/twentyten/functions.php [deleted file]
wp-content/themes/twentyten/header.php [deleted file]
wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/berries.jpg [deleted file]
wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/cherryblossoms.jpg [deleted file]
wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/concave.jpg [deleted file]
wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/fern.jpg [deleted file]
wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/forestfloor.jpg [deleted file]
wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/inkwell.jpg [deleted file]
wp-content/themes/twentyten/images/headers/path-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/path.jpg [deleted file]
wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg [deleted file]
wp-content/themes/twentyten/images/headers/sunset.jpg [deleted file]
wp-content/themes/twentyten/images/wordpress.png [deleted file]
wp-content/themes/twentyten/index.php [deleted file]
wp-content/themes/twentyten/languages/twentyten.pot [deleted file]
wp-content/themes/twentyten/license.txt [deleted file]
wp-content/themes/twentyten/loop-attachment.php [deleted file]
wp-content/themes/twentyten/loop-page.php [deleted file]
wp-content/themes/twentyten/loop-single.php [deleted file]
wp-content/themes/twentyten/loop.php [deleted file]
wp-content/themes/twentyten/onecolumn-page.php [deleted file]
wp-content/themes/twentyten/page.php [deleted file]
wp-content/themes/twentyten/rtl.css [deleted file]
wp-content/themes/twentyten/screenshot.png [deleted file]
wp-content/themes/twentyten/search.php [deleted file]
wp-content/themes/twentyten/sidebar-footer.php [deleted file]
wp-content/themes/twentyten/sidebar.php [deleted file]
wp-content/themes/twentyten/single.php [deleted file]
wp-content/themes/twentyten/style.css [deleted file]
wp-content/themes/twentyten/tag.php [deleted file]
wp-content/themes/twentytwelve/404.php [new file with mode: 0644]
wp-content/themes/twentytwelve/archive.php [new file with mode: 0644]
wp-content/themes/twentytwelve/author.php [new file with mode: 0644]
wp-content/themes/twentytwelve/category.php [new file with mode: 0644]
wp-content/themes/twentytwelve/comments.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-aside.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-image.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-link.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-none.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-page.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-quote.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content-status.php [new file with mode: 0644]
wp-content/themes/twentytwelve/content.php [new file with mode: 0644]
wp-content/themes/twentytwelve/css/ie.css [new file with mode: 0644]
wp-content/themes/twentytwelve/editor-style-rtl.css [new file with mode: 0644]
wp-content/themes/twentytwelve/editor-style.css [new file with mode: 0644]
wp-content/themes/twentytwelve/footer.php [new file with mode: 0644]
wp-content/themes/twentytwelve/functions.php [new file with mode: 0644]
wp-content/themes/twentytwelve/header.php [new file with mode: 0644]
wp-content/themes/twentytwelve/image.php [new file with mode: 0644]
wp-content/themes/twentytwelve/inc/custom-header.php [new file with mode: 0644]
wp-content/themes/twentytwelve/index.php [new file with mode: 0644]
wp-content/themes/twentytwelve/js/html5.js [new file with mode: 0644]
wp-content/themes/twentytwelve/js/navigation.js [new file with mode: 0644]
wp-content/themes/twentytwelve/js/theme-customizer.js [new file with mode: 0644]
wp-content/themes/twentytwelve/languages/twentytwelve.pot [new file with mode: 0644]
wp-content/themes/twentytwelve/page-templates/front-page.php [new file with mode: 0644]
wp-content/themes/twentytwelve/page-templates/full-width.php [new file with mode: 0644]
wp-content/themes/twentytwelve/page.php [new file with mode: 0644]
wp-content/themes/twentytwelve/rtl.css [new file with mode: 0644]
wp-content/themes/twentytwelve/screenshot.png [new file with mode: 0644]
wp-content/themes/twentytwelve/search.php [new file with mode: 0644]
wp-content/themes/twentytwelve/sidebar-front.php [new file with mode: 0644]
wp-content/themes/twentytwelve/sidebar.php [new file with mode: 0644]
wp-content/themes/twentytwelve/single.php [new file with mode: 0644]
wp-content/themes/twentytwelve/style.css [new file with mode: 0644]
wp-content/themes/twentytwelve/tag.php [new file with mode: 0644]
wp-cron.php
wp-includes/SimplePie/Author.php [new file with mode: 0644]
wp-includes/SimplePie/Cache.php [new file with mode: 0644]
wp-includes/SimplePie/Cache/Base.php [new file with mode: 0644]
wp-includes/SimplePie/Cache/DB.php [new file with mode: 0644]
wp-includes/SimplePie/Cache/File.php [new file with mode: 0644]
wp-includes/SimplePie/Cache/Memcache.php [new file with mode: 0644]
wp-includes/SimplePie/Cache/MySQL.php [new file with mode: 0644]
wp-includes/SimplePie/Caption.php [new file with mode: 0644]
wp-includes/SimplePie/Category.php [new file with mode: 0644]
wp-includes/SimplePie/Content/Type/Sniffer.php [new file with mode: 0644]
wp-includes/SimplePie/Copyright.php [new file with mode: 0644]
wp-includes/SimplePie/Core.php [new file with mode: 0644]
wp-includes/SimplePie/Credit.php [new file with mode: 0644]
wp-includes/SimplePie/Decode/HTML/Entities.php [new file with mode: 0644]
wp-includes/SimplePie/Enclosure.php [new file with mode: 0644]
wp-includes/SimplePie/Exception.php [new file with mode: 0644]
wp-includes/SimplePie/File.php [new file with mode: 0644]
wp-includes/SimplePie/HTTP/Parser.php [new file with mode: 0644]
wp-includes/SimplePie/IRI.php [new file with mode: 0644]
wp-includes/SimplePie/Item.php [new file with mode: 0644]
wp-includes/SimplePie/Locator.php [new file with mode: 0644]
wp-includes/SimplePie/Misc.php [new file with mode: 0644]
wp-includes/SimplePie/Net/IPv6.php [new file with mode: 0644]
wp-includes/SimplePie/Parse/Date.php [new file with mode: 0644]
wp-includes/SimplePie/Parser.php [new file with mode: 0644]
wp-includes/SimplePie/Rating.php [new file with mode: 0644]
wp-includes/SimplePie/Registry.php [new file with mode: 0644]
wp-includes/SimplePie/Restriction.php [new file with mode: 0644]
wp-includes/SimplePie/Sanitize.php [new file with mode: 0644]
wp-includes/SimplePie/Source.php [new file with mode: 0644]
wp-includes/SimplePie/XML/Declaration/Parser.php [new file with mode: 0644]
wp-includes/SimplePie/gzdecode.php [new file with mode: 0644]
wp-includes/admin-bar.php
wp-includes/author-template.php
wp-includes/bookmark-template.php
wp-includes/bookmark.php
wp-includes/cache.php
wp-includes/canonical.php
wp-includes/capabilities.php
wp-includes/category-template.php
wp-includes/category.php
wp-includes/class-IXR.php
wp-includes/class-feed.php
wp-includes/class-http.php
wp-includes/class-oembed.php
wp-includes/class-simplepie.php
wp-includes/class-wp-admin-bar.php
wp-includes/class-wp-ajax-response.php
wp-includes/class-wp-atom-server.php [deleted file]
wp-includes/class-wp-customize-control.php
wp-includes/class-wp-customize-manager.php
wp-includes/class-wp-customize-section.php
wp-includes/class-wp-customize-setting.php
wp-includes/class-wp-editor.php
wp-includes/class-wp-embed.php [new file with mode: 0644]
wp-includes/class-wp-image-editor-gd.php [new file with mode: 0644]
wp-includes/class-wp-image-editor-imagick.php [new file with mode: 0644]
wp-includes/class-wp-image-editor.php [new file with mode: 0644]
wp-includes/class-wp-theme.php
wp-includes/class-wp-walker.php
wp-includes/class-wp-xmlrpc-server.php
wp-includes/class-wp.php
wp-includes/class.wp-dependencies.php
wp-includes/class.wp-scripts.php
wp-includes/class.wp-styles.php
wp-includes/comment-template.php
wp-includes/comment.php
wp-includes/cron.php
wp-includes/css/admin-bar-rtl.css
wp-includes/css/admin-bar-rtl.dev.css [deleted file]
wp-includes/css/admin-bar-rtl.min.css [new file with mode: 0644]
wp-includes/css/admin-bar.css
wp-includes/css/admin-bar.dev.css [deleted file]
wp-includes/css/admin-bar.min.css [new file with mode: 0644]
wp-includes/css/buttons.css [new file with mode: 0644]
wp-includes/css/buttons.min.css [new file with mode: 0644]
wp-includes/css/editor.css
wp-includes/css/editor.dev.css [deleted file]
wp-includes/css/editor.min.css [new file with mode: 0644]
wp-includes/css/jquery-ui-dialog.css
wp-includes/css/jquery-ui-dialog.dev.css [deleted file]
wp-includes/css/jquery-ui-dialog.min.css [new file with mode: 0644]
wp-includes/css/media-views-rtl.css [new file with mode: 0644]
wp-includes/css/media-views-rtl.min.css [new file with mode: 0644]
wp-includes/css/media-views.css [new file with mode: 0644]
wp-includes/css/media-views.min.css [new file with mode: 0644]
wp-includes/css/wp-pointer.css
wp-includes/css/wp-pointer.dev.css [deleted file]
wp-includes/css/wp-pointer.min.css [new file with mode: 0644]
wp-includes/default-constants.php
wp-includes/default-filters.php
wp-includes/default-widgets.php
wp-includes/deprecated.php
wp-includes/feed-atom-comments.php
wp-includes/feed-atom.php
wp-includes/feed-rss2-comments.php
wp-includes/feed-rss2.php
wp-includes/feed.php
wp-includes/formatting.php
wp-includes/functions.php
wp-includes/functions.wp-scripts.php
wp-includes/functions.wp-styles.php
wp-includes/general-template.php
wp-includes/http.php
wp-includes/images/admin-bar-sprite-2x.png
wp-includes/images/admin-bar-sprite.png
wp-includes/images/arrow-pointer-blue-2x.png [new file with mode: 0644]
wp-includes/images/arrow-pointer-blue.png
wp-includes/images/crystal/archive.png
wp-includes/images/crystal/audio.png
wp-includes/images/crystal/code.png
wp-includes/images/crystal/default.png
wp-includes/images/crystal/document.png
wp-includes/images/crystal/interactive.png
wp-includes/images/crystal/spreadsheet.png
wp-includes/images/crystal/text.png
wp-includes/images/crystal/video.png
wp-includes/images/down_arrow-2x.gif [new file with mode: 0644]
wp-includes/images/icon-pointer-flag-2x.png [new file with mode: 0644]
wp-includes/images/rss-2x.png [new file with mode: 0644]
wp-includes/images/rss.png
wp-includes/images/toggle-arrow-2x.png [new file with mode: 0644]
wp-includes/images/toggle-arrow.png
wp-includes/images/upload.png [deleted file]
wp-includes/images/uploader-icons-2x.png [new file with mode: 0644]
wp-includes/images/uploader-icons.png [new file with mode: 0644]
wp-includes/images/wlw/wp-comments.png
wp-includes/images/wlw/wp-icon.png
wp-includes/images/wlw/wp-watermark.png
wp-includes/images/wpicons-2x.png [new file with mode: 0644]
wp-includes/images/wpicons.png
wp-includes/images/wpmini-blue-2x.png [new file with mode: 0644]
wp-includes/images/wpmini-blue.png
wp-includes/images/wpspin-2x.gif [new file with mode: 0644]
wp-includes/images/wpspin.gif [new file with mode: 0644]
wp-includes/images/xit-2x.gif [new file with mode: 0644]
wp-includes/js/admin-bar.dev.js [deleted file]
wp-includes/js/admin-bar.js
wp-includes/js/admin-bar.min.js [new file with mode: 0644]
wp-includes/js/autosave.dev.js [deleted file]
wp-includes/js/autosave.js
wp-includes/js/autosave.min.js [new file with mode: 0644]
wp-includes/js/backbone.min.js [new file with mode: 0644]
wp-includes/js/colorpicker.dev.js [deleted file]
wp-includes/js/colorpicker.js
wp-includes/js/colorpicker.min.js [new file with mode: 0644]
wp-includes/js/comment-reply.dev.js [deleted file]
wp-includes/js/comment-reply.js
wp-includes/js/comment-reply.min.js [new file with mode: 0644]
wp-includes/js/crop/marqueeHoriz.gif
wp-includes/js/crop/marqueeVert.gif
wp-includes/js/customize-base.dev.js [deleted file]
wp-includes/js/customize-base.js
wp-includes/js/customize-base.min.js [new file with mode: 0644]
wp-includes/js/customize-loader.dev.js [deleted file]
wp-includes/js/customize-loader.js
wp-includes/js/customize-loader.min.js [new file with mode: 0644]
wp-includes/js/customize-preview.dev.js [deleted file]
wp-includes/js/customize-preview.js
wp-includes/js/customize-preview.min.js [new file with mode: 0644]
wp-includes/js/hoverIntent.dev.js [deleted file]
wp-includes/js/hoverIntent.js
wp-includes/js/hoverIntent.min.js [new file with mode: 0644]
wp-includes/js/imgareaselect/border-anim-h.gif
wp-includes/js/imgareaselect/border-anim-v.gif
wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js [deleted file]
wp-includes/js/imgareaselect/jquery.imgareaselect.js
wp-includes/js/imgareaselect/jquery.imgareaselect.min.js [new file with mode: 0644]
wp-includes/js/jcrop/Jcrop.gif
wp-includes/js/jcrop/jquery.Jcrop.css [deleted file]
wp-includes/js/jcrop/jquery.Jcrop.dev.js [deleted file]
wp-includes/js/jcrop/jquery.Jcrop.js [deleted file]
wp-includes/js/jcrop/jquery.Jcrop.min.css [new file with mode: 0644]
wp-includes/js/jcrop/jquery.Jcrop.min.js [new file with mode: 0644]
wp-includes/js/jquery/jquery.color.dev.js [deleted file]
wp-includes/js/jquery/jquery.color.js [deleted file]
wp-includes/js/jquery/jquery.color.min.js [new file with mode: 0644]
wp-includes/js/jquery/jquery.form.dev.js [deleted file]
wp-includes/js/jquery/jquery.form.js
wp-includes/js/jquery/jquery.form.min.js [new file with mode: 0644]
wp-includes/js/jquery/jquery.hotkeys.dev.js [deleted file]
wp-includes/js/jquery/jquery.hotkeys.js
wp-includes/js/jquery/jquery.hotkeys.min.js [new file with mode: 0644]
wp-includes/js/jquery/jquery.js
wp-includes/js/jquery/jquery.masonry.min.js [new file with mode: 0644]
wp-includes/js/jquery/jquery.table-hotkeys.dev.js [deleted file]
wp-includes/js/jquery/jquery.table-hotkeys.js
wp-includes/js/jquery/jquery.table-hotkeys.min.js [new file with mode: 0644]
wp-includes/js/jquery/suggest.dev.js [deleted file]
wp-includes/js/jquery/suggest.js
wp-includes/js/jquery/suggest.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.effects.blind.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.bounce.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.clip.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.core.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.drop.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.explode.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.fade.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.fold.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.highlight.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.scale.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.shake.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.slide.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.effects.transfer.min.js [deleted file]
wp-includes/js/jquery/ui/jquery.ui.accordion.min.js
wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js
wp-includes/js/jquery/ui/jquery.ui.button.min.js
wp-includes/js/jquery/ui/jquery.ui.core.min.js
wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js
wp-includes/js/jquery/ui/jquery.ui.dialog.min.js
wp-includes/js/jquery/ui/jquery.ui.draggable.min.js
wp-includes/js/jquery/ui/jquery.ui.droppable.min.js
wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.effect.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.menu.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.mouse.min.js
wp-includes/js/jquery/ui/jquery.ui.position.min.js
wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js
wp-includes/js/jquery/ui/jquery.ui.resizable.min.js
wp-includes/js/jquery/ui/jquery.ui.selectable.min.js
wp-includes/js/jquery/ui/jquery.ui.slider.min.js
wp-includes/js/jquery/ui/jquery.ui.sortable.min.js
wp-includes/js/jquery/ui/jquery.ui.spinner.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.tabs.min.js
wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.ui.widget.min.js
wp-includes/js/json2.dev.js [deleted file]
wp-includes/js/json2.js
wp-includes/js/json2.min.js [new file with mode: 0644]
wp-includes/js/mce-view.js [new file with mode: 0644]
wp-includes/js/mce-view.min.js [new file with mode: 0644]
wp-includes/js/media-editor.js [new file with mode: 0644]
wp-includes/js/media-editor.min.js [new file with mode: 0644]
wp-includes/js/media-models.js [new file with mode: 0644]
wp-includes/js/media-models.min.js [new file with mode: 0644]
wp-includes/js/media-views.js [new file with mode: 0644]
wp-includes/js/media-views.min.js [new file with mode: 0644]
wp-includes/js/plupload/handlers.dev.js [deleted file]
wp-includes/js/plupload/handlers.js
wp-includes/js/plupload/handlers.min.js [new file with mode: 0644]
wp-includes/js/plupload/wp-plupload.dev.js [deleted file]
wp-includes/js/plupload/wp-plupload.js
wp-includes/js/plupload/wp-plupload.min.js [new file with mode: 0644]
wp-includes/js/prototype.js [deleted file]
wp-includes/js/quicktags.dev.js [deleted file]
wp-includes/js/quicktags.js
wp-includes/js/quicktags.min.js [new file with mode: 0644]
wp-includes/js/scriptaculous/MIT-LICENSE [deleted file]
wp-includes/js/scriptaculous/builder.js [deleted file]
wp-includes/js/scriptaculous/controls.js [deleted file]
wp-includes/js/scriptaculous/dragdrop.js [deleted file]
wp-includes/js/scriptaculous/effects.js [deleted file]
wp-includes/js/scriptaculous/scriptaculous.js [deleted file]
wp-includes/js/scriptaculous/slider.js [deleted file]
wp-includes/js/scriptaculous/sound.js [deleted file]
wp-includes/js/scriptaculous/unittest.js [deleted file]
wp-includes/js/scriptaculous/wp-scriptaculous.js [deleted file]
wp-includes/js/shortcode.js [new file with mode: 0644]
wp-includes/js/shortcode.min.js [new file with mode: 0644]
wp-includes/js/swfupload/handlers.dev.js [deleted file]
wp-includes/js/swfupload/handlers.js
wp-includes/js/swfupload/handlers.min.js [new file with mode: 0644]
wp-includes/js/thickbox/loadingAnimation.gif
wp-includes/js/thickbox/macFFBgHack.png
wp-includes/js/thickbox/tb-close-2x.png [new file with mode: 0644]
wp-includes/js/thickbox/tb-close.png
wp-includes/js/thickbox/thickbox.css
wp-includes/js/thickbox/thickbox.js
wp-includes/js/tinymce/langs/wp-langs-en.js
wp-includes/js/tinymce/langs/wp-langs.php
wp-includes/js/tinymce/plugins/directionality/editor_plugin.js
wp-includes/js/tinymce/plugins/directionality/editor_plugin_src.js
wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js
wp-includes/js/tinymce/plugins/fullscreen/editor_plugin_src.js
wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif
wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
wp-includes/js/tinymce/plugins/inlinepopups/template.htm
wp-includes/js/tinymce/plugins/media/editor_plugin.js
wp-includes/js/tinymce/plugins/media/editor_plugin_src.js
wp-includes/js/tinymce/plugins/media/js/media.js
wp-includes/js/tinymce/plugins/media/media.htm
wp-includes/js/tinymce/plugins/paste/editor_plugin.js
wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js
wp-includes/js/tinymce/plugins/paste/pastetext.htm
wp-includes/js/tinymce/plugins/paste/pasteword.htm
wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php
wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
wp-includes/js/tinymce/plugins/spellchecker/editor_plugin_src.js
wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js
wp-includes/js/tinymce/plugins/tabfocus/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wordpress/img/image.gif
wp-includes/js/tinymce/plugins/wordpress/img/video.gif
wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js [deleted file]
wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js
wp-includes/js/tinymce/plugins/wpdialogs/js/popup.min.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js [deleted file]
wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.js
wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.min.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css
wp-includes/js/tinymce/plugins/wpeditimage/editimage.html
wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js
wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wpeditimage/img/delete-2x.png [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png
wp-includes/js/tinymce/plugins/wpeditimage/img/image-2x.png [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpeditimage/img/image.png
wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js [deleted file]
wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js
wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.min.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpfullscreen/css/wp-fullscreen.css
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.js
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wpgallery/img/delete-2x.png [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpgallery/img/delete.png
wp-includes/js/tinymce/plugins/wpgallery/img/edit-2x.png [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpgallery/img/edit.png
wp-includes/js/tinymce/plugins/wplink/editor_plugin.js
wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js
wp-includes/js/tinymce/plugins/wpview/editor_plugin.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpview/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/themes/advanced/about.htm
wp-includes/js/tinymce/themes/advanced/anchor.htm
wp-includes/js/tinymce/themes/advanced/charmap.htm
wp-includes/js/tinymce/themes/advanced/color_picker.htm
wp-includes/js/tinymce/themes/advanced/editor_template.js
wp-includes/js/tinymce/themes/advanced/editor_template_src.js
wp-includes/js/tinymce/themes/advanced/image.htm
wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png
wp-includes/js/tinymce/themes/advanced/img/icons.gif
wp-includes/js/tinymce/themes/advanced/js/anchor.js
wp-includes/js/tinymce/themes/advanced/js/color_picker.js
wp-includes/js/tinymce/themes/advanced/js/image.js
wp-includes/js/tinymce/themes/advanced/js/link.js
wp-includes/js/tinymce/themes/advanced/js/source_editor.js
wp-includes/js/tinymce/themes/advanced/link.htm
wp-includes/js/tinymce/themes/advanced/shortcuts.htm
wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css
wp-includes/js/tinymce/themes/advanced/skins/default/ui.css
wp-includes/js/tinymce/themes/advanced/skins/highcontrast/dialog.css
wp-includes/js/tinymce/themes/advanced/skins/highcontrast/ui.css
wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css
wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/embedded.png
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/gallery.png
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/page_bug.gif
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css [deleted file]
wp-includes/js/tinymce/themes/advanced/source_editor.htm
wp-includes/js/tinymce/tiny_mce.js
wp-includes/js/tinymce/tiny_mce_popup.js
wp-includes/js/tinymce/wp-mce-help.php
wp-includes/js/tinymce/wp-tinymce-schema.js [new file with mode: 0644]
wp-includes/js/tinymce/wp-tinymce.js.gz
wp-includes/js/tinymce/wp-tinymce.php
wp-includes/js/tw-sack.dev.js [deleted file]
wp-includes/js/tw-sack.js
wp-includes/js/tw-sack.min.js [new file with mode: 0644]
wp-includes/js/underscore.min.js [new file with mode: 0644]
wp-includes/js/utils.js [moved from wp-admin/js/utils.dev.js with 100% similarity]
wp-includes/js/utils.min.js [moved from wp-admin/js/utils.js with 100% similarity]
wp-includes/js/wp-ajax-response.dev.js [deleted file]
wp-includes/js/wp-ajax-response.js
wp-includes/js/wp-ajax-response.min.js [new file with mode: 0644]
wp-includes/js/wp-list-revisions.dev.js [deleted file]
wp-includes/js/wp-list-revisions.js
wp-includes/js/wp-list-revisions.min.js [new file with mode: 0644]
wp-includes/js/wp-lists.dev.js [deleted file]
wp-includes/js/wp-lists.js
wp-includes/js/wp-lists.min.js [new file with mode: 0644]
wp-includes/js/wp-pointer.dev.js [deleted file]
wp-includes/js/wp-pointer.js
wp-includes/js/wp-pointer.min.js [new file with mode: 0644]
wp-includes/js/wplink.dev.js [deleted file]
wp-includes/js/wplink.js
wp-includes/js/wplink.min.js [new file with mode: 0644]
wp-includes/kses.php
wp-includes/l10n.php
wp-includes/link-template.php
wp-includes/load.php
wp-includes/media-template.php [new file with mode: 0644]
wp-includes/media.php
wp-includes/meta.php
wp-includes/ms-blogs.php
wp-includes/ms-default-constants.php
wp-includes/ms-default-filters.php
wp-includes/ms-functions.php
wp-includes/ms-load.php
wp-includes/ms-settings.php
wp-includes/nav-menu-template.php
wp-includes/nav-menu.php
wp-includes/option.php
wp-includes/pluggable-deprecated.php
wp-includes/pluggable.php
wp-includes/plugin.php
wp-includes/pomo/entry.php
wp-includes/pomo/mo.php
wp-includes/pomo/po.php
wp-includes/pomo/streams.php
wp-includes/pomo/translations.php
wp-includes/post-template.php
wp-includes/post.php
wp-includes/query.php
wp-includes/rewrite.php
wp-includes/script-loader.php
wp-includes/shortcodes.php
wp-includes/taxonomy.php
wp-includes/template-loader.php
wp-includes/template.php
wp-includes/theme-compat/comments-popup.php
wp-includes/theme-compat/comments.php
wp-includes/theme.php
wp-includes/update.php
wp-includes/user.php
wp-includes/vars.php
wp-includes/version.php
wp-includes/widgets.php
wp-includes/wp-db.php
wp-includes/wp-diff.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
xmlrpc.php

index d5998ba65748d78e05e56b69259346890ddcf3b5..368674e24bc142b23e1fdd4b65a5252d91858a06 100644 (file)
@@ -8,7 +8,7 @@
 <body>
 <h1 id="logo">
        <a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
-       <br /> Version 3.4.2
+       <br /> Version 3.5
 </h1>
 <p style="text-align: center">Semantic Personal Publishing Platform</p>
 
index d470772ff6aacf7a2c6767e72c2290a761ef37d0..0d5f1dca36dbd7e09e516132f31414327ab794af 100644 (file)
@@ -1,4 +1,12 @@
 <?php
+/**
+ * Confirms that the activation key that is sent in an email after a user signs
+ * up for a new blog matches the key for that user and then displays confirmation.
+ *
+ * @package WordPress
+ */
+
+/** Define ABSPATH as this file's directory */
 define( 'WP_INSTALLING', true );
 
 /** Sets up the WordPress Environment. */
@@ -16,11 +24,21 @@ if ( is_object( $wp_object_cache ) )
 
 do_action( 'activate_header' );
 
+/**
+ * Adds an action hook specific to this page that fires on wp_head
+ *
+ * @since MU
+ */
 function do_activate_header() {
        do_action( 'activate_wp_head' );
 }
 add_action( 'wp_head', 'do_activate_header' );
 
+/**
+ * Loads styles specific to this page.
+ *
+ * @since MU
+ */
 function wpmu_activate_stylesheet() {
        ?>
        <style type="text/css">
@@ -77,7 +95,7 @@ get_header();
                } else {
                        extract($result);
                        $url = get_blogaddress_by_id( (int) $blog_id);
-                       $user = new WP_User( (int) $user_id);
+                       $user = get_userdata( (int) $user_id);
                        ?>
                        <h2><?php _e('Your account is now active!'); ?></h2>
 
index 9b3624af7fdf1f46f86e8b838984e8765ea6741a..b92ec3a88eb6376145ad939bbecda54a5e7a650e 100644 (file)
@@ -19,7 +19,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -33,101 +33,88 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
        </a>
 </h2>
 
-<div class="changelog point-releases">
-       <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
-       <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
-         '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 20 ), '3.4.2', number_format_i18n( 20 ) ); ?>
-               <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.4.2' ); ?>
-       </p>
-
-       <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
-         '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 21 ), '3.4.1', number_format_i18n( 21 ) ); ?>
-               <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.4.1' ); ?>
-       </p>
-</div>
-
 <div class="changelog">
-       <h3><?php _e( 'Live Theme Previews' ); ?></h3>
+       <h3><?php _e( 'New Media Manager' ); ?></h3>
 
-       <div class="feature-section images-stagger-right">
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/theme-customizer.png' ) ); ?>" class="image-50" />
-               <h4><?php _e( 'Try on New Themes' ); ?></h4>
-               <p><?php _e( 'Gone are the days of rushing to update your header, background, and the like as soon as you activate a new theme. You can now customize these options <strong>before</strong> activating a new theme. Note: this feature is available for installed themes only.' ); ?></p>
+       <div class="feature-section col two-col">
+               <img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-media.png' ) ); ?>" class="image-100" />
 
-               <h4><?php _e( 'Customize Current Theme' ); ?></h4>
-               <p><?php _e( 'Satisfy your curiosity and try on a fresh coat of paint &mdash; you can also use the live preview mode to customize your current theme. Look for the Customize link on the Themes screen.' ); ?></p>
+               <div>
+                       <h4><?php _e( 'Beautiful Interface' ); ?></h4>
+                       <p><?php _e( 'Adding media has been streamlined with an all-new experience, making it a breeze to upload files and place them into your posts.' ); ?></p>
+               </div>
+               <div class="last-feature">
+                       <h4><?php _e( 'Picturesque Galleries' ); ?></h4>
+                       <p><?php _e( 'Creating image galleries is faster with drag and drop reordering, inline caption editing, and simplified controls for layout.' ); ?></p>
+               </div>
        </div>
 </div>
 
 <div class="changelog">
-       <h3><?php _e( 'Custom Headers' ); ?></h3>
-
-       <div class="feature-section">
-               <h4><?php _e( 'Flexible Sizes' ); ?></h4>
-               <p><?php _e( 'You can decide for yourself how tall or wide your custom header image should be. From now on, themes will provide a recommended image size for custom headers rather than a fixed requirement. Note: this feature requires <a href="http://codex.wordpress.org/Custom_Headers">theme support</a>.' ); ?></p>
-               <div class="three-col-images">
-                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-1.png' ) ); ?>" class="image-30 first-feature" />
-                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-2.png' ) ); ?>" class="image-30" />
-                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-3.png' ) ); ?>" class="image-30 last-feature" />
-               </div>
-       </div>
+       <h3><?php _e( 'New Default Theme' ); ?></h3>
 
        <div class="feature-section images-stagger-right">
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-media-library.png' ) ); ?>" class="image-50" />
-               <h4><?php _e( 'Choose from Media Library' ); ?></h4>
-               <p><?php _e( 'Tired of re-uploading the same custom header image every time you check out a new theme? Now you can choose header images from your media library for easier customization.' ); ?></p>
+               <img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-twenty-twelve.png' ) ); ?>" class="image-66" />
+               <h4><?php _e( 'Introducing Twenty Twelve' ); ?></h4>
+               <p><?php _e( 'The newest default theme for WordPress is simple, flexible, and elegant.' ); ?></p>
+               <p><?php _e( 'What makes it really shine are the design details, like the gorgeous Open Sans typeface and a fully responsive design that looks great on any device.' ); ?></p>
+               <p><?php _e( 'Naturally, Twenty Twelve supports all the theme features you’ve come to know and love, but it is also designed to be as great for a website as it is for a blog.' ); ?></p>
        </div>
 </div>
 
 <div class="changelog">
-       <h3><?php _e( 'Twitter Embeds' ); ?></h3>
+       <h3><?php _e( 'Retina Ready' ); ?></h3>
 
        <div class="feature-section images-stagger-right">
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-1.png' ) ); ?>" class="image-30" />
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-2.png' ) ); ?>" class="image-30" />
-               <h4><?php _e( 'Share Tweets with Style' ); ?></h4>
-               <p><?php _e( 'You can now embed individual tweets in posts. It includes action links that allow readers to reply to, retweet, and favorite the tweet without leaving your site. Just paste a tweet URL on its own line.' ); ?></p>
-               <p><?php printf( __( 'This works with URLs from some other sites, too. For more, see the Codex article on <a href="%s">Embeds</a>.' ), __( 'http://codex.wordpress.org/Embeds' ) ); ?></p>
+               <img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-retina.png' ) ); ?>" class="image-66" />
+               <h4><?php _e( 'So Sharp You Can&#8217;t See the Pixels' ); ?></h4>
+               <p><?php _e( 'The WordPress dashboard now looks beautiful on high-resolution screens like those found on the iPad, Kindle Fire HD, Nexus 10, and MacBook Pro with Retina Display. Icons and other visual elements are crystal clear and full of detail.' ); ?></p>
        </div>
-
 </div>
 
-
 <div class="changelog">
-       <h3><?php _e( 'Better Captions' ); ?></h3>
+       <h3><?php _e( 'Smoother Experience' ); ?></h3>
 
        <div class="feature-section images-stagger-right">
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-1.png' ) ); ?>" class="image-30" />
-               <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-2.png' ) ); ?>" class="image-30" />
-               <h4><?php _e( 'HTML Support' ); ?></h4>
-               <p><?php _e( 'Basic HTML support has been added to the caption field in the image uploader. This allows you to add links &mdash; great for photo credits or licensing details &mdash; and basic formatting such as bold and italicized text.' ); ?></p>
+               <img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-color-picker.png' ) ); ?>" class="image-30" />
+               <h4><?php _e( 'Better Accessibility' ); ?></h4>
+               <p><?php _e( 'WordPress supports more usage modes than ever before. Screenreaders, touch devices, and mouseless workflows all have improved ease of use and accessibility.' ); ?></p>
+
+               <h4><?php _e( 'More Polish' ); ?></h4>
+               <p><?php _e( 'A number of screens and controls have been refined. For example, a new color picker makes it easier for you to choose that perfect shade of blue.' ); ?></p>
        </div>
 </div>
 
 <div class="changelog">
        <h3><?php _e( 'Under the Hood' ); ?></h3>
 
-       <div class="feature-section three-col">
+       <div class="feature-section col three-col">
                <div>
-                       <h4><?php _e( 'Faster WP_Query' ); ?></h4>
-                       <p><?php _e( 'Post queries have been optimized to improve performance, especially for sites with large databases.' ); ?></p>
-
-                       <h4><?php _e( 'Faster Translations' ); ?></h4>
-                       <p><?php _e( 'The number of strings loaded on the front end was greatly reduced, resulting in faster front page load times for localized installations.' ); ?> <?php _e( 'Also, better support for East Asian languages, right-to-left languages, theme translations, and more.' ); ?></p>
+                       <h4><?php _e( 'Meta Query Additions' ); ?></h4>
+                       <p><?php _e( 'The <code>WP_Comment_Query</code> and <code>WP_User_Query</code> classes now support meta queries just like <code>WP_Query.</code> Meta queries now support querying for objects without a particular meta key.' ); ?></p>
                </div>
                <div>
-                       <h4><?php _e( 'Themes API' ); ?></h4>
-                       <p><?php _e( 'WP_Theme, wp_get_themes(), wp_get_theme(). Faster, uses less memory, makes use of persistent caching.' ); ?></p>
-
-                       <h4><?php _e( 'Custom Header and Background API' ); ?></h4>
-                       <p><?php  _e( 'Custom header and background API relocated into the theme support API.' ); ?></p>
+                       <h4><?php _e( 'Post Objects' ); ?></h4>
+                       <p><?php _e( 'Post objects are now instances of a <code>WP_Post</code> class, which improves performance by loading selected properties on demand.' ); ?></p>
                </div>
                <div class="last-feature">
-                       <h4><?php _e( 'XML-RPC API' ); ?></h4>
-                       <p><?php printf( __( 'A new <a href="%s">WordPress API</a> that supports custom content types and taxonomies, as well as dozens of other bug fixes and improvements.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?></p>
+                       <h4><?php _e( 'Image Editing API' ); ?></h4>
+                       <p><?php _e( 'The <code>WP_Image_Editor</code> class abstracts image editing functionality such as cropping and scaling, and uses ImageMagick when available.' ); ?></p>
+               </div>
+       </div>
 
+       <div class="feature-section col three-col">
+               <div>
+                       <h4><?php _e( 'Multisite Improvements' ); ?></h4>
+                       <p><?php _e( '<code>switch_to_blog()</code> is now significantly faster and more reliable.' ); ?></p>
+               </div>
+               <div>
+                       <h4><?php _e( 'XML-RPC API' ); ?></h4>
+                       <p><?php printf( __( 'The <a href="%s">WordPress API</a> is now always enabled, and supports fetching users, editing profiles, managing post revisions, and searching posts.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?></p>
+               </div>
+               <div class="last-feature">
                        <h4><?php _e( 'External Libraries' ); ?></h4>
-                       <p><?php _e( 'jQuery, jQuery UI, TinyMCE, Plupload, PHPMailer, SimplePie, and other libraries were updated. jQuery UI Touch Punch was introduced.' ); ?></p>
+                       <p><?php printf( __( 'WordPress now includes the <a href="%1$s">Underscore</a> and <a href="%2$s">Backbone</a> JavaScript libraries. TinyMCE, jQuery, jQuery UI, and SimplePie have all been updated to the latest versions.' ), 'http://underscorejs.org/', 'http://backbonejs.org/' ); ?></p>
                </div>
        </div>
 </div>
index db44df78c969854b9b4269a4c02ab7856c43e0f7..716e384da46155803b423a2cd9fe71e8b1cf42e6 100644 (file)
 define( 'DOING_AJAX', true );
 define( 'WP_ADMIN', true );
 
+/** Load WordPress Bootstrap */
+require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
+
+/** Allow for cross-domain requests (from the frontend). */
+send_origin_headers();
+
 // Require an action parameter
 if ( empty( $_REQUEST['action'] ) )
        die( '0' );
 
-/** Load WordPress Bootstrap */
-require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
-
 /** Load WordPress Administration APIs */
 require_once( ABSPATH . 'wp-admin/includes/admin.php' );
 
@@ -33,6 +36,7 @@ require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
 @header( 'X-Robots-Tag: noindex' );
 
 send_nosniff_header();
+nocache_headers();
 
 do_action( 'admin_init' );
 
@@ -50,7 +54,9 @@ $core_actions_post = array(
        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
        'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
        'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
-       'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment',
+       'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
+       'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
+       'send-attachment-to-editor', 'save-attachment-order',
 );
 
 // Register core Ajax calls.
index 02f0db9a4b98e76640d9a7f68fd83671bd6c30d3..3818ab411ee0dce973d0262e927dd41bbf2142b6 100644 (file)
@@ -15,17 +15,12 @@ if ( !defined('ABSPATH') )
 <div class="clear"></div></div><!-- wpbody -->
 <div class="clear"></div></div><!-- wpcontent -->
 
-<div id="footer">
+<div id="wpfooter">
 <?php do_action( 'in_admin_footer' ); ?>
 <p id="footer-left" class="alignleft"><?php
-$upgrade = apply_filters( 'update_footer', '' );
-$footer_text = array(
-       '<span id="footer-thankyou">' . __( 'Thank you for creating with <a href="http://wordpress.org/">WordPress</a>.' ) . '</span>',
-);
-echo apply_filters( 'admin_footer_text', implode( ' &bull; ', $footer_text ) );
-unset( $footer_text );
+echo apply_filters( 'admin_footer_text', '<span id="footer-thankyou">' . __( 'Thank you for creating with <a href="http://wordpress.org/">WordPress</a>.' ) . '</span>' );
 ?></p>
-<p id="footer-upgrade" class="alignright"><?php echo $upgrade; ?></p>
+<p id="footer-upgrade" class="alignright"><?php echo apply_filters( 'update_footer', '' ); ?></p>
 <div class="clear"></div>
 </div>
 <?php
index 248897c9877233ba4e4f1e6f0e3278050bf746c8..f99934e58e6eba8543d85a293959e3dbdbc3531c 100644 (file)
@@ -50,12 +50,7 @@ $admin_body_class = preg_replace('/[^a-z0-9_-]+/i', '-', $hook_suffix);
 ?>
 <script type="text/javascript">
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
-var userSettings = {
-               'url': '<?php echo SITECOOKIEPATH; ?>',
-               'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
-               'time':'<?php echo time() ?>'
-       },
-       ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
+var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
        pagenow = '<?php echo $current_screen->id; ?>',
        typenow = '<?php echo $current_screen->post_type; ?>',
        adminpage = '<?php echo $admin_body_class; ?>',
@@ -76,6 +71,9 @@ do_action('admin_head');
 if ( get_user_setting('mfold') == 'f' )
        $admin_body_class .= ' folded';
 
+if ( !get_user_setting('unfold') )
+       $admin_body_class .= ' auto-fold';
+
 if ( is_admin_bar_showing() )
        $admin_body_class .= ' admin-bar';
 
@@ -94,7 +92,7 @@ $admin_body_class .= ' no-customize-support';
 
 ?>
 </head>
-<body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
+<body class="wp-admin wp-core-ui no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
 <script type="text/javascript">
        document.body.className = document.body.className.replace('no-js','js');
 </script>
@@ -107,6 +105,7 @@ if ( wp_script_is( 'customize-loader', 'queue' ) && current_user_can( 'edit_them
 ?>
 
 <div id="wpwrap">
+<a tabindex="1" href="#wpbody-content" class="screen-reader-shortcut"><?php _e('Skip to main content'); ?></a>
 <?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
 <div id="wpcontent">
 
@@ -122,7 +121,7 @@ $current_screen->set_parentage( $parent_file );
 
 ?>
 
-<div id="wpbody-content">
+<div id="wpbody-content" aria-label="<?php esc_attr_e('Main content'); ?>" tabindex="0">
 <?php
 
 $current_screen->render_screen_meta();
index 015ced3013a14a49aecc0fd2fb8d9ff21c2a1190..bd2e5406a6ab55282ba73bc9369ab34f92ec05a8 100644 (file)
@@ -29,6 +29,8 @@ if ( isset($_GET['import']) && !defined('WP_LOAD_IMPORTERS') )
 
 require_once(dirname(dirname(__FILE__)) . '/wp-load.php');
 
+nocache_headers();
+
 if ( get_option('db_upgraded') ) {
        flush_rewrite_rules();
        update_option( 'db_upgraded',  false );
@@ -51,6 +53,7 @@ if ( get_option('db_upgraded') ) {
                 * @since 2.8.4b
                 */
                $c = get_blog_count();
+               // If 50 or fewer sites, run every time. Else, run "about ten percent" of the time. Shh, don't check that math.
                if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) {
                        require_once( ABSPATH . WPINC . '/http.php' );
                        $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) );
@@ -65,8 +68,6 @@ require_once(ABSPATH . 'wp-admin/includes/admin.php');
 
 auth_redirect();
 
-nocache_headers();
-
 // Schedule trash collection
 if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') )
        wp_schedule_event(time(), 'daily', 'wp_scheduled_delete');
@@ -79,7 +80,6 @@ $time_format = get_option('time_format');
 wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback'));
 
 wp_enqueue_script( 'common' );
-wp_enqueue_script( 'jquery-color' );
 
 $editing = false;
 
@@ -187,6 +187,8 @@ if ( isset($plugin_page) ) {
                exit;
        }
 
+       do_action( 'load-importer-' . $importer );
+
        $parent_file = 'tools.php';
        $submenu_file = 'import.php';
        $title = __('Import');
index e9d59e2258168c68e1e08719d7f8748c884960d9..5f2938e84f34c8731ac46169a887f2e554f6d8c7 100644 (file)
@@ -13,21 +13,35 @@ if ( defined('ABSPATH') )
 else
        require_once('../wp-load.php');
 
-// Flash often fails to send cookies with the POST or upload, so we need to pass it in GET or POST instead
-if ( is_ssl() && empty($_COOKIE[SECURE_AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
-       $_COOKIE[SECURE_AUTH_COOKIE] = $_REQUEST['auth_cookie'];
-elseif ( empty($_COOKIE[AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
-       $_COOKIE[AUTH_COOKIE] = $_REQUEST['auth_cookie'];
-if ( empty($_COOKIE[LOGGED_IN_COOKIE]) && !empty($_REQUEST['logged_in_cookie']) )
-       $_COOKIE[LOGGED_IN_COOKIE] = $_REQUEST['logged_in_cookie'];
-unset($current_user);
-require_once('./admin.php');
+if ( ! ( isset( $_REQUEST['action'] ) && 'upload-attachment' == $_REQUEST['action'] ) ) {
+       // Flash often fails to send cookies with the POST or upload, so we need to pass it in GET or POST instead
+       if ( is_ssl() && empty($_COOKIE[SECURE_AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+               $_COOKIE[SECURE_AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+       elseif ( empty($_COOKIE[AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+               $_COOKIE[AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+       if ( empty($_COOKIE[LOGGED_IN_COOKIE]) && !empty($_REQUEST['logged_in_cookie']) )
+               $_COOKIE[LOGGED_IN_COOKIE] = $_REQUEST['logged_in_cookie'];
+       unset($current_user);
+}
 
-header('Content-Type: text/html; charset=' . get_option('blog_charset'));
+require_once('./admin.php');
 
 if ( !current_user_can('upload_files') )
        wp_die(__('You do not have permission to upload files.'));
 
+header('Content-Type: text/html; charset=' . get_option('blog_charset'));
+
+if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
+       define( 'DOING_AJAX', true );
+       include ABSPATH . 'wp-admin/includes/ajax-actions.php';
+
+       send_nosniff_header();
+       nocache_headers();
+
+       wp_ajax_upload_attachment();
+       die( '0' );
+}
+
 // just fetch the detail form for that attachment
 if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id'])) && $_REQUEST['fetch'] ) {
        $post = get_post( $id );
@@ -37,19 +51,36 @@ if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id
        if ( ! current_user_can( $post_type_object->cap->edit_post, $id ) )
                wp_die( __( 'You are not allowed to edit this item.' ) );
 
-       if ( 2 == $_REQUEST['fetch'] ) {
-               add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
-               echo get_media_item($id, array( 'send' => false, 'delete' => true ));
-       } else {
-               add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
-               echo get_media_item($id);
+       switch ( $_REQUEST['fetch'] ) {
+               case 3 :
+                       if ( $thumb_url = wp_get_attachment_image_src( $id, 'thumbnail', true ) )
+                               echo '<img class="pinkynail" src="' . esc_url( $thumb_url[0] ) . '" alt="" />';
+                       echo '<a class="edit-attachment" href="' . esc_url( get_edit_post_link( $id ) ) . '" target="_blank">' . _x( 'Edit', 'media item' ) . '</a>';
+                       $title = $post->post_title ? $post->post_title : wp_basename( $post->guid ); // title shouldn't ever be empty, but use filename just in cas.e
+                       echo '<div class="filename new"><span class="title">' . esc_html( wp_html_excerpt( $title, 60 ) ) . '</span></div>';
+                       break;
+               case 2 :
+                       add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
+                       echo get_media_item($id, array( 'send' => false, 'delete' => true ));
+                       break;
+               default:
+                       add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
+                       echo get_media_item($id);
+                       break;
        }
        exit;
 }
 
 check_admin_referer('media-form');
 
-$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+$post_id = 0;
+if ( isset( $_REQUEST['post_id'] ) ) {
+       $post_id = absint( $_REQUEST['post_id'] );
+       if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) )
+               $post_id = 0;
+}
+
+$id = media_handle_upload( 'async-upload', $post_id );
 if ( is_wp_error($id) ) {
        echo '<div class="error-div">
        <a class="dismiss" href="#" onclick="jQuery(this).parents(\'div.media-item\').slideUp(200, function(){jQuery(this).remove();});">' . __('Dismiss') . '</a>
index 68f7ed6cf0d44dc9acfce5ef4feb2e3015af5117..5249e1181b218aed2ef70683c599c362b79c25db 100644 (file)
@@ -30,7 +30,7 @@ function wp_credits() {
                if ( ! is_array( $results ) )
                        return false;
 
-               set_site_transient( 'wordpress_credits_' . $locale, $results, 86400 ); // One day
+               set_site_transient( 'wordpress_credits_' . $locale, $results, DAY_IN_SECONDS );
        }
 
        return $results;
@@ -52,7 +52,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
diff --git a/wp-admin/css/color-picker-rtl.css b/wp-admin/css/color-picker-rtl.css
new file mode 100644 (file)
index 0000000..8c8869d
--- /dev/null
@@ -0,0 +1,27 @@
+.wp-color-result {
+       margin: 0 0 6px 6px;
+       padding-left: 0;
+       padding-right: 30px;
+}
+
+.wp-color-result:after {
+       border-radius: 0 0 1px 1px;
+       border-left: 0;
+       border-right: 1px solid #bbb;
+       left: auto;
+       right: 0;
+}
+
+.wp-color-result:hover {
+       border-color: #aaa;
+}
+
+.wp-color-result:hover:after {
+       border-left: 0;
+       border-right: 1px solid #999;
+}
+
+.wp-picker-container .button {
+       margin-left: 0;
+       margin-right: 6px;
+}
diff --git a/wp-admin/css/color-picker-rtl.min.css b/wp-admin/css/color-picker-rtl.min.css
new file mode 100644 (file)
index 0000000..7b17312
--- /dev/null
@@ -0,0 +1 @@
+.wp-color-result{margin:0 0 6px 6px;padding-left:0;padding-right:30px}.wp-color-result:after{border-radius:0 0 1px 1px;border-left:0;border-right:1px solid #bbb;left:auto;right:0}.wp-color-result:hover{border-color:#aaa}.wp-color-result:hover:after{border-left:0;border-right:1px solid #999}.wp-picker-container .button{margin-left:0;margin-right:6px}
\ No newline at end of file
diff --git a/wp-admin/css/color-picker.css b/wp-admin/css/color-picker.css
new file mode 100644 (file)
index 0000000..925d890
--- /dev/null
@@ -0,0 +1,107 @@
+.wp-color-picker {
+       width: 80px;
+}
+
+.wp-picker-container .hidden {
+       display: none;
+}
+
+.wp-color-result {
+       background-color: #f9f9f9;
+       border: 1px solid #bbb;
+       border-radius: 2px;
+       cursor: pointer;
+       display: inline-block;
+       height: 22px;
+       margin: 0 6px 6px 0px;
+       position: relative;
+       top: 1px;
+       user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       -webkit-user-select: none;
+       vertical-align: bottom;
+       display: inline-block;
+       padding-left: 30px;
+}
+
+.wp-color-result:after {
+       background: #f3f3f3;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#f4f4f4));
+       background-image: -webkit-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:    -moz-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:      -o-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:   linear-gradient(to bottom, #fefefe, #f4f4f4);
+       color: #333;
+       text-shadow: 0 1px 0 #fff;
+       border-radius: 0 1px 1px 0;
+       border-left: 1px solid #bbb;
+       content: attr( title );
+       display: block;
+       font-size: 11px;
+       line-height: 22px;
+       padding: 0 6px;
+       position: relative;
+       right: 0;
+       text-align: center;
+       top: 0;
+}
+
+.wp-color-result:hover {
+       border-color: #aaa;
+       -webkit-box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.2 );
+       box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.1 );
+}
+
+.wp-color-result:hover:after {
+       color: #222;
+       border-color: #aaa;
+       border-left: 1px solid #999;
+}
+
+.wp-color-result.wp-picker-open {
+       top: 0;
+}
+
+.wp-color-result.wp-picker-open:after {
+       content: attr( data-current );
+}
+
+.wp-picker-container, .wp-picker-container:active {
+       display: inline-block;
+       outline: 0;
+}
+
+.wp-color-result:focus {
+       border-color: #888;
+       -webkit-box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.2 );
+       box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.2 );
+}
+
+.wp-color-result:focus:after {
+       border-color: #888;
+}
+
+.wp-picker-open + .wp-picker-input-wrap {
+       display: inline-block;
+       vertical-align: top;
+}
+
+.wp-picker-container .button {
+       margin-left: 6px;
+}
+
+.wp-picker-container .iris-square-slider .ui-slider-handle:focus {
+       background-color: #555
+}
+
+.wp-picker-container .iris-picker {
+       border-color: #dfdfdf;
+       margin-top: 6px;
+}
+
+input[type="text"].iris-error {
+       background-color: #ffebe8;
+       border-color: #c00;
+       color: #000;
+}
diff --git a/wp-admin/css/color-picker.min.css b/wp-admin/css/color-picker.min.css
new file mode 100644 (file)
index 0000000..956f55a
--- /dev/null
@@ -0,0 +1 @@
+.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f9f9f9;border:1px solid #bbb;border-radius:2px;cursor:pointer;display:inline-block;height:22px;margin:0 6px 6px 0;position:relative;top:1px;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;vertical-align:bottom;display:inline-block;padding-left:30px}.wp-color-result:after{background:#f3f3f3;background-image:-webkit-gradient(linear,left top,left bottom,from(#fefefe),to(#f4f4f4));background-image:-webkit-linear-gradient(top,#fefefe,#f4f4f4);background-image:-moz-linear-gradient(top,#fefefe,#f4f4f4);background-image:-o-linear-gradient(top,#fefefe,#f4f4f4);background-image:linear-gradient(to bottom,#fefefe,#f4f4f4);color:#333;text-shadow:0 1px 0 #fff;border-radius:0 1px 1px 0;border-left:1px solid #bbb;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;right:0;text-align:center;top:0}.wp-color-result:hover{border-color:#aaa;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.wp-color-result:hover:after{color:#222;border-color:#aaa;border-left:1px solid #999}.wp-color-result.wp-picker-open{top:0}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{border-color:#888;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2)}.wp-color-result:focus:after{border-color:#888}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{border-color:#dfdfdf;margin-top:6px}input[type="text"].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}
\ No newline at end of file
index 91017ee62703d2491161f5a3500650f42f90929e..2a2054541744ca97d108514083757227ff91c4d6 100644 (file)
@@ -1 +1,2201 @@
-html,.wp-dialog{background-color:#fff}* html input,* html .widget{border-color:#dfdfdf}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;color:#333}select{color:#000}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#d1e5ee}kbd,code{background:#eaeaea}input[readonly]{background-color:#eee}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1}.find-box{background-color:#f1f1f1}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff}.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f5fafd;background-image:-ms-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-moz-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-o-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-webkit-gradient(linear,left top,left bottom,from(#f7fcfe),to(#eff8ff));background-image:-webkit-linear-gradient(top,#f7fcfe,#eff8ff);background-image:linear-gradient(top,#f7fcfe,#eff8ff)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#eff8ff;border-color:#d1e5ee}.ui-autocomplete li a.ui-state-hover{background-color:#def1ff}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}.quicktags-toolbar input{background:#fff;background-image:-ms-linear-gradient(bottom,#e5f0f8,#fff);background-image:-moz-linear-gradient(bottom,#e5f0f8,#fff);background-image:-o-linear-gradient(bottom,#e5f0f8,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#e5f0f8),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5f0f8,#fff)!important;background-image:linear-gradient(bottom,#e5f0f8,#fff)}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#b0c8d7}#media-items .media-item,.media-item .describe,.imgedit-group{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f7fcfe}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}.login #backtoblog a{color:#464646}#wphead{border-bottom:#d0dfe9 1px solid}#wphead h1 a{color:#174f69}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102")}.quicktags-toolbar input{border-color:#b2c4c8}.quicktags-toolbar input:hover{border-color:#d0dfe9;background:#f0f8fe}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}#post-status-info{background-color:#eff8ff}.wp-editor-wrap .wp_themeSkin *,.wp-editor-wrap .wp_themeSkin a:hover,.wp-editor-wrap .wp_themeSkin a:link,.wp-editor-wrap .wp_themeSkin a:visited,.wp-editor-wrap .wp_themeSkin a:active{color:#000}.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#bed1dd #bed1dd #d0dfe9}#editorcontainer #content,#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1)}.wp-editor-wrap .wp_themeSkin iframe{background:transparent}.wp-editor-wrap .wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin .mceButton{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#bdccd5,#fff);background-image:-moz-linear-gradient(bottom,#bdccd5,#fff);background-image:-o-linear-gradient(bottom,#bdccd5,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#bdccd5),to(#fff));background-image:-webkit-linear-gradient(bottom,#bdccd5,#fff)!important;background-image:linear-gradient(bottom,#bdccd5,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButton:active,.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active,.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover{background:#b0c8d7!important;background-image:-ms-linear-gradient(bottom,#fff,#cfdfe9);background-image:-moz-linear-gradient(bottom,#fff,#cfdfe9);background-image:-o-linear-gradient(bottom,#fff,#cfdfe9);background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#cfdfe9));background-image:-webkit-linear-gradient(bottom,#fff,#cfdfe9)!important;background-image:linear-gradient(bottom,#fff,#cfdfe9);border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin .mceButtonDisabled{border-color:#b0c8d7!important}.wp-editor-wrap .wp_themeSkin .mceListBox .mceText,.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-left:0!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#b0c8d7;border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin select.mceListBox{border-color:#b2b2b2;background-color:#fff}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen{border-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceSplitButton td{background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive{background-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a{border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp-editor-wrap .wp_themeSkin .mceMenu{border-color:#ddd}.wp-editor-wrap .wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp-editor-wrap .wp_themeSkin .mceMenu .mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9}.wp-admin #mceModalBlocker{background:#000}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.wp-editor-wrap .wp-switch-editor{background-color:#f5fafd;border-color:#d1e5ee #d1e5ee #d1e5ee;color:#999}.wp-editor-wrap.tmce-active .switch-tmce,.wp-editor-wrap.html-active .switch-html{background-color:#eff8ff;border-color:#d1e5ee #d1e5ee #eff8ff;color:#333}.wp-editor-wrap.quicktags-toolbar input{color:#464646;border-color:#d1e5ee;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap .quicktags-toolbar,.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-o-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-webkit-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:linear-gradient(bottom,#cfdfe9,#eff8ff)}.wp-editor-wrap .quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.wp-editor-wrap.wp_themeSkin .mceButton,.wp-editor-wrap.wp_themeSkin .mceListBox .mceText,.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff);background-image:linear-gradient(bottom,#cfdfe9,#fff)}#titlediv #title{border-color:#bdccd5}#editorcontainer{border-color:#bdccd5 #bdccd5 #d0dfe9}#post-status-info{border-color:#d0dfe9 #bdccd5 #bdccd5}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e0f1ff;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background-color:#5589aa;background-image:-ms-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(right bottom,#5589aa,#619bbb);background-image:linear-gradient(right bottom,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#d0dfe9}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#e8eff4;background-color:#eff8ff}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#a0c3d5}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-vs.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#eff8ff;border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background-image:-ms-linear-gradient(bottom,#eff8ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(bottom,#def1ff,#eff8ff)}#screen-meta-links a.show-settings{color:#606060}#screen-meta-links a.show-settings:hover{color:#000}#screen-meta-links a.show-settings{background:transparent url(../images/arrows-vs.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows-vs.png) no-repeat right -31px}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#eee}#minor-publishing{border-bottom-color:#ddd}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;background-color:#f7fcfe;background-image:-ms-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-moz-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-o-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-webkit-gradient(linear,left top,left bottom,from(#ecf8fe),to(#f7fcfe));background-image:-webkit-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:linear-gradient(top,#ecf8fe,#f7fcfe);text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#d1e5ee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}
\ No newline at end of file
+/*------------------------------------------------------------------------------
+
+
+Howdy! This is the CSS file that controls the
+Blue (classic) color style on the WordPress Dashboard.
+
+This file contains both LTR and RTL styles.
+
+
+TABLE OF CONTENTS:
+------------------
+ 1.0 - Left to Right Styles
+ 2.0 - Right to Left Styles
+
+
+------------------------------------------------------------------------------*/
+
+
+/*------------------------------------------------------------------------------
+  1.0 - Left to Right Styles
+------------------------------------------------------------------------------*/
+
+.find-box-search,
+.find-box-buttons {
+       background-color: #eff8ff;
+       border-top: 1px solid #dce6f8;
+}
+
+.find-box {
+       background-color: #5589aa;
+}
+
+.find-box-head {
+       color: #fff;
+}
+
+.find-box-inside {
+       background-color: #fff;
+}
+
+a.page-numbers:hover {
+       border-color: #999;
+}
+
+body,
+#wpbody,
+.form-table .pre,
+.ui-autocomplete li a {
+       color: #333;
+}
+
+body > #upload-menu {
+       border-bottom-color: #fff;
+}
+
+#postcustomstuff table,
+#your-profile fieldset,
+#rightnow,
+div.dashboard-widget,
+#dashboard-widgets p.dashboard-widget-links {
+       border-color: #d1e5ee;
+}
+
+#poststuff .inside label.spam,
+#poststuff .inside label.deleted {
+       color: red;
+}
+
+#poststuff .inside label.waiting {
+       color: orange;
+}
+
+#poststuff .inside label.approved {
+       color: green;
+}
+
+#postcustomstuff table {
+       border-color: #dfdfdf;
+       background-color: #f9f9f9;
+}
+
+#postcustomstuff thead th {
+       background-color: #f1f1f1;
+}
+
+.widefat {
+       border-color: #d1e5ee;
+       background-color: #fff;
+}
+
+div.dashboard-widget-error {
+       background-color: #c43;
+}
+
+div.dashboard-widget-notice {
+       background-color: #cfe1ef;
+}
+
+div.dashboard-widget-submit {
+       border-top-color: #ccc;
+}
+
+ul.category-tabs li {
+       border-color: transparent;
+}
+
+div.tabs-panel,
+.wp-tab-panel,
+ul.add-menu-item-tabs li.tabs,
+.wp-tab-active {
+       border-color: #d1e5ee;
+       background-color: #fff;
+}
+
+ul.category-tabs li.tabs {
+       border-color: #d1e5ee #d1e5ee #fff;
+}
+
+ul.category-tabs li.tabs,
+ul.add-menu-item-tabs li.tabs,
+.wp-tab-active {
+       background-color: #fff;
+}
+
+kbd,
+code {
+       background: #eff8ff;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="file"],
+input[type="email"],
+input[type="number"],
+input[type="search"],
+input[type="tel"],
+input[type="url"],
+select {
+       border-color: #d1e5ee;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="file"]:focus,
+input[type="email"]:focus,
+input[type="number"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="url"]:focus,
+select:focus {
+       border-color: #b0c8d7;
+}
+
+input.disabled,
+textarea.disabled {
+       background-color: #ccc;
+}
+
+#plugin-information .action-button a,
+#plugin-information .action-button a:hover,
+#plugin-information .action-button a:visited {
+       color: #fff;
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3,
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small,
+.sidebar-name,
+#nav-menu-header,
+#nav-menu-footer,
+.menu-item-handle,
+#fullscreen-topbar {
+       background: #f5fafd;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#f7fcfe));
+       background-image: -webkit-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:    -moz-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:      -o-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image: linear-gradient(to top, #eff8ff, #f7fcfe);
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3 {
+       border-bottom-color: #d1e5ee;
+       text-shadow: #fff 0 1px 0;
+       -webkit-box-shadow: 0 1px 0 #fff;
+       box-shadow: 0 1px 0 #fff;
+}
+
+.form-table th,
+.form-wrap label {
+       color: #222;
+       text-shadow: #fff 0 1px 0;
+}
+
+.description,
+.form-wrap p {
+       color: #666;
+}
+
+strong .post-com-count span {
+       background-color: #21759b;
+}
+
+.sorthelper {
+       background-color: #ccf3fa;
+}
+
+.ac_match,
+.subsubsub a.current {
+       color: #000;
+}
+
+.wrap h2 {
+       color: #174f69;
+}
+
+.wrap .add-new-h2,
+.wrap .add-new-h2:active {
+       background: #f1f1f1;
+}
+
+.subtitle {
+       color: #777;
+}
+
+.ac_over {
+       background-color: #f0f0b8;
+}
+
+.ac_results {
+       background-color: #fff;
+       border-color: #b0c8d7;
+}
+
+.ac_results li {
+       color: #101010;
+}
+
+.alternate,
+.alt {
+       background-color: #f7fcfe;
+}
+
+.available-theme a.screenshot {
+       background-color: #eff8ff;
+       border-color: #acd;
+}
+
+#current-theme {
+       border-bottom-color: #d1e5ee;
+}
+
+.bar {
+       background-color: #e8e8e8;
+       border-right-color: #99d;
+}
+
+#media-upload,
+#media-upload .media-item .slidetoggle {
+       background: #fff;
+}
+
+#media-upload .slidetoggle {
+       border-top-color: #dfdfdf;
+}
+
+div.error,
+.login #login_error {
+       background-color: #ffebe8;
+       border-color: #c00;
+}
+
+div.error a {
+       color: #c00;
+}
+
+.form-invalid {
+       background-color: #ffebe8 !important;
+}
+
+.form-invalid input,
+.form-invalid select {
+       border-color: #c00 !important;
+}
+
+.submit,
+#commentsdiv #add-new-comment {
+       border-color: #dfdfdf;
+}
+
+.highlight {
+       background-color: #e4f2fd;
+       color: #000;
+}
+
+.howto,
+.nonessential,
+#edit-slug-box,
+.form-input-tip,
+.subsubsub {
+       color: #666;
+}
+
+.media-upload-form label.form-help,
+td.help {
+       color: #9a9a9a;
+}
+
+.ui-autocomplete {
+       border-color: #b0c8d7;
+       background-color: #eff8ff;
+}
+
+.ui-autocomplete li a.ui-state-focus {
+       background-color: #def1ff;
+}
+
+.post-com-count {
+       color: #fff;
+}
+
+.post-com-count span {
+       background-color: #bbb;
+       color: #fff;
+}
+
+.post-com-count:hover span {
+       background-color: #d54e21;
+}
+
+.quicktags, .search {
+       background-color: #ccc;
+       color: #000;
+}
+
+.side-info h5 {
+       border-bottom-color: #dadada;
+}
+
+.side-info ul {
+       color: #666;
+}
+
+a:hover,
+a:active {
+       color: #d54e21;
+}
+
+a:focus {
+       color: #124964;
+}
+
+#adminmenu a:hover,
+#adminmenu li.menu-top > a:focus,
+#adminmenu .wp-submenu a:hover,
+#the-comment-list .comment a:hover,
+#rightnow a:hover,
+#media-upload a.del-link:hover,
+div.dashboard-widget-submit input:hover,
+.subsubsub a:hover,
+.subsubsub a.current:hover,
+.ui-tabs-nav a:hover,
+.plugins .inactive a:hover,
+#all-plugins-table .plugins .inactive a:hover,
+#search-plugins-table .plugins .inactive a:hover {
+       color: #d54e21;
+}
+
+#the-comment-list .comment-item,
+#dashboard-widgets #dashboard_quick_press form p.submit {
+       border-color: #dfdfdf;
+}
+
+#side-sortables .category-tabs .tabs a,
+#side-sortables .add-menu-item-tabs .tabs a,
+.wp-tab-bar .wp-tab-active a {
+       color: #333;
+}
+
+#dashboard_right_now .table_content,
+#dashboard_right_now .table_discussion {
+       border-top-color: #d1e5ee;
+}
+
+#rightnow .rbutton {
+       background-color: #ebebeb;
+       color: #264761;
+}
+
+.submitbox .submit {
+       background-color: #464646;
+       color: #ccc;
+}
+
+.plugins a.delete:hover,
+#all-plugins-table .plugins a.delete:hover,
+#search-plugins-table .plugins a.delete:hover,
+.submitbox .submitdelete {
+       color: #f00;
+       border-bottom-color: #f00;
+}
+
+.submitbox .submitdelete:hover,
+#media-items a.delete:hover,
+#media-items a.delete-permanently:hover {
+       color: #fff;
+       background-color: #f00;
+       border-bottom-color: #f00;
+}
+
+#normal-sortables .submitbox .submitdelete:hover {
+       color: #000;
+       background-color: #f00;
+       border-bottom-color: #f00;
+}
+
+.tablenav .dots {
+       border-color: transparent;
+}
+
+.tablenav .next,
+.tablenav .prev {
+       border-color: transparent;
+       color: #21759b;
+}
+
+.tablenav .next:hover,
+.tablenav .prev:hover {
+       border-color: transparent;
+       color: #d54e21;
+}
+
+div.updated,
+.login .message {
+       background-color: #ffffe0;
+       border-color: #e6db55;
+}
+
+.update-message {
+       color: #000;
+}
+
+a.page-numbers {
+       border-bottom-color: #b8d3e2;
+}
+
+.commentlist li {
+       border-bottom-color: #ccc;
+}
+
+.widefat td,
+.widefat th {
+       border-top-color: #fff;
+       border-bottom-color: #d0dfe9;
+}
+
+.widefat th {
+       text-shadow: rgba(255,255,255,0.8) 0 1px 0;
+}
+
+.widefat td {
+       color: #555;
+}
+.widefat p,
+.widefat ol,
+.widefat ul {
+       color: #333;
+}
+
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small {
+       color: #333;
+}
+
+th.sortable a:hover,
+th.sortable a:active,
+th.sortable a:focus {
+       color: #333;
+}
+
+th.sortable a:focus {
+       background: #e1e1e1;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#dcdcdc), to(#e9e9e9));
+       background-image: -webkit-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image:    -moz-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image:      -o-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image: linear-gradient(to top, #dcdcdc, #e9e9e9);
+}
+
+h3.dashboard-widget-title small a {
+       color: #d7d7d7;
+}
+
+h3.dashboard-widget-title small a:hover {
+       color: #fff;
+}
+
+a,
+#adminmenu a,
+#the-comment-list p.comment-author strong a,
+#media-upload a.del-link,
+#media-items a.delete,
+#media-items a.delete-permanently,
+.plugins a.delete,
+.ui-tabs-nav a {
+       color: #21759b;
+}
+
+#adminmenu .awaiting-mod,
+#adminmenu .update-plugins,
+#sidemenu a .update-plugins,
+#rightnow .reallynow {
+       background-color: #464646;
+       color: #fff;
+       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+}
+#plugin-information .action-button {
+       background-color: #d54e21;
+       color: #fff;
+}
+
+#adminmenu li.current a .awaiting-mod,
+#adminmenu     li a.wp-has-current-submenu .update-plugins{
+       background-color: #464646;
+       color: #fff;
+       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+}
+
+div#media-upload-header,
+div#plugin-information-header {
+       background-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+}
+
+#currenttheme img {
+       border-color: #666;
+}
+
+#dashboard_secondary div.dashboard-widget-content ul li a {
+       background-color: #f9f9f9;
+}
+
+input.readonly, textarea.readonly {
+       background-color: #ddd;
+}
+
+#editable-post-name {
+       background-color: #fffbcc;
+}
+
+#edit-slug-box strong,
+.tablenav .displaying-num,
+#submitted-on,
+.submitted-on {
+       color: #777;
+}
+
+.login #nav a,
+.login #backtoblog a {
+       color: #21759b !important;
+}
+
+.login #nav a:hover,
+.login #backtoblog a:hover {
+       color: #d54e21 !important;
+}
+
+#wpfooter {
+       color: #777;
+       border-color: #b0c8d7;
+}
+
+.imgedit-group,
+#media-items .media-item,
+.media-item .describe {
+       border-color: #dfdfdf;
+}
+
+.checkbox,
+.side-info,
+.plugins tr,
+#your-profile #rich_editing {
+       background-color: #fcfcfc;
+}
+
+.plugins .inactive,
+.plugins .inactive th,
+.plugins .inactive td,
+tr.inactive + tr.plugin-update-tr .plugin-update {
+       background-color: #f7fcfe;
+}
+
+.plugin-update-tr .update-message {
+       background-color: #fffbe4;
+       border-color: #dfdfdf;
+}
+
+.plugins .active,
+.plugins .active th,
+.plugins .active td {
+       color: #000;
+}
+
+.plugins .inactive a {
+       color: #579;
+}
+
+#the-comment-list tr.undo,
+#the-comment-list div.undo {
+       background-color: #f4f4f4;
+}
+
+#the-comment-list .unapproved {
+       background-color: #ffffe0;
+}
+
+#the-comment-list .approve a {
+       color: #006505;
+}
+
+#the-comment-list .unapprove a {
+       color: #d98500;
+}
+
+table.widefat span.delete a,
+table.widefat span.trash a,
+table.widefat span.spam a,
+#dashboard_recent_comments .delete a,
+#dashboard_recent_comments .trash a,
+#dashboard_recent_comments .spam a {
+       color: #bc0b0b;
+}
+
+.welcome-panel {
+       background: #f5fafd;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#f7fcfe));
+       background-image: -webkit-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:    -moz-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:      -o-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image: linear-gradient(to top, #eff8ff, #f7fcfe);
+       border-color: #d1e5ee;
+}
+.welcome-panel p {
+       color: #777;
+}
+.welcome-panel-column p {
+       color: #464646;
+}
+.welcome-panel h3 {
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+#titlediv,
+#poststuff .postarea,
+.stuffbox {
+       border-color: #d1e5ee;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+.menu-item-settings {
+       background: #f5fafd;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#f7fcfe));
+       background-image: -webkit-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:    -moz-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:      -o-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image: linear-gradient(to top, #eff8ff, #f7fcfe);
+}
+
+.postbox h3 {
+       color: #174f69;
+}
+
+.widget .widget-top {
+       color: #174f69;
+}
+
+.js .sidebar-name:hover h3,
+.js .postbox h3:hover {
+       color: #000;
+}
+
+.curtime #timestamp {
+       background-image: url(../images/date-button.gif);
+}
+
+#quicktags #ed_link {
+       color: #00f;
+}
+
+#rightnow .youhave {
+       background-color: #f0f6fb;
+}
+
+#rightnow a {
+       color: #448abd;
+}
+
+.tagchecklist span a,
+#bulk-titles div a {
+       background: url(../images/xit.gif) no-repeat;
+}
+
+.tagchecklist span a:hover,
+#bulk-titles div a:hover {
+       background: url(../images/xit.gif) no-repeat -10px 0;
+}
+
+#update-nag, .update-nag {
+       background-color: #fffbcc;
+       border-color: #e6db55;
+       color: #555;
+}
+
+#screen-meta {
+       background-color: #eff8ff;
+       border-color: #d1e5ee;
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
+       box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
+}
+
+#contextual-help-back {
+       background: #fff;
+}
+
+.contextual-help-tabs a:hover {
+       background-color: #ceeaff;
+       color: #333;
+}
+
+#contextual-help-back,
+.contextual-help-tabs .active {
+       border-color: #d1e5ee;
+}
+
+.contextual-help-tabs .active,
+.contextual-help-tabs .active a,
+.contextual-help-tabs .active a:hover {
+       background: #fff;
+       color: #000;
+}
+
+/* screen options and help tabs */
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+       border-right: 1px solid #d1e5ee;
+       border-left: 1px solid #d1e5ee;
+       border-bottom: 1px solid #d1e5ee;
+       background: #eff8ff;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#def1ff), to(#eff8ff));
+       background-image: -webkit-linear-gradient(bottom, #def1ff, #eff8ff);
+       background-image:    -moz-linear-gradient(bottom, #def1ff, #eff8ff);
+       background-image:      -o-linear-gradient(bottom, #def1ff, #eff8ff);
+       background-image: linear-gradient(to top, #def1ff, #eff8ff);
+}
+
+#screen-meta-links a {
+       color: #606060;
+       background: transparent url(../images/arrows.png) no-repeat right 4px;
+}
+
+#screen-meta-links a:hover,
+#screen-meta-links a:active {
+       color: #000;
+       background-color: transparent;
+}
+
+#screen-meta-links a.screen-meta-active {
+       background-position: right -31px;
+}
+
+/* end screen options and help tabs */
+
+.login #backtoblog a {
+       color: #464646;
+}
+
+#wphead {
+       border-bottom: 1px solid #d0dfe9;
+}
+
+#wphead h1 a {
+       color: #174f69;
+}
+
+#wpfooter a:link,
+#wpfooter a:visited {
+       text-decoration: none;
+}
+
+#wpfooter a:hover {
+       color: #000;
+       text-decoration: underline;
+}
+
+.file-error,
+abbr.required,
+.widget-control-remove:hover,
+table.widefat .delete a:hover,
+table.widefat .trash a:hover,
+table.widefat .spam a:hover,
+#dashboard_recent_comments .delete a:hover,
+#dashboard_recent_comments .trash a:hover
+#dashboard_recent_comments .spam a:hover {
+       color: #f00;
+}
+
+#pass-strength-result {
+       background-color: #eee;
+       border-color: #ddd !important;
+}
+
+#pass-strength-result.bad {
+       background-color: #ffb78c;
+       border-color: #ff853c !important;
+}
+
+#pass-strength-result.good {
+       background-color: #ffec8b;
+       border-color: #fc0 !important;
+}
+
+#pass-strength-result.short {
+       background-color: #ffa0a0;
+       border-color: #f04040 !important;
+}
+
+#pass-strength-result.strong {
+       background-color: #c3ff88;
+       border-color: #8dff1c !important;
+}
+
+/* editors */
+#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar {
+       border-color: #d0dfe9;
+       background-color: #eff8ff;
+}
+
+#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar * {
+       color: #555;
+}
+
+#poststuff #editor-toolbar .active {
+       border-color: #d0dfe9 #d0dfe9 #eff8ff;
+       background-color: #eff8ff;
+       color: #333;
+}
+
+.wp-editor-wrap .wp-editor-container,
+.wp-editor-wrap .wp_themeSkin table.mceLayout {
+       border-color: #d1e5ee #d1e5ee #d0dfe9;
+}
+
+#editorcontainer {
+       border-color: #d1e5ee #d1e5ee #d0dfe9;
+}
+
+#post-status-info {
+       border-color: #d0dfe9 #d1e5ee #d1e5ee;
+}
+
+/* TinyMCE */
+
+.wp-admin .wp-editor-wrap .wp-switch-editor {
+       background-color: #d3e9f2;
+       border-color: #d1e5ee #d1e5ee #d3e9f2;
+       color: #174F69;
+}
+
+.wp-admin .wp-editor-wrap .wp-switch-editor:active {
+       background-color: #f5fafd;
+}
+
+.wp-admin .wp-editor-wrap.tmce-active .switch-tmce,
+.wp-admin .wp-editor-wrap.html-active .switch-html {
+       background: #f7fcfe;
+       border-color: #d1e5ee #d1e5ee #f7fcfe;
+}
+
+.wp-admin .wp-editor-wrap .quicktags-toolbar,
+.wp-admin .wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar {
+       border-color: #d0dfe9;
+       background-color: #f5fafd;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#f7fcfe));
+       background-image: -webkit-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:    -moz-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image:      -o-linear-gradient(bottom, #eff8ff, #f7fcfe);
+       background-image: linear-gradient(to top, #eff8ff, #f7fcfe);
+}
+
+.wp-admin .wp_themeSkin table.mceListBox {
+       border-color: #d1e5ee;
+}
+
+.wp-admin .wp_themeSkin table.mceListBoxEnabled:hover,
+.wp-admin .wp_themeSkin table.mceListBoxEnabled:active,
+.wp-admin .wp_themeSkin table.mceListBoxHover,
+.wp-admin .wp_themeSkin table.mceListBoxHover:active,
+.wp-admin .wp_themeSkin table.mceListBoxSelected {
+       border-color: #b8cfdf;
+}
+
+.wp-admin .wp_themeSkin a.mceButtonEnabled:hover,
+.wp-admin .wp_themeSkin table.mceSplitButton:hover {
+       border-color: #c3d2dc;
+       background: #f4f9fc;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f4f9fc), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #f4f9fc, #fff);
+       background-image:    -moz-linear-gradient(bottom, #f4f9fc, #fff);
+       background-image:      -o-linear-gradient(bottom, #f4f9fc, #fff);
+       background-image: linear-gradient(to top, #f4f9fc, #fff);
+}
+
+.wp-admin .wp_themeSkin a.mceButton:active,
+.wp-admin .wp_themeSkin a.mceButtonEnabled:active,
+.wp-admin .wp_themeSkin a.mceButtonSelected:active,
+.wp-admin .wp_themeSkin a.mceButtonActive,
+.wp-admin .wp_themeSkin a.mceButtonActive:active,
+.wp-admin .wp_themeSkin a.mceButtonActive:hover,
+.wp-admin .wp_themeSkin .mceSplitButtonSelected table,
+.wp-admin .wp_themeSkin .mceSplitButtonSelected table:hover {
+       border-color: #8f9da9 #c3d2dc #c3d2dc #8f9da9;
+       background: #f4f9fc;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#f4f9fc));
+       background-image: -webkit-linear-gradient(bottom, #fff, #f4f9fc);
+       background-image:    -moz-linear-gradient(bottom, #fff, #f4f9fc);
+       background-image:      -o-linear-gradient(bottom, #fff, #f4f9fc);
+       background-image: linear-gradient(to top, #fff, #f4f9fc);
+}
+
+.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceOpen,
+.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceAction {
+       border-color: #8f9da9 #c3d2dc #c3d2dc #8f9da9;
+}
+
+.wp-admin .wp_themeSkin .mceSplitButton:hover a {
+       border-color: #c3d2dc;
+}
+/* end TinyMCE */
+
+.editwidget .widget-inside {
+       border-color: #d0dfe9;
+}
+
+#titlediv #title {
+       background-color: #fff;
+}
+
+#tTips p#tTips_inside {
+       background-color: #ddd;
+       color: #333;
+}
+
+#poststuff .inside .the-tagcloud {
+       border-color: #ddd;
+}
+
+/* menu */
+#adminmenuback,
+#adminmenuwrap {
+       background-color: #eff8ff;
+       border-color: #d1e5ee;
+}
+
+#adminmenushadow,
+#adminmenuback {
+       background-image: url(../images/menu-shadow.png);
+       background-position: top right;
+       background-repeat: repeat-y;
+}
+
+#adminmenu li.wp-menu-separator {
+       background: #d1e5ee;
+       border-color: #bed1dd;
+}
+
+#adminmenu div.separator {
+       border-color: #d1e5ee;
+}
+
+#adminmenu a.menu-top,
+#adminmenu .wp-submenu .wp-submenu-head {
+       border-top-color: #fff;
+       border-bottom-color: #cae6ff;
+}
+
+#adminmenu li.wp-menu-open {
+       border-color: #d1e5ee;
+}
+
+#adminmenu li.menu-top:hover,
+#adminmenu li.opensub > a.menu-top,
+#adminmenu li > a.menu-top:focus {
+       background-color: #e0f1ff;
+       color: #d54e21;
+       text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 );
+}
+
+/* So it doesn't get applied to the number spans (comments, updates, etc) */
+#adminmenu li.menu-top:hover > a span,
+#adminmenu li.menu-top > a:focus span {
+       text-shadow: none;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu li.current a.menu-top,
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.current.menu-top,
+#adminmenu .wp-menu-arrow,
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+       background: #5589aa;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#5589aa), to(#619bbb));
+       background-image: -webkit-linear-gradient(bottom, #5589aa, #619bbb);
+       background-image:    -moz-linear-gradient(bottom, #5589aa, #619bbb);
+       background-image:      -o-linear-gradient(bottom, #5589aa, #619bbb);
+       background-image: linear-gradient(to top, #5589aa, #619bbb);
+}
+
+#adminmenu .wp-menu-arrow div {
+       background: #5589aa;
+       background-image: -webkit-gradient(linear, right bottom, left top, from(#5589aa), to(#619bbb));
+       background-image: -webkit-linear-gradient(bottom right, #5589aa, #619bbb);
+       background-image:    -moz-linear-gradient(bottom right, #5589aa, #619bbb);
+       background-image:      -o-linear-gradient(bottom right, #5589aa, #619bbb);
+       background-image: linear-gradient(to top left, #5589aa, #619bbb);
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
+       border-top-color: #fff;
+       border-bottom-color: #cae6ff;
+       background: #e0f1ff;
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow div {
+       background: #e0f1ff;
+       border-color: #cae6ff;
+}
+
+.folded #adminmenu li.menu-top li:hover a {
+       background-image: none;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu li.current a.menu-top,
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+       text-shadow: 0 -1px 0 #333;
+       color: #fff;
+       border-top-color: #5a8fad;
+       border-bottom-color: #5589aa;
+}
+
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.current.menu-top {
+       border-top-color: #5a8fad;
+       border-bottom-color: #5589aa;
+}
+
+#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus {
+       background-color: #eff8ff;
+       color: #333;
+}
+
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover {
+       color: #333;
+}
+
+#adminmenu .wp-submenu,
+.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+       background-color: #fff;
+       border-color: #d0dfe9;
+       -webkit-box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+       box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+       background-color: #e0f1ff;
+       color: #333;
+}
+
+/* collapse menu button */
+#collapse-menu {
+       color: #a0c3d5;
+       border-top-color: #f9f9f9;
+}
+
+#collapse-menu:hover {
+       color: #5a8fad;
+}
+
+#collapse-button {
+       border-color: #d0dfe9;
+       background: #eff8ff;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff);
+       background-image:    -moz-linear-gradient(bottom, #eff8ff, #fff);
+       background-image:      -o-linear-gradient(bottom, #eff8ff, #fff);
+       background-image: linear-gradient(to top, #eff8ff, #fff);
+}
+
+#collapse-menu:hover #collapse-button {
+       border-color: #a0c3d5;
+}
+
+#collapse-button div {
+       background: transparent url(../images/arrows-vs.png) no-repeat 0 -72px;
+}
+
+.folded #collapse-button div {
+       background-position: 0 -108px;
+}
+
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       .auto-fold #adminmenu li.wp-has-current-submenu,
+       .auto-fold #adminmenu li.current.menu-top {
+               background-color: #5589aa;
+               background-image: -webkit-gradient(linear, left bottom, left top, from(#5589aa), to(#619bbb));
+               background-image: -webkit-linear-gradient(bottom, #5589aa, #619bbb);
+               background-image: -moz-linear-gradient(bottom, #5589aa, #619bbb);
+               background-image: -o-linear-gradient(bottom, #5589aa, #619bbb);
+               background-image: linear-gradient(bottom, #5589aa, #619bbb);
+       }
+
+       .auto-fold #adminmenu li.wp-has-current-submenu,
+       .auto-fold #adminmenu li.current.menu-top {
+               border-top-color: #5a8fad;
+               border-bottom-color: #5589aa;
+       }
+
+       .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu {
+               background-color: #fff;
+               border-color: #d0dfe9;
+               -webkit-box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+               box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+       }
+
+       .auto-fold #collapse-button div {
+               background-position: 0 -108px;
+       }
+}
+
+/* menu and screen icons */
+.icon16,
+.icon32,
+div.wp-menu-image {
+       background-color: transparent;
+       background-repeat: no-repeat;
+}
+
+.icon16.icon-dashboard,
+.menu-icon-dashboard div.wp-menu-image,
+.icon16.icon-post,
+.menu-icon-post div.wp-menu-image,
+.icon16.icon-media,
+.menu-icon-media div.wp-menu-image,
+.icon16.icon-links,
+.menu-icon-links div.wp-menu-image,
+.icon16.icon-page,
+.menu-icon-page div.wp-menu-image,
+.icon16.icon-comments,
+.menu-icon-comments div.wp-menu-image,
+.icon16.icon-appearance,
+.menu-icon-appearance div.wp-menu-image,
+.icon16.icon-plugins,
+.menu-icon-plugins div.wp-menu-image,
+.icon16.icon-users,
+.menu-icon-users div.wp-menu-image,
+.icon16.icon-tools,
+.menu-icon-tools div.wp-menu-image,
+.icon16.icon-settings,
+.menu-icon-settings div.wp-menu-image,
+.icon16.icon-site,
+.menu-icon-site div.wp-menu-image,
+.icon16.icon-generic,
+.menu-icon-generic div.wp-menu-image {
+       background-image: url(../images/menu-vs.png?ver=20121105);
+}
+
+.icon16.icon-dashboard,
+#adminmenu .menu-icon-dashboard div.wp-menu-image {
+       background-position: -59px -33px;
+}
+
+#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
+#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-dashboard.current div.wp-menu-image {
+       background-position: -59px -1px;
+}
+
+.icon16.icon-post,
+#adminmenu .menu-icon-post div.wp-menu-image {
+       background-position: -269px -33px;
+}
+
+#adminmenu .menu-icon-post:hover div.wp-menu-image,
+#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-post.current div.wp-menu-image {
+       background-position: -269px -1px;
+}
+
+.icon16.icon-media,
+#adminmenu .menu-icon-media div.wp-menu-image {
+       background-position: -119px -33px;
+}
+
+#adminmenu .menu-icon-media:hover div.wp-menu-image,
+#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-media.current div.wp-menu-image {
+       background-position: -119px -1px;
+}
+
+.icon16.icon-links,
+#adminmenu .menu-icon-links div.wp-menu-image {
+       background-position: -89px -33px;
+}
+
+#adminmenu .menu-icon-links:hover div.wp-menu-image,
+#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-links.current div.wp-menu-image {
+       background-position: -89px -1px;
+}
+
+.icon16.icon-page,
+#adminmenu .menu-icon-page div.wp-menu-image {
+       background-position: -149px -33px;
+}
+
+#adminmenu .menu-icon-page:hover div.wp-menu-image,
+#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-page.current div.wp-menu-image {
+       background-position: -149px -1px;
+}
+
+.icon16.icon-comments,
+#adminmenu .menu-icon-comments div.wp-menu-image {
+       background-position: -29px -33px;
+}
+
+#adminmenu .menu-icon-comments:hover div.wp-menu-image,
+#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-comments.current div.wp-menu-image {
+       background-position: -29px -1px;
+}
+
+.icon16.icon-appearance,
+#adminmenu .menu-icon-appearance div.wp-menu-image {
+       background-position: 1px -33px;
+}
+
+#adminmenu .menu-icon-appearance:hover div.wp-menu-image,
+#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-appearance.current div.wp-menu-image {
+       background-position: 1px -1px;
+}
+
+.icon16.icon-plugins,
+#adminmenu .menu-icon-plugins div.wp-menu-image {
+       background-position: -179px -33px;
+}
+
+#adminmenu .menu-icon-plugins:hover div.wp-menu-image,
+#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-plugins.current div.wp-menu-image {
+       background-position: -179px -1px;
+}
+
+.icon16.icon-users,
+#adminmenu .menu-icon-users div.wp-menu-image {
+       background-position: -300px -33px;
+}
+
+#adminmenu .menu-icon-users:hover div.wp-menu-image,
+#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-users.current div.wp-menu-image {
+       background-position: -300px -1px;
+}
+
+.icon16.icon-tools,
+#adminmenu .menu-icon-tools div.wp-menu-image {
+       background-position: -209px -33px;
+}
+
+#adminmenu .menu-icon-tools:hover div.wp-menu-image,
+#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-tools.current div.wp-menu-image {
+       background-position: -209px -1px;
+}
+
+.icon16.icon-settings,
+#adminmenu .menu-icon-settings div.wp-menu-image {
+       background-position: -239px -33px;
+}
+
+#adminmenu .menu-icon-settings:hover div.wp-menu-image,
+#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-settings.current div.wp-menu-image {
+       background-position: -239px -1px;
+}
+
+.icon16.icon-site,
+#adminmenu .menu-icon-site div.wp-menu-image {
+       background-position: -359px -33px;
+}
+
+#adminmenu .menu-icon-site:hover div.wp-menu-image,
+#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-site.current div.wp-menu-image {
+       background-position: -359px -1px;
+}
+
+.icon16.icon-generic,
+#adminmenu .menu-icon-generic div.wp-menu-image {
+       background-position: -330px -33px;
+}
+
+#adminmenu .menu-icon-generic:hover div.wp-menu-image,
+#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-generic.current div.wp-menu-image {
+       background-position: -330px -1px;
+}
+/* end menu and screen icons */
+
+/* Screen Icons */
+.icon32.icon-post,
+#icon-edit,
+#icon-post,
+.icon32.icon-dashboard,
+#icon-index,
+.icon32.icon-media,
+#icon-upload,
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category,
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page,
+.icon32.icon-comments,
+#icon-edit-comments,
+.icon32.icon-appearance,
+#icon-themes,
+.icon32.icon-plugins,
+#icon-plugins,
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit,
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin,
+.icon32.icon-settings,
+#icon-options-general,
+.icon32.icon-site,
+#icon-ms-admin,
+.icon32.icon-generic,
+#icon-generic {
+       background-image: url(../images/icons32-vs.png?ver=20121105);
+}
+
+.icon32.icon-post,
+#icon-edit,
+#icon-post {
+       background-position: -552px -5px;
+}
+
+.icon32.icon-dashboard,
+#icon-index {
+       background-position: -137px -5px;
+}
+
+.icon32.icon-media,
+#icon-upload {
+       background-position: -251px -5px;
+}
+
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category {
+       background-position: -190px -5px;
+}
+
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page {
+       background-position: -312px -5px;
+}
+
+.icon32.icon-comments,
+#icon-edit-comments {
+       background-position: -72px -5px;
+}
+
+.icon32.icon-appearance,
+#icon-themes {
+       background-position: -11px -5px;
+}
+
+.icon32.icon-plugins,
+#icon-plugins {
+       background-position: -370px -5px;
+}
+
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit {
+       background-position: -600px -5px;
+}
+
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin {
+       background-position: -432px -5px;
+}
+
+.icon32.icon-settings,
+#icon-options-general {
+       background-position: -492px -5px;
+}
+
+.icon32.icon-site,
+#icon-ms-admin {
+       background-position: -659px -5px;
+}
+
+.icon32.icon-generic,
+#icon-generic {
+       background-position: -708px -5px;
+}
+
+/* end screen icons */
+
+/* Diff */
+table.diff .diff-deletedline {
+       background-color: #fdd;
+}
+
+table.diff .diff-deletedline del {
+       background-color: #f99;
+}
+
+table.diff .diff-addedline {
+       background-color: #dfd;
+}
+
+table.diff .diff-addedline ins {
+       background-color: #9f9;
+}
+
+#att-info {
+       background-color: #e4f2fd;
+}
+
+/* edit image */
+#sidemenu a {
+       background-color: #f9f9f9;
+       border-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+}
+
+#sidemenu a.current {
+       background-color: #fff;
+       border-color: #dfdfdf #dfdfdf #fff;
+       color: #d54e21;
+}
+
+#replyerror {
+       border-color: #ddd;
+       background-color: #f9f9f9;
+}
+
+/* table vim shortcuts */
+.vim-current,
+.vim-current th,
+.vim-current td {
+       background-color: #e4f2fd !important;
+}
+
+/* Install Plugins */
+#plugin-information .fyi ul {
+       background-color: #eaf3fa;
+}
+
+#plugin-information .fyi h2.mainheader {
+       background-color: #cee1ef;
+}
+
+#plugin-information pre,
+#plugin-information code {
+       background-color: #ededff;
+}
+
+#plugin-information pre {
+       border: 1px solid #ccc;
+}
+
+/* inline editor */
+#bulk-titles {
+       border-color: #ddd;
+}
+
+.inline-editor div.title {
+       background-color: #eaf3fa;
+}
+
+.inline-editor ul.cat-checklist {
+       background-color: #fff;
+       border-color: #ddd;
+}
+
+.inline-editor .categories .catshow,
+.inline-editor .categories .cathide {
+       color: #21759b;
+}
+
+.inline-editor .quick-edit-save {
+       background-color: #f1f1f1;
+}
+
+fieldset.inline-edit-col-right .inline-edit-col {
+       border-color: #dfdfdf;
+}
+
+.attention {
+       color: #d54e21;
+}
+
+.js .meta-box-sortables .postbox:hover .handlediv {
+       background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
+}
+
+.tablenav .tablenav-pages {
+       color: #555;
+}
+
+.tablenav .tablenav-pages a {
+       border-color: #d1e5ee;
+       background: #eee;
+       -moz-box-shadow:    inset 0 1px 0 #fff;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow:         inset 0 1px 0 #fff;
+}
+
+.tablenav .tablenav-pages a:hover,
+.tablenav .tablenav-pages a:focus {
+       color: #d54e21;
+}
+
+.tablenav .tablenav-pages a.disabled,
+.tablenav .tablenav-pages a.disabled:hover,
+.tablenav .tablenav-pages a.disabled:focus {
+       color: #aaa;
+}
+
+.tablenav .tablenav-pages .current {
+       background: #dfdfdf;
+       border-color: #d3d3d3;
+}
+
+#availablethemes,
+#availablethemes td {
+       border-color: #acd;
+}
+
+#current-theme img {
+       border-color: #b0c8d7;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+       color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link:hover,
+#TB_window #TB_title a.tb-theme-preview-link:focus {
+       color: #ccc;
+}
+
+.misc-pub-section {
+       border-top-color: #fff;
+       border-bottom-color: #d1e5ee;
+}
+
+#minor-publishing {
+       border-bottom-color: #cae6ff;
+}
+
+#post-body .misc-pub-section {
+       border-left-color: #eee;
+}
+
+.post-com-count span {
+       background-color: #bbb;
+}
+
+.form-table .color-palette td {
+       border-color: #fff;
+}
+
+.sortable-placeholder {
+       border-color: #bbb;
+       background-color: #f5f5f5;
+}
+
+#post-body ul.category-tabs li.tabs a,
+#post-body ul.add-menu-item-tabs li.tabs a,
+body.press-this ul.category-tabs li.tabs a {
+       color: #333;
+}
+
+.view-switch #view-switch-list,
+.view-switch #view-switch-excerpt {
+       background-color: transparent;
+       background-image: url('../images/list.png');
+       background-repeat: no-repeat;
+}
+
+.view-switch #view-switch-list {
+       background-position: 0 0;
+}
+
+.view-switch .current #view-switch-list {
+       background-position: -40px 0;
+}
+
+.view-switch #view-switch-excerpt {
+       background-position: -20px 0;
+}
+
+.view-switch .current #view-switch-excerpt {
+       background-position: -60px 0;
+}
+
+#header-logo {
+       background: transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center;
+}
+
+.popular-tags,
+.feature-filter {
+       background-color: #fff;
+       border-color: #d1e5ee;
+}
+
+div.widgets-sortables,
+#widgets-left .inactive,
+#available-widgets .widget-holder {
+       background-color: #f7fcfe;
+       border-color: #d0dfe9;
+}
+
+#available-widgets .widget-description {
+       color: #555;
+}
+
+.sidebar-name {
+       color: #464646;
+       text-shadow: #fff 0 1px 0;
+       border-color: #d0dfe9;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+}
+
+.js .sidebar-name:hover,
+.js #removing-widget {
+       color: #d54e21;
+}
+
+#removing-widget span {
+       color: black;
+}
+
+.js .sidebar-name-arrow {
+       background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px;
+}
+
+.js .sidebar-name:hover .sidebar-name-arrow {
+       background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;
+}
+
+.in-widget-title {
+       color: #606060;
+}
+
+.deleting .widget-title * {
+       color: #aaa;
+}
+
+.imgedit-menu div {
+       border-color: #d5d5d5;
+       background-color: #f1f1f1;
+}
+
+.imgedit-menu div:hover {
+       border-color: #c1c1c1;
+       background-color: #eaeaea;
+}
+
+.imgedit-menu div.disabled {
+       border-color: #ccc;
+       background-color: #ddd;
+       filter: alpha(opacity=50);
+       opacity: 0.5;
+}
+
+#dashboard_recent_comments div.undo {
+       border-top-color: #dfdfdf;
+}
+
+.comment-ays,
+.comment-ays th {
+       border-color: #ddd;
+}
+
+.comment-ays th {
+       background-color: #f1f1f1;
+}
+
+/* added from nav-menu.css */
+#menu-management .menu-edit {
+       border-color: #d0dfe9;
+}
+
+#post-body {
+       background: #fff;
+       border-top-color: #fff;
+       border-bottom-color: #d0dfe9;
+}
+
+#nav-menu-header {
+       border-bottom-color: #d0dfe9;
+}
+
+#nav-menu-footer {
+       border-top-color: #fff;
+}
+
+#menu-management .nav-tabs-arrow a {
+       color: #c1c1c1;
+}
+
+#menu-management .nav-tabs-arrow a:hover {
+       color: #d54e21;
+}
+
+#menu-management .nav-tabs-arrow a:active {
+       color: #464646;
+}
+
+#menu-management .nav-tab-active {
+       border-color: #dfdfdf;
+}
+
+#menu-management .nav-tab {
+       background: #f7fcfe;
+       border-color: #d0dfe9;
+}
+
+.js .input-with-default-title {
+       color: #aaa;
+}
+
+#cancel-save {
+       color: #f00;
+}
+
+#cancel-save:hover {
+       background-color: #f00;
+       color: #fff;
+}
+
+.list-container {
+       border-color: #dfdfdf;
+}
+
+.menu-item-handle {
+       border-color: #d0dfe9;
+}
+
+.menu li.deleting .menu-item-handle {
+       background-color: #f66;
+       text-shadow: #ccc;
+}
+
+.item-type { /* Menu item controls */
+       color: #999;
+}
+
+.item-controls .menu-item-delete:hover {
+       color: #f00;
+}
+
+.nav-menus-php .item-edit {
+       background: transparent url(../images/arrows-vs.png) no-repeat 8px 10px;
+       border-bottom-color: #eff8ff;
+}
+
+.nav-menus-php .item-edit:hover {
+       background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px;
+}
+
+.menu-item-settings { /* Menu editing */
+       border-color: #d0dfe9;
+}
+
+.link-to-original {
+       color: #777;
+       border-color: #d0dfe9;
+}
+
+#cancel-save:hover {
+       color: #fff !important;
+}
+
+#update-menu-item {
+       color: #fff !important;
+}
+
+#update-menu-item:hover,
+#update-menu-item:active,
+#update-menu-item:focus {
+       color: #eaf2fa !important;
+       border-color: #13455b !important;
+}
+
+.submitbox .submitcancel {
+       color: #21759b;
+       border-bottom-color: #21759b;
+}
+
+.submitbox .submitcancel:hover {
+       background: #21759b;
+       color: #fff;
+}
+/* end added from nav-menu.css */
+
+.nav-tab {
+       border-color: #d1e5ee #d1e5ee #fff;
+}
+
+.nav-tab:hover,
+.nav-tab-active {
+       border-color: #acd #acd #fff;
+}
+
+h2.nav-tab-wrapper, h3.nav-tab-wrapper {
+       border-bottom-color: #acd;
+}
+
+#menu-management .nav-tab-active,
+.menu-item-handle,
+.menu-item-settings {
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+}
+
+#menu-management .nav-tab-active {
+       background: #f7fcfe;
+       border-bottom-color: #f7fcfe;
+}
+
+#upload-form label {
+       color: #777;
+}
+
+/* custom header & background pages */
+
+/* full screen */
+.fullscreen-overlay {
+       background: #fff;
+}
+
+.wp-fullscreen-focus #wp-fullscreen-title,
+.wp-fullscreen-focus #wp-fullscreen-container {
+    border-color: #bed1dd;
+}
+
+#fullscreen-topbar {
+       border-bottom-color: #d1e5ee;
+}
+
+/* Begin About Pages */
+
+.about-wrap h1 {
+       color: #333;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-text {
+       color: #777;
+}
+
+.wp-badge {
+       color: #fff;
+       text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3);
+}
+
+.about-wrap h2 .nav-tab {
+       color: #21759b;
+}
+
+.about-wrap h2 .nav-tab:hover {
+       color: #d54e21;
+}
+
+.about-wrap h2 .nav-tab-active,
+.about-wrap h2 .nav-tab-active:hover {
+       color: #333;
+}
+
+.about-wrap h2 .nav-tab-active {
+       text-shadow: 1px 1px 1px #fff;
+       color: #464646;
+}
+
+.about-wrap h3 {
+       color: #333;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-wrap .feature-section h4 {
+       color: #464646;
+}
+
+.about-wrap .feature-section img {
+       background: #fff;
+       border: 1px #ccc solid;
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
+       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
+}
+
+.about-wrap h4.wp-people-group {
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-wrap .point-releases {
+       border-bottom: 1px solid #dfdfdf;
+}
+
+.about-wrap .point-releases h3 {
+       border-top: 1px solid #dfdfdf;
+}
+
+.about-wrap .point-releases h3:first-child {
+       border: 0;
+}
+
+.about-wrap li.wp-person img.gravatar {
+       -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
+       box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
+}
+
+.about-wrap li.wp-person .title {
+       color: #464646;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.freedoms-php .about-wrap ol li {
+       color: #999;
+}
+
+.freedoms-php .about-wrap ol p {
+       color: #464646;
+}
+
+/* End About Pages */
+
+
+/*------------------------------------------------------------------------------
+  2.0 - Right to Left Styles
+------------------------------------------------------------------------------*/
+
+.rtl .bar {
+       border-right-color: transparent;
+       border-left-color: #99d;
+}
+
+.rtl #screen-meta-links a.show-settings {
+       background-position: left 3px;
+}
+
+.rtl #screen-meta-links a.show-settings.screen-meta-active {
+       background-position: left -33px;
+}
+
+/* Menu */
+.rtl #adminmenushadow,
+.rtl #adminmenuback {
+       background-image: url(../images/menu-shadow-rtl.png);
+       background-position: top left;
+}
+
+.rtl #adminmenu .wp-submenu .wp-submenu-head {
+       border-right-color: transparent;
+       border-left-color: #d1e5ee;
+}
+
+.rtl #adminmenu .wp-submenu,
+.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+       -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+}
+
+.rtl #adminmenu .wp-has-current-submenu .wp-submenu {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+/* Collapse Menu Button */
+.rtl #collapse-button div {
+       background-position: 0 -108px;
+}
+
+.rtl.folded #collapse-button div {
+       background-position: 0 -72px;
+}
+
+/* Auto-folding of the admin menu for RTL */
+@media only screen and (max-width: 900px) {
+       .rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+       .rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu {
+               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       .rtl.auto-fold #collapse-button div {
+               background-position: 0 -72px;
+       }
+}
+
+/* edit image */
+.js.rtl .meta-box-sortables .postbox:hover .handlediv {
+       background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
+}
+
+.rtl #post-body .misc-pub-section {
+       border-right-color: transparent;
+       border-left-color: #d1e5ee;
+}
+
+.js.rtl .sidebar-name-arrow {
+       background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px;
+}
+
+.js.rtl .sidebar-name:hover .sidebar-name-arrow {
+       background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+
+       .curtime #timestamp {
+               background-image: url("../images/date-button-2x.gif?ver=20120916");
+               background-size: 16px auto;
+       }
+
+       .tagchecklist span a,
+       #bulk-titles div a,
+       .tagchecklist span a:hover,
+       #bulk-titles div a:hover {
+               background-image: url("../images/xit-2x.gif?ver=20120916");
+               background-size: 20px auto;
+       }
+
+       #screen-meta-links a.show-settings,
+       #screen-meta-links a.show-settings.screen-meta-active,
+       #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+       #adminmenu .wp-menu-open .wp-menu-toggle,
+       #collapse-button div,
+       .nav-menus-php .item-edit,
+       .js .meta-box-sortables .postbox:hover .handlediv,
+       .sidebar-name-arrow,
+       .rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+       .rtl #adminmenu .wp-menu-open .wp-menu-toggle,
+       .js.rtl .meta-box-sortables .postbox:hover .handlediv,
+       .rtl .sidebar-name-arrow {
+               background-image: url("../images/arrows-vs-2x.png?ver=20120916");
+               background-size: 15px 123px;
+       }
+
+       #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+       #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
+       .nav-menus-php .item-edit:hover,
+       .sidebar-name:hover .sidebar-name-arrow,
+       .rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+       .rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
+       .rtl .sidebar-name:hover .sidebar-name-arrow {
+               background-image: url("../images/arrows-dark-vs-2x.png?ver=20120916");
+               background-size: 15px 123px;
+       }
+
+       .view-switch #view-switch-list,
+       .view-switch #view-switch-excerpt {
+               background-image: url("../images/list-2x.png?ver=20120916");
+               background-size: 80px 20px;
+       }
+
+       .icon32.icon-post,
+       #icon-edit,
+       #icon-post,
+       .icon32.icon-dashboard,
+       #icon-index,
+       .icon32.icon-media,
+       #icon-upload,
+       .icon32.icon-links,
+       #icon-link-manager,
+       #icon-link,
+       #icon-link-category,
+       .icon32.icon-page,
+       #icon-edit-pages,
+       #icon-page,
+       .icon32.icon-comments,
+       #icon-edit-comments,
+       .icon32.icon-appearance,
+       #icon-themes,
+       .icon32.icon-plugins,
+       #icon-plugins,
+       .icon32.icon-users,
+       #icon-users,
+       #icon-profile,
+       #icon-user-edit,
+       .icon32.icon-tools,
+       #icon-tools,
+       #icon-admin,
+       .icon32.icon-settings,
+       #icon-options-general,
+       .icon32.icon-site,
+       #icon-ms-admin,
+       .icon32.icon-generic,
+       #icon-generic {
+               background-image: url(../images/icons32-vs-2x.png?ver=20121105);
+               background-size: 756px 45px;
+       }
+
+       .icon16.icon-dashboard,
+       .menu-icon-dashboard div.wp-menu-image,
+       .icon16.icon-post,
+       .menu-icon-post div.wp-menu-image,
+       .icon16.icon-media,
+       .menu-icon-media div.wp-menu-image,
+       .icon16.icon-links,
+       .menu-icon-links div.wp-menu-image,
+       .icon16.icon-page,
+       .menu-icon-page div.wp-menu-image,
+       .icon16.icon-comments,
+       .menu-icon-comments div.wp-menu-image,
+       .icon16.icon-appearance,
+       .menu-icon-appearance div.wp-menu-image,
+       .icon16.icon-plugins,
+       .menu-icon-plugins div.wp-menu-image,
+       .icon16.icon-users,
+       .menu-icon-users div.wp-menu-image,
+       .icon16.icon-tools,
+       .menu-icon-tools div.wp-menu-image,
+       .icon16.icon-settings,
+       .menu-icon-settings div.wp-menu-image,
+       .icon16.icon-site,
+       .menu-icon-site div.wp-menu-image,
+       .icon16.icon-generic,
+       .menu-icon-generic div.wp-menu-image {
+               background-image: url('../images/menu-vs-2x.png?ver=20121105');
+               background-size: 390px 64px;
+       }
+
+       #header-logo {
+               background-image: url('../images/wp-logo-vs-2x.png?ver=20120916');
+               background-size: 16px auto;
+       }
+
+}
diff --git a/wp-admin/css/colors-classic.dev.css b/wp-admin/css/colors-classic.dev.css
deleted file mode 100644 (file)
index b70e35d..0000000
+++ /dev/null
@@ -1,2498 +0,0 @@
-/*------------------------------------------------------------------------------
-
-
-Howdy! This is the CSS file that controls the
-Blue (classic) color style on the WordPress Dashboard.
-
-This file contains both LTR and RTL styles.
-
-
-TABLE OF CONTENTS:
-------------------
- 1.0 - Left to Right Styles
- 2.0 - Right to Left Styles
-
-
-------------------------------------------------------------------------------*/
-
-
-/*------------------------------------------------------------------------------
-  1.0 - Left to Right Styles
-------------------------------------------------------------------------------*/
-
-html,
-.wp-dialog {
-       background-color: #fff;
-}
-
-* html input,
-* html .widget {
-       border-color: #dfdfdf;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="file"],
-input[type="button"],
-input[type="submit"],
-input[type="reset"],
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="tel"],
-input[type="url"],
-select {
-       border-color: #dfdfdf;
-       background-color: #fff;
-       color: #333;
-}
-
-select {
-       color: #000;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="file"]:focus,
-input[type="button"]:focus,
-input[type="submit"]:focus,
-input[type="reset"]:focus,
-input[type="email"]:focus,
-input[type="number"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="url"]:focus,
-select:focus {
-       border-color: #d1e5ee;
-}
-
-kbd,
-code {
-       background: #eaeaea;
-}
-
-input[readonly] {
-       background-color: #eee;
-}
-
-.find-box-search {
-       border-color: #dfdfdf;
-       background-color: #f1f1f1;
-}
-
-.find-box {
-       background-color: #f1f1f1;
-}
-
-.find-box-inside {
-       background-color: #fff;
-}
-
-a.page-numbers:hover {
-       border-color: #999;
-}
-
-body,
-#wpbody,
-.form-table .pre,
-.ui-autocomplete li a {
-       color: #333;
-}
-
-body > #upload-menu {
-       border-bottom-color: #fff;
-}
-
-#postcustomstuff table,
-#your-profile fieldset,
-#rightnow,
-div.dashboard-widget,
-#dashboard-widgets p.dashboard-widget-links {
-       border-color: #D1E5EE
-}
-
-#poststuff .inside label.spam,
-#poststuff .inside label.deleted {
-       color: red;
-}
-
-#poststuff .inside label.waiting {
-       color: orange;
-}
-
-#poststuff .inside label.approved {
-       color: green;
-}
-
-#postcustomstuff table {
-       border-color: #dfdfdf;
-       background-color: #F9F9F9;
-}
-
-#postcustomstuff thead th {
-       background-color: #F1F1F1;
-}
-
-#postcustomstuff table input,
-#postcustomstuff table textarea {
-       border-color: #dfdfdf;
-       background-color: #fff;
-}
-
-.widefat {
-       border-color: #D1E5EE;
-       background-color: #fff;
-}
-
-div.dashboard-widget-error {
-       background-color: #c43;
-}
-
-div.dashboard-widget-notice {
-       background-color: #cfe1ef;
-}
-
-div.dashboard-widget-submit {
-       border-top-color: #ccc;
-}
-
-ul.category-tabs li {
-       border-color: transparent;
-}
-
-div.tabs-panel,
-.wp-tab-panel,
-ul.category-tabs li.tabs,
-ul.add-menu-item-tabs li.tabs,
-.wp-tab-active {
-       border-color: #dfdfdf;
-       background-color: #fff;
-}
-
-ul.category-tabs li.tabs,
-ul.add-menu-item-tabs li.tabs,
-.wp-tab-active {
-       background-color: #fff;
-}
-
-input.disabled,
-textarea.disabled {
-       background-color: #ccc;
-}
-/* #upload-menu li a.upload-tab-link, */
-#plugin-information .action-button a,
-#plugin-information .action-button a:hover,
-#plugin-information .action-button a:visited {
-       color: #fff;
-}
-
-.widget .widget-top,
-.postbox h3,
-.stuffbox h3,
-.widefat thead tr th,
-.widefat tfoot tr th,
-h3.dashboard-widget-title,
-h3.dashboard-widget-title span,
-h3.dashboard-widget-title small,
-.find-box-head,
-.sidebar-name,
-#nav-menu-header,
-#nav-menu-footer,
-.menu-item-handle,
-#fullscreen-topbar {
-       background-color: #f5fafd; /* Fallback */
-       background-image: -ms-linear-gradient(top, #f7fcfe, #eff8ff); /* IE10 */
-       background-image: -moz-linear-gradient(top, #f7fcfe, #eff8ff); /* Firefox */
-       background-image: -o-linear-gradient(top, #f7fcfe, #eff8ff); /* Opera */
-       background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fcfe), to(#eff8ff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(top, #f7fcfe, #eff8ff); /* new Webkit */
-       background-image: linear-gradient(top, #f7fcfe, #eff8ff); /* proposed W3C Markup */
-}
-
-.widget .widget-top,
-.postbox h3,
-.stuffbox h3 {
-       border-bottom-color: #D1E5EE;
-       text-shadow: #fff 0 1px 0;
-       -moz-box-shadow: 0 1px 0 #fff;
-       -webkit-box-shadow: 0 1px 0 #fff;
-       box-shadow: 0 1px 0 #fff;
-}
-
-.form-table th,
-.form-wrap label {
-       color: #222;
-       text-shadow: #fff 0 1px 0;
-}
-
-.description,
-.form-wrap p {
-       color: #666;
-}
-
-strong .post-com-count span {
-       background-color: #21759b;
-}
-
-.sorthelper {
-       background-color: #ccf3fa;
-}
-
-.ac_match,
-.subsubsub a.current {
-       color: #000;
-}
-
-.wrap h2 {
-       color: #174f69;
-}
-
-.wrap .add-new-h2 {
-       background: #f1f1f1;
-}
-
-.subtitle {
-       color: #777;
-}
-
-.ac_over {
-       background-color: #f0f0b8;
-}
-
-.ac_results {
-       background-color: #fff;
-       border-color: #808080;
-}
-
-.ac_results li {
-       color: #101010;
-}
-
-.alternate,
-.alt {
-       background-color: #f7fcfe;
-}
-
-.available-theme a.screenshot {
-       background-color: #f1f1f1;
-       border-color: #ddd;
-}
-
-.bar {
-       background-color: #e8e8e8;
-       border-right-color: #99d;
-}
-
-#media-upload,
-#media-upload .media-item .slidetoggle {
-       background: #fff;
-}
-
-#media-upload .slidetoggle {
-       border-top-color: #dfdfdf;
-}
-
-div.error,
-.login #login_error {
-       background-color: #ffebe8;
-       border-color: #c00;
-}
-
-div.error a {
-       color: #c00;
-}
-
-.form-invalid {
-       background-color: #ffebe8 !important;
-}
-
-.form-invalid input,
-.form-invalid select {
-       border-color: #c00 !important;
-}
-
-.submit,
-#commentsdiv #add-new-comment {
-       border-color: #dfdfdf;
-}
-
-.highlight {
-       background-color: #e4f2fd;
-       color: #000;
-}
-
-.howto,
-.nonessential,
-#edit-slug-box,
-.form-input-tip,
-.subsubsub {
-       color: #666;
-}
-
-.media-upload-form label.form-help,
-td.help {
-       color: #9a9a9a;
-}
-
-.ui-autocomplete {
-       background-color: #eff8ff;
-       border-color: #d1e5ee;
-}
-
-.ui-autocomplete li a.ui-state-hover {
-       background-color: #def1ff;
-}
-
-.post-com-count {
-       background-image: url(../images/bubble_bg.gif);
-       color: #fff;
-}
-
-.post-com-count span {
-       background-color: #bbb;
-       color: #fff;
-}
-
-.post-com-count:hover span {
-       background-color: #d54e21;
-}
-
-.quicktags, .search {
-       background-color: #ccc;
-       color: #000;
-}
-
-.side-info h5 {
-       border-bottom-color: #dadada;
-}
-
-.side-info ul {
-       color: #666;
-}
-
-.button,
-.button-secondary,
-.submit input,
-input[type=button],
-input[type=submit] {
-       border-color: #bbb;
-       color: #464646;
-}
-
-.button:hover,
-.button-secondary:hover,
-.submit input:hover,
-input[type=button]:hover,
-input[type=submit]:hover {
-       color: #000;
-       border-color: #666;
-}
-
-.button,
-.submit input,
-.button-secondary {
-       background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
-       text-shadow: rgba(255,255,255,1) 0 1px 0;
-}
-
-.button:active,
-.submit input:active,
-.button-secondary:active {
-       background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
-}
-
-input.button-primary,
-button.button-primary,
-a.button-primary {
-       border-color: #298cba;
-       font-weight: bold;
-       color: #fff;
-       background: #21759B url(../images/button-grad.png) repeat-x scroll left top;
-       text-shadow: rgba(0,0,0,0.3) 0 -1px 0;
-}
-
-input.button-primary:active,
-button.button-primary:active,
-a.button-primary:active {
-       background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top;
-       color: #eaf2fa;
-}
-
-input.button-primary:hover,
-button.button-primary:hover,
-a.button-primary:hover,
-a.button-primary:focus,
-a.button-primary:active {
-       border-color: #13455b;
-       color: #eaf2fa;
-}
-
-.button-disabled,
-.button[disabled],
-.button:disabled,
-.button-secondary[disabled],
-.button-secondary:disabled,
-a.button.disabled {
-       color: #aaa !important;
-       border-color: #ddd !important;
-}
-
-.button-primary-disabled,
-.button-primary[disabled],
-.button-primary:disabled {
-       color: #9FD0D5 !important;
-       background: #298CBA !important;
-}
-
-a:hover,
-a:active,
-a:focus {
-       color: #d54e21;
-}
-
-#adminmenu a:hover,
-#adminmenu li.menu-top > a:focus,
-#adminmenu ul.wp-submenu a:hover,
-#the-comment-list .comment a:hover,
-#rightnow a:hover,
-#media-upload a.del-link:hover,
-div.dashboard-widget-submit input:hover,
-.subsubsub a:hover,
-.subsubsub a.current:hover,
-.ui-tabs-nav a:hover,
-.plugins .inactive a:hover,
-#all-plugins-table .plugins .inactive a:hover,
-#search-plugins-table .plugins .inactive a:hover {
-       color: #d54e21;
-}
-
-#the-comment-list .comment-item,
-#dashboard-widgets #dashboard_quick_press form p.submit {
-       border-color: #dfdfdf;
-}
-
-#side-sortables .category-tabs .tabs a,
-#side-sortables .add-menu-item-tabs .tabs a,
-.wp-tab-bar .wp-tab-active a {
-       color: #333;
-}
-
-#rightnow .rbutton {
-       background-color: #ebebeb;
-       color: #264761;
-}
-
-.submitbox .submit {
-       background-color: #464646;
-       color: #ccc;
-}
-
-.plugins a.delete:hover,
-#all-plugins-table .plugins a.delete:hover,
-#search-plugins-table .plugins a.delete:hover,
-.submitbox .submitdelete {
-       color: #f00;
-       border-bottom-color: #f00;
-}
-
-.submitbox .submitdelete:hover,
-#media-items a.delete:hover {
-       color: #fff;
-       background-color: #f00;
-       border-bottom-color: #f00;
-}
-
-#normal-sortables .submitbox .submitdelete:hover {
-       color: #000;
-       background-color: #f00;
-       border-bottom-color: #f00;
-}
-
-.tablenav .dots {
-       border-color: transparent;
-}
-
-.tablenav .next,
-.tablenav .prev {
-       border-color: transparent;
-       color: #21759b;
-}
-
-.tablenav .next:hover,
-.tablenav .prev:hover {
-       border-color: transparent;
-       color: #d54e21;
-}
-
-div.updated,
-.login .message {
-       background-color: #ffffe0;
-       border-color: #e6db55;
-}
-
-.update-message {
-       color: #000;
-}
-
-a.page-numbers {
-       border-bottom-color: #B8D3E2;
-}
-
-.commentlist li {
-       border-bottom-color: #ccc;
-}
-
-.widefat td,
-.widefat th {
-       border-top-color: #fff;
-       border-bottom-color: #D0DFE9;
-}
-
-.widefat th {
-       text-shadow: rgba(255,255,255,0.8) 0 1px 0;
-}
-
-.widefat td {
-       color: #555;
-}
-.widefat p,
-.widefat ol,
-.widefat ul {
-       color: #333;
-}
-
-.widefat thead tr th,
-.widefat tfoot tr th,
-h3.dashboard-widget-title,
-h3.dashboard-widget-title span,
-h3.dashboard-widget-title small,
-.find-box-head {
-       color: #333;
-}
-
-th.sortable a:hover, th.sortable a:active, th.sortable a:focus {
-       color: #333;
-}
-
-h3.dashboard-widget-title small a {
-       color: #d7d7d7;
-}
-
-h3.dashboard-widget-title small a:hover {
-       color: #fff;
-}
-
-a,
-#adminmenu a,
-#the-comment-list p.comment-author strong a,
-#media-upload a.del-link,
-#media-items a.delete,
-.plugins a.delete,
-.ui-tabs-nav a {
-       color: #21759b;
-}
-
-#adminmenu .awaiting-mod,
-#adminmenu .update-plugins,
-#sidemenu a .update-plugins,
-#rightnow .reallynow {
-       background-color: #464646;
-       color: #fff;
-       -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-}
-#plugin-information .action-button {
-       background-color: #d54e21;
-       color: #fff;
-}
-
-#adminmenu li.current a .awaiting-mod,
-#adminmenu     li a.wp-has-current-submenu .update-plugins{
-       background-color: #464646;
-       color: #fff;
-       -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-}
-
-div#media-upload-header,
-div#plugin-information-header {
-       background-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-}
-
-#currenttheme img {
-       border-color: #666;
-}
-
-#dashboard_secondary div.dashboard-widget-content ul li a {
-       background-color: #f9f9f9;
-}
-
-input.readonly, textarea.readonly {
-       background-color: #ddd;
-}
-
-.quicktags-toolbar input {
-       background: #fff;
-       background-image: -ms-linear-gradient(bottom, #e5f0f8, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #e5f0f8, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #e5f0f8, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#e5f0f8), to(#fff)); /* old Webkit        */
-       background-image: -webkit-linear-gradient(bottom, #e5f0f8, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #e5f0f8, #fff); /* proposed W3C Markup */
-}
-
-#editable-post-name {
-       background-color: #fffbcc;
-}
-
-#edit-slug-box strong,
-.tablenav .displaying-num,
-#submitted-on,
-.submitted-on {
-       color: #777;
-}
-
-.login #nav a,
-.login #backtoblog a {
-       color: #21759b !important;
-}
-
-.login #nav a:hover,
-.login #backtoblog a:hover {
-       color: #d54e21 !important;
-}
-
-#footer {
-       color: #777;
-       border-color: #b0c8d7;
-}
-
-#media-items .media-item,
-.media-item .describe,
-.imgedit-group {
-       border-color: #dfdfdf;
-}
-
-.checkbox,
-.side-info,
-.plugins tr,
-#your-profile #rich_editing {
-       background-color: #fcfcfc;
-}
-
-.plugins .inactive,
-.plugins .inactive th,
-.plugins .inactive td,
-tr.inactive + tr.plugin-update-tr .plugin-update {
-       background-color: #f4f4f4;
-}
-
-.plugin-update-tr .update-message {
-       background-color: #fffbe4;
-       border-color: #dfdfdf;
-}
-
-.plugins .active,
-.plugins .active th,
-.plugins .active td {
-       color: #000;
-}
-
-.plugins .inactive a {
-       color: #557799;
-}
-
-#the-comment-list tr.undo,
-#the-comment-list div.undo {
-       background-color: #f4f4f4;
-}
-
-#the-comment-list .unapproved {
-       background-color: #ffffe0;
-}
-
-#the-comment-list .approve a {
-       color: #006505;
-}
-
-#the-comment-list .unapprove a {
-       color: #d98500;
-}
-
-table.widefat span.delete a,
-table.widefat span.trash a,
-table.widefat span.spam a,
-#dashboard_recent_comments .delete a,
-#dashboard_recent_comments .trash a,
-#dashboard_recent_comments .spam a {
-       color: #bc0b0b;
-}
-
-.welcome-panel {
-       border-color: #d1e5ee;
-}
-.welcome-panel p {
-       color: #777;
-}
-.welcome-panel-column p {
-       color: #464646;
-}
-.welcome-panel h3 {
-       text-shadow: 1px 1px 1px white;
-}
-
-.widget,
-#widget-list .widget-top,
-.postbox,
-#titlediv,
-#poststuff .postarea,
-.stuffbox {
-       border-color: #d1e5ee;
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-.widget,
-#widget-list .widget-top,
-.postbox,
-.menu-item-settings {
-       background-color: #f7fcfe;
-}
-
-.postbox h3 {
-       color: #174f69;
-}
-
-.widget .widget-top {
-       color: #174f69;
-}
-
-.sidebar-name:hover h3,
-.postbox h3:hover {
-       color: #000;
-}
-
-.curtime #timestamp {
-       background-image: url(../images/date-button.gif);
-}
-
-#quicktags #ed_link {
-       color: #00f;
-}
-
-#rightnow .youhave {
-       background-color: #f0f6fb;
-}
-
-#rightnow a {
-       color: #448abd;
-}
-
-.tagchecklist span a,
-#bulk-titles div a {
-       background: url(../images/xit.gif) no-repeat;
-}
-
-.tagchecklist span a:hover,
-#bulk-titles div a:hover {
-       background: url(../images/xit.gif) no-repeat -10px 0;
-}
-
-#update-nag, .update-nag {
-       background-color: #fffbcc;
-       border-color: #e6db55;
-       color: #555;
-}
-
-.login #backtoblog a {
-       color: #464646;
-}
-
-#wphead {
-       border-bottom:#d0dfe9 1px solid;
-}
-
-#wphead h1 a {
-       color: #174f69;
-}
-
-#footer a:link,
-#footer a:visited {
-       text-decoration: none;
-}
-
-#footer a:hover {
-       color: #000;
-       text-decoration: underline;
-}
-
-.file-error,
-abbr.required,
-.widget-control-remove:hover,
-table.widefat .delete a:hover,
-table.widefat .trash a:hover,
-table.widefat .spam a:hover,
-#dashboard_recent_comments .delete a:hover,
-#dashboard_recent_comments .trash a:hover
-#dashboard_recent_comments .spam a:hover {
-       color: #f00;
-}
-
-#pass-strength-result {
-       background-color: #eee;
-       border-color: #ddd !important;
-}
-
-#pass-strength-result.bad {
-       background-color: #ffb78c;
-       border-color: #ff853c !important;
-}
-
-#pass-strength-result.good {
-       background-color: #ffec8b;
-       border-color: #fc0 !important;
-}
-
-#pass-strength-result.short {
-       background-color: #ffa0a0;
-       border-color: #f04040 !important;
-}
-
-#pass-strength-result.strong {
-       background-color: #c3ff88;
-       border-color: #8dff1c !important;
-}
-
-/* editors */
-#quicktags {
-       border-color: #cfdfe9;
-       background-color: #cfdfe9;
-       background-image: url("../images/ed-bg-vs.gif?ver=20101102");
-}
-
-.quicktags-toolbar input {
-       border-color: #b2c4c8;
-}
-
-.quicktags-toolbar input:hover {
-       border-color: #d0dfe9;
-       background: #f0f8fe;
-}
-
-#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar {
-       border-color: #d0dfe9;
-}
-
-#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar * {
-       color: #555;
-}
-
-#poststuff #editor-toolbar .active {
-       border-color: #d0dfe9 #d0dfe9 #eff8ff;
-       background-color: #eff8ff;
-       color: #333;
-}
-
-/* TinyMCE */
-#post-status-info {
-       background-color: #eff8ff;
-}
-
-.wp-editor-wrap .wp_themeSkin *,
-.wp-editor-wrap .wp_themeSkin a:hover,
-.wp-editor-wrap .wp_themeSkin a:link,
-.wp-editor-wrap .wp_themeSkin a:visited,
-.wp-editor-wrap .wp_themeSkin a:active {
-       color: #000;
-}
-
-/* Containers */
-.wp-editor-wrap .wp_themeSkin table.mceLayout {
-       border-color: #bed1dd #bed1dd #d0dfe9;
-}
-
-#editorcontainer #content,
-#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer {
-       -moz-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 );
-       -webkit-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 );
-       box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 );
-}
-.wp-editor-wrap .wp_themeSkin iframe {
-       background: transparent;
-}
-
-/* Layout */
-.wp-editor-wrap .wp_themeSkin .mceStatusbar {
-       color: #000;
-       background-color: #f5f5f5;
-}
-
-/* Button */
-.wp-editor-wrap .wp_themeSkin .mceButton {
-       border-color: #B0C8D7;
-       background-color: #cfdfe9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit       */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover {
-       border-color: #5589AA !important;
-       background-color: #c9c9c9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #bdccd5, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #bdccd5, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #bdccd5, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#bdccd5), to(#fff)); /* old Webkit        */
-       background-image: -webkit-linear-gradient(bottom, #bdccd5, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #bdccd5, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin a.mceButton:active,
-.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active,
-.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active,
-.wp-editor-wrap .wp_themeSkin a.mceButtonActive,
-.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active,
-.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover {
-       background: #B0C8D7 !important;
-       background-image: -ms-linear-gradient(bottom, #fff, #cfdfe9); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #fff, #cfdfe9); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #fff, #cfdfe9); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#cfdfe9)); /* old Webkit        */
-       background-image: -webkit-linear-gradient(bottom, #fff, #cfdfe9) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #fff, #cfdfe9); /* proposed W3C Markup */
-       border-color: #5589AA !important;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceButtonDisabled {
-       border-color: #B0C8D7 !important;
-}
-
-/* ListBox */
-.wp-editor-wrap .wp_themeSkin .mceListBox .mceText,
-.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen     {
-       border-color: #B0C8D7;
-       background-color: #cfdfe9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit       */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen {
-       border-left: 0px !important;
-}
-
-.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen,
-.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen,
-.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen,
-.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText,
-.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText {
-       background: #B0C8D7;
-       border-color: #5589AA !important;
-}
-
-/* List Box Hover */
-.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText,
-.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText,
-.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen {
-       border-color: #5589AA !important;
-       background-color: #c9c9c9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit       */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin select.mceListBox {
-       border-color: #B2B2B2;
-       background-color: #fff;
-}
-
-/* SplitButton */
-.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction,
-.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen {
-       border-color: #B0C8D7;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover,
-.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen,
-.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
-.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover {
-       border-color: #5589AA !important;
-}
-
-.wp-editor-wrap .wp_themeSkin table.mceSplitButton td {
-       background-color: #cfdfe9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit       */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td {
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit       */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive {
-       background-color: #B0C8D7;
-}
-
-/* ColorSplitButton */
-.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table {
-       background-color: #ebebeb;
-       border-color: #B2B2B2;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a {
-       border-color: #B2B2B2;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
-       border-color: #fff;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
-       border-color: #0A246A;
-       background-color: #B6BDD2;
-}
-
-.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover {
-       border-color: #0A246A;
-}
-
-/* Menu */
-.wp-editor-wrap .wp_themeSkin .mceMenu {
-       border-color: #ddd;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceMenu table {
-       background-color: #ebeaeb;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceMenu .mceText {
-       color: #000;
-}
-
-.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
-.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive {
-       background-color: #f5f5f5;
-}
-.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator {
-       background-color: #aaa;
-}
-.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a {
-       background-color: #ccc;
-       border-bottom-color: #aaa;
-}
-.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText {
-       color: #000;
-}
-.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText {
-       color: #888;
-}
-
-.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar {
-       background: #cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;
-       border-color: #cfdfe9;
-}
-
-.wp-admin #mceModalBlocker {
-       background: #000;
-}
-
-.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft {
-       background: #444444;
-       border-left: 1px solid #999;
-       border-top: 1px solid #999;
-       -webkit-border-top-left-radius: 3px;
-       border-top-left-radius: 3px;
-}
-
-.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight {
-       background: #444444;
-       border-right: 1px solid #999;
-       border-top: 1px solid #999;
-       -webkit-border-top-right-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.wp-admin .clearlooks2 .mceMiddle .mceLeft {
-       background: #f1f1f1;
-       border-left: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceMiddle .mceRight {
-       background: #f1f1f1;
-       border-right: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceBottom {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceBottom .mceLeft {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-       border-left: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceBottom .mceCenter {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceBottom .mceRight {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-       border-right: 1px solid #999;
-}
-
-.wp-admin .clearlooks2 .mceFocus .mceTop span {
-       color: #e5e5e5;
-}
-
-.wp-editor-wrap .wp-switch-editor {
-       background-color: #f5fafd;
-       border-color: #d1e5ee #d1e5ee #d1e5ee;
-       color: #999
-}
-
-.wp-editor-wrap.tmce-active .switch-tmce,
-.wp-editor-wrap.html-active .switch-html {
-       background-color: #eff8ff;
-       border-color: #d1e5ee #d1e5ee #eff8ff;
-       color: #333;
-}
-
-.wp-editor-wrap.quicktags-toolbar input {
-       color: #464646;
-       border-color: #d1e5ee;
-       background-color: #eff8ff;
-       background-image: -ms-linear-gradient(bottom, #eff8ff, #fff);
-       background-image: -moz-linear-gradient(bottom, #eff8ff, #fff);
-       background-image: -o-linear-gradient(bottom, #eff8ff, #fff);
-       background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff);
-       background-image: linear-gradient(bottom, #eff8ff, #fff);
-}
-.wp-editor-wrap .quicktags-toolbar,
-.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar {
-       border-bottom: 1px solid #ccc;
-       background-color: #eff8ff; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #eff8ff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #eff8ff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #eff8ff); /* Opera */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #eff8ff); /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #eff8ff); /* proposed W3C Markup */
-}
-.wp-editor-wrap .quicktags-toolbar input:hover {
-       border-color: #aaa;
-       background: #ddd;
-}
-
-.wp-editor-wrap.wp_themeSkin .mceButton,
-.wp-editor-wrap.wp_themeSkin .mceListBox .mceText,
-.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen {
-       border-color: #ccc;
-       background-color: #eff8ff; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */
-}
-
-.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover {
-       border-color: #a0a0a0;
-       background: #ddd; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */
-}
-
-/* end TinyMCE */
-
-#titlediv #title {
-       border-color: #bdccd5;
-}
-
-#editorcontainer {
-       border-color: #bdccd5 #bdccd5 #d0dfe9;
-}
-
-#post-status-info {
-       border-color: #d0dfe9 #bdccd5 #bdccd5;
-}
-
-.editwidget .widget-inside {
-       border-color: #d0dfe9;
-}
-
-#titlediv #title {
-       background-color: #fff;
-}
-
-#tTips p#tTips_inside {
-       background-color: #ddd;
-       color: #333;
-}
-
-#timestampdiv input,
-#namediv input,
-#poststuff .inside .the-tagcloud {
-       border-color: #ddd;
-}
-
-/* menu */
-#adminmenuback,
-#adminmenuwrap {
-    background-color: #EFF8FF;
-       border-color: #D1E5EE;
-}
-
-#adminmenushadow,
-#adminmenuback {
-       background-image: url(../images/menu-shadow.png);
-       background-position: top right;
-       background-repeat: repeat-y;
-}
-
-#adminmenu li.wp-menu-separator {
-       background: #D1E5EE;
-       border-color: #bed1dd;
-}
-
-#adminmenu div.separator {
-       border-color: #D1E5EE;
-}
-
-#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
-#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
-       background: transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px;
-}
-
-#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
-#adminmenu .wp-menu-open .wp-menu-toggle {
-       background: transparent url(../images/arrows-vs.png) no-repeat -2px 6px;
-}
-
-#adminmenu a.menu-top,
-.folded #adminmenu li.menu-top,
-#adminmenu .wp-submenu .wp-submenu-head {
-       border-top-color: #ffffff;
-       border-bottom-color: #cae6ff;
-}
-
-#adminmenu li.wp-menu-open {
-       border-color: #d1e5ee;
-}
-
-#adminmenu li.menu-top:hover > a,
-#adminmenu li.menu-top.focused > a,
-#adminmenu li.menu-top > a:focus {
-       background-color: #e0f1ff;
-       text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 );
-}
-
-#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
-#adminmenu li.current a.menu-top,
-.folded #adminmenu li.wp-has-current-submenu,
-.folded #adminmenu li.current.menu-top,
-#adminmenu .wp-menu-arrow,
-#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
-       background-color: #5589AA; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #5589AA, #619bbb); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #5589AA, #619bbb); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #5589AA, #619bbb); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #5589AA, #619bbb); /* new Webkit */
-       background-image: linear-gradient(bottom, #5589AA, #619bbb); /* proposed W3C Markup */
-}
-
-#adminmenu .wp-menu-arrow div {
-       background-color: #5589AA; /* Fallback */
-       background-image: -ms-linear-gradient(right bottom, #5589AA, #619bbb); /* IE10 */
-       background-image: -moz-linear-gradient(right bottom, #5589AA, #619bbb); /* Firefox */
-       background-image: -o-linear-gradient(right bottom, #5589AA, #619bbb); /* Opera */
-       background-image: -webkit-gradient(linear, right bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */
-       background-image: -webkit-linear-gradient(right bottom, #5589AA, #619bbb); /* new Webkit */
-       background-image: linear-gradient(right bottom, #5589AA, #619bbb); /* proposed W3C Markup */
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
-       border-top-color: #fff;
-       border-bottom-color: #cae6ff;
-       background: #e0f1ff;
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow div {
-       background: #e0f1ff;
-       border-color: #cae6ff;
-}
-
-.folded #adminmenu li.menu-top li:hover a {
-       background-image: none;
-}
-
-#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
-#adminmenu li.current a.menu-top,
-#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
-       text-shadow: 0 -1px 0 #333;
-       color: #fff;
-       border-top-color: #5A8FAD;
-       border-bottom-color: #5589AA;
-}
-
-.folded #adminmenu li.wp-has-current-submenu,
-.folded #adminmenu li.current.menu-top {
-       border-top-color: #5A8FAD;
-       border-bottom-color: #5589AA;
-}
-
-#adminmenu .wp-submenu a:hover,
-#adminmenu .wp-submenu a:focus {
-       background-color: #EFF8FF;
-       color: #333;
-}
-
-#adminmenu .wp-submenu li.current,
-#adminmenu .wp-submenu li.current a,
-#adminmenu .wp-submenu li.current a:hover {
-       color: #333;
-}
-
-#adminmenu .wp-submenu ul {
-       background-color: #fff;
-}
-
-#adminmenu .wp-submenu-wrap,
-#adminmenu .wp-submenu ul {
-       border-color: #d0dfe9;
-}
-
-#adminmenu .wp-submenu-wrap,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-       -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-}
-
-#adminmenu .wp-submenu .wp-submenu-head {
-       border-right-color: #e8eff4;
-       background-color: #EFF8FF;
-}
-
-#adminmenu div.wp-submenu {
-       background-color: transparent;
-}
-
-/* collapse menu button */
-#collapse-menu {
-       color: #A0C3D5;
-}
-
-#collapse-menu:hover {
-       color: #5A8FAD;
-}
-
-#collapse-button {
-       border-color: #d0dfe9;
-       background-color: #eff8ff; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */
-}
-#collapse-menu:hover #collapse-button {
-       border-color: #A0C3D5;
-}
-#collapse-button div {
-       background: transparent url(../images/arrows-vs.png) no-repeat 0 -72px;
-}
-.folded #collapse-button div {
-       background-position: 0 -108px;
-}
-
-/* Auto-folding of the admin menu */
-@media only screen and (max-width: 900px) {
-       #adminmenu li.menu-top {
-               border-top-color: #ffffff;
-               border-bottom-color: #cae6ff;
-       }
-
-       #adminmenu li.wp-has-current-submenu,
-       #adminmenu li.current.menu-top {
-               background-color: #5589AA; /* Fallback */
-               background-image: -ms-linear-gradient(bottom, #5589AA, #619bbb); /* IE10 */
-               background-image: -moz-linear-gradient(bottom, #5589AA, #619bbb); /* Firefox */
-               background-image: -o-linear-gradient(bottom, #5589AA, #619bbb); /* Opera */
-               background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */
-               background-image: -webkit-linear-gradient(bottom, #5589AA, #619bbb); /* new Webkit */
-               background-image: linear-gradient(bottom, #5589AA, #619bbb); /* proposed W3C Markup */
-       }
-
-       #adminmenu li.menu-top li:hover a {
-               background-image: none;
-       }
-
-       #adminmenu li.wp-has-current-submenu,
-       #adminmenu li.current.menu-top {
-               border-top-color: #5A8FAD;
-               border-bottom-color: #5589AA;
-       }
-
-       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-               -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       }
-
-       #collapse-button div {
-               background-position: 0 -108px;
-       }
-}
-
-/* menu and screen icons */
-.icon16,
-.icon32,
-div.wp-menu-image {
-       background-color: transparent;
-       background-repeat: no-repeat;
-}
-
-.icon16.icon-dashboard,
-.menu-icon-dashboard div.wp-menu-image,
-.icon16.icon-post,
-.menu-icon-post div.wp-menu-image,
-.icon16.icon-media,
-.menu-icon-media div.wp-menu-image,
-.icon16.icon-links,
-.menu-icon-links div.wp-menu-image,
-.icon16.icon-page,
-.menu-icon-page div.wp-menu-image,
-.icon16.icon-comments,
-.menu-icon-comments div.wp-menu-image,
-.icon16.icon-appearance,
-.menu-icon-appearance div.wp-menu-image,
-.icon16.icon-plugins,
-.menu-icon-plugins div.wp-menu-image,
-.icon16.icon-users,
-.menu-icon-users div.wp-menu-image,
-.icon16.icon-tools,
-.menu-icon-tools div.wp-menu-image,
-.icon16.icon-settings,
-.menu-icon-settings div.wp-menu-image,
-.icon16.icon-site,
-.menu-icon-site div.wp-menu-image {
-       background-image: url('../images/menu-vs.png?ver=20120201');
-}
-
-.icon16.icon-dashboard,
-#adminmenu .menu-icon-dashboard div.wp-menu-image {
-       background-position: -59px -33px;
-}
-
-#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
-#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-dashboard.current div.wp-menu-image {
-       background-position: -59px -1px;
-}
-
-.icon16.icon-post,
-#adminmenu .menu-icon-post div.wp-menu-image {
-       background-position: -269px -33px;
-}
-
-#adminmenu .menu-icon-post:hover div.wp-menu-image,
-#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-post.current div.wp-menu-image {
-       background-position: -269px -1px;
-}
-
-.icon16.icon-media,
-#adminmenu .menu-icon-media div.wp-menu-image {
-       background-position: -119px -33px;
-}
-
-#adminmenu .menu-icon-media:hover div.wp-menu-image,
-#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-media.current div.wp-menu-image {
-       background-position: -119px -1px;
-}
-
-.icon16.icon-links,
-#adminmenu .menu-icon-links div.wp-menu-image {
-       background-position: -89px -33px;
-}
-
-#adminmenu .menu-icon-links:hover div.wp-menu-image,
-#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-links.current div.wp-menu-image {
-       background-position: -89px -1px;
-}
-
-.icon16.icon-page,
-#adminmenu .menu-icon-page div.wp-menu-image {
-       background-position: -149px -33px;
-}
-
-#adminmenu .menu-icon-page:hover div.wp-menu-image,
-#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-page.current div.wp-menu-image {
-       background-position: -149px -1px;
-}
-
-.icon16.icon-comments,
-#adminmenu .menu-icon-comments div.wp-menu-image {
-       background-position: -29px -33px;
-}
-
-#adminmenu .menu-icon-comments:hover div.wp-menu-image,
-#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-comments.current div.wp-menu-image {
-       background-position: -29px -1px;
-}
-
-.icon16.icon-appearance,
-#adminmenu .menu-icon-appearance div.wp-menu-image {
-       background-position: 1px -33px;
-}
-
-#adminmenu .menu-icon-appearance:hover div.wp-menu-image,
-#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-appearance.current div.wp-menu-image {
-       background-position: 1px -1px;
-}
-
-.icon16.icon-plugins,
-#adminmenu .menu-icon-plugins div.wp-menu-image {
-       background-position: -179px -33px;
-}
-
-#adminmenu .menu-icon-plugins:hover div.wp-menu-image,
-#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-plugins.current div.wp-menu-image {
-       background-position: -179px -1px;
-}
-
-.icon16.icon-users,
-#adminmenu .menu-icon-users div.wp-menu-image {
-       background-position: -300px -33px;
-}
-
-#adminmenu .menu-icon-users:hover div.wp-menu-image,
-#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-users.current div.wp-menu-image {
-       background-position: -300px -1px;
-}
-
-.icon16.icon-tools,
-#adminmenu .menu-icon-tools div.wp-menu-image {
-       background-position: -209px -33px;
-}
-
-#adminmenu .menu-icon-tools:hover div.wp-menu-image,
-#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-tools.current div.wp-menu-image {
-       background-position: -209px -1px;
-}
-
-.icon16.icon-settings,
-#adminmenu .menu-icon-settings div.wp-menu-image {
-       background-position: -239px -33px;
-}
-
-#adminmenu .menu-icon-settings:hover div.wp-menu-image,
-#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-settings.current div.wp-menu-image {
-       background-position: -239px -1px;
-}
-
-.icon16.icon-site,
-#adminmenu .menu-icon-site div.wp-menu-image {
-       background-position: -359px -33px;
-}
-
-#adminmenu .menu-icon-site:hover div.wp-menu-image,
-#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-site.current div.wp-menu-image {
-       background-position: -359px -1px;
-}
-/* end menu and screen icons */
-
-/* Screen Icons */
-.icon32.icon-post,
-#icon-edit,
-#icon-post,
-.icon32.icon-dashboard,
-#icon-index,
-.icon32.icon-media,
-#icon-upload,
-.icon32.icon-links,
-#icon-link-manager,
-#icon-link,
-#icon-link-category,
-.icon32.icon-page,
-#icon-edit-pages,
-#icon-page,
-.icon32.icon-comments,
-#icon-edit-comments,
-.icon32.icon-appearance,
-#icon-themes,
-.icon32.icon-plugins,
-#icon-plugins,
-.icon32.icon-users,
-#icon-users,
-#icon-profile,
-#icon-user-edit,
-.icon32.icon-tools,
-#icon-tools,
-#icon-admin,
-.icon32.icon-settings,
-#icon-options-general,
-.icon32.icon-site,
-#icon-ms-admin {
-       background-image: url(../images/icons32-vs.png?ver=20111206);
-}
-
-.icon32.icon-post,
-#icon-edit,
-#icon-post {
-       background-position: -552px -5px;
-}
-
-.icon32.icon-dashboard,
-#icon-index {
-       background-position: -137px -5px;
-}
-
-.icon32.icon-media,
-#icon-upload {
-       background-position: -251px -5px;
-}
-
-.icon32.icon-links,
-#icon-link-manager,
-#icon-link,
-#icon-link-category {
-       background-position: -190px -5px;
-}
-
-.icon32.icon-page,
-#icon-edit-pages,
-#icon-page {
-       background-position: -312px -5px;
-}
-
-.icon32.icon-comments,
-#icon-edit-comments {
-       background-position: -72px -5px;
-}
-
-.icon32.icon-appearance,
-#icon-themes {
-       background-position: -11px -5px;
-}
-
-.icon32.icon-plugins,
-#icon-plugins {
-       background-position: -370px -5px;
-}
-
-.icon32.icon-users,
-#icon-users,
-#icon-profile,
-#icon-user-edit {
-       background-position: -600px -5px;
-}
-
-.icon32.icon-tools,
-#icon-tools,
-#icon-admin {
-       background-position: -432px -5px;
-}
-
-.icon32.icon-settings,
-#icon-options-general {
-       background-position: -492px -5px;
-}
-
-.icon32.icon-site,
-#icon-ms-admin {
-       background-position: -659px -5px;
-}
-
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
-       .icon32.icon-post,
-       #icon-edit,
-       #icon-post,
-       .icon32.icon-dashboard,
-       #icon-index,
-       .icon32.icon-media,
-       #icon-upload,
-       .icon32.icon-links,
-       #icon-link-manager,
-       #icon-link,
-       #icon-link-category,
-       .icon32.icon-page,
-       #icon-edit-pages,
-       #icon-page,
-       .icon32.icon-comments,
-       #icon-edit-comments,
-       .icon32.icon-appearance,
-       #icon-themes,
-       .icon32.icon-plugins,
-       #icon-plugins,
-       .icon32.icon-users,
-       #icon-users,
-       #icon-profile,
-       #icon-user-edit,
-       .icon32.icon-tools,
-       #icon-tools,
-       #icon-admin,
-       .icon32.icon-settings,
-       #icon-options-general,
-       .icon32.icon-site,
-       #icon-ms-admin {
-               background-image: url(../images/icons32-vs-2x.png?ver=20120412);
-               background-size: 708px 45px;
-       }
-
-       .icon16.icon-dashboard,
-       .menu-icon-dashboard div.wp-menu-image,
-       .icon16.icon-post,
-       .menu-icon-post div.wp-menu-image,
-       .icon16.icon-media,
-       .menu-icon-media div.wp-menu-image,
-       .icon16.icon-links,
-       .menu-icon-links div.wp-menu-image,
-       .icon16.icon-page,
-       .menu-icon-page div.wp-menu-image,
-       .icon16.icon-comments,
-       .menu-icon-comments div.wp-menu-image,
-       .icon16.icon-appearance,
-       .menu-icon-appearance div.wp-menu-image,
-       .icon16.icon-plugins,
-       .menu-icon-plugins div.wp-menu-image,
-       .icon16.icon-users,
-       .menu-icon-users div.wp-menu-image,
-       .icon16.icon-tools,
-       .menu-icon-tools div.wp-menu-image,
-       .icon16.icon-settings,
-       .menu-icon-settings div.wp-menu-image,
-       .icon16.icon-site,
-       .menu-icon-site div.wp-menu-image {
-               background-image: url('../images/menu-2x.png?ver=20120412');
-               background-size: 390px 64px;
-       }
-}
-/* end screen icons */
-
-/* Diff */
-table.diff .diff-deletedline {
-       background-color: #fdd;
-}
-
-table.diff .diff-deletedline del {
-       background-color: #f99;
-}
-
-table.diff .diff-addedline {
-       background-color: #dfd;
-}
-
-table.diff .diff-addedline ins {
-       background-color: #9f9;
-}
-
-#att-info {
-       background-color: #E4F2FD;
-}
-
-/* edit image */
-#sidemenu a {
-       background-color: #f9f9f9;
-       border-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-}
-
-#sidemenu a.current {
-       background-color: #fff;
-       border-color: #dfdfdf #dfdfdf #fff;
-       color: #D54E21;
-}
-
-#screen-meta {
-       background-color: #EFF8FF;
-       border-color: #D1E5EE;
-       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
-       box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
-}
-
-#contextual-help-back {
-       background: #fff;
-}
-
-.contextual-help-tabs a:hover {
-       background-color: #ceeaff;
-       color: #333;
-}
-
-#contextual-help-back,
-.contextual-help-tabs .active {
-       border-color: #D1E5EE;
-}
-
-.contextual-help-tabs .active,
-.contextual-help-tabs .active a,
-.contextual-help-tabs .active a:hover {
-       background: #fff;
-       color: #000;
-}
-
-/* screen options and help tabs */
-#screen-options-link-wrap,
-#contextual-help-link-wrap {
-       background-color: #eff8ff; /* Fallback */
-       border-right: 1px solid #D1E5EE;
-       border-left: 1px solid #D1E5EE;
-       border-bottom: 1px solid #D1E5EE;
-       background-image: -ms-linear-gradient(bottom, #eff8ff, #eff8ff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #def1ff, #eff8ff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #def1ff, #eff8ff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#def1ff), to(#eff8ff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #def1ff, #eff8ff); /* new Webkit */
-       background-image: linear-gradient(bottom, #def1ff, #eff8ff); /* proposed W3C Markup */
-}
-
-#screen-meta-links a.show-settings {
-       color: #606060;
-}
-
-#screen-meta-links a.show-settings:hover {
-       color: #000;
-}
-
-#screen-meta-links a.show-settings {
-       background: transparent url(../images/arrows-vs.png) no-repeat right 4px;
-}
-
-#screen-meta-links a.show-settings.screen-meta-active  {
-       background: transparent url(../images/arrows-vs.png) no-repeat right -31px;
-}
-
-/* end screen options and help tabs */
-
-#replyerror {
-       border-color: #ddd;
-       background-color: #f9f9f9;
-}
-
-/* table vim shortcuts */
-.vim-current,
-.vim-current th,
-.vim-current td {
-       background-color: #E4F2FD !important;
-}
-
-/* Install Plugins */
-#plugin-information .fyi ul {
-       background-color: #eaf3fa;
-}
-
-#plugin-information .fyi h2.mainheader {
-       background-color: #cee1ef;
-}
-
-#plugin-information pre,
-#plugin-information code {
-       background-color: #ededff;
-}
-
-#plugin-information pre {
-       border: 1px solid #ccc;
-}
-
-/* inline editor */
-.inline-edit-row fieldset input[type="text"],
-.inline-edit-row fieldset textarea,
-#bulk-titles {
-       border-color: #ddd;
-}
-
-.inline-editor div.title {
-       background-color: #EAF3FA;
-}
-
-.inline-editor ul.cat-checklist {
-       background-color: #fff;
-       border-color: #ddd;
-}
-
-.inline-editor .categories .catshow,
-.inline-editor .categories .cathide {
-       color: #21759b;
-}
-
-.inline-editor .quick-edit-save {
-       background-color: #f1f1f1;
-}
-
-fieldset.inline-edit-col-right .inline-edit-col {
-       border-color: #dfdfdf;
-}
-
-.attention {
-       color: #D54E21;
-}
-
-.meta-box-sortables .postbox:hover .handlediv {
-       background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
-}
-
-.tablenav .tablenav-pages {
-       color: #555;
-}
-
-.tablenav .tablenav-pages a {
-       border-color: #d1e5ee;
-       background: #eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px;
-}
-
-.tablenav .tablenav-pages a:hover,
-.tablenav .tablenav-pages a:focus {
-       color: #d54e21;
-}
-
-.tablenav .tablenav-pages a.disabled,
-.tablenav .tablenav-pages a.disabled:hover,
-.tablenav .tablenav-pages a.disabled:focus {
-       color: #aaa;
-}
-
-.tablenav .tablenav-pages .current {
-       background: #dfdfdf;
-       border-color: #d3d3d3;
-}
-
-#availablethemes,
-#availablethemes td {
-       border-color: #ddd;
-}
-
-#current-theme img {
-       border-color: #999;
-}
-
-#TB_window #TB_title a.tb-theme-preview-link,
-#TB_window #TB_title a.tb-theme-preview-link:visited {
-       color: #999;
-}
-
-#TB_window #TB_title a.tb-theme-preview-link:hover,
-#TB_window #TB_title a.tb-theme-preview-link:focus {
-       color: #ccc;
-}
-
-.misc-pub-section {
-    border-top-color: #fff;
-       border-bottom-color: #eee;
-}
-
-#minor-publishing {
-       border-bottom-color: #ddd;
-}
-
-#post-body .misc-pub-section {
-       border-left-color: #eee;
-}
-
-.post-com-count span {
-       background-color: #bbb;
-}
-
-.form-table .color-palette td {
-       border-color: #fff;
-}
-
-.sortable-placeholder {
-       border-color: #bbb;
-       background-color: #f5f5f5;
-}
-
-#post-body ul.category-tabs li.tabs a,
-#post-body ul.add-menu-item-tabs li.tabs a,
-body.press-this ul.category-tabs li.tabs a {
-       color: #333;
-}
-
-.view-switch #view-switch-list {
-       background: transparent url(../images/list.png) no-repeat 0 0;
-}
-
-.view-switch .current #view-switch-list {
-       background: transparent url(../images/list.png) no-repeat -40px 0;
-}
-
-.view-switch #view-switch-excerpt {
-       background: transparent url(../images/list.png) no-repeat -20px 0;
-}
-
-.view-switch .current #view-switch-excerpt {
-       background: transparent url(../images/list.png) no-repeat -60px 0;
-}
-
-#header-logo {
-       background: transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center;
-}
-
-.popular-tags,
-.feature-filter {
-       background-color: #fff;
-       border-color: #DFDFDF;
-}
-
-div.widgets-sortables,
-#widgets-left .inactive {
-       background-color: #f7fcfe;
-       border-color: #d0dfe9;
-}
-
-#available-widgets .widget-holder {
-       background-color: #f7fcfe;
-       border-color: #d0dfe9;
-}
-
-#available-widgets .widget-description {
-       color: #555;
-}
-
-.sidebar-name {
-       color: #464646;
-       background-color: #f7fcfe; /* Fallback */
-       background-image: -ms-linear-gradient(top, #ECF8FE, #f7fcfe); /* IE10 */
-       background-image: -moz-linear-gradient(top, #ECF8FE, #f7fcfe); /* Firefox */
-       background-image: -o-linear-gradient(top, #ECF8FE, #f7fcfe); /* Opera */
-       background-image: -webkit-gradient(linear, left top, left bottom, from(#ECF8FE), to(#f7fcfe)); /* old Webkit */
-       background-image: -webkit-linear-gradient(top, #ECF8FE, #f7fcfe); /* new Webkit */
-       background-image: linear-gradient(top, #ECF8FE, #f7fcfe); /* proposed W3C Markup */
-       text-shadow: #fff 0 1px 0;
-       border-color: #d0dfe9;
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-}
-
-.sidebar-name:hover,
-#removing-widget {
-       color: #d54e21;
-}
-
-#removing-widget span {
-       color: black;
-}
-
-.sidebar-name-arrow {
-       background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px;
-}
-
-.sidebar-name:hover .sidebar-name-arrow {
-       background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;
-}
-
-.in-widget-title {
-       color: #606060;
-}
-
-.deleting .widget-title * {
-       color: #aaa;
-}
-
-.imgedit-menu div {
-       border-color: #d5d5d5;
-       background-color: #f1f1f1;
-}
-
-.imgedit-menu div:hover {
-       border-color: #c1c1c1;
-       background-color: #eaeaea;
-}
-
-.imgedit-menu div.disabled {
-       border-color: #ccc;
-       background-color: #ddd;
-       filter: alpha(opacity=50);
-       opacity: 0.5;
-}
-
-#dashboard_recent_comments div.undo {
-       border-top-color: #dfdfdf;
-}
-
-.comment-ays,
-.comment-ays th {
-       border-color: #ddd;
-}
-
-.comment-ays th {
-       background-color: #f1f1f1;
-}
-
-/* added from nav-menu.css */
-#menu-management .menu-edit {
-       border-color: #d0dfe9;
-}
-
-#post-body {
-       background: #ffffff;
-       border-top-color: #fff;
-       border-bottom-color: #d0dfe9;
-}
-
-#nav-menu-header {
-       border-bottom-color: #d0dfe9;
-}
-
-#nav-menu-footer {
-       border-top-color: #fff;
-}
-
-#menu-management .nav-tabs-arrow a {
-       color: #C1C1C1;
-}
-
-#menu-management .nav-tabs-arrow a:hover {
-       color: #D54E21;
-}
-
-#menu-management .nav-tabs-arrow a:active {
-       color: #464646;
-}
-
-#menu-management .nav-tab-active {
-       border-color: #dfdfdf;
-}
-
-#menu-management .nav-tab {
-       background: #f7fcfe;
-       border-color: #d0dfe9;
-}
-
-.js .input-with-default-title {
-       color: #aaa;
-}
-
-#cancel-save {
-       color: #ff0000;
-}
-
-#cancel-save:hover {
-       background-color: #FF0000;
-       color: #fff;
-}
-
-.list-container {
-       border-color: #dfdfdf;
-}
-
-.menu-item-handle {
-       border-color: #d0dfe9;
-}
-
-.menu li.deleting .menu-item-handle {
-       background-color: #f66;
-       text-shadow: #ccc;
-}
-
-.item-type { /* Menu item controls */
-       color: #999999;
-}
-
-.item-controls .menu-item-delete:hover {
-       color: #ff0000;
-}
-
-.nav-menus-php .item-edit {
-       background: transparent url(../images/arrows-vs.png) no-repeat 8px 10px;
-       border-bottom-color: #eff8ff;
-}
-
-.item-edit:hover {
-       background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px;
-}
-
-.menu-item-settings { /* Menu editing */
-       border-color: #d0dfe9;
-}
-
-.link-to-original {
-       color: #777;
-       border-color: #d0dfe9;
-}
-
-#cancel-save:hover {
-       color: #fff !important;
-}
-
-#update-menu-item {
-       color: #fff !important;
-}
-
-#update-menu-item:hover,
-#update-menu-item:active,
-#update-menu-item:focus {
-       color: #eaf2fa !important;
-       border-color: #13455b !important;
-}
-
-.submitbox .submitcancel {
-       color: #21759B;
-       border-bottom-color: #21759B;
-}
-
-.submitbox .submitcancel:hover {
-       background: #21759B;
-       color: #fff;
-}
-/* end added from nav-menu.css */
-
-#menu-management .nav-tab-active,
-.menu-item-handle,
-.menu-item-settings {
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-}
-
-#menu-management .nav-tab-active {
-       background: #eff8ff;
-       border-bottom-color: #eff8ff;
-}
-
-#upload-form label {
-       color: #777;
-}
-/* custom header & background pages */
-
-/* full screen */
-.fullscreen-overlay {
-       background: #fff;
-}
-
-.wp-fullscreen-focus #wp-fullscreen-title,
-.wp-fullscreen-focus #wp-fullscreen-container {
-    border-color: #BED1DD;
-}
-
-#fullscreen-topbar {
-       border-bottom-color: #D1E5EE;
-}
-
-/* Begin About Pages */
-
-.about-wrap h1 {
-       color: #333;
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-text {
-       color: #777;
-}
-
-.wp-badge {
-       color: #fff;
-       text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3);
-}
-
-.about-wrap h2 .nav-tab {
-       color: #21759B;
-}
-.about-wrap h2 .nav-tab:hover {
-       color: #d54e21;
-}
-.about-wrap h2 .nav-tab-active,
-.about-wrap h2 .nav-tab-active:hover {
-       color: #333;
-}
-.about-wrap h2 .nav-tab-active {
-       text-shadow: 1px 1px 1px white;
-       color: #464646;
-}
-
-.about-wrap h3 {
-       color: #333;
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-wrap .feature-section h4 {
-       color: #464646;
-}
-
-.about-wrap .feature-section img {
-       background: #fff;
-       border: 1px #ccc solid;
-
-       -moz-box-shadow:    0 1px 3px rgba( 0, 0, 0, 0.3 );
-       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
-       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
-}
-
-.about-wrap .point-releases {
-       border-bottom: 1px solid #dfdfdf;
-}
-
-.about-wrap .point-releases h3 {
-       border-top: 1px solid #dfdfdf;
-}
-
-.about-wrap .point-releases h3:first-child {
-       border: 0;
-}
-
-.about-wrap h4.wp-people-group {
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-wrap li.wp-person img.gravatar {
-       -moz-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-       box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-}
-.about-wrap li.wp-person .title {
-       color: #464646;
-       text-shadow: 1px 1px 1px white;
-}
-
-.freedoms-php .about-wrap ol li {
-       color: #999;
-}
-.freedoms-php .about-wrap ol p {
-       color: #464646;
-}
-
-/* End About Pages */
-
-
-/*------------------------------------------------------------------------------
-  2.0 - Right to Left Styles
-------------------------------------------------------------------------------*/
-
-.rtl .bar {
-       border-right-color: none;
-       border-left-color: #99d;
-}
-
-.rtl .post-com-count {
-       background-image: url(../images/bubble_bg-rtl.gif);
-}
-
-.rtl #screen-meta-links a.show-settings {
-       background-position: left 3px;
-}
-
-.rtl #screen-meta-links a.show-settings.screen-meta-active {
-       background-position: left -33px;
-}
-
-/* Menu */
-.rtl #adminmenushadow,
-.rtl #adminmenuback {
-       background-image: url(../images/menu-shadow-rtl.png);
-       background-position: top left;
-}
-
-.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
-.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
-       background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px;
-}
-
-.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
-.rtl #adminmenu .wp-menu-open .wp-menu-toggle {
-       background: transparent url(../images/arrows-vs.png) no-repeat 8px 6px;
-}
-
-.rtl #adminmenu .wp-submenu .wp-submenu-head {
-       border-right-color: none;
-       border-left-color: #d1e5ee;
-}
-
-.rtl #adminmenu .wp-submenu-wrap,
-.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
-       -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-}
-
-/* Collapse Menu Button */
-.rtl #collapse-button div {
-       background-position: 0 -108px;
-}
-
-.rtl.folded #collapse-button div {
-       background-position: 0 -72px;
-}
-
-/* Auto-folding of the admin menu for RTL */
-@media only screen and (max-width: 900px) {
-       .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
-               -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       }
-
-       .rtl #collapse-button div {
-               background-position: 0 -72px;
-       }
-}
-
-/* edit image */
-.rtl .meta-box-sortables .postbox:hover .handlediv {
-       background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
-}
-
-.rtl .tablenav .tablenav-pages a {
-       border-color: #d1e5ee;
-       background: #eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px;
-}
-
-.rtl #post-body .misc-pub-section {
-       border-right-color: none;
-       border-left-color: #d1e5ee;
-}
-
-.rtl .sidebar-name-arrow {
-       background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px;
-}
-.rtl .sidebar-name:hover .sidebar-name-arrow {
-       background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;
-}
diff --git a/wp-admin/css/colors-classic.min.css b/wp-admin/css/colors-classic.min.css
new file mode 100644 (file)
index 0000000..8b368f3
--- /dev/null
@@ -0,0 +1 @@
+.find-box-search,.find-box-buttons{background-color:#eff8ff;border-top:1px solid #dce6f8}.find-box{background-color:#5589aa}.find-box-head{color:#fff}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#d1e5ee;background-color:#fff}ul.category-tabs li.tabs{border-color:#d1e5ee #d1e5ee #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eff8ff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#d1e5ee}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#b0c8d7}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#b0c8d7}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#eff8ff;border-color:#acd}#current-theme{border-bottom-color:#d1e5ee}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#b0c8d7;background-color:#eff8ff}.ui-autocomplete li a.ui-state-focus{background-color:#def1ff}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#d1e5ee}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#b0c8d7}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe);border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(to top,#def1ff,#eff8ff)}#screen-meta-links a{color:#606060;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#000;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:1px solid #d0dfe9}#wphead h1 a{color:#174f69}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9;background-color:#eff8ff}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#d1e5ee #d1e5ee #d0dfe9}#editorcontainer{border-color:#d1e5ee #d1e5ee #d0dfe9}#post-status-info{border-color:#d0dfe9 #d1e5ee #d1e5ee}.wp-admin .wp-editor-wrap .wp-switch-editor{background-color:#d3e9f2;border-color:#d1e5ee #d1e5ee #d3e9f2;color:#174f69}.wp-admin .wp-editor-wrap .wp-switch-editor:active{background-color:#f5fafd}.wp-admin .wp-editor-wrap.tmce-active .switch-tmce,.wp-admin .wp-editor-wrap.html-active .switch-html{background:#f7fcfe;border-color:#d1e5ee #d1e5ee #f7fcfe}.wp-admin .wp-editor-wrap .quicktags-toolbar,.wp-admin .wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{border-color:#d0dfe9;background-color:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.wp-admin .wp_themeSkin table.mceListBox{border-color:#d1e5ee}.wp-admin .wp_themeSkin table.mceListBoxEnabled:hover,.wp-admin .wp_themeSkin table.mceListBoxEnabled:active,.wp-admin .wp_themeSkin table.mceListBoxHover,.wp-admin .wp_themeSkin table.mceListBoxHover:active,.wp-admin .wp_themeSkin table.mceListBoxSelected{border-color:#b8cfdf}.wp-admin .wp_themeSkin a.mceButtonEnabled:hover,.wp-admin .wp_themeSkin table.mceSplitButton:hover{border-color:#c3d2dc;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f4f9fc),to(#fff));background-image:-webkit-linear-gradient(bottom,#f4f9fc,#fff);background-image:-moz-linear-gradient(bottom,#f4f9fc,#fff);background-image:-o-linear-gradient(bottom,#f4f9fc,#fff);background-image:linear-gradient(to top,#f4f9fc,#fff)}.wp-admin .wp_themeSkin a.mceButton:active,.wp-admin .wp_themeSkin a.mceButtonEnabled:active,.wp-admin .wp_themeSkin a.mceButtonSelected:active,.wp-admin .wp_themeSkin a.mceButtonActive,.wp-admin .wp_themeSkin a.mceButtonActive:active,.wp-admin .wp_themeSkin a.mceButtonActive:hover,.wp-admin .wp_themeSkin .mceSplitButtonSelected table,.wp-admin .wp_themeSkin .mceSplitButtonSelected table:hover{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f4f9fc));background-image:-webkit-linear-gradient(bottom,#fff,#f4f9fc);background-image:-moz-linear-gradient(bottom,#fff,#f4f9fc);background-image:-o-linear-gradient(bottom,#fff,#f4f9fc);background-image:linear-gradient(to top,#fff,#f4f9fc)}.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9}.wp-admin .wp_themeSkin .mceSplitButton:hover a{border-color:#c3d2dc}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e0f1ff;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(to top,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background:#5589aa;background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom right,#5589aa,#619bbb);background-image:linear-gradient(to top left,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e0f1ff;color:#333}#collapse-menu{color:#a0c3d5;border-top-color:#f9f9f9}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(to top,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu-vs.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#acd}#current-theme img{border-color:#b0c8d7}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#d1e5ee}#minor-publishing{border-bottom-color:#cae6ff}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#d1e5ee}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.nav-tab{border-color:#d1e5ee #d1e5ee #fff}.nav-tab:hover,.nav-tab-active{border-color:#acd #acd #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#acd}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f7fcfe;border-bottom-color:#f7fcfe}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#d1e5ee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-vs-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.nav-menus-php .item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-vs-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-vs-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-vs-2x.png?ver=20120916');background-size:16px auto}}
\ No newline at end of file
index f7f57927307a9505280398e2c0e9e78b034b36a6..63f768159381602785c1761633b2207b391094c7 100644 (file)
@@ -1 +1,2076 @@
-html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;color:#333}select{color:#000}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#bbb}kbd,code{background:#eaeaea}input[readonly]{background-color:#eee}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1}.find-box{background-color:#f1f1f1}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#dfdfdf;background-color:#f9f9f9}textarea.widefat{background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#efefef;border-color:#bbb}.ui-autocomplete li a.ui-state-hover{background-color:#ddd}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f5f5f5;background-image:-ms-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-moz-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-o-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:linear-gradient(top,#f9f9f9,#f5f5f5)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#e3e3e3;border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-image:-ms-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(bottom,#dfdfdf,#f1f1f1)}#screen-meta-links a.show-settings{color:#777}#screen-meta-links a.show-settings:hover{color:#333}#screen-meta-links a.show-settings{background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows.png) no-repeat right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#titlediv #title{border-color:#ccc}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e4e4e4;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background-color:#777;background-image:-ms-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(right bottom,#6d6d6d,#808080);background-image:linear-gradient(right bottom,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#dfdfdf}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#dfdfdf;background-color:#ececec}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#aaa}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background-color:#f4f4f4;background-image:-ms-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(bottom,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#eee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}
\ No newline at end of file
+/*------------------------------------------------------------------------------
+
+
+Howdy! This is the CSS file that controls the
+Gray (fresh) color style on the WordPress Dashboard.
+
+This file contains both LTR and RTL styles.
+
+
+TABLE OF CONTENTS:
+------------------
+ 1.0 - Left to Right Styles
+ 2.0 - Right to Left Styles
+
+
+------------------------------------------------------------------------------*/
+
+
+/*------------------------------------------------------------------------------
+  1.0 - Left to Right Styles
+------------------------------------------------------------------------------*/
+
+.find-box-search,
+.find-box-buttons {
+       background-color: #f7f7f7;
+       border-top: 1px solid #ddd;
+}
+
+.find-box {
+       background-color: #444;
+}
+
+.find-box-head {
+       color: #eee;
+}
+
+.find-box-inside {
+       background-color: #fff;
+}
+
+a.page-numbers:hover {
+       border-color: #999;
+}
+
+body,
+#wpbody,
+.form-table .pre,
+.ui-autocomplete li a {
+       color: #333;
+}
+
+body > #upload-menu {
+       border-bottom-color: #fff;
+}
+
+#postcustomstuff table,
+#your-profile fieldset,
+#rightnow,
+div.dashboard-widget,
+#dashboard-widgets p.dashboard-widget-links {
+       border-color: #ccc;
+}
+
+#poststuff .inside label.spam,
+#poststuff .inside label.deleted {
+       color: red;
+}
+
+#poststuff .inside label.waiting {
+       color: orange;
+}
+
+#poststuff .inside label.approved {
+       color: green;
+}
+
+#postcustomstuff table {
+       border-color: #dfdfdf;
+       background-color: #f9f9f9;
+}
+
+#postcustomstuff thead th {
+       background-color: #f1f1f1;
+}
+
+.widefat {
+       border-color: #dfdfdf;
+       background-color: #f9f9f9;
+}
+textarea.widefat {
+       background-color: #fff;
+}
+
+div.dashboard-widget-error {
+       background-color: #c43;
+}
+
+div.dashboard-widget-notice {
+       background-color: #cfe1ef;
+}
+
+div.dashboard-widget-submit {
+       border-top-color: #ccc;
+}
+
+ul.category-tabs li {
+       border-color: transparent;
+}
+
+div.tabs-panel,
+.wp-tab-panel,
+ul.add-menu-item-tabs li.tabs,
+.wp-tab-active {
+       border-color: #dfdfdf;
+       background-color: #fff;
+}
+
+ul.category-tabs li.tabs {
+       border-color: #dfdfdf #dfdfdf #fff;
+}
+
+ul.category-tabs li.tabs,
+ul.add-menu-item-tabs li.tabs,
+.wp-tab-active {
+       background-color: #fff;
+}
+
+kbd,
+code {
+       background: #eaeaea;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="file"],
+input[type="email"],
+input[type="number"],
+input[type="search"],
+input[type="tel"],
+input[type="url"],
+select {
+       border-color: #dfdfdf;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="file"]:focus,
+input[type="email"]:focus,
+input[type="number"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="url"]:focus,
+select:focus {
+       border-color: #aaa;
+}
+
+input.disabled,
+textarea.disabled {
+       background-color: #ccc;
+}
+
+#plugin-information .action-button a,
+#plugin-information .action-button a:hover,
+#plugin-information .action-button a:visited {
+       color: #fff;
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3,
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small,
+.sidebar-name,
+#nav-menu-header,
+#nav-menu-footer,
+.menu-item-handle {
+       background: #f1f1f1;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9));
+       background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image:    -moz-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image:      -o-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image: linear-gradient(to top, #ececec, #f9f9f9);
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3 {
+       border-bottom-color: #dfdfdf;
+       text-shadow: #fff 0 1px 0;
+       -webkit-box-shadow: 0 1px 0 #fff;
+       box-shadow: 0 1px 0 #fff;
+}
+
+.form-table th,
+.form-wrap label {
+       color: #222;
+       text-shadow: #fff 0 1px 0;
+}
+
+.description,
+.form-wrap p {
+       color: #666;
+}
+
+strong .post-com-count span {
+       background-color: #21759b;
+}
+
+.sorthelper {
+       background-color: #ccf3fa;
+}
+
+.ac_match,
+.subsubsub a.current {
+       color: #000;
+}
+
+.wrap h2 {
+       color: #464646;
+}
+
+.wrap .add-new-h2,
+.wrap .add-new-h2:active {
+       background: #f1f1f1;
+}
+
+.subtitle {
+       color: #777;
+}
+
+.ac_over {
+       background-color: #f0f0b8;
+}
+
+.ac_results {
+       background-color: #fff;
+       border-color: #808080;
+}
+
+.ac_results li {
+       color: #101010;
+}
+
+.alternate,
+.alt {
+       background-color: #fcfcfc;
+}
+
+.available-theme a.screenshot {
+       background-color: #f1f1f1;
+       border-color: #ddd;
+}
+
+#current-theme {
+       border-bottom-color: #dfdfdf;
+}
+
+.bar {
+       background-color: #e8e8e8;
+       border-right-color: #99d;
+}
+
+#media-upload,
+#media-upload .media-item .slidetoggle {
+       background: #fff;
+}
+
+#media-upload .slidetoggle {
+       border-top-color: #dfdfdf;
+}
+
+div.error,
+.login #login_error {
+       background-color: #ffebe8;
+       border-color: #c00;
+}
+
+div.error a {
+       color: #c00;
+}
+
+.form-invalid {
+       background-color: #ffebe8 !important;
+}
+
+.form-invalid input,
+.form-invalid select {
+       border-color: #c00 !important;
+}
+
+.submit,
+#commentsdiv #add-new-comment {
+       border-color: #dfdfdf;
+}
+
+.highlight {
+       background-color: #e4f2fd;
+       color: #000;
+}
+
+.howto,
+.nonessential,
+#edit-slug-box,
+.form-input-tip,
+.subsubsub {
+       color: #666;
+}
+
+.media-upload-form label.form-help,
+td.help {
+       color: #9a9a9a;
+}
+
+.ui-autocomplete {
+       border-color: #aaa;
+       background-color: #efefef;
+}
+
+.ui-autocomplete li a.ui-state-focus {
+       background-color: #ddd;
+}
+
+.post-com-count {
+       color: #fff;
+}
+
+.post-com-count span {
+       background-color: #bbb;
+       color: #fff;
+}
+
+.post-com-count:hover span {
+       background-color: #d54e21;
+}
+
+.quicktags, .search {
+       background-color: #ccc;
+       color: #000;
+}
+
+.side-info h5 {
+       border-bottom-color: #dadada;
+}
+
+.side-info ul {
+       color: #666;
+}
+
+a:hover,
+a:active {
+       color: #d54e21;
+}
+
+a:focus {
+       color: #124964;
+}
+
+#adminmenu a:hover,
+#adminmenu li.menu-top > a:focus,
+#adminmenu .wp-submenu a:hover,
+#the-comment-list .comment a:hover,
+#rightnow a:hover,
+#media-upload a.del-link:hover,
+div.dashboard-widget-submit input:hover,
+.subsubsub a:hover,
+.subsubsub a.current:hover,
+.ui-tabs-nav a:hover,
+.plugins .inactive a:hover,
+#all-plugins-table .plugins .inactive a:hover,
+#search-plugins-table .plugins .inactive a:hover {
+       color: #d54e21;
+}
+
+#the-comment-list .comment-item,
+#dashboard-widgets #dashboard_quick_press form p.submit {
+       border-color: #dfdfdf;
+}
+
+#side-sortables .category-tabs .tabs a,
+#side-sortables .add-menu-item-tabs .tabs a,
+.wp-tab-bar .wp-tab-active a {
+       color: #333;
+}
+
+#rightnow .rbutton {
+       background-color: #ebebeb;
+       color: #264761;
+}
+
+#dashboard_right_now .table_content,
+#dashboard_right_now .table_discussion {
+       border-top-color: #ececec;
+}
+
+.submitbox .submit {
+       background-color: #464646;
+       color: #ccc;
+}
+
+.plugins a.delete:hover,
+#all-plugins-table .plugins a.delete:hover,
+#search-plugins-table .plugins a.delete:hover,
+.submitbox .submitdelete {
+       color: #f00;
+       border-bottom-color: #f00;
+}
+
+.submitbox .submitdelete:hover,
+#media-items a.delete:hover,
+#media-items a.delete-permanently:hover {
+       color: #fff;
+       background-color: #f00;
+       border-bottom-color: #f00;
+}
+
+#normal-sortables .submitbox .submitdelete:hover {
+       color: #000;
+       background-color: #f00;
+       border-bottom-color: #f00;
+}
+
+.tablenav .dots {
+       border-color: transparent;
+}
+
+.tablenav .next,
+.tablenav .prev {
+       border-color: transparent;
+       color: #21759b;
+}
+
+.tablenav .next:hover,
+.tablenav .prev:hover {
+       border-color: transparent;
+       color: #d54e21;
+}
+
+div.updated,
+.login .message {
+       background-color: #ffffe0;
+       border-color: #e6db55;
+}
+
+.update-message {
+       color: #000;
+}
+
+a.page-numbers {
+       border-bottom-color: #b8d3e2;
+}
+
+.commentlist li {
+       border-bottom-color: #ccc;
+}
+
+.widefat td,
+.widefat th {
+       border-top-color: #fff;
+       border-bottom-color: #dfdfdf;
+}
+
+.widefat th {
+       text-shadow: rgba(255,255,255,0.8) 0 1px 0;
+}
+
+.widefat td {
+       color: #555;
+}
+.widefat p,
+.widefat ol,
+.widefat ul {
+       color: #333;
+}
+
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small {
+       color: #333;
+}
+
+th.sortable a:hover,
+th.sortable a:active,
+th.sortable a:focus {
+       color: #333;
+}
+
+th.sortable a:focus {
+       background: #e1e1e1;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#dcdcdc), to(#e9e9e9));
+       background-image: -webkit-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image:    -moz-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image:      -o-linear-gradient(bottom, #dcdcdc, #e9e9e9);
+       background-image: linear-gradient(to top, #dcdcdc, #e9e9e9);
+}
+
+h3.dashboard-widget-title small a {
+       color: #d7d7d7;
+}
+
+h3.dashboard-widget-title small a:hover {
+       color: #fff;
+}
+
+a,
+#adminmenu a,
+#the-comment-list p.comment-author strong a,
+#media-upload a.del-link,
+#media-items a.delete,
+#media-items a.delete-permanently,
+.plugins a.delete,
+.ui-tabs-nav a {
+       color: #21759b;
+}
+
+#adminmenu .awaiting-mod,
+#adminmenu .update-plugins,
+#sidemenu a .update-plugins,
+#rightnow .reallynow {
+       background-color: #464646;
+       color: #fff;
+       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+}
+#plugin-information .action-button {
+       background-color: #d54e21;
+       color: #fff;
+}
+
+#adminmenu li.current a .awaiting-mod,
+#adminmenu     li a.wp-has-current-submenu .update-plugins{
+       background-color: #464646;
+       color: #fff;
+       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
+}
+
+div#media-upload-header,
+div#plugin-information-header {
+       background-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+}
+
+#currenttheme img {
+       border-color: #666;
+}
+
+#dashboard_secondary div.dashboard-widget-content ul li a {
+       background-color: #f9f9f9;
+}
+
+input.readonly, textarea.readonly {
+       background-color: #ddd;
+}
+
+#editable-post-name {
+       background-color: #fffbcc;
+}
+
+#edit-slug-box strong,
+.tablenav .displaying-num,
+#submitted-on,
+.submitted-on {
+       color: #777;
+}
+
+.login #nav a,
+.login #backtoblog a {
+       color: #21759b !important;
+}
+
+.login #nav a:hover,
+.login #backtoblog a:hover {
+       color: #d54e21 !important;
+}
+
+#wpfooter {
+       color: #777;
+       border-color: #dfdfdf;
+}
+
+.imgedit-group,
+#media-items .media-item,
+.media-item .describe {
+       border-color: #dfdfdf;
+}
+
+.checkbox,
+.side-info,
+.plugins tr,
+#your-profile #rich_editing {
+       background-color: #fcfcfc;
+}
+
+.plugins .inactive,
+.plugins .inactive th,
+.plugins .inactive td,
+tr.inactive + tr.plugin-update-tr .plugin-update {
+       background-color: #f4f4f4;
+}
+
+.plugin-update-tr .update-message {
+       background-color: #fffbe4;
+       border-color: #dfdfdf;
+}
+
+.plugins .active,
+.plugins .active th,
+.plugins .active td {
+       color: #000;
+}
+
+.plugins .inactive a {
+       color: #579;
+}
+
+#the-comment-list tr.undo,
+#the-comment-list div.undo {
+       background-color: #f4f4f4;
+}
+
+#the-comment-list .unapproved {
+       background-color: #ffffe0;
+}
+
+#the-comment-list .approve a {
+       color: #006505;
+}
+
+#the-comment-list .unapprove a {
+       color: #d98500;
+}
+
+table.widefat span.delete a,
+table.widefat span.trash a,
+table.widefat span.spam a,
+#dashboard_recent_comments .delete a,
+#dashboard_recent_comments .trash a,
+#dashboard_recent_comments .spam a {
+       color: #bc0b0b;
+}
+
+.welcome-panel {
+       background: #f5f5f5;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f5f5f5), to(#fafafa));
+       background-image: -webkit-linear-gradient(bottom, #f5f5f5, #fafafa);
+       background-image:    -moz-linear-gradient(bottom, #f5f5f5, #fafafa);
+       background-image:      -o-linear-gradient(bottom, #f5f5f5, #fafafa);
+       background-image: linear-gradient(to top, #f5f5f5, #fafafa);
+       border-color: #dfdfdf;
+}
+.welcome-panel p {
+       color: #777;
+}
+.welcome-panel-column p {
+       color: #464646;
+}
+.welcome-panel h3 {
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+#titlediv,
+#poststuff .postarea,
+.stuffbox {
+       border-color: #dfdfdf;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+.menu-item-settings {
+       background: #f5f5f5;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f5f5f5), to(#f9f9f9));
+       background-image: -webkit-linear-gradient(bottom, #f5f5f5, #f9f9f9);
+       background-image:    -moz-linear-gradient(bottom, #f5f5f5, #f9f9f9);
+       background-image:      -o-linear-gradient(bottom, #f5f5f5, #f9f9f9);
+       background-image: linear-gradient(to top, #f5f5f5, #f9f9f9);
+}
+
+.postbox h3 {
+       color: #464646;
+}
+
+.widget .widget-top {
+       color: #222;
+}
+
+.js .sidebar-name:hover h3,
+.js .postbox h3:hover {
+       color: #000;
+}
+
+.curtime #timestamp {
+       background-image: url(../images/date-button.gif);
+}
+
+#rightnow .youhave {
+       background-color: #f0f6fb;
+}
+
+#rightnow a {
+       color: #448abd;
+}
+
+.tagchecklist span a,
+#bulk-titles div a {
+       background: url(../images/xit.gif) no-repeat;
+}
+
+.tagchecklist span a:hover,
+#bulk-titles div a:hover {
+       background: url(../images/xit.gif) no-repeat -10px 0;
+}
+
+#update-nag, .update-nag {
+       background-color: #fffbcc;
+       border-color: #e6db55;
+       color: #555;
+}
+
+#screen-meta {
+       background-color: #f1f1f1;
+       border-color: #ccc;
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
+       box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
+}
+
+#contextual-help-back {
+       background: #fff;
+}
+
+.contextual-help-tabs a:hover {
+       color: #333;
+}
+
+#contextual-help-back,
+.contextual-help-tabs .active {
+       border-color: #ccc;
+}
+
+.contextual-help-tabs .active,
+.contextual-help-tabs .active a,
+.contextual-help-tabs .active a:hover {
+       background: #fff;
+       color: #333;
+}
+
+/* screen options and help tabs */
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+       border-right: 1px solid #ccc;
+       border-left: 1px solid #ccc;
+       border-bottom: 1px solid #ccc;
+       background: #e3e3e3;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#f1f1f1));
+       background-image: -webkit-linear-gradient(bottom, #dfdfdf, #f1f1f1);
+       background-image:    -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1);
+       background-image:      -o-linear-gradient(bottom, #dfdfdf, #f1f1f1);
+       background-image: linear-gradient(to top, #dfdfdf, #f1f1f1);
+}
+
+#screen-meta-links a {
+       color: #777;
+       background: transparent url(../images/arrows.png) no-repeat right 4px;
+}
+
+#screen-meta-links a:hover,
+#screen-meta-links a:active {
+       color: #333;
+       background-color: transparent;
+}
+
+#screen-meta-links a.screen-meta-active {
+       background-position: right -31px;
+}
+
+/* end screen options and help tabs */
+
+.login #backtoblog a {
+       color: #464646;
+}
+
+#wphead {
+       border-bottom: #dfdfdf 1px solid;
+}
+
+#wphead h1 a {
+       color: #464646;
+}
+
+#wpfooter a:link,
+#wpfooter a:visited {
+       text-decoration: none;
+}
+
+#wpfooter a:hover {
+       text-decoration: underline;
+}
+
+.file-error,
+abbr.required,
+.widget-control-remove:hover,
+table.widefat .delete a:hover,
+table.widefat .trash a:hover,
+table.widefat .spam a:hover,
+#dashboard_recent_comments .delete a:hover,
+#dashboard_recent_comments .trash a:hover
+#dashboard_recent_comments .spam a:hover {
+       color: #f00;
+}
+
+#pass-strength-result {
+       background-color: #eee;
+       border-color: #ddd !important;
+}
+
+#pass-strength-result.bad {
+       background-color: #ffb78c;
+       border-color: #ff853c !important;
+}
+
+#pass-strength-result.good {
+       background-color: #ffec8b;
+       border-color: #fc0 !important;
+}
+
+#pass-strength-result.short {
+       background-color: #ffa0a0;
+       border-color: #f04040 !important;
+}
+
+#pass-strength-result.strong {
+       background-color: #c3ff88;
+       border-color: #8dff1c !important;
+}
+
+#post-status-info {
+       border-color: #dfdfdf #ccc #ccc;
+       background-color: #eaeaea;
+}
+
+.editwidget .widget-inside {
+       border-color: #dfdfdf;
+}
+
+#titlediv #title {
+       background-color: #fff;
+}
+
+#tTips p#tTips_inside {
+       background-color: #ddd;
+       color: #333;
+}
+
+#poststuff .inside .the-tagcloud {
+       border-color: #ddd;
+}
+
+/* menu */
+#adminmenuback,
+#adminmenuwrap {
+       background-color: #ececec;
+       border-color: #ccc;
+}
+
+#adminmenushadow,
+#adminmenuback {
+       background-image: url(../images/menu-shadow.png);
+       background-position: top right;
+       background-repeat: repeat-y;
+}
+
+#adminmenu li.wp-menu-separator {
+       background: #dfdfdf;
+       border-color: #cfcfcf;
+}
+
+#adminmenu div.separator {
+       border-color: #e1e1e1;
+}
+
+#adminmenu a.menu-top,
+#adminmenu .wp-submenu .wp-submenu-head {
+       border-top-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+}
+
+#adminmenu li.wp-menu-open {
+       border-color: #dfdfdf;
+}
+
+#adminmenu li.menu-top:hover,
+#adminmenu li.opensub > a.menu-top,
+#adminmenu li > a.menu-top:focus {
+       background-color: #e4e4e4;
+       color: #d54e21;
+       text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 );
+}
+
+/* So it doesn't get applied to the number spans (comments, updates, etc) */
+#adminmenu li.menu-top:hover > a span,
+#adminmenu li.menu-top > a:focus span {
+       text-shadow: none;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu li.current a.menu-top,
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.current.menu-top,
+#adminmenu .wp-menu-arrow,
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+       background: #777;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080));
+       background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image:    -moz-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image: linear-gradient(to top, #6d6d6d, #808080);
+}
+
+#adminmenu .wp-menu-arrow div {
+       background: #777;
+       background-image: -webkit-gradient(linear, right bottom, left top, from(#6d6d6d), to(#808080));
+       background-image: -webkit-linear-gradient(bottom right, #6d6d6d, #808080);
+       background-image:    -moz-linear-gradient(bottom right, #6d6d6d, #808080);
+       background-image:      -o-linear-gradient(bottom right, #6d6d6d, #808080);
+       background-image: linear-gradient(to top left, #6d6d6d, #808080);
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
+       border-top-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+       background: #e4e4e4;
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow div {
+       background: #e4e4e4;
+       border-color: #ccc;
+}
+
+.folded #adminmenu li.menu-top li:hover a {
+       background-image: none;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu li.current a.menu-top,
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+       text-shadow: 0 -1px 0 #333;
+       color: #fff;
+       border-top-color: #808080;
+       border-bottom-color: #6d6d6d;
+}
+
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.current.menu-top {
+       border-top-color: #808080;
+       border-bottom-color: #6d6d6d;
+}
+
+#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus {
+       background-color: #eaf2fa;
+       color: #333;
+}
+
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover {
+       color: #333;
+}
+
+#adminmenu .wp-submenu,
+.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+       background-color: #fff;
+       border-color: #dfdfdf;
+       -webkit-box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+       box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+       background-color: #e4e4e4;
+       color: #333;
+}
+
+/* collapse menu button */
+#collapse-menu {
+       color: #aaa;
+       border-top-color: #f9f9f9;
+}
+
+#collapse-menu:hover {
+       color: #999;
+}
+
+#collapse-button {
+       border-color: #ccc;
+       background: #f4f4f4;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff);
+       background-image:    -moz-linear-gradient(bottom, #dfdfdf, #fff);
+       background-image:      -o-linear-gradient(bottom, #dfdfdf, #fff);
+       background-image: linear-gradient(to top, #dfdfdf, #fff);
+}
+
+#collapse-menu:hover #collapse-button {
+       border-color: #aaa;
+}
+
+#collapse-button div {
+       background: transparent url(../images/arrows.png) no-repeat 0 -72px;
+}
+
+.folded #collapse-button div {
+       background-position: 0 -108px;
+}
+
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       .auto-fold #adminmenu li.wp-has-current-submenu,
+       .auto-fold #adminmenu li.current.menu-top {
+               background-color: #777;
+               background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080));
+               background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080);
+               background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080);
+               background-image: -o-linear-gradient(bottom, #6d6d6d, #808080);
+               background-image: linear-gradient(bottom, #6d6d6d, #808080);
+       }
+
+       .auto-fold #adminmenu li.wp-has-current-submenu,
+       .auto-fold #adminmenu li.current.menu-top {
+               border-top-color: #808080;
+               border-bottom-color: #6d6d6d;
+       }
+
+       .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu {
+               background-color: #fff;
+               border-color: #dfdfdf;
+               -webkit-box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+               box-shadow: 2px 3px 6px rgba(0, 0, 0, 0.4);
+       }
+
+       .auto-fold #collapse-button div {
+               background-position: 0 -108px;
+       }
+}
+
+/* menu and screen icons */
+.icon16,
+.icon32,
+div.wp-menu-image {
+       background-color: transparent;
+       background-repeat: no-repeat;
+}
+
+.icon16.icon-dashboard,
+.menu-icon-dashboard div.wp-menu-image,
+.icon16.icon-post,
+.menu-icon-post div.wp-menu-image,
+.icon16.icon-media,
+.menu-icon-media div.wp-menu-image,
+.icon16.icon-links,
+.menu-icon-links div.wp-menu-image,
+.icon16.icon-page,
+.menu-icon-page div.wp-menu-image,
+.icon16.icon-comments,
+.menu-icon-comments div.wp-menu-image,
+.icon16.icon-appearance,
+.menu-icon-appearance div.wp-menu-image,
+.icon16.icon-plugins,
+.menu-icon-plugins div.wp-menu-image,
+.icon16.icon-users,
+.menu-icon-users div.wp-menu-image,
+.icon16.icon-tools,
+.menu-icon-tools div.wp-menu-image,
+.icon16.icon-settings,
+.menu-icon-settings div.wp-menu-image,
+.icon16.icon-site,
+.menu-icon-site div.wp-menu-image,
+.icon16.icon-generic,
+.menu-icon-generic div.wp-menu-image {
+       background-image: url(../images/menu.png?ver=20121105);
+}
+
+.icon16.icon-dashboard,
+#adminmenu .menu-icon-dashboard div.wp-menu-image {
+       background-position: -59px -33px;
+}
+
+#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
+#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-dashboard.current div.wp-menu-image {
+       background-position: -59px -1px;
+}
+
+.icon16.icon-post,
+#adminmenu .menu-icon-post div.wp-menu-image {
+       background-position: -269px -33px;
+}
+
+#adminmenu .menu-icon-post:hover div.wp-menu-image,
+#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-post.current div.wp-menu-image {
+       background-position: -269px -1px;
+}
+
+.icon16.icon-media,
+#adminmenu .menu-icon-media div.wp-menu-image {
+       background-position: -119px -33px;
+}
+
+#adminmenu .menu-icon-media:hover div.wp-menu-image,
+#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-media.current div.wp-menu-image {
+       background-position: -119px -1px;
+}
+
+.icon16.icon-links,
+#adminmenu .menu-icon-links div.wp-menu-image {
+       background-position: -89px -33px;
+}
+
+#adminmenu .menu-icon-links:hover div.wp-menu-image,
+#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-links.current div.wp-menu-image {
+       background-position: -89px -1px;
+}
+
+.icon16.icon-page,
+#adminmenu .menu-icon-page div.wp-menu-image {
+       background-position: -149px -33px;
+}
+
+#adminmenu .menu-icon-page:hover div.wp-menu-image,
+#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-page.current div.wp-menu-image {
+       background-position: -149px -1px;
+}
+
+.icon16.icon-comments,
+#adminmenu .menu-icon-comments div.wp-menu-image {
+       background-position: -29px -33px;
+}
+
+#adminmenu .menu-icon-comments:hover div.wp-menu-image,
+#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-comments.current div.wp-menu-image {
+       background-position: -29px -1px;
+}
+
+.icon16.icon-appearance,
+#adminmenu .menu-icon-appearance div.wp-menu-image {
+       background-position: 1px -33px;
+}
+
+#adminmenu .menu-icon-appearance:hover div.wp-menu-image,
+#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-appearance.current div.wp-menu-image {
+       background-position: 1px -1px;
+}
+
+.icon16.icon-plugins,
+#adminmenu .menu-icon-plugins div.wp-menu-image {
+       background-position: -179px -33px;
+}
+
+#adminmenu .menu-icon-plugins:hover div.wp-menu-image,
+#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-plugins.current div.wp-menu-image {
+       background-position: -179px -1px;
+}
+
+.icon16.icon-users,
+#adminmenu .menu-icon-users div.wp-menu-image {
+       background-position: -300px -33px;
+}
+
+#adminmenu .menu-icon-users:hover div.wp-menu-image,
+#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-users.current div.wp-menu-image {
+       background-position: -300px -1px;
+}
+
+.icon16.icon-tools,
+#adminmenu .menu-icon-tools div.wp-menu-image {
+       background-position: -209px -33px;
+}
+
+#adminmenu .menu-icon-tools:hover div.wp-menu-image,
+#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-tools.current div.wp-menu-image {
+       background-position: -209px -1px;
+}
+
+.icon16.icon-settings,
+#adminmenu .menu-icon-settings div.wp-menu-image {
+       background-position: -239px -33px;
+}
+
+#adminmenu .menu-icon-settings:hover div.wp-menu-image,
+#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-settings.current div.wp-menu-image {
+       background-position: -239px -1px;
+}
+
+.icon16.icon-site,
+#adminmenu .menu-icon-site div.wp-menu-image {
+       background-position: -359px -33px;
+}
+
+#adminmenu .menu-icon-site:hover div.wp-menu-image,
+#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-site.current div.wp-menu-image {
+       background-position: -359px -1px;
+}
+
+.icon16.icon-generic,
+#adminmenu .menu-icon-generic div.wp-menu-image {
+       background-position: -330px -33px;
+}
+
+#adminmenu .menu-icon-generic:hover div.wp-menu-image,
+#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-generic.current div.wp-menu-image {
+       background-position: -330px -1px;
+}
+
+/* end menu and screen icons */
+
+/* Screen Icons */
+.icon32.icon-post,
+#icon-edit,
+#icon-post,
+.icon32.icon-dashboard,
+#icon-index,
+.icon32.icon-media,
+#icon-upload,
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category,
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page,
+.icon32.icon-comments,
+#icon-edit-comments,
+.icon32.icon-appearance,
+#icon-themes,
+.icon32.icon-plugins,
+#icon-plugins,
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit,
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin,
+.icon32.icon-settings,
+#icon-options-general,
+.icon32.icon-site,
+#icon-ms-admin,
+.icon32.icon-generic,
+#icon-generic {
+       background-image: url(../images/icons32.png?ver=20121105);
+}
+
+.icon32.icon-post,
+#icon-edit,
+#icon-post {
+       background-position: -552px -5px;
+}
+
+.icon32.icon-dashboard,
+#icon-index {
+       background-position: -137px -5px;
+}
+
+.icon32.icon-media,
+#icon-upload {
+       background-position: -251px -5px;
+}
+
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category {
+       background-position: -190px -5px;
+}
+
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page {
+       background-position: -312px -5px;
+}
+
+.icon32.icon-comments,
+#icon-edit-comments {
+       background-position: -72px -5px;
+}
+
+.icon32.icon-appearance,
+#icon-themes {
+       background-position: -11px -5px;
+}
+
+.icon32.icon-plugins,
+#icon-plugins {
+       background-position: -370px -5px;
+}
+
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit {
+       background-position: -600px -5px;
+}
+
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin {
+       background-position: -432px -5px;
+}
+
+.icon32.icon-settings,
+#icon-options-general {
+       background-position: -492px -5px;
+}
+
+.icon32.icon-site,
+#icon-ms-admin {
+       background-position: -659px -5px;
+}
+
+.icon32.icon-generic,
+#icon-generic {
+       background-position: -708px -5px;
+}
+
+/* end screen icons */
+
+/* Diff */
+table.diff .diff-deletedline {
+       background-color: #fdd;
+}
+
+table.diff .diff-deletedline del {
+       background-color: #f99;
+}
+
+table.diff .diff-addedline {
+       background-color: #dfd;
+}
+
+table.diff .diff-addedline ins {
+       background-color: #9f9;
+}
+
+#att-info {
+       background-color: #e4f2Fd;
+}
+
+/* edit image */
+#sidemenu a {
+       background-color: #f9f9f9;
+       border-color: #f9f9f9;
+       border-bottom-color: #dfdfdf;
+}
+
+#sidemenu a.current {
+       background-color: #fff;
+       border-color: #dfdfdf #dfdfdf #fff;
+       color: #d54e21;
+}
+
+#replyerror {
+       border-color: #ddd;
+       background-color: #f9f9f9;
+}
+
+/* table vim shortcuts */
+.vim-current,
+.vim-current th,
+.vim-current td {
+       background-color: #E4F2FD !important;
+}
+
+/* Install Plugins */
+#plugin-information .fyi ul {
+       background-color: #eaf3fa;
+}
+
+#plugin-information .fyi h2.mainheader {
+       background-color: #cee1ef;
+}
+
+#plugin-information pre,
+#plugin-information code {
+       background-color: #ededff;
+}
+
+#plugin-information pre {
+       border: 1px solid #ccc;
+}
+
+/* inline editor */
+#bulk-titles {
+       border-color: #ddd;
+}
+
+.inline-editor div.title {
+       background-color: #eaf3fa;
+}
+
+.inline-editor ul.cat-checklist {
+       background-color: #fff;
+       border-color: #ddd;
+}
+
+.inline-editor .categories .catshow,
+.inline-editor .categories .cathide {
+       color: #21759b;
+}
+
+.inline-editor .quick-edit-save {
+       background-color: #f1f1f1;
+}
+
+fieldset.inline-edit-col-right .inline-edit-col {
+       border-color: #dfdfdf;
+}
+
+.attention {
+       color: #d54e21;
+}
+
+.js .meta-box-sortables .postbox:hover .handlediv {
+       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
+}
+
+.tablenav .tablenav-pages {
+       color: #555;
+}
+
+.tablenav .tablenav-pages a {
+       border-color: #e3e3e3;
+       background: #eee;
+       -moz-box-shadow:    inset 0 1px 0 #fff;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow:         inset 0 1px 0 #fff;
+}
+
+.tablenav .tablenav-pages a:hover,
+.tablenav .tablenav-pages a:focus {
+       color: #d54e21;
+}
+
+.tablenav .tablenav-pages a.disabled,
+.tablenav .tablenav-pages a.disabled:hover,
+.tablenav .tablenav-pages a.disabled:focus {
+       color: #aaa;
+}
+
+.tablenav .tablenav-pages .current {
+       background: #dfdfdf;
+       border-color: #d3d3d3;
+}
+
+#availablethemes,
+#availablethemes td {
+       border-color: #ddd;
+}
+
+#current-theme img {
+       border-color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+       color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link:hover,
+#TB_window #TB_title a.tb-theme-preview-link:focus {
+       color: #ccc;
+}
+
+.misc-pub-section {
+       border-top-color: #fff;
+       border-bottom-color: #dfdfdf;
+}
+
+#minor-publishing {
+       border-bottom-color: #dfdfdf;
+}
+
+#post-body .misc-pub-section {
+       border-left-color: #eee;
+}
+
+.post-com-count span {
+       background-color: #bbb;
+}
+
+.form-table .color-palette td {
+       border-color: #fff;
+}
+
+.sortable-placeholder {
+       border-color: #bbb;
+       background-color: #f5f5f5;
+}
+
+#post-body ul.category-tabs li.tabs a,
+#post-body ul.add-menu-item-tabs li.tabs a,
+body.press-this ul.category-tabs li.tabs a {
+       color: #333;
+}
+
+.view-switch #view-switch-list,
+.view-switch #view-switch-excerpt {
+       background-color: transparent;
+       background-image: url('../images/list.png');
+       background-repeat: no-repeat;
+}
+
+.view-switch #view-switch-list {
+       background-position: 0 0;
+}
+
+.view-switch .current #view-switch-list {
+       background-position: -40px 0;
+}
+
+.view-switch #view-switch-excerpt {
+       background-position: -20px 0;
+}
+
+.view-switch .current #view-switch-excerpt {
+       background-position: -60px 0;
+}
+
+#header-logo {
+       background: transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center;
+}
+
+.popular-tags,
+.feature-filter {
+       background-color: #fff;
+       border-color: #dfdfdf;
+}
+
+div.widgets-sortables,
+#widgets-left .inactive,
+#available-widgets .widget-holder {
+       background-color: #fcfcfc;
+       border-color: #dfdfdf;
+}
+
+#available-widgets .widget-description {
+       color: #555;
+}
+
+.sidebar-name {
+       color: #464646;
+       text-shadow: #fff 0 1px 0;
+       border-color: #dfdfdf;
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+}
+
+.js .sidebar-name:hover,
+.js #removing-widget {
+       color: #d54e21;
+}
+
+#removing-widget span {
+       color: black;
+}
+
+.js .sidebar-name-arrow {
+       background: transparent url(../images/arrows.png) no-repeat 5px 9px;
+}
+
+.js .sidebar-name:hover .sidebar-name-arrow {
+       background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px;
+}
+
+.in-widget-title {
+       color: #606060;
+}
+
+.deleting .widget-title * {
+       color: #aaa;
+}
+
+.imgedit-menu div {
+       border-color: #d5d5d5;
+       background-color: #f1f1f1;
+}
+
+.imgedit-menu div:hover {
+       border-color: #c1c1c1;
+       background-color: #eaeaea;
+}
+
+.imgedit-menu div.disabled {
+       border-color: #ccc;
+       background-color: #ddd;
+       filter: alpha(opacity=50);
+       opacity: 0.5;
+}
+
+#dashboard_recent_comments div.undo {
+       border-top-color: #dfdfdf;
+}
+
+.comment-ays,
+.comment-ays th {
+       border-color: #ddd;
+}
+
+.comment-ays th {
+       background-color: #f1f1f1;
+}
+
+/* added from nav-menu.css */
+#menu-management .menu-edit {
+       border-color: #dfdfdf;
+}
+
+#post-body {
+       background: #fff;
+       border-top-color: #fff;
+       border-bottom-color: #dfdfdf;
+}
+
+#nav-menu-header {
+       border-bottom-color: #dfdfdf;
+}
+
+#nav-menu-footer {
+       border-top-color: #fff;
+}
+
+#menu-management .nav-tabs-arrow a {
+       color: #c1c1c1;
+}
+
+#menu-management .nav-tabs-arrow a:hover {
+       color: #d54e21;
+}
+
+#menu-management .nav-tabs-arrow a:active {
+       color: #464646;
+}
+
+#menu-management .nav-tab-active {
+       border-color: #dfdfdf;
+}
+
+#menu-management .nav-tab {
+       background: #fbfbfb;
+       border-color: #dfdfdf;
+}
+
+.js .input-with-default-title {
+       color: #aaa;
+}
+
+#cancel-save {
+       color: #f00;
+}
+
+#cancel-save:hover {
+       background-color: #f00;
+       color: #fff;
+}
+
+.list-container,
+.menu-item-handle {
+       border-color: #dfdfdf;
+}
+
+.menu li.deleting .menu-item-handle {
+       background-color: #f66;
+       text-shadow: #ccc;
+}
+
+.item-type { /* Menu item controls */
+       color: #999;
+}
+
+.item-controls .menu-item-delete:hover {
+       color: #f00;
+}
+
+.nav-menus-php .item-edit {
+       background: transparent url(../images/arrows.png) no-repeat 8px 10px;
+       border-bottom-color: #eee;
+}
+
+.nav-menus-php .item-edit:hover {
+       background: transparent url(../images/arrows-dark.png) no-repeat 8px 10px;
+}
+
+.menu-item-settings { /* Menu editing */
+       border-color: #dfdfdf;
+}
+
+.link-to-original {
+       color: #777;
+       border-color: #dfdfdf;
+}
+
+#cancel-save:hover {
+       color: #fff !important;
+}
+
+#update-menu-item {
+       color: #fff !important;
+}
+
+#update-menu-item:hover,
+#update-menu-item:active,
+#update-menu-item:focus {
+       color: #eaf2fa !important;
+       border-color: #13455b !important;
+}
+
+.submitbox .submitcancel {
+       color: #21759b;
+       border-bottom-color: #21759b;
+}
+
+.submitbox .submitcancel:hover {
+       background: #21759b;
+       color: #fff;
+}
+/* end added from nav-menu.css */
+
+.nav-tab {
+       border-color: #dfdfdf #dfdfdf #fff;
+}
+
+.nav-tab:hover,
+.nav-tab-active {
+       border-color: #ccc #ccc #fff;
+}
+
+h2.nav-tab-wrapper, h3.nav-tab-wrapper {
+       border-bottom-color: #ccc;
+}
+
+#menu-management .nav-tab-active,
+.menu-item-handle,
+.menu-item-settings {
+       -webkit-box-shadow: inset 0 1px 0 #fff;
+       box-shadow: inset 0 1px 0 #fff;
+}
+
+#menu-management .nav-tab-active {
+       background: #f9f9f9;
+       border-bottom-color: #f9f9f9;
+}
+
+#upload-form label {
+       color: #777;
+}
+
+/* Begin About Pages */
+
+.about-wrap h1 {
+       color: #333;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-text {
+       color: #777;
+}
+
+.wp-badge {
+       color: #fff;
+       text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3);
+}
+
+.about-wrap h2 .nav-tab {
+       color: #21759b;
+}
+
+.about-wrap h2 .nav-tab:hover {
+       color: #d54e21;
+}
+
+.about-wrap h2 .nav-tab-active,
+.about-wrap h2 .nav-tab-active:hover {
+       color: #333;
+}
+
+.about-wrap h2 .nav-tab-active {
+       text-shadow: 1px 1px 1px #fff;
+       color: #464646;
+}
+
+.about-wrap h3 {
+       color: #333;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-wrap .feature-section h4 {
+       color: #464646;
+}
+
+.about-wrap .feature-section img {
+       background: #fff;
+       border: 1px #ccc solid;
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
+       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
+}
+
+.about-wrap h4.wp-people-group {
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.about-wrap .point-releases {
+       border-bottom: 1px solid #dfdfdf;
+}
+
+.about-wrap .point-releases h3 {
+       border-top: 1px solid #dfdfdf;
+}
+
+.about-wrap .point-releases h3:first-child {
+       border: 0;
+}
+
+.about-wrap li.wp-person img.gravatar {
+       -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
+       box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
+}
+
+.about-wrap li.wp-person .title {
+       color: #464646;
+       text-shadow: 1px 1px 1px #fff;
+}
+
+.freedoms-php .about-wrap ol li {
+       color: #999;
+}
+
+.freedoms-php .about-wrap ol p {
+       color: #464646;
+}
+
+/* End About Pages */
+
+
+/*------------------------------------------------------------------------------
+  2.0 - Right to Left Styles
+------------------------------------------------------------------------------*/
+
+.rtl .bar {
+       border-right-color: transparent;
+       border-left-color: #99d;
+}
+
+.rtl #screen-meta-links a.show-settings {
+       background-position: left 3px;
+}
+
+.rtl #screen-meta-links a.show-settings.screen-meta-active {
+       background-position: left -33px;
+}
+
+/* Menu */
+.rtl #adminmenushadow,
+.rtl #adminmenuback {
+       background-image: url(../images/menu-shadow-rtl.png);
+       background-position: top left;
+}
+
+.rtl #adminmenu .wp-submenu .wp-submenu-head {
+       border-right-color: transparent;
+       border-left-color: #dfdfdf;
+}
+
+.rtl #adminmenu .wp-submenu,
+.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+       -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+}
+
+.rtl #adminmenu .wp-has-current-submenu .wp-submenu {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+/* Collapse Menu Button */
+.rtl #collapse-button div {
+       background-position: 0 -108px;
+}
+
+.rtl.folded #collapse-button div {
+       background-position: 0 -72px;
+}
+
+/* Auto-folding of the admin menu for RTL */
+@media only screen and (max-width: 900px) {
+       .rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+       .rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu {
+               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       .rtl.auto-fold #collapse-button div {
+               background-position: 0 -72px;
+       }
+}
+
+/* Edit Image */
+.js.rtl .meta-box-sortables .postbox:hover .handlediv {
+       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
+}
+
+.rtl #post-body .misc-pub-section {
+       border-right-color: transparent;
+       border-left-color: #eee;
+}
+
+.js.rtl .sidebar-name-arrow {
+       background: transparent url(../images/arrows.png) no-repeat 5px 9px;
+}
+
+.js.rtl .sidebar-name:hover .sidebar-name-arrow {
+       background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px;
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+
+       .curtime #timestamp {
+               background-image: url("../images/date-button-2x.gif?ver=20120916");
+               background-size: 16px auto;
+       }
+
+       .tagchecklist span a,
+       #bulk-titles div a,
+       .tagchecklist span a:hover,
+       #bulk-titles div a:hover {
+               background-image: url("../images/xit-2x.gif?ver=20120916");
+               background-size: 20px auto;
+       }
+
+       #screen-meta-links a.show-settings,
+       #screen-meta-links a.show-settings.screen-meta-active,
+       #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+       #adminmenu .wp-menu-open .wp-menu-toggle,
+       #collapse-button div,
+       .nav-menus-php .item-edit,
+       .js .meta-box-sortables .postbox:hover .handlediv,
+       .sidebar-name-arrow,
+       .rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+       .rtl #adminmenu .wp-menu-open .wp-menu-toggle,
+       .js.rtl .meta-box-sortables .postbox:hover .handlediv,
+       .rtl .sidebar-name-arrow {
+               background-image: url("../images/arrows-2x.png?ver=20120916");
+               background-size: 15px 123px;
+       }
+
+       #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+       #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
+       .sidebar-name:hover .sidebar-name-arrow,
+       .nav-menus-php .item-edit:hover,
+       .rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+       .rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
+       .rtl .sidebar-name:hover .sidebar-name-arrow {
+               background-image: url("../images/arrows-dark-2x.png?ver=20120916");
+               background-size: 15px 123px;
+       }
+
+       .view-switch #view-switch-list,
+       .view-switch #view-switch-excerpt {
+               background-image: url("../images/list-2x.png?ver=20120916");
+               background-size: 80px 20px;
+       }
+
+       .icon32.icon-post,
+       #icon-edit,
+       #icon-post,
+       .icon32.icon-dashboard,
+       #icon-index,
+       .icon32.icon-media,
+       #icon-upload,
+       .icon32.icon-links,
+       #icon-link-manager,
+       #icon-link,
+       #icon-link-category,
+       .icon32.icon-page,
+       #icon-edit-pages,
+       #icon-page,
+       .icon32.icon-comments,
+       #icon-edit-comments,
+       .icon32.icon-appearance,
+       #icon-themes,
+       .icon32.icon-plugins,
+       #icon-plugins,
+       .icon32.icon-users,
+       #icon-users,
+       #icon-profile,
+       #icon-user-edit,
+       .icon32.icon-tools,
+       #icon-tools,
+       #icon-admin,
+       .icon32.icon-settings,
+       #icon-options-general,
+       .icon32.icon-site,
+       #icon-ms-admin,
+       .icon32.icon-generic,
+       #icon-generic {
+               background-image: url(../images/icons32-2x.png?ver=20121105);
+               background-size: 756px 45px;
+       }
+
+       .icon16.icon-dashboard,
+       .menu-icon-dashboard div.wp-menu-image,
+       .icon16.icon-post,
+       .menu-icon-post div.wp-menu-image,
+       .icon16.icon-media,
+       .menu-icon-media div.wp-menu-image,
+       .icon16.icon-links,
+       .menu-icon-links div.wp-menu-image,
+       .icon16.icon-page,
+       .menu-icon-page div.wp-menu-image,
+       .icon16.icon-comments,
+       .menu-icon-comments div.wp-menu-image,
+       .icon16.icon-appearance,
+       .menu-icon-appearance div.wp-menu-image,
+       .icon16.icon-plugins,
+       .menu-icon-plugins div.wp-menu-image,
+       .icon16.icon-users,
+       .menu-icon-users div.wp-menu-image,
+       .icon16.icon-tools,
+       .menu-icon-tools div.wp-menu-image,
+       .icon16.icon-settings,
+       .menu-icon-settings div.wp-menu-image,
+       .icon16.icon-site,
+       .menu-icon-site div.wp-menu-image,
+       .icon16.icon-generic,
+       .menu-icon-generic div.wp-menu-image {
+               background-image: url('../images/menu-2x.png?ver=20121105');
+               background-size: 390px 64px;
+       }
+
+       #header-logo {
+               background-image: url('../images/wp-logo-2x.png?ver=20120916');
+               background-size: 16px auto;
+       }
+
+}
diff --git a/wp-admin/css/colors-fresh.dev.css b/wp-admin/css/colors-fresh.dev.css
deleted file mode 100644 (file)
index 8049099..0000000
+++ /dev/null
@@ -1,2086 +0,0 @@
-/*------------------------------------------------------------------------------
-
-
-Howdy! This is the CSS file that controls the
-Gray (fresh) color style on the WordPress Dashboard.
-
-This file contains both LTR and RTL styles.
-
-
-TABLE OF CONTENTS:
-------------------
- 1.0 - Left to Right Styles
- 2.0 - Right to Left Styles
-
-
-------------------------------------------------------------------------------*/
-
-
-/*------------------------------------------------------------------------------
-  1.0 - Left to Right Styles
-------------------------------------------------------------------------------*/
-
-html,
-.wp-dialog {
-       background-color: #fff;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="file"],
-input[type="button"],
-input[type="submit"],
-input[type="reset"],
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="tel"],
-input[type="url"],
-select {
-       border-color: #dfdfdf;
-       background-color: #fff;
-       color: #333;
-}
-
-select {
-       color: #000;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="file"]:focus,
-input[type="button"]:focus,
-input[type="submit"]:focus,
-input[type="reset"]:focus,
-input[type="email"]:focus,
-input[type="number"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="url"]:focus,
-select:focus {
-       border-color: #bbb;
-}
-
-kbd,
-code {
-       background: #eaeaea;
-}
-
-input[readonly] {
-       background-color: #eee;
-}
-
-.find-box-search {
-       border-color: #dfdfdf;
-       background-color: #f1f1f1;
-}
-
-.find-box {
-       background-color: #f1f1f1;
-}
-
-.find-box-inside {
-       background-color: #fff;
-}
-
-a.page-numbers:hover {
-       border-color: #999;
-}
-
-body,
-#wpbody,
-.form-table .pre,
-.ui-autocomplete li a {
-       color: #333;
-}
-
-body > #upload-menu {
-       border-bottom-color: #fff;
-}
-
-#postcustomstuff table,
-#your-profile fieldset,
-#rightnow,
-div.dashboard-widget,
-#dashboard-widgets p.dashboard-widget-links {
-       border-color: #ccc;
-}
-
-#poststuff .inside label.spam,
-#poststuff .inside label.deleted {
-       color: red;
-}
-
-#poststuff .inside label.waiting {
-       color: orange;
-}
-
-#poststuff .inside label.approved {
-       color: green;
-}
-
-#postcustomstuff table {
-       border-color: #dfdfdf;
-       background-color: #F9F9F9;
-}
-
-#postcustomstuff thead th {
-       background-color: #F1F1F1;
-}
-
-.widefat {
-       border-color: #dfdfdf;
-       background-color: #f9f9f9;
-}
-textarea.widefat {
-       background-color: #fff;
-}
-
-div.dashboard-widget-error {
-       background-color: #c43;
-}
-
-div.dashboard-widget-notice {
-       background-color: #cfe1ef;
-}
-
-div.dashboard-widget-submit {
-       border-top-color: #ccc;
-}
-
-ul.category-tabs li {
-       border-color: transparent;
-}
-
-div.tabs-panel,
-.wp-tab-panel,
-ul.category-tabs li.tabs,
-ul.add-menu-item-tabs li.tabs,
-.wp-tab-active {
-       border-color: #dfdfdf;
-       background-color: #fff;
-}
-
-ul.category-tabs li.tabs,
-ul.add-menu-item-tabs li.tabs,
-.wp-tab-active {
-       background-color: #fff;
-}
-
-input.disabled,
-textarea.disabled {
-       background-color: #ccc;
-}
-/* #upload-menu li a.upload-tab-link, */
-#plugin-information .action-button a,
-#plugin-information .action-button a:hover,
-#plugin-information .action-button a:visited {
-       color: #fff;
-}
-
-.widget .widget-top,
-.postbox h3,
-.stuffbox h3,
-.widefat thead tr th,
-.widefat tfoot tr th,
-h3.dashboard-widget-title,
-h3.dashboard-widget-title span,
-h3.dashboard-widget-title small,
-.find-box-head,
-.sidebar-name,
-#nav-menu-header,
-#nav-menu-footer,
-.menu-item-handle {
-       background-color: #f1f1f1; /* Fallback */
-       background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */
-       background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */
-       background-image: -o-linear-gradient(top, #f9f9f9, #ececec); /* Opera */
-       background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); /* old Webkit */
-       background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); /* new Webkit */
-       background-image: linear-gradient(top, #f9f9f9, #ececec); /* proposed W3C Markup */
-}
-
-.widget .widget-top,
-.postbox h3,
-.stuffbox h3 {
-       border-bottom-color: #dfdfdf;
-       text-shadow: #fff 0 1px 0;
-       -moz-box-shadow: 0 1px 0 #fff;
-       -webkit-box-shadow: 0 1px 0 #fff;
-       box-shadow: 0 1px 0 #fff;
-}
-
-.form-table th,
-.form-wrap label {
-       color: #222;
-       text-shadow: #fff 0 1px 0;
-}
-
-.description,
-.form-wrap p {
-       color: #666;
-}
-
-strong .post-com-count span {
-       background-color: #21759b;
-}
-
-.sorthelper {
-       background-color: #ccf3fa;
-}
-
-.ac_match,
-.subsubsub a.current {
-       color: #000;
-}
-
-.wrap h2 {
-       color: #464646;
-}
-
-.wrap .add-new-h2 {
-       background: #f1f1f1;
-}
-
-.subtitle {
-       color: #777;
-}
-
-.ac_over {
-       background-color: #f0f0b8;
-}
-
-.ac_results {
-       background-color: #fff;
-       border-color: #808080;
-}
-
-.ac_results li {
-       color: #101010;
-}
-
-.alternate,
-.alt {
-       background-color: #fcfcfc;
-}
-
-.available-theme a.screenshot {
-       background-color: #f1f1f1;
-       border-color: #ddd;
-}
-
-.bar {
-       background-color: #e8e8e8;
-       border-right-color: #99d;
-}
-
-#media-upload,
-#media-upload .media-item .slidetoggle {
-       background: #fff;
-}
-
-#media-upload .slidetoggle {
-       border-top-color: #dfdfdf;
-}
-
-div.error,
-.login #login_error {
-       background-color: #ffebe8;
-       border-color: #c00;
-}
-
-div.error a {
-       color: #c00;
-}
-
-.form-invalid {
-       background-color: #ffebe8 !important;
-}
-
-.form-invalid input,
-.form-invalid select {
-       border-color: #c00 !important;
-}
-
-.submit,
-#commentsdiv #add-new-comment {
-       border-color: #dfdfdf;
-}
-
-.highlight {
-       background-color: #e4f2fd;
-       color: #000;
-}
-
-.howto,
-.nonessential,
-#edit-slug-box,
-.form-input-tip,
-.subsubsub {
-       color: #666;
-}
-
-.media-upload-form label.form-help,
-td.help {
-       color: #9a9a9a;
-}
-
-.ui-autocomplete {
-       background-color: #efefef;
-       border-color: #bbb;
-}
-
-.ui-autocomplete li a.ui-state-hover {
-       background-color: #ddd;
-}
-
-.post-com-count {
-       background-image: url(../images/bubble_bg.gif);
-       color: #fff;
-}
-
-.post-com-count span {
-       background-color: #bbb;
-       color: #fff;
-}
-
-.post-com-count:hover span {
-       background-color: #d54e21;
-}
-
-.quicktags, .search {
-       background-color: #ccc;
-       color: #000;
-}
-
-.side-info h5 {
-       border-bottom-color: #dadada;
-}
-
-.side-info ul {
-       color: #666;
-}
-
-.button,
-.button-secondary,
-.submit input,
-input[type=button],
-input[type=submit] {
-       border-color: #bbb;
-       color: #464646;
-}
-
-.button:hover,
-.button-secondary:hover,
-.submit input:hover,
-input[type=button]:hover,
-input[type=submit]:hover {
-       color: #000;
-       border-color: #666;
-}
-
-.button,
-.submit input,
-.button-secondary {
-       background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
-       text-shadow: rgba(255,255,255,1) 0 1px 0;
-}
-
-.button:active,
-.submit input:active,
-.button-secondary:active {
-       background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
-}
-
-input.button-primary,
-button.button-primary,
-a.button-primary {
-       border-color: #298cba;
-       font-weight: bold;
-       color: #fff;
-       background: #21759B url(../images/button-grad.png) repeat-x scroll left top;
-       text-shadow: rgba(0,0,0,0.3) 0 -1px 0;
-}
-
-input.button-primary:active,
-button.button-primary:active,
-a.button-primary:active {
-       background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top;
-       color: #eaf2fa;
-}
-
-input.button-primary:hover,
-button.button-primary:hover,
-a.button-primary:hover,
-a.button-primary:focus,
-a.button-primary:active {
-       border-color: #13455b;
-       color: #eaf2fa;
-}
-
-.button-disabled,
-.button[disabled],
-.button:disabled,
-.button-secondary[disabled],
-.button-secondary:disabled,
-a.button.disabled {
-       color: #aaa !important;
-       border-color: #ddd !important;
-}
-
-.button-primary-disabled,
-.button-primary[disabled],
-.button-primary:disabled {
-       color: #9FD0D5 !important;
-       background: #298CBA !important;
-}
-
-a:hover,
-a:active,
-a:focus {
-       color: #d54e21;
-}
-
-#adminmenu a:hover,
-#adminmenu li.menu-top > a:focus,
-#adminmenu ul.wp-submenu a:hover,
-#the-comment-list .comment a:hover,
-#rightnow a:hover,
-#media-upload a.del-link:hover,
-div.dashboard-widget-submit input:hover,
-.subsubsub a:hover,
-.subsubsub a.current:hover,
-.ui-tabs-nav a:hover,
-.plugins .inactive a:hover,
-#all-plugins-table .plugins .inactive a:hover,
-#search-plugins-table .plugins .inactive a:hover {
-       color: #d54e21;
-}
-
-#the-comment-list .comment-item,
-#dashboard-widgets #dashboard_quick_press form p.submit {
-       border-color: #dfdfdf;
-}
-
-#side-sortables .category-tabs .tabs a,
-#side-sortables .add-menu-item-tabs .tabs a,
-.wp-tab-bar .wp-tab-active a {
-       color: #333;
-}
-
-#rightnow .rbutton {
-       background-color: #ebebeb;
-       color: #264761;
-}
-
-.submitbox .submit {
-       background-color: #464646;
-       color: #ccc;
-}
-
-.plugins a.delete:hover,
-#all-plugins-table .plugins a.delete:hover,
-#search-plugins-table .plugins a.delete:hover,
-.submitbox .submitdelete {
-       color: #f00;
-       border-bottom-color: #f00;
-}
-
-.submitbox .submitdelete:hover,
-#media-items a.delete:hover {
-       color: #fff;
-       background-color: #f00;
-       border-bottom-color: #f00;
-}
-
-#normal-sortables .submitbox .submitdelete:hover {
-       color: #000;
-       background-color: #f00;
-       border-bottom-color: #f00;
-}
-
-.tablenav .dots {
-       border-color: transparent;
-}
-
-.tablenav .next,
-.tablenav .prev {
-       border-color: transparent;
-       color: #21759b;
-}
-
-.tablenav .next:hover,
-.tablenav .prev:hover {
-       border-color: transparent;
-       color: #d54e21;
-}
-
-div.updated,
-.login .message {
-       background-color: #ffffe0;
-       border-color: #e6db55;
-}
-
-.update-message {
-       color: #000;
-}
-
-a.page-numbers {
-       border-bottom-color: #B8D3E2;
-}
-
-.commentlist li {
-       border-bottom-color: #ccc;
-}
-
-.widefat td,
-.widefat th {
-       border-top-color: #fff;
-       border-bottom-color: #dfdfdf;
-}
-
-.widefat th {
-       text-shadow: rgba(255,255,255,0.8) 0 1px 0;
-}
-
-.widefat td {
-       color: #555;
-}
-.widefat p,
-.widefat ol,
-.widefat ul {
-       color: #333;
-}
-
-.widefat thead tr th,
-.widefat tfoot tr th,
-h3.dashboard-widget-title,
-h3.dashboard-widget-title span,
-h3.dashboard-widget-title small,
-.find-box-head {
-       color: #333;
-}
-
-th.sortable a:hover, th.sortable a:active, th.sortable a:focus {
-       color: #333;
-}
-
-h3.dashboard-widget-title small a {
-       color: #d7d7d7;
-}
-
-h3.dashboard-widget-title small a:hover {
-       color: #fff;
-}
-
-a,
-#adminmenu a,
-#the-comment-list p.comment-author strong a,
-#media-upload a.del-link,
-#media-items a.delete,
-.plugins a.delete,
-.ui-tabs-nav a {
-       color: #21759b;
-}
-
-#adminmenu .awaiting-mod,
-#adminmenu .update-plugins,
-#sidemenu a .update-plugins,
-#rightnow .reallynow {
-       background-color: #464646;
-       color: #fff;
-       -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-}
-#plugin-information .action-button {
-       background-color: #d54e21;
-       color: #fff;
-}
-
-#adminmenu li.current a .awaiting-mod,
-#adminmenu     li a.wp-has-current-submenu .update-plugins{
-       background-color: #464646;
-       color: #fff;
-       -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-       box-shadow: rgba(255,255,255,0.5) 0 1px 0;
-}
-
-div#media-upload-header,
-div#plugin-information-header {
-       background-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-}
-
-#currenttheme img {
-       border-color: #666;
-}
-
-#dashboard_secondary div.dashboard-widget-content ul li a {
-       background-color: #f9f9f9;
-}
-
-input.readonly, textarea.readonly {
-       background-color: #ddd;
-}
-
-#editable-post-name {
-       background-color: #fffbcc;
-}
-
-#edit-slug-box strong,
-.tablenav .displaying-num,
-#submitted-on,
-.submitted-on {
-       color: #777;
-}
-
-.login #nav a,
-.login #backtoblog a {
-       color: #21759b !important;
-}
-
-.login #nav a:hover,
-.login #backtoblog a:hover {
-       color: #d54e21 !important;
-}
-
-#footer {
-       color: #777;
-       border-color: #dfdfdf;
-}
-
-.imgedit-group,
-#media-items .media-item,
-.media-item .describe {
-       border-color: #dfdfdf;
-}
-
-.checkbox,
-.side-info,
-.plugins tr,
-#your-profile #rich_editing {
-       background-color: #fcfcfc;
-}
-
-.plugins .inactive,
-.plugins .inactive th,
-.plugins .inactive td,
-tr.inactive + tr.plugin-update-tr .plugin-update {
-       background-color: #f4f4f4;
-}
-
-.plugin-update-tr .update-message {
-       background-color: #fffbe4;
-       border-color: #dfdfdf;
-}
-
-.plugins .active,
-.plugins .active th,
-.plugins .active td {
-       color: #000;
-}
-
-.plugins .inactive a {
-       color: #557799;
-}
-
-#the-comment-list tr.undo,
-#the-comment-list div.undo {
-       background-color: #f4f4f4;
-}
-
-#the-comment-list .unapproved {
-       background-color: #ffffe0;
-}
-
-#the-comment-list .approve a {
-       color: #006505;
-}
-
-#the-comment-list .unapprove a {
-       color: #d98500;
-}
-
-table.widefat span.delete a,
-table.widefat span.trash a,
-table.widefat span.spam a,
-#dashboard_recent_comments .delete a,
-#dashboard_recent_comments .trash a,
-#dashboard_recent_comments .spam a {
-       color: #bc0b0b;
-}
-
-.welcome-panel {
-       border-color: #dfdfdf;
-}
-.welcome-panel p {
-       color: #777;
-}
-.welcome-panel-column p {
-       color: #464646;
-}
-.welcome-panel h3 {
-       text-shadow: 1px 1px 1px white;
-}
-
-.widget,
-#widget-list .widget-top,
-.postbox,
-#titlediv,
-#poststuff .postarea,
-.stuffbox {
-       border-color: #dfdfdf;
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-.widget,
-#widget-list .widget-top,
-.postbox,
-.menu-item-settings {
-       background-color: #f5f5f5; /* Fallback */
-       background-image: -ms-linear-gradient(top, #f9f9f9, #f5f5f5); /* IE10 */
-       background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); /* Firefox */
-       background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); /* Opera */
-       background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5)); /* old Webkit */
-       background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); /* new Webkit */
-       background-image: linear-gradient(top, #f9f9f9, #f5f5f5); /* proposed W3C Markup */
-}
-
-.postbox h3 {
-       color: #464646;
-}
-
-.widget .widget-top {
-       color: #222;
-}
-
-.sidebar-name:hover h3,
-.postbox h3:hover {
-       color: #000;
-}
-
-.curtime #timestamp {
-       background-image: url(../images/date-button.gif);
-}
-
-#quicktags #ed_link {
-       color: #00f;
-}
-
-#rightnow .youhave {
-       background-color: #f0f6fb;
-}
-
-#rightnow a {
-       color: #448abd;
-}
-
-.tagchecklist span a,
-#bulk-titles div a {
-       background: url(../images/xit.gif) no-repeat;
-}
-
-.tagchecklist span a:hover,
-#bulk-titles div a:hover {
-       background: url(../images/xit.gif) no-repeat -10px 0;
-}
-
-#update-nag, .update-nag {
-       background-color: #FFFBCC;
-       border-color: #E6DB55;
-       color: #555;
-}
-
-#screen-meta {
-       background-color: #f1f1f1;
-       border-color: #ccc;
-       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
-       box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 );
-}
-
-#contextual-help-back {
-       background: #fff;
-}
-
-.contextual-help-tabs a:hover {
-       color: #333;
-}
-
-#contextual-help-back,
-.contextual-help-tabs .active {
-       border-color: #ccc;
-}
-
-.contextual-help-tabs .active,
-.contextual-help-tabs .active a,
-.contextual-help-tabs .active a:hover {
-       background: #fff;
-       color: #333;
-}
-
-/* screen options and help tabs */
-#screen-options-link-wrap,
-#contextual-help-link-wrap {
-       background-color: #e3e3e3; /* Fallback */
-       border-right: 1px solid #ccc;
-       border-left: 1px solid #ccc;
-       border-bottom: 1px solid #ccc;
-       background-image: -ms-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#f1f1f1)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* new Webkit */
-       background-image: linear-gradient(bottom, #dfdfdf, #f1f1f1); /* proposed W3C Markup */
-}
-
-#screen-meta-links a.show-settings {
-       color: #777;
-}
-
-#screen-meta-links a.show-settings:hover {
-       color: #333;
-}
-
-#screen-meta-links a.show-settings {
-       background: transparent url(../images/arrows.png) no-repeat right 4px;
-}
-
-#screen-meta-links a.show-settings.screen-meta-active {
-       background: transparent url(../images/arrows.png) no-repeat right -31px;
-}
-
-/* end screen options and help tabs */
-
-.login #backtoblog a {
-       color: #464646;
-}
-
-#wphead {
-       border-bottom:#dfdfdf 1px solid;
-}
-
-#wphead h1 a {
-       color: #464646;
-}
-
-#footer a:link,
-#footer a:visited {
-       text-decoration: none;
-}
-
-#footer a:hover {
-       text-decoration: underline;
-}
-
-.file-error,
-abbr.required,
-.widget-control-remove:hover,
-table.widefat .delete a:hover,
-table.widefat .trash a:hover,
-table.widefat .spam a:hover,
-#dashboard_recent_comments .delete a:hover,
-#dashboard_recent_comments .trash a:hover
-#dashboard_recent_comments .spam a:hover {
-       color: #f00;
-}
-
-#pass-strength-result {
-       background-color: #eee;
-       border-color: #ddd !important;
-}
-
-#pass-strength-result.bad {
-       background-color: #ffb78c;
-       border-color: #ff853c !important;
-}
-
-#pass-strength-result.good {
-       background-color: #ffec8b;
-       border-color: #fc0 !important;
-}
-
-#pass-strength-result.short {
-       background-color: #ffa0a0;
-       border-color: #f04040 !important;
-}
-
-#pass-strength-result.strong {
-       background-color: #c3ff88;
-       border-color: #8dff1c !important;
-}
-
-#titlediv #title {
-       border-color: #ccc;
-}
-
-#post-status-info {
-       border-color: #dfdfdf #ccc #ccc;
-       background-color: #eaeaea;
-}
-
-.editwidget .widget-inside {
-       border-color: #dfdfdf;
-}
-
-#titlediv #title {
-       background-color: #fff;
-}
-
-#tTips p#tTips_inside {
-       background-color: #ddd;
-       color: #333;
-}
-
-#timestampdiv input,
-#namediv input,
-#poststuff .inside .the-tagcloud {
-       border-color: #ddd;
-}
-
-/* menu */
-#adminmenuback,
-#adminmenuwrap {
-       background-color: #ececec;
-       border-color: #ccc;
-}
-
-#adminmenushadow,
-#adminmenuback {
-       background-image: url(../images/menu-shadow.png);
-       background-position: top right;
-       background-repeat: repeat-y;
-}
-
-#adminmenu li.wp-menu-separator {
-       background: #dfdfdf;
-       border-color: #cfcfcf;
-}
-
-#adminmenu div.separator {
-       border-color: #e1e1e1;
-}
-
-#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
-#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
-       background: transparent url(../images/arrows-dark.png) no-repeat -1px 6px;
-}
-
-#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
-#adminmenu .wp-menu-open .wp-menu-toggle {
-       background: transparent url(../images/arrows.png) no-repeat -2px 6px;
-}
-
-#adminmenu a.menu-top,
-.folded #adminmenu li.menu-top,
-#adminmenu .wp-submenu .wp-submenu-head {
-       border-top-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-}
-
-#adminmenu li.wp-menu-open {
-       border-color: #dfdfdf;
-}
-
-#adminmenu li.menu-top:hover > a,
-#adminmenu li.menu-top.focused > a,
-#adminmenu li.menu-top > a:focus {
-       background-color: #e4e4e4;
-       text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 );
-}
-
-#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
-#adminmenu li.current a.menu-top,
-.folded #adminmenu li.wp-has-current-submenu,
-.folded #adminmenu li.current.menu-top,
-#adminmenu .wp-menu-arrow,
-#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
-       background-color: #777; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */
-       background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */
-}
-
-#adminmenu .wp-menu-arrow div {
-       background-color: #777; /* Fallback */
-       background-image: -ms-linear-gradient(right bottom, #6d6d6d, #808080); /* IE10 */
-       background-image: -moz-linear-gradient(right bottom, #6d6d6d, #808080); /* Firefox */
-       background-image: -o-linear-gradient(right bottom, #6d6d6d, #808080); /* Opera */
-       background-image: -webkit-gradient(linear, right bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */
-       background-image: -webkit-linear-gradient(right bottom, #6d6d6d, #808080); /* new Webkit */
-       background-image: linear-gradient(right bottom, #6d6d6d, #808080); /* proposed W3C Markup */
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
-       border-top-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-       background: #E4E4E4;
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow div {
-       background: #E4E4E4;
-       border-color: #ccc;
-}
-
-.folded #adminmenu li.menu-top li:hover a {
-       background-image: none;
-}
-
-#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
-#adminmenu li.current a.menu-top,
-#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
-       text-shadow: 0 -1px 0 #333;
-       color: #fff;
-       border-top-color: #808080;
-       border-bottom-color: #6d6d6d;
-}
-
-.folded #adminmenu li.wp-has-current-submenu,
-.folded #adminmenu li.current.menu-top {
-       border-top-color: #808080;
-       border-bottom-color: #6d6d6d;
-}
-
-#adminmenu .wp-submenu a:hover,
-#adminmenu .wp-submenu a:focus {
-       background-color: #EAF2FA;
-       color: #333;
-}
-
-#adminmenu .wp-submenu li.current,
-#adminmenu .wp-submenu li.current a,
-#adminmenu .wp-submenu li.current a:hover {
-       color: #333;
-}
-
-#adminmenu .wp-submenu ul {
-       background-color: #fff;
-}
-
-#adminmenu .wp-submenu-wrap,
-#adminmenu .wp-submenu ul {
-       border-color: #dfdfdf;
-}
-
-#adminmenu .wp-submenu-wrap,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-       -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-}
-
-#adminmenu .wp-submenu .wp-submenu-head {
-       border-right-color: #dfdfdf;
-       background-color: #ececec;
-}
-
-#adminmenu div.wp-submenu {
-       background-color: transparent;
-}
-
-/* collapse menu button */
-#collapse-menu {
-       color: #aaa;
-}
-
-#collapse-menu:hover {
-       color: #999;
-}
-
-#collapse-button {
-       border-color: #ccc;
-       background-color: #f4f4f4; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #dfdfdf, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #dfdfdf, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #dfdfdf, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #dfdfdf, #fff); /* proposed W3C Markup */
-}
-
-#collapse-menu:hover #collapse-button {
-       border-color: #aaa;
-}
-
-#collapse-button div {
-       background: transparent url(../images/arrows.png) no-repeat 0 -72px;
-}
-
-.folded #collapse-button div {
-       background-position: 0 -108px;
-}
-
-/* Auto-folding of the admin menu */
-@media only screen and (max-width: 900px) {
-       #adminmenu li.menu-top {
-               border-top-color: #f9f9f9;
-               border-bottom-color: #dfdfdf;
-       }
-
-       #adminmenu li.wp-has-current-submenu,
-       #adminmenu li.current.menu-top {
-               background-color: #777; /* Fallback */
-               background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */
-               background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */
-               background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */
-               background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */
-               background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */
-               background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */
-       }
-
-       #adminmenu li.menu-top li:hover a {
-               background-image: none;
-       }
-
-       #adminmenu li.wp-has-current-submenu,
-       #adminmenu li.current.menu-top {
-               border-top-color: #808080;
-               border-bottom-color: #6d6d6d;
-       }
-
-       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-               -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       }
-
-       #collapse-button div {
-               background-position: 0 -108px;
-       }
-}
-
-/* menu and screen icons */
-.icon16,
-.icon32,
-div.wp-menu-image {
-       background-color: transparent;
-       background-repeat: no-repeat;
-}
-
-.icon16.icon-dashboard,
-.menu-icon-dashboard div.wp-menu-image,
-.icon16.icon-post,
-.menu-icon-post div.wp-menu-image,
-.icon16.icon-media,
-.menu-icon-media div.wp-menu-image,
-.icon16.icon-links,
-.menu-icon-links div.wp-menu-image,
-.icon16.icon-page,
-.menu-icon-page div.wp-menu-image,
-.icon16.icon-comments,
-.menu-icon-comments div.wp-menu-image,
-.icon16.icon-appearance,
-.menu-icon-appearance div.wp-menu-image,
-.icon16.icon-plugins,
-.menu-icon-plugins div.wp-menu-image,
-.icon16.icon-users,
-.menu-icon-users div.wp-menu-image,
-.icon16.icon-tools,
-.menu-icon-tools div.wp-menu-image,
-.icon16.icon-settings,
-.menu-icon-settings div.wp-menu-image,
-.icon16.icon-site,
-.menu-icon-site div.wp-menu-image {
-       background-image: url('../images/menu.png?ver=20120201');
-}
-
-.icon16.icon-dashboard,
-#adminmenu .menu-icon-dashboard div.wp-menu-image {
-       background-position: -59px -33px;
-}
-
-#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
-#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-dashboard.current div.wp-menu-image {
-       background-position: -59px -1px;
-}
-
-.icon16.icon-post,
-#adminmenu .menu-icon-post div.wp-menu-image {
-       background-position: -269px -33px;
-}
-
-#adminmenu .menu-icon-post:hover div.wp-menu-image,
-#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-post.current div.wp-menu-image {
-       background-position: -269px -1px;
-}
-
-.icon16.icon-media,
-#adminmenu .menu-icon-media div.wp-menu-image {
-       background-position: -119px -33px;
-}
-
-#adminmenu .menu-icon-media:hover div.wp-menu-image,
-#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-media.current div.wp-menu-image {
-       background-position: -119px -1px;
-}
-
-.icon16.icon-links,
-#adminmenu .menu-icon-links div.wp-menu-image {
-       background-position: -89px -33px;
-}
-
-#adminmenu .menu-icon-links:hover div.wp-menu-image,
-#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-links.current div.wp-menu-image {
-       background-position: -89px -1px;
-}
-
-.icon16.icon-page,
-#adminmenu .menu-icon-page div.wp-menu-image {
-       background-position: -149px -33px;
-}
-
-#adminmenu .menu-icon-page:hover div.wp-menu-image,
-#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-page.current div.wp-menu-image {
-       background-position: -149px -1px;
-}
-
-.icon16.icon-comments,
-#adminmenu .menu-icon-comments div.wp-menu-image {
-       background-position: -29px -33px;
-}
-
-#adminmenu .menu-icon-comments:hover div.wp-menu-image,
-#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-comments.current div.wp-menu-image {
-       background-position: -29px -1px;
-}
-
-.icon16.icon-appearance,
-#adminmenu .menu-icon-appearance div.wp-menu-image {
-       background-position: 1px -33px;
-}
-
-#adminmenu .menu-icon-appearance:hover div.wp-menu-image,
-#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-appearance.current div.wp-menu-image {
-       background-position: 1px -1px;
-}
-
-.icon16.icon-plugins,
-#adminmenu .menu-icon-plugins div.wp-menu-image {
-       background-position: -179px -33px;
-}
-
-#adminmenu .menu-icon-plugins:hover div.wp-menu-image,
-#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-plugins.current div.wp-menu-image {
-       background-position: -179px -1px;
-}
-
-.icon16.icon-users,
-#adminmenu .menu-icon-users div.wp-menu-image {
-       background-position: -300px -33px;
-}
-
-#adminmenu .menu-icon-users:hover div.wp-menu-image,
-#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-users.current div.wp-menu-image {
-       background-position: -300px -1px;
-}
-
-.icon16.icon-tools,
-#adminmenu .menu-icon-tools div.wp-menu-image {
-       background-position: -209px -33px;
-}
-
-#adminmenu .menu-icon-tools:hover div.wp-menu-image,
-#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-tools.current div.wp-menu-image {
-       background-position: -209px -1px;
-}
-
-.icon16.icon-settings,
-#adminmenu .menu-icon-settings div.wp-menu-image {
-       background-position: -239px -33px;
-}
-
-#adminmenu .menu-icon-settings:hover div.wp-menu-image,
-#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-settings.current div.wp-menu-image {
-       background-position: -239px -1px;
-}
-
-.icon16.icon-site,
-#adminmenu .menu-icon-site div.wp-menu-image {
-       background-position: -359px -33px;
-}
-
-#adminmenu .menu-icon-site:hover div.wp-menu-image,
-#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
-#adminmenu .menu-icon-site.current div.wp-menu-image {
-       background-position: -359px -1px;
-}
-/* end menu and screen icons */
-
-/* Screen Icons */
-.icon32.icon-post,
-#icon-edit,
-#icon-post,
-.icon32.icon-dashboard,
-#icon-index,
-.icon32.icon-media,
-#icon-upload,
-.icon32.icon-links,
-#icon-link-manager,
-#icon-link,
-#icon-link-category,
-.icon32.icon-page,
-#icon-edit-pages,
-#icon-page,
-.icon32.icon-comments,
-#icon-edit-comments,
-.icon32.icon-appearance,
-#icon-themes,
-.icon32.icon-plugins,
-#icon-plugins,
-.icon32.icon-users,
-#icon-users,
-#icon-profile,
-#icon-user-edit,
-.icon32.icon-tools,
-#icon-tools,
-#icon-admin,
-.icon32.icon-settings,
-#icon-options-general,
-.icon32.icon-site,
-#icon-ms-admin {
-       background-image: url(../images/icons32.png?ver=20111206);
-}
-
-.icon32.icon-post,
-#icon-edit,
-#icon-post {
-       background-position: -552px -5px;
-}
-
-.icon32.icon-dashboard,
-#icon-index {
-       background-position: -137px -5px;
-}
-
-.icon32.icon-media,
-#icon-upload {
-       background-position: -251px -5px;
-}
-
-.icon32.icon-links,
-#icon-link-manager,
-#icon-link,
-#icon-link-category {
-       background-position: -190px -5px;
-}
-
-.icon32.icon-page,
-#icon-edit-pages,
-#icon-page {
-       background-position: -312px -5px;
-}
-
-.icon32.icon-comments,
-#icon-edit-comments {
-       background-position: -72px -5px;
-}
-
-.icon32.icon-appearance,
-#icon-themes {
-       background-position: -11px -5px;
-}
-
-.icon32.icon-plugins,
-#icon-plugins {
-       background-position: -370px -5px;
-}
-
-.icon32.icon-users,
-#icon-users,
-#icon-profile,
-#icon-user-edit {
-       background-position: -600px -5px;
-}
-
-.icon32.icon-tools,
-#icon-tools,
-#icon-admin {
-       background-position: -432px -5px;
-}
-
-.icon32.icon-settings,
-#icon-options-general {
-       background-position: -492px -5px;
-}
-
-.icon32.icon-site,
-#icon-ms-admin {
-       background-position: -659px -5px;
-}
-
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
-       .icon32.icon-post,
-       #icon-edit,
-       #icon-post,
-       .icon32.icon-dashboard,
-       #icon-index,
-       .icon32.icon-media,
-       #icon-upload,
-       .icon32.icon-links,
-       #icon-link-manager,
-       #icon-link,
-       #icon-link-category,
-       .icon32.icon-page,
-       #icon-edit-pages,
-       #icon-page,
-       .icon32.icon-comments,
-       #icon-edit-comments,
-       .icon32.icon-appearance,
-       #icon-themes,
-       .icon32.icon-plugins,
-       #icon-plugins,
-       .icon32.icon-users,
-       #icon-users,
-       #icon-profile,
-       #icon-user-edit,
-       .icon32.icon-tools,
-       #icon-tools,
-       #icon-admin,
-       .icon32.icon-settings,
-       #icon-options-general,
-       .icon32.icon-site,
-       #icon-ms-admin {
-               background-image: url(../images/icons32-2x.png?ver=20120412);
-               background-size: 708px 45px;
-       }
-
-       .icon16.icon-dashboard,
-       .menu-icon-dashboard div.wp-menu-image,
-       .icon16.icon-post,
-       .menu-icon-post div.wp-menu-image,
-       .icon16.icon-media,
-       .menu-icon-media div.wp-menu-image,
-       .icon16.icon-links,
-       .menu-icon-links div.wp-menu-image,
-       .icon16.icon-page,
-       .menu-icon-page div.wp-menu-image,
-       .icon16.icon-comments,
-       .menu-icon-comments div.wp-menu-image,
-       .icon16.icon-appearance,
-       .menu-icon-appearance div.wp-menu-image,
-       .icon16.icon-plugins,
-       .menu-icon-plugins div.wp-menu-image,
-       .icon16.icon-users,
-       .menu-icon-users div.wp-menu-image,
-       .icon16.icon-tools,
-       .menu-icon-tools div.wp-menu-image,
-       .icon16.icon-settings,
-       .menu-icon-settings div.wp-menu-image,
-       .icon16.icon-site,
-       .menu-icon-site div.wp-menu-image {
-               background-image: url('../images/menu-2x.png?ver=20120412');
-               background-size: 390px 64px;
-       }
-}
-/* end screen icons */
-
-/* Diff */
-table.diff .diff-deletedline {
-       background-color: #fdd;
-}
-
-table.diff .diff-deletedline del {
-       background-color: #f99;
-}
-
-table.diff .diff-addedline {
-       background-color: #dfd;
-}
-
-table.diff .diff-addedline ins {
-       background-color: #9f9;
-}
-
-#att-info {
-       background-color: #E4F2FD;
-}
-
-/* edit image */
-#sidemenu a {
-       background-color: #f9f9f9;
-       border-color: #f9f9f9;
-       border-bottom-color: #dfdfdf;
-}
-
-#sidemenu a.current {
-       background-color: #fff;
-       border-color: #dfdfdf #dfdfdf #fff;
-       color: #D54E21;
-}
-
-#replyerror {
-       border-color: #ddd;
-       background-color: #f9f9f9;
-}
-
-/* table vim shortcuts */
-.vim-current,
-.vim-current th,
-.vim-current td {
-       background-color: #E4F2FD !important;
-}
-
-/* Install Plugins */
-#plugin-information .fyi ul {
-       background-color: #eaf3fa;
-}
-
-#plugin-information .fyi h2.mainheader {
-       background-color: #cee1ef;
-}
-
-#plugin-information pre,
-#plugin-information code {
-       background-color: #ededff;
-}
-
-#plugin-information pre {
-       border: 1px solid #ccc;
-}
-
-/* inline editor */
-.inline-edit-row fieldset input[type="text"],
-.inline-edit-row fieldset textarea,
-#bulk-titles {
-       border-color: #ddd;
-}
-
-.inline-editor div.title {
-       background-color: #EAF3FA;
-}
-
-.inline-editor ul.cat-checklist {
-       background-color: #fff;
-       border-color: #ddd;
-}
-
-.inline-editor .categories .catshow,
-.inline-editor .categories .cathide {
-       color: #21759b;
-}
-
-.inline-editor .quick-edit-save {
-       background-color: #f1f1f1;
-}
-
-fieldset.inline-edit-col-right .inline-edit-col {
-       border-color: #dfdfdf;
-}
-
-.attention {
-       color: #D54E21;
-}
-
-.meta-box-sortables .postbox:hover .handlediv {
-       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
-}
-
-.tablenav .tablenav-pages {
-       color: #555;
-}
-
-.tablenav .tablenav-pages a {
-       border-color: #e3e3e3;
-       background: #eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px;
-}
-
-.tablenav .tablenav-pages a:hover,
-.tablenav .tablenav-pages a:focus {
-       color: #d54e21;
-}
-
-.tablenav .tablenav-pages a.disabled,
-.tablenav .tablenav-pages a.disabled:hover,
-.tablenav .tablenav-pages a.disabled:focus {
-       color: #aaa;
-}
-
-.tablenav .tablenav-pages .current {
-       background: #dfdfdf;
-       border-color: #d3d3d3;
-}
-
-#availablethemes,
-#availablethemes td {
-       border-color: #ddd;
-}
-
-#current-theme img {
-       border-color: #999;
-}
-
-#TB_window #TB_title a.tb-theme-preview-link,
-#TB_window #TB_title a.tb-theme-preview-link:visited {
-       color: #999;
-}
-
-#TB_window #TB_title a.tb-theme-preview-link:hover,
-#TB_window #TB_title a.tb-theme-preview-link:focus {
-       color: #ccc;
-}
-
-.misc-pub-section {
-       border-top-color: #fff;
-       border-bottom-color: #dfdfdf;
-}
-
-#minor-publishing {
-       border-bottom-color: #dfdfdf;
-}
-
-#post-body .misc-pub-section {
-       border-left-color: #eee;
-}
-
-.post-com-count span {
-       background-color: #bbb;
-}
-
-.form-table .color-palette td {
-       border-color: #fff;
-}
-
-.sortable-placeholder {
-       border-color: #bbb;
-       background-color: #f5f5f5;
-}
-
-#post-body ul.category-tabs li.tabs a,
-#post-body ul.add-menu-item-tabs li.tabs a,
-body.press-this ul.category-tabs li.tabs a {
-       color: #333;
-}
-
-.view-switch #view-switch-list {
-       background: transparent url(../images/list.png) no-repeat 0 0;
-}
-
-.view-switch .current #view-switch-list {
-       background: transparent url(../images/list.png) no-repeat -40px 0;
-}
-
-.view-switch #view-switch-excerpt {
-       background: transparent url(../images/list.png) no-repeat -20px 0;
-}
-
-.view-switch .current #view-switch-excerpt {
-       background: transparent url(../images/list.png) no-repeat -60px 0;
-}
-
-#header-logo {
-       background: transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center;
-}
-
-.popular-tags,
-.feature-filter {
-       background-color: #fff;
-       border-color: #DFDFDF;
-}
-
-div.widgets-sortables,
-#widgets-left .inactive,
-#available-widgets .widget-holder {
-       background-color: #fcfcfc;
-       border-color: #dfdfdf;
-}
-
-#available-widgets .widget-description {
-       color: #555;
-}
-
-.sidebar-name {
-       color: #464646;
-       text-shadow: #fff 0 1px 0;
-       border-color: #dfdfdf;
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-}
-
-.sidebar-name:hover,
-#removing-widget {
-       color: #d54e21;
-}
-
-#removing-widget span {
-       color: black;
-}
-
-.sidebar-name-arrow {
-       background: transparent url(../images/arrows.png) no-repeat 5px 9px;
-}
-
-.sidebar-name:hover .sidebar-name-arrow {
-       background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px;
-}
-
-.in-widget-title {
-       color: #606060;
-}
-
-.deleting .widget-title * {
-       color: #aaa;
-}
-
-.imgedit-menu div {
-       border-color: #d5d5d5;
-       background-color: #f1f1f1;
-}
-
-.imgedit-menu div:hover {
-       border-color: #c1c1c1;
-       background-color: #eaeaea;
-}
-
-.imgedit-menu div.disabled {
-       border-color: #ccc;
-       background-color: #ddd;
-       filter: alpha(opacity=50);
-       opacity: 0.5;
-}
-
-#dashboard_recent_comments div.undo {
-       border-top-color: #dfdfdf;
-}
-
-.comment-ays,
-.comment-ays th {
-       border-color: #ddd;
-}
-
-.comment-ays th {
-       background-color: #f1f1f1;
-}
-
-/* added from nav-menu.css */
-#menu-management .menu-edit {
-       border-color: #dfdfdf;
-}
-
-#post-body {
-       background: #fff;
-       border-top-color: #fff;
-       border-bottom-color: #dfdfdf;
-}
-
-#nav-menu-header {
-       border-bottom-color: #dfdfdf;
-}
-
-#nav-menu-footer {
-       border-top-color: #fff;
-}
-
-#menu-management .nav-tabs-arrow a {
-       color: #C1C1C1;
-}
-
-#menu-management .nav-tabs-arrow a:hover {
-       color: #D54E21;
-}
-
-#menu-management .nav-tabs-arrow a:active {
-       color: #464646;
-}
-
-#menu-management .nav-tab-active {
-       border-color: #dfdfdf;
-}
-
-#menu-management .nav-tab {
-       background: #fbfbfb;
-       border-color: #dfdfdf;
-}
-
-.js .input-with-default-title {
-       color: #aaa;
-}
-
-#cancel-save {
-       color: #ff0000;
-}
-
-#cancel-save:hover {
-       background-color: #FF0000;
-       color: #fff;
-}
-
-.list-container,
-.menu-item-handle {
-       border-color: #dfdfdf;
-}
-
-.menu li.deleting .menu-item-handle {
-       background-color: #f66;
-       text-shadow: #ccc;
-}
-
-.item-type { /* Menu item controls */
-       color: #999999;
-}
-
-.item-controls .menu-item-delete:hover {
-       color: #ff0000;
-}
-
-.nav-menus-php .item-edit {
-       background: transparent url(../images/arrows.png) no-repeat 8px 10px;
-       border-bottom-color: #eee;
-}
-
-.item-edit:hover {
-       background: transparent url(../images/arrows-dark.png) no-repeat 8px 10px;
-}
-
-.menu-item-settings { /* Menu editing */
-       border-color: #dfdfdf;
-}
-
-.link-to-original {
-       color: #777;
-       border-color: #dfdfdf;
-}
-
-#cancel-save:hover {
-       color: #fff !important;
-}
-
-#update-menu-item {
-       color: #fff !important;
-}
-
-#update-menu-item:hover,
-#update-menu-item:active,
-#update-menu-item:focus {
-       color: #eaf2fa !important;
-       border-color: #13455b !important;
-}
-
-.submitbox .submitcancel {
-       color: #21759B;
-       border-bottom-color: #21759B;
-}
-
-.submitbox .submitcancel:hover {
-       background: #21759B;
-       color: #fff;
-}
-/* end added from nav-menu.css */
-
-#menu-management .nav-tab-active,
-.menu-item-handle,
-.menu-item-settings {
-       -moz-box-shadow: inset 0 1px 0 #fff;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
-}
-
-#menu-management .nav-tab-active {
-       background: #f9f9f9;
-       border-bottom-color: #f9f9f9;
-}
-
-#upload-form label {
-       color: #777;
-}
-
-/* Begin About Pages */
-
-.about-wrap h1 {
-       color: #333;
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-text {
-       color: #777;
-}
-
-.wp-badge {
-       color: #fff;
-       text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3);
-}
-
-.about-wrap h2 .nav-tab {
-       color: #21759B;
-}
-.about-wrap h2 .nav-tab:hover {
-       color: #d54e21;
-}
-.about-wrap h2 .nav-tab-active,
-.about-wrap h2 .nav-tab-active:hover {
-       color: #333;
-}
-.about-wrap h2 .nav-tab-active {
-       text-shadow: 1px 1px 1px white;
-       color: #464646;
-}
-
-.about-wrap h3 {
-       color: #333;
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-wrap .feature-section h4 {
-       color: #464646;
-}
-
-.about-wrap .feature-section img {
-       background: #fff;
-       border: 1px #ccc solid;
-
-       -moz-box-shadow:    0 1px 3px rgba( 0, 0, 0, 0.3 );
-       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
-       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
-}
-
-.about-wrap h4.wp-people-group {
-       text-shadow: 1px 1px 1px white;
-}
-
-.about-wrap .point-releases {
-       border-bottom: 1px solid #dfdfdf;
-}
-
-.about-wrap .point-releases h3 {
-       border-top: 1px solid #dfdfdf;
-}
-
-.about-wrap .point-releases h3:first-child {
-       border: 0;
-}
-
-.about-wrap li.wp-person img.gravatar {
-       -moz-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-       box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 );
-}
-.about-wrap li.wp-person .title {
-       color: #464646;
-       text-shadow: 1px 1px 1px white;
-}
-
-.freedoms-php .about-wrap ol li {
-       color: #999;
-}
-.freedoms-php .about-wrap ol p {
-       color: #464646;
-}
-
-/* End About Pages */
-
-
-/*------------------------------------------------------------------------------
-  2.0 - Right to Left Styles
-------------------------------------------------------------------------------*/
-
-.rtl .bar {
-       border-right-color: none;
-       border-left-color: #99d;
-}
-
-.rtl .post-com-count {
-       background-image: url(../images/bubble_bg-rtl.gif);
-}
-
-.rtl #screen-meta-links a.show-settings {
-       background-position: left 3px;
-}
-
-.rtl #screen-meta-links a.show-settings.screen-meta-active {
-       background-position: left -33px;
-}
-
-/* Menu */
-.rtl #adminmenushadow,
-.rtl #adminmenuback {
-       background-image: url(../images/menu-shadow-rtl.png);
-       background-position: top left;
-}
-
-.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
-.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
-       background: transparent url(../images/arrows-dark.png) no-repeat 8px 6px;
-}
-
-.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,
-.rtl #adminmenu .wp-menu-open .wp-menu-toggle {
-       background: transparent url(../images/arrows.png) no-repeat 8px 6px;
-}
-
-.rtl #adminmenu .wp-submenu .wp-submenu-head {
-       border-right-color: none;
-       border-left-color: #dfdfdf;
-}
-
-.rtl #adminmenu .wp-submenu-wrap,
-.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
-       -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-}
-
-/* Collapse Menu Button */
-.rtl #collapse-button div {
-       background-position: 0 -108px;
-}
-
-.rtl.folded #collapse-button div {
-       background-position: 0 -72px;
-}
-
-/* Auto-folding of the admin menu for RTL */
-@media only screen and (max-width: 900px) {
-       .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
-               -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
-       }
-
-       .rtl #collapse-button div {
-               background-position: 0 -72px;
-       }
-}
-
-/* Edit Image */
-.rtl .meta-box-sortables .postbox:hover .handlediv {
-       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
-}
-
-.rtl .tablenav .tablenav-pages a {
-       border-color: #e3e3e3;
-       background: #eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px;
-}
-
-.rtl #post-body .misc-pub-section {
-       border-right-color: none;
-       border-left-color: #eee;
-}
-
-.rtl .sidebar-name-arrow {
-       background: transparent url(../images/arrows.png) no-repeat 5px 9px;
-}
-
-.rtl .sidebar-name:hover .sidebar-name-arrow {
-       background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px;
-}
diff --git a/wp-admin/css/colors-fresh.min.css b/wp-admin/css/colors-fresh.min.css
new file mode 100644 (file)
index 0000000..77ae813
--- /dev/null
@@ -0,0 +1 @@
+.find-box-search,.find-box-buttons{background-color:#f7f7f7;border-top:1px solid #ddd}.find-box{background-color:#444}.find-box-head{color:#eee}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#dfdfdf;background-color:#f9f9f9}textarea.widefat{background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs{border-color:#dfdfdf #dfdfdf #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eaeaea}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#aaa}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}#current-theme{border-bottom-color:#dfdfdf}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#aaa;background-color:#efefef}.ui-autocomplete li a.ui-state-focus{background-color:#ddd}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#ececec}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#fafafa));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-moz-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-o-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:linear-gradient(to top,#f5f5f5,#fafafa);border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-moz-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:linear-gradient(to top,#f5f5f5,#f9f9f9)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background:#e3e3e3;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(to top,#dfdfdf,#f1f1f1)}#screen-meta-links a{color:#777;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#333;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e4e4e4;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background:#777;background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom right,#6d6d6d,#808080);background-image:linear-gradient(to top left,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e4e4e4;color:#333}#collapse-menu{color:#aaa;border-top-color:#f9f9f9}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(to top,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.nav-tab{border-color:#dfdfdf #dfdfdf #fff}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#ccc}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#eee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.sidebar-name:hover .sidebar-name-arrow,.nav-menus-php .item-edit:hover,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-2x.png?ver=20120916');background-size:16px auto}}
\ No newline at end of file
index 1b1830f41f8b03a941875c47876a30f975acb1de..de8fd8577b58359b25f1b59b3cf88e74734becee 100644 (file)
@@ -1 +1,85 @@
-.control-section .customize-section-title{font-family:Tahoma,Arial,sans-serif}.customize-section-title:after{right:auto;left:20px}#customize-header-actions .button-primary{float:left}#customize-header-actions img{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.customize-section .dropdown{float:right}.customize-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.customize-section input[type="text"].color-picker-hex,.customize-control-color .farbtastic-placeholder{float:right}.customize-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.customize-section .customize-control-image .library ul,.customize-section .customize-control-image .library li,.customize-section .customize-control-image .library-content{float:right}
\ No newline at end of file
+.control-section .customize-section-title {
+       font-family: Tahoma, Arial, sans-serif;
+}
+.customize-section-title:after {
+       right: auto;
+       left: 20px;
+}
+
+#customize-header-actions .button-primary {
+       float: left;
+}
+
+#customize-header-actions .spinner {
+       float: left;
+       margin-right: 0;
+       margin-left: 4px;
+}
+
+.customize-control {
+       float: right;
+}
+
+.customize-control-radio input,
+.customize-control-checkbox input {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+/*
+ * Dropdowns
+ */
+.customize-section .dropdown {
+       float: right;
+}
+
+.customize-section .dropdown-content {
+       float: right;
+       margin-right: 0px;
+       margin-left: 16px;
+       -webkit-border-radius: 0 3px 3px 0;
+       border-radius: 0 3px 3px 0;
+}
+
+.customize-control .dropdown-arrow {
+       right: auto;
+       left: 0;
+
+       border-color: #ccc;
+       border-style: solid;
+       border-width: 1px 0 1px 1px;
+       -webkit-border-radius: 3px 0 0 3px;
+       border-radius: 3px 0 0 3px;
+}
+
+.customize-control .dropdown-arrow:after {
+       right: auto;
+       left: 4px;
+}
+
+/*
+ * Color Picker
+ */
+.customize-control-color .dropdown {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+.customize-section input[type="text"].color-picker-hex {
+       float: right;
+}
+
+/*
+ * Image Picker
+ */
+.customize-section .customize-control-image .actions {
+       text-align: left;
+}
+
+.customize-control-image .library,
+.customize-control-image .actions,
+.customize-section .customize-control-image .library ul,
+.customize-section .customize-control-image .library li,
+.customize-section .customize-control-image .library-content {
+       float: right;
+}
diff --git a/wp-admin/css/customize-controls-rtl.dev.css b/wp-admin/css/customize-controls-rtl.dev.css
deleted file mode 100644 (file)
index 1852fd9..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-.control-section .customize-section-title {
-       font-family: Tahoma, Arial, sans-serif;
-}
-.customize-section-title:after {
-       right: auto;
-       left: 20px;
-}
-
-#customize-header-actions .button-primary {
-       float: left;
-}
-
-#customize-header-actions img {
-       float: left;
-       margin-right: 0;
-       margin-left: 4px;
-}
-
-.customize-control {
-       float: right;
-}
-
-.customize-control-radio input,
-.customize-control-checkbox input {
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-/*
- * Dropdowns
- */
-.customize-section .dropdown {
-       float: right;
-}
-
-.customize-section .dropdown-content {
-       float: right;
-       margin-right: 0px;
-       margin-left: 16px;
-       -webkit-border-radius: 0 3px 3px 0;
-       border-radius: 0 3px 3px 0;
-}
-
-.customize-control .dropdown-arrow {
-       right: auto;
-       left: 0;
-
-       border-color: #ccc;
-       border-style: solid;
-       border-width: 1px 0 1px 1px;
-       -webkit-border-radius: 3px 0 0 3px;
-       border-radius: 3px 0 0 3px;
-}
-
-.customize-control .dropdown-arrow:after {
-       right: auto;
-       left: 4px;
-}
-
-/*
- * Color Picker
- */
-.customize-control-color .dropdown {
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-.customize-section input[type="text"].color-picker-hex,
-.customize-control-color .farbtastic-placeholder {
-       float: right;
-}
-
-/*
- * Image Picker
- */
-.customize-section .customize-control-image .actions {
-       text-align: left;
-}
-
-.customize-control-image .library,
-.customize-control-image .actions,
-.customize-section .customize-control-image .library ul,
-.customize-section .customize-control-image .library li,
-.customize-section .customize-control-image .library-content {
-       float: right;
-}
diff --git a/wp-admin/css/customize-controls-rtl.min.css b/wp-admin/css/customize-controls-rtl.min.css
new file mode 100644 (file)
index 0000000..374168e
--- /dev/null
@@ -0,0 +1 @@
+.control-section .customize-section-title{font-family:Tahoma,Arial,sans-serif}.customize-section-title:after{right:auto;left:20px}#customize-header-actions .button-primary{float:left}#customize-header-actions .spinner{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.customize-section .dropdown{float:right}.customize-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.customize-section input[type="text"].color-picker-hex{float:right}.customize-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.customize-section .customize-control-image .library ul,.customize-section .customize-control-image .library li,.customize-section .customize-control-image .library-content{float:right}
\ No newline at end of file
index 9447cc3e7305cc82cedba9115a7d3cb2febc0123..7441dea279830c30b242956a57cd611576f59edb 100644 (file)
@@ -1 +1,527 @@
-body{overflow:hidden}#customize-controls a{text-decoration:none}.customize-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.control-section.customize-section:hover,.control-section.customize-section.open{border-top-color:#808080}.control-section.customize-section:hover{border-bottom-color:#6d6d6d}.customize-section.open:hover{border-bottom-color:#dfdfdf}.customize-section:last-child{box-shadow:0 1px 0 0 #fff}.customize-section-title{margin:0;padding:15px 20px;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cannot-expand .customize-section-title{cursor:auto}.customize-section-content{display:none;padding:10px 20px 15px;overflow:hidden}.control-section .customize-section-title{padding:10px 20px;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#f5f5f5,#eee);background-image:-moz-linear-gradient(top,#f5f5f5,#eee);background-image:-ms-linear-gradient(top,#f5f5f5,#eee);background-image:-o-linear-gradient(top,#f5f5f5,#eee);background-image:linear-gradient(top,#f5f5f5,#eee)}.control-section:hover .customize-section-title,.control-section .customize-section-title:hover,.control-section.open .customize-section-title{color:#fff;text-shadow:0 -1px 0 #333;background-color:#808080;background-image:-webkit-linear-gradient(top,#808080,#6d6d6d);background-image:-moz-linear-gradient(top,#808080,#6d6d6d);background-image:-ms-linear-gradient(top,#808080,#6d6d6d);background-image:-o-linear-gradient(top,#808080,#6d6d6d);background-image:linear-gradient(top,#808080,#6d6d6d)}.control-section.open .customize-section-title{border-bottom:1px solid #6d6d6d}.customize-section.open .customize-section-content{display:block;background:#fdfdfd}.customize-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.cannot-expand .customize-section-title:after{display:none}.customize-section-title:hover:after{border-color:#aaa transparent}.control-section .customize-section-title:hover:after{border-color:#eee transparent}.control-section .customize-section-title:after{top:15px}#customize-info .customize-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .customize-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:11px}#customize-header-actions img{display:none;float:right;margin-top:13px;margin-right:4px}.saving #customize-header-actions img{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}.customize-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.customize-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.customize-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.customize-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex,.customize-control-color .farbtastic-placeholder{display:none}.customize-control-color.open .color-picker-hex,.customize-control-color.open .farbtastic-placeholder{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.customize-section input[type="text"].color-picker-hex{float:left;width:85px;font-family:monospace;text-align:center}.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.customize-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-color .farbtastic-placeholder{width:100%;margin:5px 0 10px;float:left}.customize-control-color .farbtastic{margin:0 auto}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.customize-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.customize-section .customize-control-image .dropdown-status{padding:4px 5px}.customize-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.customize-section .customize-control-image .actions{text-align:right}.customize-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.customize-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.customize-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.customize-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.customize-section .customize-control-image .library-content.library-selected{display:block}.customize-section .customize-control-image .library .thumbnail{display:block;width:100%}.customize-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.customize-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.customize-section .customize-control-upload .upload-fallback,.customize-section .customize-control-image .upload-fallback{display:none}.customize-section .customize-control-upload .upload-dropzone,.customize-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.customize-section .customize-control-upload .library ul li,.customize-section .customize-control-image .library ul li{cursor:pointer}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px}
\ No newline at end of file
+body {
+       overflow: hidden;
+}
+
+#customize-controls a {
+       text-decoration: none;
+}
+
+.customize-section {
+       border-top: 1px solid #fff;
+       border-bottom: 1px solid #dfdfdf;
+       margin: 0;
+}
+
+.control-section.customize-section:hover,
+.control-section.customize-section.open {
+       border-top-color: #808080;
+}
+
+.control-section.customize-section:hover {
+       border-bottom-color: #6d6d6d;
+}
+
+.customize-section.open:hover {
+       border-bottom-color: #dfdfdf;
+}
+
+.customize-section:last-child {
+       box-shadow: 0 1px 0 0px #fff;
+}
+
+.customize-section-title {
+       margin: 0;
+       padding: 15px 20px;
+       position: relative;
+
+       cursor: pointer;
+
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.customize-section-title:focus {
+       outline: none;
+}
+
+.cannot-expand .customize-section-title {
+       cursor: auto;
+}
+
+.customize-section-content {
+       display: none;
+       padding: 10px 20px 15px;
+       overflow: hidden;
+}
+
+.control-section .customize-section-title {
+       padding: 10px 20px;
+       font-size: 15px;
+       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+       font-weight: normal;
+       text-shadow: 0 1px 0 #fff;
+       background: #f5f5f5;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(#f5f5f5));
+       background-image: -webkit-linear-gradient(bottom, #eee, #f5f5f5);
+       background-image:    -moz-linear-gradient(bottom, #eee, #f5f5f5);
+       background-image:      -o-linear-gradient(bottom, #eee, #f5f5f5);
+       background-image: linear-gradient(to top, #eee, #f5f5f5);
+}
+
+.control-section:hover .customize-section-title,
+.control-section .customize-section-title:hover,
+.control-section.open .customize-section-title,
+.control-section .customize-section-title:focus {
+       color: #fff;
+       text-shadow: 0 -1px 0 #333;
+       background: #808080;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080));
+       background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image:    -moz-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080);
+       background-image: linear-gradient(to top, #6d6d6d, #808080);
+}
+
+.control-section.open .customize-section-title {
+       border-bottom: 1px solid #6d6d6d;
+}
+
+.customize-section.open .customize-section-content {
+       display: block;
+       background: #fdfdfd;
+}
+
+.customize-section-title:after {
+       content: '';
+       width: 0;
+       height: 0;
+       border-color: #ccc transparent;
+       border-style: solid;
+       border-width: 6px 6px 0;
+       position: absolute;
+       top: 25px;
+       right: 20px;
+       z-index: 1;
+}
+
+.cannot-expand .customize-section-title:after {
+       display: none;
+}
+
+.customize-section-title:hover:after,
+.customize-section-title:focus:after {
+       border-color: #aaa transparent;
+}
+
+.control-section .customize-section-title:hover:after,
+.control-section .customize-section-title:focus:after {
+       border-color: #eee transparent;
+}
+
+.control-section .customize-section-title:after {
+       top: 15px;
+}
+
+#customize-info .customize-section-content {
+       background: transparent;
+}
+
+#customize-info .preview-notice {
+       font-size: 13px;
+       line-height: 24px;
+       color: #999;
+}
+
+#customize-info .theme-name {
+       font-size: 20px;
+       font-weight: 200;
+       line-height: 24px;
+       color: #333;
+       display: block;
+       text-shadow: 0 1px 0 #fff;
+}
+
+#customize-info .theme-screenshot {
+       width: 258px;
+       border: 1px solid #ccc;
+}
+
+#customize-info .theme-description {
+       margin-top: 1em;
+       color: #777;
+       line-height: 20px;
+}
+
+#customize-controls .submit {
+       text-align: center;
+}
+
+#customize-theme-controls > ul,
+#customize-theme-controls .customize-section-content {
+       margin: 0;
+}
+
+#customize-header-actions .button-primary {
+       float: right;
+       margin-top: 10px;
+}
+
+#customize-header-actions .spinner {
+       margin-top: 16px;
+       margin-right: 4px;
+}
+
+.saving #customize-header-actions .spinner {
+       display: block;
+}
+
+.customize-control {
+       width: 100%;
+       float: left;
+       clear: both;
+       margin-bottom: 8px;
+}
+
+.customize-control-title {
+       display: block;
+       line-height: 24px;
+       font-weight: bold;
+}
+
+.customize-control select,
+.customize-control input[type="text"],
+.customize-control input[type="radio"],
+.customize-control input[type="checkbox"],
+.customize-control-color .color-picker,
+.customize-control-checkbox label,
+.customize-control-upload div {
+       line-height: 28px;
+}
+
+.customize-control input[type="text"] {
+       width: 98%;
+       line-height: 18px;
+       margin: 0;
+}
+
+.customize-control select {
+       min-width: 50%;
+       max-width: 100%;
+       height: 28px;
+       line-height: 28px;
+}
+
+.customize-control-checkbox input {
+       margin-right: 5px;
+}
+
+.customize-control-radio {
+       padding: 5px 0 10px;
+}
+
+.customize-control-radio .customize-control-title {
+       margin-bottom: 0;
+       line-height: 22px;
+}
+
+.customize-control-radio label {
+       line-height: 20px;
+}
+
+.customize-control-radio input {
+       margin-right: 5px;
+}
+
+#customize-preview iframe {
+       width: 100%;
+       height: 100%;
+}
+
+/*
+ * Style for custom settings
+ */
+
+/*
+ * Dropdowns
+ */
+.customize-section .dropdown {
+       float: left;
+       display: block;
+       position: relative;
+       cursor: pointer;
+
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.customize-section .dropdown-content {
+       overflow: hidden;
+       float: left;
+       min-width: 30px;
+       height: 16px;
+       line-height: 16px;
+       margin-right: 16px;
+       padding: 4px 5px;
+       background-color: #eee;
+       border: 1px solid #ccc;
+       -webkit-border-radius: 3px 0 0 3px;
+       border-radius: 3px 0 0 3px;
+
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.customize-control .dropdown-arrow {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       right: 0;
+       width: 15px;
+
+       border-color: #ccc;
+       border-style: solid;
+       border-width: 1px 1px 1px 0;
+       -webkit-border-radius: 0 3px 3px 0;
+       border-radius: 0 3px 3px 0;
+}
+
+.customize-control .dropdown-arrow:after {
+       content: '';
+       width: 0;
+       height: 0;
+       border-color: #ccc transparent;
+       border-style: solid;
+       border-width: 4px 4px 0 4px;
+       position: absolute;
+       top: 50%;
+       margin-top: -1px;
+       right: 4px;
+       z-index: 1;
+}
+
+.customize-section .dropdown:hover .dropdown-content,
+.customize-control .dropdown:hover .dropdown-arrow {
+       border-color: #aaa;
+}
+
+.customize-section .dropdown:hover .dropdown-arrow:after {
+       border-color: #aaa transparent;
+}
+
+.customize-control .dropdown-status {
+       display: none;
+       max-width: 112px;
+       color: #777;
+}
+
+/*
+ * Color Picker
+ */
+.customize-control-color .color-picker-hex {
+       display: none;
+}
+
+.customize-control-color.open .color-picker-hex {
+       display: block;
+}
+
+.customize-control-color .dropdown {
+       margin-right: 5px;
+       margin-bottom: 5px;
+}
+
+.customize-control-color .dropdown .dropdown-content {
+       background-color: #fff;
+       border: 1px solid rgba( 0, 0, 0, 0.15 );
+}
+
+.customize-control-color .dropdown:hover .dropdown-content {
+       border-color: rgba( 0, 0, 0, 0.25 );
+}
+
+.customize-section input[type="text"].color-picker-hex {
+       width: 65px;
+       font-family: monospace;
+       text-align: center;
+       line-height: 16px;
+}
+
+/* The centered cursor overlaps the placeholder in webkit. Hide it when selected. */
+.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder {
+       color: transparent;
+}
+.customize-section input[type="text"].color-picker-hex:-moz-placeholder {
+       color: #999;
+}
+
+/*
+ * Image Picker
+ */
+.customize-control-image .library,
+.customize-control-image .actions {
+       display: none;
+       float: left;
+       width: 100%;
+}
+
+.customize-control-image.open .library,
+.customize-control-image.open .actions {
+       display: block;
+}
+
+.customize-section .customize-control-image .dropdown-content {
+       height: auto;
+       min-height: 24px;
+       min-width: 40px;
+       padding: 0;
+}
+
+.customize-section .customize-control-image .dropdown-status {
+       padding: 4px 5px;
+}
+
+.customize-section .customize-control-image .preview-thumbnail img {
+       display: block;
+       width: 100%;
+       max-width: 122px;
+       max-height: 98px;
+       margin: 0 auto;
+}
+
+.customize-section .customize-control-image .actions {
+       text-align: right;
+}
+
+.customize-section .customize-control-image .library ul {
+       border-bottom: 1px solid #dfdfdf;
+       float: left;
+       width: 100%;
+       margin: 10px 0 0;
+}
+
+.customize-section .customize-control-image .library li {
+       color: #999;
+       float: left;
+       padding: 3px 5px;
+       margin: 0;
+       border-style: solid;
+       border-color: transparent;
+       border-width: 1px 1px 0 1px;
+}
+
+.customize-section .customize-control-image .library li.library-selected {
+       margin-bottom: -1px;
+       padding-bottom: 4px;
+
+       color: #777;
+       background: #fdfdfd;
+       border-color: #dfdfdf;
+       -webkit-border-radius: 3px 3px 0 0;
+       border-radius: 3px 3px 0 0 ;
+}
+
+.customize-section .customize-control-image .library-content {
+       display: none;
+       width: 100%;
+       float: left;
+       padding: 10px 0;
+}
+
+.customize-section .customize-control-image .library-content.library-selected {
+       display: block;
+}
+
+.customize-section .customize-control-image .library .thumbnail {
+       display: block;
+       width: 100%;
+}
+
+.customize-section .customize-control-image .library .thumbnail:hover img {
+       border-color: #21759b;
+}
+
+.customize-section .customize-control-image .library .thumbnail img {
+       display: block;
+       max-width: 90%;
+       max-height: 80px;
+
+       margin: 5px auto;
+       padding: 4px;
+       background: #fff;
+       border: 1px solid #dfdfdf;
+}
+
+.customize-section .customize-control-upload .upload-fallback,
+.customize-section .customize-control-image .upload-fallback {
+       display: none;
+}
+
+.customize-section .customize-control-upload .upload-dropzone,
+.customize-section .customize-control-image .upload-dropzone {
+       display: none;
+       padding: 15px 10px;
+       border: 3px dashed #dfdfdf;
+       margin: 5px auto;
+       text-align: center;
+       color: #777;
+       position: relative;
+       cursor: default;
+}
+
+.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,
+.customize-section .customize-control-image .upload-dropzone.supports-drag-drop {
+       display: block;
+       -webkit-transition: border-color 0.1s;
+       -moz-transition:    border-color 0.1s;
+       -ms-transition:     border-color 0.1s;
+       -o-transition:      border-color 0.1s;
+       transition:         border-color 0.1s;
+}
+
+.customize-section .customize-control-upload .library ul li,
+.customize-section .customize-control-image .library ul li {
+       cursor: pointer;
+}
+
+.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,
+.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over {
+       border-color: #83b4d8;
+}
+
+/**
+ * iOS can't scroll iframes,
+ * instead it expands the iframe size to match the size of the content
+ */
+.ios .wp-full-overlay {
+       position: relative;
+}
+
+.ios #customize-preview {
+       position: relative;
+}
+
+.ios #customize-controls .wp-full-overlay-sidebar-content {
+       -webkit-overflow-scrolling: touch;
+}
+
+/**
+ * Handle cheaters.
+ */
+body.cheatin {
+       min-width: 0;
+       background: #f9f9f9;
+       padding: 50px;
+}
+
+body.cheatin p {
+       max-width: 700px;
+       margin: 0 auto;
+       padding: 2em;
+       font-size: 14px;
+       background: #fff;
+       border: 1px solid #dfdfdf;
+       -webkit-border-radius: 3px;
+       border-radius:         3px;
+}
diff --git a/wp-admin/css/customize-controls.dev.css b/wp-admin/css/customize-controls.dev.css
deleted file mode 100644 (file)
index 908caa2..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-body {
-       overflow: hidden;
-}
-
-#customize-controls a {
-       text-decoration: none;
-}
-
-.customize-section {
-       border-top: 1px solid #fff;
-       border-bottom: 1px solid #dfdfdf;
-       margin: 0;
-}
-
-.control-section.customize-section:hover,
-.control-section.customize-section.open {
-       border-top-color: #808080;
-}
-
-.control-section.customize-section:hover {
-       border-bottom-color: #6d6d6d;
-}
-
-.customize-section.open:hover {
-       border-bottom-color: #dfdfdf;
-}
-
-.customize-section:last-child {
-       box-shadow: 0 1px 0 0px #fff;
-}
-
-.customize-section-title {
-       margin: 0;
-       padding: 15px 20px;
-       position: relative;
-
-       cursor: pointer;
-
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       user-select: none;
-}
-
-.cannot-expand .customize-section-title {
-       cursor: auto;
-}
-
-.customize-section-content {
-       display: none;
-       padding: 10px 20px 15px;
-       overflow: hidden;
-}
-
-.control-section .customize-section-title {
-       padding: 10px 20px;
-       font-size: 15px;
-       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
-       font-weight: normal;
-       text-shadow: 0 1px 0 #fff;
-
-       background-color: #f5f5f5;
-       background-image: -webkit-linear-gradient( top, #f5f5f5, #eee );
-       background-image:    -moz-linear-gradient( top, #f5f5f5, #eee );
-       background-image:     -ms-linear-gradient( top, #f5f5f5, #eee );
-       background-image:      -o-linear-gradient( top, #f5f5f5, #eee );
-       background-image:         linear-gradient( top, #f5f5f5, #eee );
-}
-
-.control-section:hover .customize-section-title,
-.control-section .customize-section-title:hover,
-.control-section.open .customize-section-title {
-       color: #fff;
-       text-shadow: 0 -1px 0 #333;
-       background-color: #808080;
-       background-image: -webkit-linear-gradient( top, #808080, #6d6d6d );
-       background-image:    -moz-linear-gradient( top, #808080, #6d6d6d );
-       background-image:     -ms-linear-gradient( top, #808080, #6d6d6d );
-       background-image:      -o-linear-gradient( top, #808080, #6d6d6d );
-       background-image:         linear-gradient( top, #808080, #6d6d6d );
-}
-
-.control-section.open .customize-section-title {
-       border-bottom: 1px solid #6d6d6d;
-}
-
-.customize-section.open .customize-section-content {
-       display: block;
-       background: #fdfdfd;
-}
-
-.customize-section-title:after {
-       content: '';
-       width: 0;
-       height: 0;
-       border-color: #ccc transparent;
-       border-style: solid;
-       border-width: 6px 6px 0;
-       position: absolute;
-       top: 25px;
-       right: 20px;
-       z-index: 1;
-}
-
-.cannot-expand .customize-section-title:after {
-       display: none;
-}
-
-.customize-section-title:hover:after {
-       border-color: #aaa transparent;
-}
-
-.control-section .customize-section-title:hover:after {
-       border-color: #eee transparent;
-}
-
-.control-section .customize-section-title:after {
-       top: 15px;
-}
-
-#customize-info .customize-section-content {
-       background: transparent;
-}
-
-#customize-info .preview-notice {
-       font-size: 13px;
-       line-height: 24px;
-       color: #999;
-}
-
-#customize-info .theme-name {
-       font-size: 20px;
-       font-weight: 200;
-       line-height: 24px;
-       color: #333;
-       display: block;
-       text-shadow: 0 1px 0 #fff;
-}
-
-#customize-info .theme-screenshot {
-       width: 258px;
-       border: 1px solid #ccc;
-}
-
-#customize-info .theme-description {
-       margin-top: 1em;
-       color: #777;
-       line-height: 20px;
-}
-
-#customize-controls .submit {
-       text-align: center;
-}
-
-#customize-theme-controls > ul,
-#customize-theme-controls .customize-section-content {
-       margin: 0;
-}
-
-#customize-header-actions .button-primary {
-       float: right;
-       margin-top: 11px;
-}
-
-#customize-header-actions img {
-       display: none;
-       float: right;
-       margin-top: 13px;
-       margin-right: 4px;
-}
-
-.saving #customize-header-actions img {
-       display: block;
-}
-
-.customize-control {
-       width: 100%;
-       float: left;
-       clear: both;
-       margin-bottom: 8px;
-}
-
-.customize-control-title {
-       display: block;
-       line-height: 24px;
-       font-weight: bold;
-}
-
-.customize-control select,
-.customize-control input[type="text"],
-.customize-control input[type="radio"],
-.customize-control input[type="checkbox"],
-.customize-control-color .color-picker,
-.customize-control-checkbox label,
-.customize-control-upload div {
-       line-height: 28px;
-}
-
-.customize-control input[type="text"] {
-       width: 98%;
-       line-height: 18px;
-       margin: 0;
-}
-
-.customize-control select {
-       min-width: 50%;
-       max-width: 100%;
-       height: 28px;
-       line-height: 28px;
-}
-
-.customize-control-checkbox input {
-       margin-right: 5px;
-}
-
-.customize-control-radio {
-       padding: 5px 0 10px;
-}
-
-.customize-control-radio .customize-control-title {
-       margin-bottom: 0;
-       line-height: 22px;
-}
-
-.customize-control-radio label {
-       line-height: 20px;
-}
-
-.customize-control-radio input {
-       margin-right: 5px;
-}
-
-#customize-preview iframe {
-       width: 100%;
-       height: 100%;
-}
-
-/*
- * Style for custom settings
- */
-
-/*
- * Dropdowns
- */
-.customize-section .dropdown {
-       float: left;
-       display: block;
-       position: relative;
-       cursor: pointer;
-
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-.customize-section .dropdown-content {
-       overflow: hidden;
-       float: left;
-       min-width: 30px;
-       height: 16px;
-       line-height: 16px;
-       margin-right: 16px;
-       padding: 4px 5px;
-       background-color: #eee;
-       border: 1px solid #ccc;
-       -webkit-border-radius: 3px 0 0 3px;
-       border-radius: 3px 0 0 3px;
-
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       user-select: none;
-}
-
-.customize-control .dropdown-arrow {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       width: 15px;
-
-       border-color: #ccc;
-       border-style: solid;
-       border-width: 1px 1px 1px 0;
-       -webkit-border-radius: 0 3px 3px 0;
-       border-radius: 0 3px 3px 0;
-}
-
-.customize-control .dropdown-arrow:after {
-       content: '';
-       width: 0;
-       height: 0;
-       border-color: #ccc transparent;
-       border-style: solid;
-       border-width: 4px 4px 0 4px;
-       position: absolute;
-       top: 50%;
-       margin-top: -1px;
-       right: 4px;
-       z-index: 1;
-}
-
-.customize-section .dropdown:hover .dropdown-content,
-.customize-control .dropdown:hover .dropdown-arrow {
-       border-color: #aaa;
-}
-
-.customize-section .dropdown:hover .dropdown-arrow:after {
-       border-color: #aaa transparent;
-}
-
-.customize-control .dropdown-status {
-       display: none;
-       max-width: 112px;
-       color: #777;
-}
-
-/*
- * Color Picker
- */
-.customize-control-color .color-picker-hex,
-.customize-control-color .farbtastic-placeholder {
-       display: none;
-}
-
-.customize-control-color.open .color-picker-hex,
-.customize-control-color.open .farbtastic-placeholder {
-       display: block;
-}
-
-.customize-control-color .dropdown {
-       margin-right: 5px;
-       margin-bottom: 5px;
-}
-
-.customize-control-color .dropdown .dropdown-content {
-       background-color: #fff;
-       border: 1px solid rgba( 0, 0, 0, 0.15 );
-}
-
-.customize-control-color .dropdown:hover .dropdown-content {
-       border-color: rgba( 0, 0, 0, 0.25 );
-}
-
-.customize-section input[type="text"].color-picker-hex {
-       float: left;
-       width: 85px;
-       font-family: monospace;
-       text-align: center;
-}
-
-/* The centered cursor overlaps the placeholder in webkit. Hide it when selected. */
-.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder {
-       color: transparent;
-}
-.customize-section input[type="text"].color-picker-hex:-moz-placeholder {
-       color: #999;
-}
-
-.customize-control-color .farbtastic-placeholder {
-       width: 100%;
-       margin: 5px 0 10px;
-       float: left;
-}
-
-.customize-control-color .farbtastic {
-       margin: 0 auto;
-}
-
-/*
- * Image Picker
- */
-.customize-control-image .library,
-.customize-control-image .actions {
-       display: none;
-       float: left;
-       width: 100%;
-}
-
-.customize-control-image.open .library,
-.customize-control-image.open .actions {
-       display: block;
-}
-
-.customize-section .customize-control-image .dropdown-content {
-       height: auto;
-       min-height: 24px;
-       min-width: 40px;
-       padding: 0;
-}
-
-.customize-section .customize-control-image .dropdown-status {
-       padding: 4px 5px;
-}
-
-.customize-section .customize-control-image .preview-thumbnail img {
-       display: block;
-       width: 100%;
-       max-width: 122px;
-       max-height: 98px;
-       margin: 0 auto;
-}
-
-.customize-section .customize-control-image .actions {
-       text-align: right;
-}
-
-.customize-section .customize-control-image .library ul {
-       border-bottom: 1px solid #dfdfdf;
-       float: left;
-       width: 100%;
-       margin: 10px 0 0;
-}
-
-.customize-section .customize-control-image .library li {
-       color: #999;
-       float: left;
-       padding: 3px 5px;
-       margin: 0;
-       border-style: solid;
-       border-color: transparent;
-       border-width: 1px 1px 0 1px;
-}
-
-.customize-section .customize-control-image .library li.library-selected {
-       margin-bottom: -1px;
-       padding-bottom: 4px;
-
-       color: #777;
-       background: #fdfdfd;
-       border-color: #dfdfdf;
-       -webkit-border-radius: 3px 3px 0 0;
-       border-radius: 3px 3px 0 0 ;
-}
-
-.customize-section .customize-control-image .library-content {
-       display: none;
-       width: 100%;
-       float: left;
-       padding: 10px 0;
-}
-
-.customize-section .customize-control-image .library-content.library-selected {
-       display: block;
-}
-
-.customize-section .customize-control-image .library .thumbnail {
-       display: block;
-       width: 100%;
-}
-
-.customize-section .customize-control-image .library .thumbnail:hover img {
-       border-color: #21759b;
-}
-
-.customize-section .customize-control-image .library .thumbnail img {
-       display: block;
-       max-width: 90%;
-       max-height: 80px;
-
-       margin: 5px auto;
-       padding: 4px;
-       background: #fff;
-       border: 1px solid #dfdfdf;
-}
-
-.customize-section .customize-control-upload .upload-fallback,
-.customize-section .customize-control-image .upload-fallback {
-       display: none;
-}
-
-.customize-section .customize-control-upload .upload-dropzone,
-.customize-section .customize-control-image .upload-dropzone {
-       display: none;
-       padding: 15px 10px;
-       border: 3px dashed #dfdfdf;
-       margin: 5px auto;
-       text-align: center;
-       color: #777;
-       position: relative;
-       cursor: default;
-}
-
-.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,
-.customize-section .customize-control-image .upload-dropzone.supports-drag-drop {
-       display: block;
-       -webkit-transition: border-color 0.1s;
-       -moz-transition:    border-color 0.1s;
-       -ms-transition:     border-color 0.1s;
-       -o-transition:      border-color 0.1s;
-       transition:         border-color 0.1s;
-}
-
-.customize-section .customize-control-upload .library ul li,
-.customize-section .customize-control-image .library ul li {
-       cursor: pointer;
-}
-
-.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,
-.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over {
-       border-color: #83b4d8;
-}
-
-/**
- * iOS can't scroll iframes,
- * instead it expands the iframe size to match the size of the content
- */
-.ios .wp-full-overlay {
-       position: relative;
-}
-
-.ios #customize-preview {
-       position: relative;
-}
-
-.ios #customize-controls .wp-full-overlay-sidebar-content {
-       -webkit-overflow-scrolling: touch;
-}
-
-/**
- * Handle cheaters.
- */
-body.cheatin {
-       min-width: 0;
-       background: #f9f9f9;
-       padding: 50px;
-}
-
-body.cheatin p {
-       max-width: 700px;
-       margin: 0 auto;
-       padding: 2em;
-       font-size: 14px;
-
-       background: #fff;
-       border: 1px solid #dfdfdf;
-
-       -webkit-border-radius: 3px;
-       border-radius:         3px;
-}
\ No newline at end of file
diff --git a/wp-admin/css/customize-controls.min.css b/wp-admin/css/customize-controls.min.css
new file mode 100644 (file)
index 0000000..d4e432a
--- /dev/null
@@ -0,0 +1 @@
+body{overflow:hidden}#customize-controls a{text-decoration:none}.customize-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.control-section.customize-section:hover,.control-section.customize-section.open{border-top-color:#808080}.control-section.customize-section:hover{border-bottom-color:#6d6d6d}.customize-section.open:hover{border-bottom-color:#dfdfdf}.customize-section:last-child{box-shadow:0 1px 0 0 #fff}.customize-section-title{margin:0;padding:15px 20px;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-section-title:focus{outline:0}.cannot-expand .customize-section-title{cursor:auto}.customize-section-content{display:none;padding:10px 20px 15px;overflow:hidden}.control-section .customize-section-title{padding:10px 20px;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#f5f5f5));background-image:-webkit-linear-gradient(bottom,#eee,#f5f5f5);background-image:-moz-linear-gradient(bottom,#eee,#f5f5f5);background-image:-o-linear-gradient(bottom,#eee,#f5f5f5);background-image:linear-gradient(to top,#eee,#f5f5f5)}.control-section:hover .customize-section-title,.control-section .customize-section-title:hover,.control-section.open .customize-section-title,.control-section .customize-section-title:focus{color:#fff;text-shadow:0 -1px 0 #333;background:#808080;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080)}.control-section.open .customize-section-title{border-bottom:1px solid #6d6d6d}.customize-section.open .customize-section-content{display:block;background:#fdfdfd}.customize-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.cannot-expand .customize-section-title:after{display:none}.customize-section-title:hover:after,.customize-section-title:focus:after{border-color:#aaa transparent}.control-section .customize-section-title:hover:after,.control-section .customize-section-title:focus:after{border-color:#eee transparent}.control-section .customize-section-title:after{top:15px}#customize-info .customize-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .customize-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:10px}#customize-header-actions .spinner{margin-top:16px;margin-right:4px}.saving #customize-header-actions .spinner{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}.customize-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.customize-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.customize-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.customize-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.customize-section input[type="text"].color-picker-hex{width:65px;font-family:monospace;text-align:center;line-height:16px}.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.customize-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.customize-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.customize-section .customize-control-image .dropdown-status{padding:4px 5px}.customize-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.customize-section .customize-control-image .actions{text-align:right}.customize-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.customize-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.customize-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.customize-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.customize-section .customize-control-image .library-content.library-selected{display:block}.customize-section .customize-control-image .library .thumbnail{display:block;width:100%}.customize-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.customize-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.customize-section .customize-control-upload .upload-fallback,.customize-section .customize-control-image .upload-fallback{display:none}.customize-section .customize-control-upload .upload-dropzone,.customize-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.customize-section .customize-control-upload .library ul li,.customize-section .customize-control-image .library ul li{cursor:pointer}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px}
\ No newline at end of file
index 47dd4e5bd88e8238aec83f18f863ac6e231ece24..50e2e8d41643b59dfcc340930b15cdb2dcd62c3f 100644 (file)
@@ -1 +1,240 @@
-body{direction:rtl;width:99.5%}.rtl #adminmenuback{left:auto;right:0;background-image:none}.rtl #adminmenuback,.rtl #adminmenuwrap{border-width:0 0 0 1px}#plupload-upload-ui{zoom:1}.post-com-count-wrapper a.post-com-count{float:none}#adminmenu .wp-submenu ul{width:99%}#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap,#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap{border:1px solid #dfdfdf}.folded #adminmenu .wp-submenu{right:30px;top:-4px}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 6px 4px}#adminmenu .wp-menu-arrow{display:none!important}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px}div.quicktags-toolbar input{min-width:0}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}p.search-box{float:left}#bh{margin:7px 10px 0 0;float:left}.postbox div.inside,.wp-editor-wrap .wp-editor-container .wp-editor-area,#nav-menu-theme-locations .howto select{width:97.5%}div#dashboard-widgets{padding-right:0;padding-left:1px}#dashboard_quick_press h4{text-align:right}.tagchecklist span a{margin:4px -9px 0 0}.widefat th input{margin:0 5px 0 0}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important}#dashboard_plugins{direction:ltr}#dashboard_plugins h3.hndle{direction:rtl}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%}#post-status-info{height:25px}p.submit{height:22px}form#widgets-filter{position:static}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:-30px}.menu-item-depth-2{margin-left:-60px}.menu-item-depth-3{margin-left:-90px}.menu-item-depth-4{margin-left:-120px}.menu-item-depth-5{margin-left:-150px}.menu-item-depth-6{margin-left:-180px}.menu-item-depth-7{margin-left:-210px}.menu-item-depth-8{margin-left:-240px}.menu-item-depth-9{margin-left:-270px}.menu-item-depth-10{margin-left:-300px}.menu-item-depth-11{margin-left:-330px}#menu-management,.nav-menus-php .menu-edit,#nav-menu-header .submitbox{zoom:1}.nav-menus-php label{max-width:90%!important}p.button-controls,.nav-menus-php .tabs-panel{max-width:90%}.nav-menus-php .major-publishing-actions .publishing-action{float:none}#wpbody #nav-menu-header label{float:none}#nav-menu-header{margin-top:-10px}#nav-menu-footer{margin-bottom:-20px}#update-nav-menu .publishing-action{max-width:200px}#nav-menus-frame #update-nav-menu .delete-action{margin-top:-25px;float:left}#menu-to-edit li{margin-top:-10px;margin-bottom:-10px}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important}.auto-add-pages{clear:both;float:none}#nav-menus-frame .open-label span{float:none;display:inline-block}#nav-menus-frame .delete-action{float:none}
\ No newline at end of file
+
+body {
+       direction: rtl;
+       width: 99.5%;
+}
+
+.rtl #adminmenuback {
+       left: auto;
+       right: 0;
+       background-image: none;
+}
+
+.rtl #adminmenuback,
+.rtl #adminmenuwrap {
+       border-width: 0 0 0 1px;
+}
+
+#plupload-upload-ui {
+       zoom: 1;
+}
+
+.post-com-count-wrapper a.post-com-count {
+       float: none;
+}
+
+#adminmenu .wp-submenu ul {
+       width: 99%;
+}
+
+#adminmenu .wp-submenu .wp-submenu .wp-submenu,
+#adminmenu .wp-menu-open .wp-submenu .wp-submenu {
+       border: 1px solid #dfdfdf;
+}
+
+.folded #adminmenu .wp-submenu {
+       right: 30px;
+}
+
+#wpcontent #adminmenu .wp-submenu li.wp-submenu-head {
+       padding: 3px 10px 4px 4px;
+}
+
+div.quicktags-toolbar input {
+       min-width: 0;
+}
+
+.inline-edit-row fieldset label span.title {
+       float: right;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+       margin-right: 0;
+}
+
+p.search-box {
+       float: left;
+}
+
+#bh {
+       margin: 7px 10px 0 0;
+       float: left;
+}
+
+.postbox div.inside,
+.wp-editor-wrap .wp-editor-container .wp-editor-area,
+#nav-menu-theme-locations .howto select {
+       width: 97.5%;
+}
+
+/* without this dashboard widgets appear in one column for some screen widths */
+div#dashboard-widgets {
+       padding-right: 0;
+       padding-left: 1px;
+}
+
+.tagchecklist span a {
+       margin: 4px -9px 0 0;
+}
+
+.widefat th input {
+       margin: 0 5px 0 0;
+}
+
+/* ---------- add by navid */
+#TB_window {
+       width: 670px;
+       position: absolute;
+       top: 50%;
+       left: 50%;
+       margin-right: 335px !important;
+}
+
+#dashboard_plugins {
+       direction: ltr;
+}
+
+#dashboard_plugins h3.hndle {
+       direction: rtl;
+}
+
+#dashboard_incoming_links ul li,
+#dashboard_secondary ul li,
+#dashboard_primary ul li,
+p.row-actions {
+       width: 100%;
+}
+
+#post-status-info {
+       height: 25px;
+}
+
+p.submit { /* quick edit and reply in edit-comments.php */
+       height:22px;
+}
+
+.available-theme .action-links li {
+       padding-left: 7px;
+       margin-left: 7px;
+}
+
+form#widgets-filter { /* fix widget page */
+       position: static;
+}
+
+/* nav menus
+.menu-max-depth-0 #menu-management { width: 460px; }
+.menu-max-depth-1 #menu-management { width: 490px; }
+.menu-max-depth-2 #menu-management { width: 520px; }
+.menu-max-depth-3 #menu-management { width: 550px; }
+.menu-max-depth-4 #menu-management { width: 580px; }
+.menu-max-depth-5 #menu-management { width: 610px; }
+.menu-max-depth-6 #menu-management { width: 640px; }
+.menu-max-depth-7 #menu-management { width: 670px; }
+.menu-max-depth-8 #menu-management { width: 700px; }
+.menu-max-depth-9 #menu-management { width: 730px; }
+.menu-max-depth-10 #menu-management { width: 760px; }
+.menu-max-depth-11 #menu-management { width: 790px; }
+*/
+.menu-item-depth-0 { margin-left: 0px; }
+.menu-item-depth-1 { margin-left: -30px; }
+.menu-item-depth-2 { margin-left: -60px; }
+.menu-item-depth-3 { margin-left: -90px; }
+.menu-item-depth-4 { margin-left: -120px; }
+.menu-item-depth-5 { margin-left: -150px; }
+.menu-item-depth-6 { margin-left: -180px; }
+.menu-item-depth-7 { margin-left: -210px; }
+.menu-item-depth-8 { margin-left: -240px; }
+.menu-item-depth-9 { margin-left: -270px; }
+.menu-item-depth-10 { margin-left: -300px; }
+.menu-item-depth-11 { margin-left: -330px; }
+
+/*
+#menu-to-edit li dl {
+       padding: 0 !important;
+       margin: 0 !important;
+}
+
+.ui-sortable-helper .menu-item-transport {
+       margin-top: 13px;
+}
+
+.ui-sortable-helper .menu-item-transport .menu-item-transport {
+       margin-top: 0;
+}
+*/
+
+#menu-management,
+.nav-menus-php .menu-edit,
+#nav-menu-header .submitbox {
+       zoom: 1;
+}
+
+.nav-menus-php label {
+       max-width: 90% !important;
+}
+
+p.button-controls,
+.nav-menus-php .tabs-panel {
+       max-width: 90%;
+}
+
+.nav-menus-php .major-publishing-actions .publishing-action {
+       float: none;
+}
+
+#wpbody #nav-menu-header label {
+       float: none;
+}
+
+#nav-menu-header {
+       margin-top: -10px;
+}
+
+#nav-menu-footer {
+       margin-bottom: -20px;
+}
+
+#update-nav-menu .publishing-action {
+       max-width: 200px;
+}
+
+#nav-menus-frame #update-nav-menu .delete-action {
+       margin-top: -25px;
+       float: left;
+}
+
+#menu-to-edit li {
+       margin-top: -10px;
+       margin-bottom: -10px;
+}
+
+.sortable-placeholder {
+       margin-top: 0 !important;
+       margin-left: 0 !important;
+       margin-bottom: 13px !important;
+       padding: 0 !important;
+}
+
+.auto-add-pages {
+       clear: both;
+       float: none;
+}
+
+#nav-menus-frame .open-label span {
+       float: none;
+       display: inline-block;
+}
+
+#nav-menus-frame .delete-action {
+       float: none;
+}
+
+#title-wrap #title-prompt-text {
+       right: 0;
+}
+
+.screen-reader-text { 
+       right: auto;
+       text-indent: -1000em; 
+} 
\ No newline at end of file
diff --git a/wp-admin/css/ie-rtl.dev.css b/wp-admin/css/ie-rtl.dev.css
deleted file mode 100644 (file)
index 16357de..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-
-body {
-       direction: rtl;
-       width: 99.5%;
-}
-
-.rtl #adminmenuback {
-       left: auto;
-       right: 0;
-       background-image: none;
-}
-
-.rtl #adminmenuback,
-.rtl #adminmenuwrap {
-       border-width: 0 0 0 1px;
-}
-
-#plupload-upload-ui {
-       zoom: 1;
-}
-
-.post-com-count-wrapper a.post-com-count {
-       float: none;
-}
-
-#adminmenu .wp-submenu ul {
-       width: 99%;
-}
-
-#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap,
-#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap {
-       border: 1px solid #dfdfdf;
-}
-
-.folded #adminmenu .wp-submenu {
-       right: 30px;
-       top: -4px;
-}
-
-#adminmenu .wp-submenu .wp-submenu-head {
-       padding: 6px 10px 6px 4px;
-}
-
-#adminmenu .wp-menu-arrow {
-       display: none !important;
-}
-
-#wpcontent #adminmenu .wp-submenu li.wp-submenu-head {
-       padding: 3px 10px 4px 4px;
-}
-
-div.quicktags-toolbar input {
-       min-width: 0;
-}
-
-.inline-edit-row fieldset label span.title {
-       float: right;
-}
-
-.inline-edit-row fieldset label span.input-text-wrap {
-       margin-right: 0;
-}
-
-p.search-box {
-       float: left;
-}
-
-#bh {
-       margin: 7px 10px 0 0;
-       float: left;
-}
-
-.postbox div.inside,
-.wp-editor-wrap .wp-editor-container .wp-editor-area,
-#nav-menu-theme-locations .howto select {
-       width: 97.5%;
-}
-
-/* without this dashboard widgets appear in one column for some screen widths */
-div#dashboard-widgets {
-       padding-right: 0;
-       padding-left: 1px;
-}
-
-#dashboard_quick_press h4 {
-       text-align: right;
-}
-
-.tagchecklist span a {
-       margin: 4px -9px 0 0;
-}
-
-.widefat th input {
-       margin: 0 5px 0 0;
-}
-
-/* ---------- add by navid */
-#TB_window {
-       width: 670px;
-       position: absolute;
-       top: 50%;
-       left: 50%;
-       margin-right: 335px !important;
-}
-
-#dashboard_plugins {
-       direction: ltr;
-}
-
-#dashboard_plugins h3.hndle {
-       direction: rtl;
-}
-
-#dashboard_incoming_links ul li,
-#dashboard_secondary ul li,
-#dashboard_primary ul li,
-p.row-actions {
-       width: 100%;
-}
-
-#post-status-info {
-       height: 25px;
-}
-
-p.submit { /* quick edit and reply in edit-comments.php */
-       height:22px;
-}
-
-form#widgets-filter { /* fix widget page */
-       position: static;
-}
-
-/* nav menus
-.menu-max-depth-0 #menu-management { width: 460px; }
-.menu-max-depth-1 #menu-management { width: 490px; }
-.menu-max-depth-2 #menu-management { width: 520px; }
-.menu-max-depth-3 #menu-management { width: 550px; }
-.menu-max-depth-4 #menu-management { width: 580px; }
-.menu-max-depth-5 #menu-management { width: 610px; }
-.menu-max-depth-6 #menu-management { width: 640px; }
-.menu-max-depth-7 #menu-management { width: 670px; }
-.menu-max-depth-8 #menu-management { width: 700px; }
-.menu-max-depth-9 #menu-management { width: 730px; }
-.menu-max-depth-10 #menu-management { width: 760px; }
-.menu-max-depth-11 #menu-management { width: 790px; }
-*/
-.menu-item-depth-0 { margin-left: 0px; }
-.menu-item-depth-1 { margin-left: -30px; }
-.menu-item-depth-2 { margin-left: -60px; }
-.menu-item-depth-3 { margin-left: -90px; }
-.menu-item-depth-4 { margin-left: -120px; }
-.menu-item-depth-5 { margin-left: -150px; }
-.menu-item-depth-6 { margin-left: -180px; }
-.menu-item-depth-7 { margin-left: -210px; }
-.menu-item-depth-8 { margin-left: -240px; }
-.menu-item-depth-9 { margin-left: -270px; }
-.menu-item-depth-10 { margin-left: -300px; }
-.menu-item-depth-11 { margin-left: -330px; }
-
-/*
-#menu-to-edit li dl {
-       padding: 0 !important;
-       margin: 0 !important;
-}
-
-.ui-sortable-helper .menu-item-transport {
-       margin-top: 13px;
-}
-
-.ui-sortable-helper .menu-item-transport .menu-item-transport {
-       margin-top: 0;
-}
-*/
-
-#menu-management,
-.nav-menus-php .menu-edit,
-#nav-menu-header .submitbox {
-       zoom: 1;
-}
-
-.nav-menus-php label {
-       max-width: 90% !important;
-}
-
-p.button-controls,
-.nav-menus-php .tabs-panel {
-       max-width: 90%;
-}
-
-.nav-menus-php .major-publishing-actions .publishing-action {
-       float: none;
-}
-
-#wpbody #nav-menu-header label {
-       float: none;
-}
-
-#nav-menu-header {
-       margin-top: -10px;
-}
-
-#nav-menu-footer {
-       margin-bottom: -20px;
-}
-
-#update-nav-menu .publishing-action {
-       max-width: 200px;
-}
-
-#nav-menus-frame #update-nav-menu .delete-action {
-       margin-top: -25px;
-       float: left;
-}
-
-#menu-to-edit li {
-       margin-top: -10px;
-       margin-bottom: -10px;
-}
-
-.sortable-placeholder {
-       margin-top: 0 !important;
-       margin-left: 0 !important;
-       margin-bottom: 13px !important;
-       padding: 0 !important;
-}
-
-.auto-add-pages {
-       clear: both;
-       float: none;
-}
-
-#nav-menus-frame .open-label span {
-       float: none;
-       display: inline-block;
-}
-
-#nav-menus-frame .delete-action {
-       float: none;
-}
diff --git a/wp-admin/css/ie-rtl.min.css b/wp-admin/css/ie-rtl.min.css
new file mode 100644 (file)
index 0000000..9d3f77c
--- /dev/null
@@ -0,0 +1 @@
+body{direction:rtl;width:99.5%}.rtl #adminmenuback{left:auto;right:0;background-image:none}.rtl #adminmenuback,.rtl #adminmenuwrap{border-width:0 0 0 1px}#plupload-upload-ui{zoom:1}.post-com-count-wrapper a.post-com-count{float:none}#adminmenu .wp-submenu ul{width:99%}#adminmenu .wp-submenu .wp-submenu .wp-submenu,#adminmenu .wp-menu-open .wp-submenu .wp-submenu{border:1px solid #dfdfdf}.folded #adminmenu .wp-submenu{right:30px}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px}div.quicktags-toolbar input{min-width:0}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}p.search-box{float:left}#bh{margin:7px 10px 0 0;float:left}.postbox div.inside,.wp-editor-wrap .wp-editor-container .wp-editor-area,#nav-menu-theme-locations .howto select{width:97.5%}div#dashboard-widgets{padding-right:0;padding-left:1px}.tagchecklist span a{margin:4px -9px 0 0}.widefat th input{margin:0 5px 0 0}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important}#dashboard_plugins{direction:ltr}#dashboard_plugins h3.hndle{direction:rtl}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%}#post-status-info{height:25px}p.submit{height:22px}.available-theme .action-links li{padding-left:7px;margin-left:7px}form#widgets-filter{position:static}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:-30px}.menu-item-depth-2{margin-left:-60px}.menu-item-depth-3{margin-left:-90px}.menu-item-depth-4{margin-left:-120px}.menu-item-depth-5{margin-left:-150px}.menu-item-depth-6{margin-left:-180px}.menu-item-depth-7{margin-left:-210px}.menu-item-depth-8{margin-left:-240px}.menu-item-depth-9{margin-left:-270px}.menu-item-depth-10{margin-left:-300px}.menu-item-depth-11{margin-left:-330px}#menu-management,.nav-menus-php .menu-edit,#nav-menu-header .submitbox{zoom:1}.nav-menus-php label{max-width:90%!important}p.button-controls,.nav-menus-php .tabs-panel{max-width:90%}.nav-menus-php .major-publishing-actions .publishing-action{float:none}#wpbody #nav-menu-header label{float:none}#nav-menu-header{margin-top:-10px}#nav-menu-footer{margin-bottom:-20px}#update-nav-menu .publishing-action{max-width:200px}#nav-menus-frame #update-nav-menu .delete-action{margin-top:-25px;float:left}#menu-to-edit li{margin-top:-10px;margin-bottom:-10px}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important}.auto-add-pages{clear:both;float:none}#nav-menus-frame .open-label span{float:none;display:inline-block}#nav-menus-frame .delete-action{float:none}#title-wrap #title-prompt-text{right:0}.screen-reader-text{right:auto;text-indent:-1000em}
\ No newline at end of file
index ec4709cd42c89058de1c6ca0effe6a87cee4fd0f..6730c2e5b662abd7dec0a00c302f4e688127353e 100644 (file)
@@ -1 +1,626 @@
-.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column{margin:0 -25px 0 4%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%}.js.folded #adminmenu .menu-top{height:30px}.js.folded #adminmenu .wp-submenu{margin:-1px 0 0 0}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle,#template,#template div,#editcat,#addcat{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}a.button{line-height:1.4em;margin:1px;padding:2px 6px}#screen-options-wrap{overflow:hidden}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}table.ie-fixed{table-layout:fixed}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat .check-column{padding:6px 0 2px}.widefat tbody th.check-column{padding:4px 0 22px}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #dfdfdf}* html .feature-filter .feature-group li{width:145px}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #footer{margin:0}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:0}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
+/* Fixes for IE 7 bugs */
+
+#dashboard-widgets form .input-text-wrap input,
+#dashboard-widgets form .textarea-wrap textarea {
+       width: 99%;
+}
+
+#dashboard-widgets form #title {
+       width: 98%;
+}
+
+.wp-editor-wrap .wp-editor-container textarea.wp-editor-area {
+       width: 97%;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       padding-left: 19px;
+}
+
+.welcome-panel .wp-badge {
+       position: absolute;
+}
+
+.welcome-panel .welcome-panel-column:first-child {
+       width: 35%;
+}
+
+#wp-fullscreen-title {
+       width: 97%;
+}
+
+#wp_mce_fullscreen_ifr {
+       background-color: #f9f9f9;
+}
+
+#wp-fullscreen-tagline {
+       color: #888;
+       font-size: 14px;
+}
+
+#adminmenushadow {
+       display: none;
+}
+
+#adminmenuback {
+       left: 0;
+       background-image: none;
+}
+
+#adminmenuwrap {
+       position: static;
+}
+
+#adminmenu {
+       position: relative;
+}
+
+#adminmenu,
+#adminmenu a {
+       cursor: pointer;
+}
+
+#adminmenu li.wp-menu-separator,
+#adminmenu li.wp-menu-separator-last {
+       font-size: 1px;
+       line-height: 1;
+}
+
+#adminmenu a.menu-top {
+       border-bottom: 0 none;
+       border-top: 1px solid #ddd;
+}
+
+#adminmenu .separator {
+       font-size: 1px;
+       line-height: 1px;
+}
+
+#adminmenu .wp-submenu ul {
+       margin: 0;
+}
+
+.folded #adminmenu .wp-submenu {
+       border-top-color: transparent;
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+       border-top-color: #ddd;
+}
+
+.folded #adminmenu .wp-submenu ul {
+       margin-left: 5px;
+}
+
+#adminmenu li.menu-top {
+       margin-bottom: -2px;
+}
+
+#adminmenu .wp-menu-arrow {
+       display: none !important;
+}
+
+.js.folded #adminmenu li.menu-top {
+       display: block;
+       zoom: 100%;
+}
+
+ul#adminmenu {
+       z-index: 99;
+}
+
+#adminmenu li.menu-top a.menu-top {
+       min-width: auto;
+       width: auto;
+}
+
+#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu {
+       font-style: normal;
+}
+
+#wpcontent #adminmenu .wp-submenu li {
+       padding: 0;
+}
+
+#collapse-menu {
+       line-height: 23px;
+}
+
+#wpadminbar .ab-comments-icon {
+       padding-top: 7px;
+}
+
+table.fixed th,
+table.fixed td {
+       border-top: 1px solid #ddd;
+}
+
+#wpbody-content input.button,
+#wpbody-content input.button-primary,
+#wpbody-content input.button-secondary {
+       overflow: visible;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #publish {
+       float: none;
+}
+
+#dashboard-widgets h3 a {
+       height: 14px;
+       line-height: 14px;
+}
+
+#dashboard_browser_nag {
+       color: #fff;
+}
+
+#dashboard_browser_nag .browser-icon {
+       position: relative;
+}
+
+.tablenav-pages .current-page {
+       vertical-align: middle;
+}
+
+#wpbody-content .postbox {
+       border: 1px solid #dfdfdf;
+}
+
+#wpbody-content .postbox h3 {
+       margin-bottom: -1px;
+}
+
+.major-publishing-actions,
+.wp-submenu,
+.wp-submenu li,
+#template,
+#template div,
+#editcat,
+#addcat {
+       zoom: 100%;
+}
+
+.wp-menu-arrow {
+       height: 28px;
+}
+
+.submitbox {
+       margin-top: 10px;
+}
+
+/* Inline Editor */
+#wpbody-content .quick-edit-row-post .inline-edit-col-left {
+       width: 39%;
+}
+
+#wpbody-content .inline-edit-row-post .inline-edit-col-center {
+       width: 19%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-left {
+       width: 49%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-left {
+       width: 29%;
+}
+
+.inline-edit-row p.submit {
+       zoom: 100%;
+}
+
+.inline-edit-row fieldset label span.title {
+       display: block;
+       float: left;
+       width: 5em;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+       margin-left: 0;
+       zoom: 100%;
+}
+
+#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input {
+       line-height: 130%;
+}
+
+#wpbody-content .inline-edit-row .input-text-wrap input {
+       width: 95%;
+}
+
+#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input {
+       width: 8em;
+}
+/* end Inline Editor */
+
+#titlediv #title {
+       width: 98%;
+}
+
+.button,
+input[type="reset"],
+input[type="button"],
+input[type="submit"] {
+       padding: 0 8px;
+       line-height: 20px;
+       height: auto;
+}
+
+.button.button-large,
+input[type="reset"].button-large,
+input[type="button"].button-large,
+input[type="submit"].button-large {
+       padding: 0 10px;
+       line-height: 24px;
+       height: auto;
+}
+
+.button.button-small,
+input[type="reset"].button-small,
+input[type="button"].button-small,
+input[type="submit"].button-small {
+       padding: 0 6px;
+       line-height: 16px;
+       height: auto;
+}
+
+a.button {
+       margin: 1px;
+       padding: 1px 9px 2px;
+}
+
+a.button.button-large {
+       padding: 1px 11px 2px;
+}
+
+a.button.button-small {
+       padding: 1px 7px 2px;
+}
+
+#screen-options-wrap {
+       overflow: hidden;
+}
+
+#the-comment-list .comment-item,
+#post-status-info,
+#wpwrap,
+#wrap,
+#postdivrich,
+#postdiv,
+#poststuff,
+.metabox-holder,
+#titlediv,
+#post-body,
+#editorcontainer,
+.tablenav,
+.widget-liquid-left,
+.widget-liquid-right,
+#widgets-left,
+.widgets-sortables,
+#dragHelper,
+.widget .widget-top,
+.widget-control-actions,
+.tagchecklist,
+#col-container,
+#col-left,
+#col-right,
+.fileedit-sub {
+       display: block;
+       zoom: 100%;
+}
+
+p.search-box {
+       position: static;
+       float: right;
+       margin: -3px 0 4px;
+}
+
+#widget-list .widget,
+.feature-filter .feature-group li {
+       display: inline;
+}
+
+.feature-filter .feature-group li input {
+       vertical-align: middle;
+}
+
+#editorcontainer #content {
+       overflow: auto;
+       margin: auto;
+       width: 98%;
+}
+
+form#template div {
+       width: 100%;
+}
+
+.wp-editor-container .quicktags-toolbar input {
+       overflow: visible;
+       padding: 0 4px;
+}
+
+#poststuff h2 {
+       font-size: 1.6em;
+}
+
+#poststuff .inside #parent_id,
+#poststuff .inside #page_template,
+.inline-edit-row #post_parent,
+.inline-edit-row select[name="page_template"] {
+       width: 250px;
+}
+
+#submitdiv input,
+#submitdiv select,
+#submitdiv a.button {
+       position: relative;
+}
+
+#bh {
+       margin: 7px 10px 0 0;
+       float: right;
+}
+
+/* without this dashboard widgets appear in one column for some screen widths */
+div#dashboard-widgets {
+       padding-right: 1px;
+}
+
+.tagchecklist span, .tagchecklist span a {
+       display: inline-block;
+       display: block;
+}
+
+.tagchecklist span a {
+       margin: 4px 0 0 -9px;
+}
+
+.tablenav .button-secondary,
+.nav .button-secondary {
+       padding-top: 2px;
+       padding-bottom: 2px;
+}
+
+.tablenav select {
+       font-size: 13px;
+       display: inline-block;
+       vertical-align: top;
+       margin-top: 2px;
+}
+
+.tablenav .actions select {
+       width: 155px;
+}
+
+.subsubsub li {
+       display: inline;
+}
+
+table.ie-fixed {
+       table-layout: fixed;
+}
+
+.widefat tr,
+.widefat th {
+       margin-bottom: 0;
+       border-spacing: 0;
+}
+
+.widefat th input {
+       margin: 0 0 0 5px;
+}
+
+.widefat thead .check-column,
+.widefat tfoot .check-column {
+       padding-top: 6px;
+}
+
+.widefat tbody th.check-column,
+.media.widefat tbody th.check-column {
+       padding: 4px 0 0;
+}
+
+.widefat {
+       empty-cells: show;
+       border-collapse: collapse;
+}
+
+.tablenav a.button-secondary {
+       display: inline-block;
+       padding: 2px 5px;
+}
+
+.inactive-sidebar .widgets-sortables {
+       padding-bottom: 8px;
+}
+
+#available-widgets .widget-holder {
+       padding-bottom: 65px;
+}
+
+#widgets-left .inactive {
+       padding-bottom: 10px;
+}
+
+.widget-liquid-right .widget,
+.inactive-sidebar .widget {
+       position: relative;
+}
+
+.inactive-sidebar .widget {
+       display: block;
+       float: left;
+}
+
+#wpcontent .button-primary-disabled {
+       color: #9FD0D5;
+       background: #298CBA;
+}
+
+#the-comment-list .unapproved tr,
+#the-comment-list .unapproved td {
+       background-color: #ffffe0;
+}
+
+.imgedit-submit {
+       width: 300px;
+}
+
+#nav-menus-frame,
+#wpbody,
+.menu li {
+       zoom: 100%;
+}
+
+#update-nav-menu #post-body {
+       overflow:hidden;
+}
+
+.menu li {
+       min-width: 100%;
+}
+
+.menu li.sortable-placeholder {
+       min-width: 400px;
+}
+
+.about-wrap img.element-screenshot {
+       padding: 2px;
+}
+
+.about-wrap .feature-section img,
+.about-wrap .feature-section .image-mask {
+       border-width: 1px;
+       border-style: solid;
+}
+
+.about-wrap .feature-section.three-col img {
+       margin-left: 0;
+}
+
+.available-theme {
+       display: inline;
+}
+
+.available-theme ul {
+       margin: 0;
+}
+
+.available-theme .action-links li {
+       padding-right: 7px;
+       margin-right: 7px;
+}
+
+.about-wrap .three-col-images img {
+       margin: 0 0.6% 10px;
+}
+
+.about-wrap .three-col-images .last-feature,
+.about-wrap .three-col-images .first-feature {
+       float: none;
+}
+
+/* IE6 leftovers */
+* html .row-actions {
+       visibility: visible;
+}
+
+* html div.widget-liquid-left,
+* html div.widget-liquid-right {
+       display: block;
+       position: relative;
+}
+
+* html #editorcontainer {
+       padding: 0;
+}
+
+* html #poststuff h2 {
+       margin-left: 0;
+}
+
+* html .stuffbox,
+* html .stuffbox input,
+* html .stuffbox textarea {
+       border: 1px solid #DFDFDF;
+}
+
+* html .feature-filter .feature-group li {
+       width: 145px;
+}
+
+* html div.widget-liquid-left {
+       width: 99%;
+}
+
+* html .widgets-sortables {
+       height: 50px;
+}
+
+* html a#content_resize {
+       right: -2px;
+}
+
+* html .widget-title h4 {
+       width: 205px;
+}
+
+* html #removing-widget .in-widget-title {
+       display: none;
+}
+
+* html .media-item .pinkynail {
+       height: 32px;
+       width: 40px;
+}
+
+* html .describe .field input.text,
+* html .describe .field textarea {
+       width: 440px;
+}
+
+* html input {
+       border: 1px solid #dfdfdf;
+}
+
+* html .edit-box {
+       display: inline;
+}
+
+* html .postbox-container .meta-box-sortables {
+       height: 300px;
+}
+
+* html #wpbody-content #screen-options-link-wrap {
+       display: inline-block;
+       width: 150px;
+       text-align: center;
+}
+
+* html #wpbody-content #contextual-help-link-wrap {
+       display: inline-block;
+       width: 100px;
+       text-align: center;
+}
+
+* html #adminmenu {
+       margin-left: -80px;
+}
+
+* html .folded #adminmenu {
+       margin-left: -22px;
+}
+
+* html #wpcontent #adminmenu li.menu-top {
+       display: inline;
+       padding: 0;
+       margin: 0;
+}
+
+* html #wpfooter {
+       margin: 0;
+}
+
+* html #adminmenu div.wp-menu-image {
+       height: 29px;
+}
diff --git a/wp-admin/css/ie.dev.css b/wp-admin/css/ie.dev.css
deleted file mode 100644 (file)
index b14f558..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/* Fixes for IE 7 bugs */
-
-.wp-editor-wrap .wp-editor-container textarea.wp-editor-area {
-       width: 97%;
-}
-
-#post-body.columns-2 #postbox-container-1 {
-       padding-left: 19px;
-}
-
-.welcome-panel .wp-badge {
-       position: absolute;
-}
-
-.welcome-panel .welcome-panel-column {
-       margin: 0 -25px 0 4%;
-}
-
-#wp-fullscreen-title {
-       width: 97%;
-}
-
-#wp_mce_fullscreen_ifr {
-       background-color: #f9f9f9;
-}
-
-#wp-fullscreen-tagline {
-       color: #888;
-       font-size: 14px;
-}
-
-#adminmenushadow {
-       display: none;
-}
-
-#adminmenuback {
-       left: 0;
-       background-image: none;
-}
-
-#adminmenuwrap {
-       position: static;
-}
-
-#adminmenu {
-       position: relative;
-}
-
-#adminmenu li.wp-menu-separator,
-#adminmenu li.wp-menu-separator-last {
-       font-size: 1px;
-       line-height: 1;
-}
-
-#adminmenu a.menu-top {
-       border-bottom: 0 none;
-       border-top: 1px solid #ddd;
-}
-
-#adminmenu .separator {
-       font-size: 1px;
-       line-height: 1px;
-}
-
-#adminmenu .wp-submenu ul {
-       margin: 0;
-}
-
-.folded #adminmenu .wp-submenu ul {
-       margin-left: 5px;
-}
-
-#adminmenu li.menu-top {
-       margin-bottom: -2px;
-}
-
-#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow {
-       display: none;
-}
-
-#wpcontent #adminmenu .wp-submenu li.wp-submenu-head {
-       padding: 3px 4px 4px 10px;
-       zoom: 100%;
-}
-
-.js.folded #adminmenu .menu-top {
-       height: 30px;
-}
-
-.js.folded #adminmenu .wp-submenu {
-       margin: -1px 0 0 0;
-}
-
-.js.folded #adminmenu li.menu-top {
-       display: block;
-       zoom: 100%;
-}
-
-ul#adminmenu {
-       z-index: 99;
-}
-
-#adminmenu li.menu-top a.menu-top {
-       min-width: auto;
-       width: auto;
-}
-
-#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu {
-       font-style: normal;
-}
-
-#wpcontent #adminmenu .wp-submenu li {
-       padding: 0;
-}
-
-#collapse-menu {
-       line-height: 23px;
-}
-
-#wpadminbar .ab-comments-icon {
-       padding-top: 7px;
-}
-
-table.fixed th,
-table.fixed td {
-       border-top: 1px solid #ddd;
-}
-
-#wpbody-content input.button,
-#wpbody-content input.button-primary,
-#wpbody-content input.button-secondary,
-#wpbody-content input.button-highlighted {
-       overflow: visible;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit #publish {
-       float: none;
-}
-
-#dashboard-widgets h3 a {
-       height: 14px;
-       line-height: 14px;
-}
-
-#dashboard_browser_nag {
-       color: #fff;
-}
-
-#dashboard_browser_nag .browser-icon {
-       position: relative;
-}
-
-.tablenav-pages .current-page {
-       vertical-align: middle;
-}
-
-#wpbody-content .postbox {
-       border: 1px solid #dfdfdf;
-}
-
-#wpbody-content .postbox h3 {
-       margin-bottom: -1px;
-}
-
-.major-publishing-actions,
-.wp-submenu,
-.wp-submenu li,
-.wp-menu-toggle,
-#template,
-#template div,
-#editcat,
-#addcat {
-       zoom: 100%;
-}
-
-.wp-menu-arrow {
-       height: 28px;
-}
-
-.submitbox {
-       margin-top: 10px;
-}
-
-/* Inline Editor */
-#wpbody-content .quick-edit-row-post .inline-edit-col-left {
-       width: 39%;
-}
-
-#wpbody-content .inline-edit-row-post .inline-edit-col-center {
-       width: 19%;
-}
-
-#wpbody-content .quick-edit-row-page .inline-edit-col-left {
-       width: 49%;
-}
-
-#wpbody-content .bulk-edit-row .inline-edit-col-left {
-       width: 29%;
-}
-
-.inline-edit-row p.submit {
-       zoom: 100%;
-}
-
-.inline-edit-row fieldset label span.title {
-       display: block;
-       float: left;
-       width: 5em;
-}
-
-.inline-edit-row fieldset label span.input-text-wrap {
-       margin-left: 0;
-       zoom: 100%;
-}
-
-#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input {
-       line-height: 130%;
-}
-
-#wpbody-content .inline-edit-row .input-text-wrap input {
-       width: 95%;
-}
-
-#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input {
-       width: 8em;
-}
-/* end Inline Editor */
-
-#titlediv #title {
-       width: 98%;
-}
-
-a.button {
-       line-height: 1.4em;
-       margin: 1px;
-       padding: 2px 6px;
-}
-
-#screen-options-wrap {
-       overflow: hidden;
-}
-
-#the-comment-list .comment-item,
-#post-status-info,
-#wpwrap,
-#wrap,
-#postdivrich,
-#postdiv,
-#poststuff,
-.metabox-holder,
-#titlediv,
-#post-body,
-#editorcontainer,
-.tablenav,
-.widget-liquid-left,
-.widget-liquid-right,
-#widgets-left,
-.widgets-sortables,
-#dragHelper,
-.widget .widget-top,
-.widget,
-.widget-control-actions,
-.tagchecklist,
-#col-container,
-#col-left,
-#col-right,
-.fileedit-sub {
-       display: block;
-       zoom: 100%;
-}
-
-p.search-box {
-       position: static;
-       float: right;
-       margin: -3px 0 4px;
-}
-
-
-#editorcontainer #content {
-       overflow: auto;
-       margin: auto;
-       width: 98%;
-}
-
-form#template div {
-       width: 100%;
-}
-
-.wp-editor-container .quicktags-toolbar input {
-       overflow: visible;
-       padding: 0 4px;
-}
-
-#poststuff h2 {
-       font-size: 1.6em;
-}
-
-#bh {
-       margin: 7px 10px 0 0;
-       float: right;
-}
-
-/* without this dashboard widgets appear in one column for some screen widths */
-div#dashboard-widgets {
-       padding-right: 1px;
-}
-
-.tagchecklist span, .tagchecklist span a {
-       display: inline-block;
-       display: block;
-}
-
-.tagchecklist span a {
-       margin: 4px 0 0 -9px;
-}
-
-.tablenav .button-secondary,
-.nav .button-secondary {
-       padding-top: 2px;
-       padding-bottom: 2px;
-}
-
-.tablenav select {
-       font-size: 13px;
-       display: inline-block;
-       vertical-align: top;
-       margin-top: 2px;
-}
-
-.tablenav .actions select {
-       width: 155px;
-}
-
-table.ie-fixed {
-       table-layout: fixed;
-}
-
-.widefat tr, .widefat th {
-       margin-bottom: 0;
-       border-spacing: 0;
-}
-
-.widefat th input {
-       margin: 0 0 0 5px;
-}
-
-.widefat .check-column {
-       padding: 6px 0 2px;
-}
-
-.widefat tbody th.check-column {
-       padding: 4px 0 22px;
-}
-
-.widefat {
-       empty-cells: show;
-       border-collapse: collapse;
-}
-
-.tablenav a.button-secondary {
-       display: inline-block;
-       padding: 2px 5px;
-}
-
-.inactive-sidebar .widgets-sortables {
-       padding-bottom: 8px;
-}
-
-#available-widgets .widget-holder {
-       padding-bottom: 65px;
-}
-
-#widgets-left .inactive {
-       padding-bottom: 10px;
-}
-
-.widget-liquid-right .widget,
-.inactive-sidebar .widget {
-       position: relative;
-}
-
-#wpcontent .button-primary-disabled {
-       color: #9FD0D5;
-       background: #298CBA;
-}
-
-#wpcontent #ajax-loading,
-#wpcontent .ajax-loading {
-       vertical-align: baseline;
-}
-
-#the-comment-list .unapproved tr,
-#the-comment-list .unapproved td {
-       background-color: #ffffe0;
-}
-
-.imgedit-submit {
-       width: 300px;
-}
-
-#nav-menus-frame,
-#wpbody,
-.menu li {
-       zoom: 100%;
-}
-
-#update-nav-menu #post-body {
-       overflow:hidden;
-}
-
-.menu li {
-       min-width: 100%;
-}
-
-.menu li.sortable-placeholder {
-       min-width: 400px;
-}
-
-.about-wrap img.element-screenshot {
-       padding: 2px;
-}
-
-.about-wrap .feature-section img,
-.about-wrap .feature-section .image-mask {
-       border-width: 1px;
-       border-style: solid;
-}
-
-.about-wrap .feature-section.three-col img {
-       margin-left: 0;
-}
-
-.available-theme {
-       display: inline;
-}
-
-.available-theme ul {
-       margin: 0;
-}
-
-.about-wrap .three-col-images img {
-       margin: 0 0.6% 10px;
-}
-
-.about-wrap .three-col-images .last-feature,
-.about-wrap .three-col-images .first-feature {
-       float: none;
-}
-
-/* IE6 leftovers */
-* html .row-actions {
-       visibility: visible;
-}
-
-* html div.widget-liquid-left,
-* html div.widget-liquid-right {
-       display: block;
-       position: relative;
-}
-
-* html #editorcontainer {
-       padding: 0;
-}
-
-* html #poststuff h2 {
-       margin-left: 0;
-}
-
-* html .stuffbox,
-* html .stuffbox input,
-* html .stuffbox textarea {
-       border: 1px solid #DFDFDF;
-}
-
-* html .feature-filter .feature-group li {
-       width: 145px;
-}
-
-* html .widget-top .widget-title-action a {
-       background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px;
-}
-
-* html div.widget-liquid-left {
-       width: 99%;
-}
-
-* html .widgets-sortables {
-       height: 50px;
-}
-
-* html a#content_resize {
-       right: -2px;
-}
-
-* html .widget-title h4 {
-       width: 205px;
-}
-
-* html #removing-widget .in-widget-title {
-       display: none;
-}
-
-* html .media-item .pinkynail {
-       height: 32px;
-       width: 40px;
-}
-
-* html .describe .field input.text,
-* html .describe .field textarea {
-       width: 440px;
-}
-
-* html input {
-       border: 1px solid #dfdfdf;
-}
-
-* html .meta-box-sortables .postbox .handlediv {
-       background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px;
-}
-
-* html .edit-box {
-       display: inline;
-}
-
-* html .postbox-container .meta-box-sortables {
-       height: 300px;
-}
-
-* html #wpbody-content #screen-options-link-wrap {
-       display: inline-block;
-       width: 150px;
-       text-align: center;
-}
-
-* html #wpbody-content #contextual-help-link-wrap {
-       display: inline-block;
-       width: 100px;
-       text-align: center;
-}
-
-* html #adminmenu {
-       margin-left: -80px;
-}
-
-* html .folded #adminmenu {
-       margin-left: -22px;
-}
-
-* html #wpcontent #adminmenu li.menu-top {
-       display: inline;
-       padding: 0;
-       margin: 0;
-}
-
-* html #footer {
-       margin: 0;
-}
-
-* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle {
-       background: none;
-}
-
-* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle {
-       background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;
-}
-
-* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle {
-       background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px;
-}
-
-* html #adminmenu div.wp-menu-image {
-       height: 29px;
-}
diff --git a/wp-admin/css/ie.min.css b/wp-admin/css/ie.min.css
new file mode 100644 (file)
index 0000000..c3833e2
--- /dev/null
@@ -0,0 +1 @@
+#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #adminmenu .wp-submenu{border-top-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,#template,#template div,#editcat,#addcat{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.button,input[type="reset"],input[type="button"],input[type="submit"]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type="reset"].button-large,input[type="button"].button-large,input[type="submit"].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type="reset"].button-small,input[type="button"].button-small,input[type="submit"].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#widget-list .widget,.feature-filter .feature-group li{display:inline}.feature-filter .feature-group li input{vertical-align:middle}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#poststuff .inside #parent_id,#poststuff .inside #page_template,.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{width:250px}#submitdiv input,#submitdiv select,#submitdiv a.button{position:relative}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}table.ie-fixed{table-layout:fixed}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat thead .check-column,.widefat tfoot .check-column{padding-top:6px}.widefat tbody th.check-column,.media.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #dfdfdf}* html .feature-filter .feature-group li{width:145px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
index 184969b07c028619f052771e6d6b4ddd9b884fd6..1b33764ab2c8642015e46223c4e95cdfc651c0b2 100644 (file)
@@ -1 +1,261 @@
-html{background:#f9f9f9}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;padding:1em 2em;-webkit-border-radius:3px;border-radius:3px;border:1px solid #dfdfdf;max-width:700px}a{color:#21759b;text-decoration:none}a:hover{color:#d54e21}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}h2{font-size:16px}p,li,dd,dt{padding-bottom:2px;font-size:14px;line-height:1.5}code,.code{font-size:14px}ul,ol,dl{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}#logo{margin:6px 0 14px 0;border-bottom:0;text-align:center}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.submit input,.button,.button-secondary{font-family:sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}textarea{border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;width:695px}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;border-bottom:8px solid #fff;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:16px 20px 10px 0;border-bottom:8px solid #fff;width:140px;vertical-align:top}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:2px;border:1px #dfdfdf solid;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif}.form-table input[type=text],.form-table input[type=password]{width:206px}.form-table th p{font-weight:normal}.form-table.install-success td{vertical-align:middle;padding:16px 20px 10px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 0;padding:5px;text-align:center;width:200px;display:none}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0}body.rtl{font-family:Tahoma,arial}.rtl h1{font-family:arial;margin:5px -4px 0 0}.rtl ul,.rtl ol{padding:5px 22px 5px 5px}.rtl .step,.rtl th,.rtl .form-table th{text-align:right}.rtl .submit input,.rtl .button,.rtl .button-secondary{margin-right:0}.rtl #dbname,.rtl #uname,.rtl #pwd,.rtl #dbhost,.rtl #prefix,.rtl #user_login,.rtl #admin_email,.rtl #pass1,.rtl #pass2{direction:ltr}
\ No newline at end of file
+html {
+       background: #f9f9f9;
+}
+
+body {
+       background: #fff;
+       color: #333;
+       font-family: sans-serif;
+       margin: 2em auto;
+       padding: 1em 2em;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       border: 1px solid #dfdfdf;
+       max-width: 700px;
+}
+
+a {
+       color: #21759b;
+       text-decoration: none;
+}
+
+a:hover {
+       color: #d54e21;
+}
+
+h1 {
+       border-bottom: 1px solid #dadada;
+       clear: both;
+       color: #666;
+       font: 24px Georgia, "Times New Roman", Times, serif;
+       margin: 30px 0 0 0;
+       padding: 0;
+       padding-bottom: 7px;
+}
+
+h2 {
+       font-size: 16px;
+}
+
+p, li, dd, dt {
+       padding-bottom: 2px;
+       font-size: 14px;
+       line-height: 1.5;
+}
+
+code, .code {
+       font-size: 14px;
+}
+
+ul, ol, dl {
+       padding: 5px 5px 5px 22px;
+}
+
+a img {
+       border:0
+}
+abbr {
+       border: 0;
+       font-variant: normal;
+}
+#logo {
+       margin: 6px 0 14px 0;
+       border-bottom: none;
+       text-align:center
+}
+#logo a {
+       background-image: url('../images/wordpress-logo.png?ver=20120216');
+       background-size: 274px 63px;
+       background-position: top center;
+       background-repeat: no-repeat;
+       height: 67px;
+       text-indent: -9999px;
+       outline: none;
+       overflow: hidden;
+       display: block;
+}
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       #logo a {
+               background-image: url('../images/wordpress-logo-2x.png?ver=20120412');
+               background-size: 274px 63px;
+       }
+}
+.step {
+       margin: 20px 0 15px;
+}
+.step, th {
+       text-align: left;
+       padding: 0;
+}
+.step .button-large {
+       font-size: 14px;
+}
+textarea {
+       border: 1px solid #dfdfdf;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       font-family: sans-serif;
+       width:  695px;
+}
+
+.form-table {
+       border-collapse: collapse;
+       margin-top: 1em;
+       width: 100%;
+}
+
+.form-table td {
+       margin-bottom: 9px;
+       padding: 10px 20px 10px 0;
+       border-bottom: 8px solid #fff;
+       font-size: 14px;
+       vertical-align: top
+}
+
+.form-table th {
+       font-size: 14px;
+       text-align: left;
+       padding: 16px 20px 10px 0;
+       border-bottom: 8px solid #fff;
+       width: 140px;
+       vertical-align: top;
+}
+
+.form-table code {
+       line-height: 18px;
+       font-size: 14px;
+}
+
+.form-table p {
+       margin: 4px 0 0 0;
+       font-size: 11px;
+}
+
+.form-table input {
+       line-height: 20px;
+       font-size: 15px;
+       padding: 2px;
+       border: 1px #dfdfdf solid;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       font-family: sans-serif;
+}
+
+.form-table input[type=text],
+.form-table input[type=password] {
+       width: 206px;
+}
+
+.form-table th p {
+       font-weight: normal;
+}
+
+.form-table.install-success td {
+       vertical-align: middle;
+       padding: 16px 20px 10px 0;
+}
+
+.form-table.install-success td p {
+       margin: 0;
+       font-size: 14px;
+}
+
+.form-table.install-success td code {
+       margin: 0;
+       font-size: 18px;
+}
+
+#error-page {
+       margin-top: 50px;
+}
+
+#error-page p {
+       font-size: 14px;
+       line-height: 18px;
+       margin: 25px 0 20px;
+}
+
+#error-page code, .code {
+       font-family: Consolas, Monaco, monospace;
+}
+
+#pass-strength-result {
+       background-color: #eee;
+       border-color: #ddd !important;
+       border-style: solid;
+       border-width: 1px;
+       margin: 5px 5px 5px 0;
+       padding: 5px;
+       text-align: center;
+       width: 200px;
+       display: none;
+}
+
+#pass-strength-result.bad {
+       background-color: #ffb78c;
+       border-color: #ff853c !important;
+}
+
+#pass-strength-result.good {
+       background-color: #ffec8b;
+       border-color: #ffcc00 !important;
+}
+
+#pass-strength-result.short {
+       background-color: #ffa0a0;
+       border-color: #f04040 !important;
+}
+
+#pass-strength-result.strong {
+       background-color: #c3ff88;
+       border-color: #8dff1c !important;
+}
+
+.message {
+       border: 1px solid #e6db55;
+       padding: 0.3em 0.6em;
+       margin: 5px 0 15px;
+       background-color: #ffffe0;
+}
+
+/* install-rtl */
+body.rtl {
+       font-family: Tahoma, arial;
+}
+
+.rtl h1 {
+       font-family: arial;
+       margin: 5px -4px 0 0;
+}
+
+.rtl ul,
+.rtl ol {
+       padding: 5px 22px 5px 5px;
+}
+
+.rtl .step,
+.rtl th,
+.rtl .form-table th {
+       text-align: right;
+}
+
+.rtl .submit input,
+.rtl .button,
+.rtl .button-secondary {
+       margin-right: 0;
+}
+
+.rtl #dbname,
+.rtl #uname,
+.rtl #pwd,
+.rtl #dbhost,
+.rtl #prefix,
+.rtl #user_login,
+.rtl #admin_email,
+.rtl #pass1,
+.rtl #pass2 {
+       direction: ltr;
+}
diff --git a/wp-admin/css/install.dev.css b/wp-admin/css/install.dev.css
deleted file mode 100644 (file)
index d77260a..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-html {
-       background: #f9f9f9;
-}
-
-body {
-       background: #fff;
-       color: #333;
-       font-family: sans-serif;
-       margin: 2em auto;
-       padding: 1em 2em;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       border: 1px solid #dfdfdf;
-       max-width: 700px;
-}
-
-a {
-       color: #21759B;
-       text-decoration: none;
-}
-
-a:hover {
-       color: #D54E21;
-}
-
-h1 {
-       border-bottom: 1px solid #dadada;
-       clear: both;
-       color: #666;
-       font: 24px Georgia, "Times New Roman", Times, serif;
-       margin: 30px 0 0 0;
-       padding: 0;
-       padding-bottom: 7px;
-}
-
-h2 {
-       font-size: 16px;
-}
-
-p, li, dd, dt {
-       padding-bottom: 2px;
-       font-size: 14px;
-       line-height: 1.5;
-}
-
-code, .code {
-       font-size: 14px;
-}
-
-ul, ol, dl {
-       padding: 5px 5px 5px 22px;
-}
-
-a img {
-       border:0
-}
-abbr {
-       border: 0;
-       font-variant: normal;
-}
-#logo {
-       margin: 6px 0 14px 0;
-       border-bottom: none;
-       text-align:center
-}
-.step {
-       margin: 20px 0 15px;
-}
-.step, th {
-       text-align: left;
-       padding: 0;
-}
-
-.submit input, .button, .button-secondary {
-       font-family: sans-serif;
-       text-decoration: none;
-       font-size: 14px !important;
-       line-height: 16px;
-       padding: 6px 12px;
-       cursor: pointer;
-       border: 1px solid #bbb;
-       color: #464646;
-       -webkit-border-radius: 15px;
-       border-radius: 15px;
-       -moz-box-sizing: content-box;
-       -webkit-box-sizing: content-box;
-       box-sizing: content-box;
-}
-
-.button:hover, .button-secondary:hover, .submit input:hover {
-       color: #000;
-       border-color: #666;
-}
-
-.button, .submit input, .button-secondary {
-       background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
-}
-
-.button:active, .submit input:active, .button-secondary:active {
-       background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
-}
-
-textarea {
-       border: 1px solid #dfdfdf;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       font-family: sans-serif;
-       width:  695px;
-}
-
-.form-table {
-       border-collapse: collapse;
-       margin-top: 1em;
-       width: 100%;
-}
-
-.form-table td {
-       margin-bottom: 9px;
-       padding: 10px 20px 10px 0;
-       border-bottom: 8px solid #fff;
-       font-size: 14px;
-       vertical-align: top
-}
-
-.form-table th {
-       font-size: 14px;
-       text-align: left;
-       padding: 16px 20px 10px 0;
-       border-bottom: 8px solid #fff;
-       width: 140px;
-       vertical-align: top;
-}
-
-.form-table code {
-       line-height: 18px;
-       font-size: 14px;
-}
-
-.form-table p {
-       margin: 4px 0 0 0;
-       font-size: 11px;
-}
-
-.form-table input {
-       line-height: 20px;
-       font-size: 15px;
-       padding: 2px;
-       border: 1px #DFDFDF solid;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       font-family: sans-serif;
-}
-
-.form-table input[type=text],
-.form-table input[type=password] {
-       width: 206px;
-}
-
-.form-table th p {
-       font-weight: normal;
-}
-
-.form-table.install-success td {
-       vertical-align: middle;
-       padding: 16px 20px 10px 0;
-}
-
-.form-table.install-success td p {
-       margin: 0;
-       font-size: 14px;
-}
-
-.form-table.install-success td code {
-       margin: 0;
-       font-size: 18px;
-}
-
-#error-page {
-       margin-top: 50px;
-}
-
-#error-page p {
-       font-size: 14px;
-       line-height: 18px;
-       margin: 25px 0 20px;
-}
-
-#error-page code, .code {
-       font-family: Consolas, Monaco, monospace;
-}
-
-#pass-strength-result {
-       background-color: #eee;
-       border-color: #ddd !important;
-       border-style: solid;
-       border-width: 1px;
-       margin: 5px 5px 5px 0;
-       padding: 5px;
-       text-align: center;
-       width: 200px;
-       display: none;
-}
-
-#pass-strength-result.bad {
-       background-color: #ffb78c;
-       border-color: #ff853c !important;
-}
-
-#pass-strength-result.good {
-       background-color: #ffec8b;
-       border-color: #ffcc00 !important;
-}
-
-#pass-strength-result.short {
-       background-color: #ffa0a0;
-       border-color: #f04040 !important;
-}
-
-#pass-strength-result.strong {
-       background-color: #c3ff88;
-       border-color: #8dff1c !important;
-}
-
-.message {
-       border: 1px solid #e6db55;
-       padding: 0.3em 0.6em;
-       margin: 5px 0 15px;
-       background-color: #ffffe0;
-}
-
-/* install-rtl */
-body.rtl {
-       font-family: Tahoma, arial;
-}
-
-.rtl h1 {
-       font-family: arial;
-       margin: 5px -4px 0 0;
-}
-
-.rtl ul,
-.rtl ol {
-       padding: 5px 22px 5px 5px;
-}
-
-.rtl .step,
-.rtl th,
-.rtl .form-table th {
-       text-align: right;
-}
-
-.rtl .submit input,
-.rtl .button,
-.rtl .button-secondary {
-       margin-right: 0;
-}
-
-.rtl #dbname,
-.rtl #uname,
-.rtl #pwd,
-.rtl #dbhost,
-.rtl #prefix,
-.rtl #user_login,
-.rtl #admin_email,
-.rtl #pass1,
-.rtl #pass2 {
-       direction: ltr;
-}
diff --git a/wp-admin/css/install.min.css b/wp-admin/css/install.min.css
new file mode 100644 (file)
index 0000000..062e10e
--- /dev/null
@@ -0,0 +1 @@
+html{background:#f9f9f9}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;padding:1em 2em;-webkit-border-radius:3px;border-radius:3px;border:1px solid #dfdfdf;max-width:700px}a{color:#21759b;text-decoration:none}a:hover{color:#d54e21}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}h2{font-size:16px}p,li,dd,dt{padding-bottom:2px;font-size:14px;line-height:1.5}code,.code{font-size:14px}ul,ol,dl{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}#logo{margin:6px 0 14px 0;border-bottom:0;text-align:center}#logo a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;height:67px;text-indent:-9999px;outline:0;overflow:hidden;display:block}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#logo a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.step .button-large{font-size:14px}textarea{border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;width:695px}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;border-bottom:8px solid #fff;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:16px 20px 10px 0;border-bottom:8px solid #fff;width:140px;vertical-align:top}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:2px;border:1px #dfdfdf solid;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif}.form-table input[type=text],.form-table input[type=password]{width:206px}.form-table th p{font-weight:normal}.form-table.install-success td{vertical-align:middle;padding:16px 20px 10px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 0;padding:5px;text-align:center;width:200px;display:none}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0}body.rtl{font-family:Tahoma,arial}.rtl h1{font-family:arial;margin:5px -4px 0 0}.rtl ul,.rtl ol{padding:5px 22px 5px 5px}.rtl .step,.rtl th,.rtl .form-table th{text-align:right}.rtl .submit input,.rtl .button,.rtl .button-secondary{margin-right:0}.rtl #dbname,.rtl #uname,.rtl #pwd,.rtl #dbhost,.rtl #prefix,.rtl #user_login,.rtl #admin_email,.rtl #pass1,.rtl #pass2{direction:ltr}
\ No newline at end of file
index 5f51b606b5fb8eb4cc512e88897ec6e877535a76..0c3ccb3cac8a5d8b0a84c431062f3885931e26cb 100644 (file)
@@ -1 +1,71 @@
-body#media-upload ul#sidemenu{left:auto;right:0}#search-filter{text-align:left}.align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right}tr.image-size label{margin:0 5px 0 0}.file-error{margin:0 50px 5px 0}.progress{left:auto;right:0}.describe td{padding:0 0 0 5px}#media-upload .describe th.label{text-align:right}.menu_order{float:left}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial}#gallery-settings #basic th.label{padding:5px 0 5px 5px}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial}#gallery-settings .describe th.label{text-align:right}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#sort-buttons{margin:3px 0 -8px 25px;text-align:left}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px}#sort-buttons span{margin-right:0;margin-left:25px}
\ No newline at end of file
+body#media-upload ul#sidemenu {
+       left: auto;
+       right: 0;
+}
+#search-filter {
+       text-align: left;
+}
+/* specific to the image upload form */
+.align .field label {
+       padding: 0 23px 0 0;
+       margin: 0 3px 0 1em;
+}
+.image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label {
+       background-position: center right;
+}
+tr.image-size label {
+       margin: 0 5px 0 0;
+}
+.file-error {
+       margin: 0 50px 5px 0;
+}
+.progress {
+       left: auto;
+       right: 0;
+}
+.describe td {
+       padding: 0 0 0 5px;
+}
+
+/* Specific to Uploader */
+#media-upload .describe th.label {
+       text-align: right;
+}
+.menu_order {
+       float: left;
+}
+.media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help {
+       font-family: Tahoma, Arial;
+}
+#gallery-settings #basic th.label {
+       padding: 5px 0 5px 5px;
+}
+#gallery-settings .title, h3.media-title {
+       font-family: Tahoma, Arial;
+}
+#gallery-settings .describe th.label {
+       text-align: right;
+}
+#gallery-settings label,
+#gallery-settings legend {
+       margin-right: 0;
+       margin-left: 15px;
+}
+#gallery-settings .align .field label {
+       margin: 0 3px 0 1em;
+}
+#sort-buttons {
+       margin: 3px 0 -8px 25px;
+       text-align: left;
+}
+
+#sort-buttons #asc,
+#sort-buttons #showall {
+       padding-left: 0;
+       padding-right: 5px;
+}
+
+#sort-buttons span {
+       margin-right: 0;
+       margin-left: 25px;
+}
diff --git a/wp-admin/css/media-rtl.dev.css b/wp-admin/css/media-rtl.dev.css
deleted file mode 100644 (file)
index 0c3ccb3..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-body#media-upload ul#sidemenu {
-       left: auto;
-       right: 0;
-}
-#search-filter {
-       text-align: left;
-}
-/* specific to the image upload form */
-.align .field label {
-       padding: 0 23px 0 0;
-       margin: 0 3px 0 1em;
-}
-.image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label {
-       background-position: center right;
-}
-tr.image-size label {
-       margin: 0 5px 0 0;
-}
-.file-error {
-       margin: 0 50px 5px 0;
-}
-.progress {
-       left: auto;
-       right: 0;
-}
-.describe td {
-       padding: 0 0 0 5px;
-}
-
-/* Specific to Uploader */
-#media-upload .describe th.label {
-       text-align: right;
-}
-.menu_order {
-       float: left;
-}
-.media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help {
-       font-family: Tahoma, Arial;
-}
-#gallery-settings #basic th.label {
-       padding: 5px 0 5px 5px;
-}
-#gallery-settings .title, h3.media-title {
-       font-family: Tahoma, Arial;
-}
-#gallery-settings .describe th.label {
-       text-align: right;
-}
-#gallery-settings label,
-#gallery-settings legend {
-       margin-right: 0;
-       margin-left: 15px;
-}
-#gallery-settings .align .field label {
-       margin: 0 3px 0 1em;
-}
-#sort-buttons {
-       margin: 3px 0 -8px 25px;
-       text-align: left;
-}
-
-#sort-buttons #asc,
-#sort-buttons #showall {
-       padding-left: 0;
-       padding-right: 5px;
-}
-
-#sort-buttons span {
-       margin-right: 0;
-       margin-left: 25px;
-}
diff --git a/wp-admin/css/media-rtl.min.css b/wp-admin/css/media-rtl.min.css
new file mode 100644 (file)
index 0000000..5f51b60
--- /dev/null
@@ -0,0 +1 @@
+body#media-upload ul#sidemenu{left:auto;right:0}#search-filter{text-align:left}.align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right}tr.image-size label{margin:0 5px 0 0}.file-error{margin:0 50px 5px 0}.progress{left:auto;right:0}.describe td{padding:0 0 0 5px}#media-upload .describe th.label{text-align:right}.menu_order{float:left}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial}#gallery-settings #basic th.label{padding:5px 0 5px 5px}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial}#gallery-settings .describe th.label{text-align:right}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#sort-buttons{margin:3px 0 -8px 25px;text-align:left}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px}#sort-buttons span{margin-right:0;margin-left:25px}
\ No newline at end of file
index 272ce3b254d6abc2f7dbd5faee2c63c0dd40c7fb..85adbf3066ec9593287767ccf3c1ddd0cb898702 100644 (file)
@@ -1 +1,353 @@
-div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden}form{margin:1em}#search-filter{text-align:right}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:0;text-align:justify;margin:0 0 1em 0;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required{text-decoration:none;border:0}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:right;font-size:11px;margin:10px 10px 0}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60)}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-items a.delete{display:block;float:right}#media-upload .widefat{width:626px;border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 5px 5px 0}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dadada}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dadada;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5a5a5a}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:left}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{margin:1em}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}
\ No newline at end of file
+/* Styles for the media library iframe (not used on the Library screen) */
+
+div#media-upload-header {
+       margin: 0;
+       padding: 5px 5px 0;
+       font-weight: bold;
+       position: relative;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+body#media-upload ul#sidemenu {
+       font-weight: normal;
+       margin: 0 5px;
+       left: 0;
+       bottom: -1px;
+       float: none;
+       overflow: hidden;
+}
+
+form {
+       margin: 1em;
+}
+
+#search-filter {
+       text-align: right;
+}
+
+th {
+       position: relative;
+}
+
+.media-upload-form label.form-help, td.help {
+       font-family: sans-serif;
+       font-style: italic;
+       font-weight: normal;
+}
+
+.media-upload-form p.help {
+       margin: 0;
+       padding: 0;
+}
+
+.media-upload-form fieldset {
+       width: 100%;
+       border: none;
+       text-align: justify;
+       margin: 0 0 1em 0;
+       padding: 0;
+}
+
+/* specific to the image upload form */
+
+.image-align-none-label {
+       background: url(../images/align-none.png) no-repeat center left;
+}
+
+.image-align-left-label {
+       background: url(../images/align-left.png) no-repeat center left;
+}
+
+.image-align-center-label {
+       background: url(../images/align-center.png) no-repeat center left;
+}
+
+.image-align-right-label {
+       background: url(../images/align-right.png) no-repeat center left;
+}
+
+tr.image-size td {
+       width: 460px;
+}
+
+tr.image-size div.image-size-item {
+       margin: 0 0 5px;
+}
+
+#library-form .progress,
+#gallery-form .progress,
+.insert-gallery,
+.describe.startopen,
+.describe.startclosed {
+       display: none;
+}
+
+.media-item .thumbnail {
+       max-width: 128px;
+       max-height: 128px;
+}
+
+thead.media-item-info tr {
+       background-color: transparent;
+}
+
+.form-table thead.media-item-info {
+       border: 8px solid #fff;
+}
+
+abbr.required {
+       text-decoration: none;
+       border: none;
+}
+
+.describe label {
+       display: inline;
+}
+
+.describe td.error {
+       padding: 2px 8px;
+}
+
+.describe td.A1 {
+       width: 132px;
+}
+
+.describe input[type="text"],
+.describe textarea {
+       width: 460px;
+       border-width: 1px;
+       border-style: solid;
+}
+
+/* Specific to Uploader */
+
+#media-upload p.ml-submit {
+       padding: 1em 0;
+}
+
+#media-upload p.help,
+#media-upload label.help {
+       font-family: sans-serif;
+       font-style: italic;
+       font-weight: normal;
+}
+
+#media-upload .ui-sortable .media-item {
+       cursor: move;
+}
+
+#media-upload tr.image-size {
+       margin-bottom: 1em;
+       height: 3em;
+}
+
+#media-upload #filter {
+       width: 623px;
+}
+
+#media-upload #filter .subsubsub {
+       margin: 8px 0;
+}
+
+#filter .tablenav select {
+       border-style: solid;
+       border-width: 1px;
+       padding: 2px;
+       vertical-align: top;
+       width: auto;
+}
+
+#media-upload .del-attachment {
+       display: none;
+       margin: 5px 0;
+}
+
+.menu_order {
+       float: right;
+       font-size: 11px;
+       margin: 10px 10px 0;
+}
+
+.menu_order_input {
+       border: 1px solid #ddd;
+       font-size: 10px;
+       padding: 1px;
+       width: 23px;
+}
+
+.ui-sortable-helper {
+       background-color: #fff;
+       border: 1px solid #aaa;
+       opacity: 0.6;
+       filter: alpha(opacity=60);
+}
+
+#media-upload th.order-head {
+       width: 20%;
+       text-align: center;
+}
+
+#media-upload th.actions-head {
+       width: 25%;
+       text-align: center;
+}
+
+#media-upload a.wp-post-thumbnail {
+       margin: 0 20px;
+}
+
+#media-upload .widefat {
+       width: 626px;
+       border-style: solid solid none;
+}
+
+.sorthelper {
+       height: 37px;
+       width: 623px;
+       display: block;
+}
+
+#gallery-settings th.label {
+       width: 160px;
+}
+
+#gallery-settings #basic th.label {
+       padding: 5px 5px 5px 0;
+}
+
+#gallery-settings .title {
+       clear: both;
+       padding: 0 0 3px;
+       font-size: 1.6em;
+       border-bottom: 1px solid #DADADA;
+}
+
+h3.media-title  {
+       font-size: 1.6em;
+}
+
+h4.media-sub-title  {
+       border-bottom: 1px solid #DADADA;
+       font-size: 1.3em;
+       margin: 12px;
+       padding: 0 0 3px;
+}
+
+#gallery-settings .title,
+h3.media-title,
+h4.media-sub-title {
+       font-family: Georgia,"Times New Roman",Times,serif;
+       font-weight: normal;
+       color: #5A5A5A;
+}
+
+#gallery-settings .describe td {
+       vertical-align: middle;
+       height: 3em;
+}
+
+#gallery-settings .describe th.label {
+       padding-top: .5em;
+       text-align: left;
+}
+
+#gallery-settings .describe {
+       padding: 5px;
+       width: 615px;
+       clear: both;
+       cursor: default;
+}
+
+#gallery-settings .describe select {
+       width: 15em;
+}
+
+#gallery-settings .describe select option,
+#gallery-settings .describe td {
+       padding: 0;
+}
+
+#gallery-settings label,
+#gallery-settings legend {
+       font-size: 13px;
+       color: #464646;
+       margin-right: 15px;
+}
+
+#gallery-settings .align .field label {
+       margin: 0 1em 0 3px;
+}
+
+#gallery-settings p.ml-submit {
+       border-top: 1px solid #dfdfdf;
+}
+
+#gallery-settings select#columns {
+       width: 6em;
+}
+
+#sort-buttons {
+       font-size: 0.8em;
+       margin: 3px 25px -8px 0;
+       text-align: right;
+       max-width: 625px;
+}
+
+#sort-buttons a {
+       text-decoration: none;
+}
+
+#sort-buttons #asc,
+#sort-buttons #showall {
+       padding-left: 5px;
+}
+
+#sort-buttons span {
+       margin-right: 25px;
+}
+
+p.media-types {
+       margin: 1em;
+}
+
+tr.not-image {
+       display: none;
+}
+
+table.not-image tr.not-image {
+       display: table-row;
+}
+
+table.not-image tr.image-only {
+       display: none;
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+
+       .image-align-none-label {
+               background-image: url("../images/align-none-2x.png?ver=20120916");
+               background-size: 21px 15px;
+       }
+
+       .image-align-left-label {
+               background-image: url("../images/align-left-2x.png?ver=20120916");
+               background-size: 22px 15px;
+       }
+
+       .image-align-center-label {
+               background-image: url("../images/align-center-2x.png?ver=20120916");
+               background-size: 21px 15px;
+       }
+
+       .image-align-right-label {
+               background-image: url("../images/align-right-2x.png?ver=20120916");
+               background-size: 22px 15px;
+       }
+}
diff --git a/wp-admin/css/media.dev.css b/wp-admin/css/media.dev.css
deleted file mode 100644 (file)
index 24b163e..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/* Styles for the media library iframe (not used on the Library screen) */
-
-div#media-upload-header {
-       margin: 0;
-       padding: 5px 5px 0;
-       font-weight: bold;
-       position: relative;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-}
-
-body#media-upload ul#sidemenu {
-       font-weight: normal;
-       margin: 0 5px;
-       left: 0;
-       bottom: -1px;
-       float: none;
-       overflow: hidden;
-}
-
-form {
-       margin: 1em;
-}
-
-#search-filter {
-       text-align: right;
-}
-
-th {
-       position: relative;
-}
-
-.media-upload-form label.form-help, td.help {
-       font-family: sans-serif;
-       font-style: italic;
-       font-weight: normal;
-}
-
-.media-upload-form p.help {
-       margin: 0;
-       padding: 0;
-}
-
-.media-upload-form fieldset {
-       width: 100%;
-       border: none;
-       text-align: justify;
-       margin: 0 0 1em 0;
-       padding: 0;
-}
-
-/* specific to the image upload form */
-
-.image-align-none-label {
-       background: url(../images/align-none.png) no-repeat center left;
-}
-
-.image-align-left-label {
-       background: url(../images/align-left.png) no-repeat center left;
-}
-
-.image-align-center-label {
-       background: url(../images/align-center.png) no-repeat center left;
-}
-
-.image-align-right-label {
-       background: url(../images/align-right.png) no-repeat center left;
-}
-
-tr.image-size td {
-       width: 460px;
-}
-
-tr.image-size div.image-size-item {
-       margin: 0 0 5px;
-}
-
-#library-form .progress,
-#gallery-form .progress,
-.insert-gallery,
-.describe.startopen,
-.describe.startclosed {
-       display: none;
-}
-
-.media-item .thumbnail {
-       max-width: 128px;
-       max-height: 128px;
-}
-
-thead.media-item-info tr {
-       background-color: transparent;
-}
-
-.form-table thead.media-item-info {
-       border: 8px solid #fff;
-}
-
-abbr.required {
-       text-decoration: none;
-       border: none;
-}
-
-.describe label {
-       display: inline;
-}
-
-.describe td.error {
-       padding: 2px 8px;
-}
-
-.describe td.A1 {
-       width: 132px;
-}
-
-.describe input[type="text"],
-.describe textarea {
-       width: 460px;
-       border-width: 1px;
-       border-style: solid;
-}
-
-/* Specific to Uploader */
-
-#media-upload p.ml-submit {
-       padding: 1em 0;
-}
-
-#media-upload p.help,
-#media-upload label.help {
-       font-family: sans-serif;
-       font-style: italic;
-       font-weight: normal;
-}
-
-#media-upload .ui-sortable .media-item {
-       cursor: move;
-}
-
-#media-upload tr.image-size {
-       margin-bottom: 1em;
-       height: 3em;
-}
-
-#media-upload #filter {
-       width: 623px;
-}
-
-#media-upload #filter .subsubsub {
-       margin: 8px 0;
-}
-
-#filter .tablenav select {
-       border-style: solid;
-       border-width: 1px;
-       padding: 2px;
-       vertical-align: top;
-       width: auto;
-}
-
-#media-upload .del-attachment {
-       display: none;
-       margin: 5px 0;
-}
-
-.menu_order {
-       float: right;
-       font-size: 11px;
-       margin: 10px 10px 0;
-}
-
-.menu_order_input {
-       border: 1px solid #ddd;
-       font-size: 10px;
-       padding: 1px;
-       width: 23px;
-}
-
-.ui-sortable-helper {
-       background-color: #fff;
-       border: 1px solid #aaa;
-       opacity: 0.6;
-       filter: alpha(opacity=60);
-}
-
-#media-upload th.order-head {
-       width: 20%;
-       text-align: center;
-}
-
-#media-upload th.actions-head {
-       width: 25%;
-       text-align: center;
-}
-
-#media-upload a.wp-post-thumbnail {
-       margin: 0 20px;
-}
-
-#media-items a.delete {
-       display: block;
-       float: right;
-}
-
-#media-upload .widefat {
-       width: 626px;
-       border-style: solid solid none;
-}
-
-.sorthelper {
-       height: 37px;
-       width: 623px;
-       display: block;
-}
-
-#gallery-settings th.label {
-       width: 160px;
-}
-
-#gallery-settings #basic th.label {
-       padding: 5px 5px 5px 0;
-}
-
-#gallery-settings .title {
-       clear: both;
-       padding: 0 0 3px;
-       font-size: 1.6em;
-       border-bottom: 1px solid #DADADA;
-}
-
-h3.media-title  {
-       font-size: 1.6em;
-}
-
-h4.media-sub-title  {
-       border-bottom: 1px solid #DADADA;
-       font-size: 1.3em;
-       margin: 12px;
-       padding: 0 0 3px;
-}
-
-#gallery-settings .title,
-h3.media-title,
-h4.media-sub-title {
-       font-family: Georgia,"Times New Roman",Times,serif;
-       font-weight: normal;
-       color: #5A5A5A;
-}
-
-#gallery-settings .describe td {
-       vertical-align: middle;
-       height: 3em;
-}
-
-#gallery-settings .describe th.label {
-       padding-top: .5em;
-       text-align: left;
-}
-
-#gallery-settings .describe {
-       padding: 5px;
-       width: 615px;
-       clear: both;
-       cursor: default;
-}
-
-#gallery-settings .describe select {
-       width: 15em;
-}
-
-#gallery-settings .describe select option,
-#gallery-settings .describe td {
-       padding: 0;
-}
-
-#gallery-settings label,
-#gallery-settings legend {
-       font-size: 13px;
-       color: #464646;
-       margin-right: 15px;
-}
-
-#gallery-settings .align .field label {
-       margin: 0 1em 0 3px;
-}
-
-#gallery-settings p.ml-submit {
-       border-top: 1px solid #dfdfdf;
-}
-
-#gallery-settings select#columns {
-       width: 6em;
-}
-
-#sort-buttons {
-       font-size: 0.8em;
-       margin: 3px 25px -8px 0;
-       text-align: right;
-       max-width: 625px;
-}
-
-#sort-buttons a {
-       text-decoration: none;
-}
-
-#sort-buttons #asc,
-#sort-buttons #showall {
-       padding-left: 5px;
-}
-
-#sort-buttons span {
-       margin-right: 25px;
-}
-
-p.media-types {
-       margin: 1em;
-}
-
-tr.not-image {
-       display: none;
-}
-
-table.not-image tr.not-image {
-       display: table-row;
-}
-
-table.not-image tr.image-only {
-       display: none;
-}
diff --git a/wp-admin/css/media.min.css b/wp-admin/css/media.min.css
new file mode 100644 (file)
index 0000000..c414cfa
--- /dev/null
@@ -0,0 +1 @@
+div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden}form{margin:1em}#search-filter{text-align:right}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:0;text-align:justify;margin:0 0 1em 0;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required{text-decoration:none;border:0}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:right;font-size:11px;margin:10px 10px 0}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60)}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-upload .widefat{width:626px;border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 5px 5px 0}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dadada}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dadada;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5a5a5a}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:left}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{margin:1em}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url("../images/align-none-2x.png?ver=20120916");background-size:21px 15px}.image-align-left-label{background-image:url("../images/align-left-2x.png?ver=20120916");background-size:22px 15px}.image-align-center-label{background-image:url("../images/align-center-2x.png?ver=20120916");background-size:21px 15px}.image-align-right-label{background-image:url("../images/align-right-2x.png?ver=20120916");background-size:22px 15px}}
\ No newline at end of file
index 7cae6f167b95e40906d1cb6121560f68cba25db0..12dbef6236212c661483a83ca6cdcbb062d5de71 100644 (file)
@@ -1 +1,2641 @@
-ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}.describe .del-link{padding-left:0;padding-right:5px}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 0 8px 8px}#adminmenu div.wp-menu-image{float:right}#adminmenu li li{margin-left:0;margin-right:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.folded #adminmenu li li{margin-left:inherit;margin-right:0}.folded #adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{float:right;padding:5px 2px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 5px 4px}#adminmenu li .wp-submenu-wrap{border-width:1px 0 1px 1px;border-style:solid none solid solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu .wp-submenu ul{border-width:0 1px 0 0}.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px}.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}#adminmenu .wp-menu-toggle{clear:left;float:left;padding:1px 0 0 2px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 0 8px 8px}.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu li li,#adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-submenu ul{border-width:0 1px 0 0}#adminmenu .wp-submenu a{padding-left:0;padding-right:10px}#adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}body #wpcontent{margin-left:0;margin-right:52px}body .wp-admin #footer{margin-left:15px;margin-right:52px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.widefat td p{margin:2px 0 .8em}.postbox-container{float:right}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel .wp-badge{float:right}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:0;margin-right:190px}.welcome-panel .welcome-panel-column{margin:0 -25px 0 5%;padding-left:0;padding-right:25px;float:right}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:auto;padding-right:0;margin-left:0}.welcome-panel h4 .icon16{margin-left:0;margin-right:-32px}.welcome-panel .welcome-panel-column-container{padding:0 25px 0 0}.welcome-panel .welcome-panel-column ul{margin:1.6em 1.3em 1em 1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.sorting-indicator{margin-left:0;margin-right:7px}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv img.waiting{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.imgedit-menu div{float:right}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#footer{margin-left:20px}#wpcontent,#footer{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img{float:left;margin:0 12px 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 12px}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}* html #template div{margin-left:0}.list-ajax-loading{float:left;margin-right:0;margin-left:9px}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay .collapse-sidebar{right:0;left:auto;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #footer{margin-left:15px;margin-right:52px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.screen-reader-text,.screen-reader-text span{left:auto;right:-1000em}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard_quick_press h4{float:right;text-align:left}#dashboard_quick_press .wp-media-buttons{margin:0 5em .5em 0}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}.auto-add-pages{float:right}div.star-holder{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right;float:right}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information h2{margin-right:0;margin-left:200px}#plugin-information .fyi{margin-left:5px;margin-right:20px}#plugin-information .fyi h2{margin-left:0}#plugin-information .fyi ul{padding:10px 7px 10px 5px}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-name{float:right;text-align:left}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row .catshow,.locale-he-il .inline-edit-row .cathide,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il .button-highlighted,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold}
\ No newline at end of file
+/*------------------------------------------------------------------------------
+
+
+Hello, this is the RTL version of the  main WordPress admin CSS file.
+All the important stuff is in here.
+
+
+TABLE OF CONTENTS:
+------------------
+ 1.0 - Text Elements
+ 2.0 - Forms
+ 3.0 - Actions
+ 4.0 - Notifications
+ 5.0 - TinyMCE
+ 6.0 - Admin Header
+       6.1 - Screen Options Tabs
+ 7.0 - Main Navigation
+ 8.0 - Layout Blocks
+ 9.0 - Dashboard
+10.0 - List Posts
+       10.1 - Inline Editing
+11.0 - Write/Edit Post Screen
+       11.1 - Custom Fields
+       11.2 - Post Revisions
+       11.3 - Featured Images
+12.0 - Categories
+13.0 - Tags
+14.0 - Media Screen
+       14.1 - Media Uploader
+       14.2 - Image Editor
+15.0 - Comments Screen
+16.0 - Themes
+       16.1 - Custom Header
+       16.2 - Custom Background
+       16.3 - Tabbed Admin Screen Interface
+17.0 - Plugins
+18.0 - Users
+19.0 - Tools
+20.0 - Settings
+21.0 - Admin Footer
+22.0 - About Pages
+23.0 - Misc
+24.0 - Dead
+25.0 - TinyMCE tweaks
+26.0 - Full Overlay w/ Sidebar
+27.0 - Customize Loader
+
+
+------------------------------------------------------------------------------*/
+
+
+/*------------------------------------------------------------------------------
+  1.0 - Text Styles
+------------------------------------------------------------------------------*/
+
+ol {
+       margin-left: 0;
+       margin-right: 2em;
+}
+
+.code, code {
+       font-family: monospace;
+       direction: ltr;
+}
+
+.quicktags, .search {
+       font: 12px Tahoma, Arial, sans-serif;
+}
+
+.icon32 {
+       float: right;
+       margin-right: 0;
+       margin-left: 8px;
+}
+
+.icon16 {
+       float: right;
+       margin-right: -8px;
+       margin-left: 0;
+}
+
+.howto {
+       font-style: normal;
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+p.install-help {
+       font-style: normal;
+}
+
+
+/*------------------------------------------------------------------------------
+  2.0 - Forms
+------------------------------------------------------------------------------*/
+
+#doaction,
+#doaction2,
+#post-query-submit {
+       margin-right: 0;
+       margin-left: 8px;
+}
+
+#timezone_string option {
+       margin-left: 0;
+       margin-right: 1em;
+}
+
+#pass-strength-result {
+       float: right;
+       margin: 13px 1px 5px 5px;
+}
+
+p.search-box {
+       float: left;
+}
+
+.search-box input[name="s"],
+#search-plugins input[name="s"],
+.tagsdiv .newtag {
+       float: right;
+       margin-right: 0;
+       margin-left: 4px;
+}
+
+input[type=password] {
+       direction: ltr;
+}
+
+input[type="text"].ui-autocomplete-loading {
+       background: transparent url('../images/loading.gif') no-repeat left center;
+}
+
+ul#add-to-blog-users {
+       margin: 0 14px 0 0;
+}
+
+.ui-autocomplete li {
+       text-align: right;
+}
+
+/*------------------------------------------------------------------------------
+  3.0 - Actions
+------------------------------------------------------------------------------*/
+
+#delete-action {
+       float: right;
+}
+
+#publishing-action {
+       float: left;
+       text-align: left;
+}
+
+#publishing-action .spinner {
+       float: right;
+}
+
+#post-body .misc-pub-section {
+       border-right: 0;
+       border-left-width: 1px;
+       border-left-style: solid;
+}
+
+#post-body .misc-pub-section-last {
+       border-left: 0;
+}
+
+#minor-publishing-actions {
+       padding: 10px 8px 2px 10px;
+       text-align: left;
+}
+
+#save-post {
+       float: right;
+}
+
+.preview {
+       float: left;
+}
+
+#sticky-span {
+       margin-left: 0;
+       margin-right: 18px;
+}
+
+.side-info ul {
+       padding-left: 0;
+       padding-right: 18px;
+}
+
+td.action-links,
+th.action-links {
+       text-align: left;
+}
+
+
+/*------------------------------------------------------------------------------
+  4.0 - Notifications
+------------------------------------------------------------------------------*/
+
+form.upgrade .hint {
+       font-style: normal;
+}
+
+#ajax-response.alignleft {
+       margin-left: 0;
+       margin-right: 2em;
+}
+
+
+/*------------------------------------------------------------------------------
+  5.0 - TinyMCE
+------------------------------------------------------------------------------*/
+
+#quicktags {
+       background-position: right top;
+}
+
+#ed_reply_toolbar input {
+       margin: 1px 1px 1px 2px;
+}
+
+/*------------------------------------------------------------------------------
+  6.0 - Admin Header
+------------------------------------------------------------------------------*/
+#wphead {
+       height: 32px;
+       margin-left: 15px;
+       margin-right: 2px;
+}
+
+#header-logo {
+       float: right;
+}
+
+#wphead h1 {
+       float: right;
+}
+
+/*------------------------------------------------------------------------------
+  6.1 - Screen Options Tabs
+------------------------------------------------------------------------------*/
+
+#screen-meta-links {
+       margin-right: 0;
+       margin-left: 24px;
+}
+
+#screen-meta {
+       margin-right: 5px;
+       margin-left: 15px;
+}
+
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+       float: left;
+       margin-left: 0;
+       margin-right: 6px;
+}
+
+#screen-meta-links a.show-settings {
+       padding-right: 6px;
+       padding-left: 16px;
+}
+
+.toggle-arrow {
+       background-position: top right;
+}
+.toggle-arrow-active {
+       background-position: bottom right;
+}
+
+.metabox-prefs label {
+       padding-right: 0;
+       padding-left: 15px;
+}
+
+.metabox-prefs label input {
+       margin-right: 2px;
+       margin-left: 5px;
+}
+
+/*------------------------------------------------------------------------------
+  6.2 - Help Menu
+------------------------------------------------------------------------------*/
+
+#contextual-help-wrap {
+       margin-left: 0;
+       margin-right: -4px;
+}
+
+#contextual-help-back {
+       left: 170px;
+       right: 150px;
+}
+
+#contextual-help-wrap.no-sidebar #contextual-help-back {
+       left: 0;
+       right: 150px;
+
+       border-right-width: 1px;
+       border-left-width: 0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 2px;
+       border-bottom-left-radius: 2px;
+}
+
+.contextual-help-tabs {
+       float: right;
+}
+
+.contextual-help-tabs a {
+       padding-left: 5px;
+       padding-right: 12px;
+}
+
+.contextual-help-tabs .active {
+       margin-right: 0;
+       margin-left: -1px;
+}
+
+.contextual-help-tabs .active,
+.contextual-help-tabs-wrap {
+       border-left: 0;
+       border-right-width: 1px;
+}
+
+.help-tab-content {
+       margin-right: 0;
+       margin-left: 22px;
+}
+
+.help-tab-content li {
+       margin-left: 0;
+       margin-right: 18px;
+}
+
+.contextual-help-sidebar {
+       float: left;
+       padding-right: 12px;
+       padding-left: 8px;
+}
+
+/*------------------------------------------------------------------------------
+  7.0 - Main Navigation (Right Menu) (RTL: Left Menu)
+------------------------------------------------------------------------------*/
+
+.folded #wpcontent {
+       margin-left: 0;
+       margin-right: 52px;
+}
+
+.folded.wp-admin #wpfooter {
+       margin-left: 15px;
+       margin-right: 52px;
+}
+
+#adminmenuback,
+#adminmenuwrap {
+       border-width: 0 0 0 1px;
+}
+
+#adminmenushadow {
+       right: auto;
+       left: 0;
+}
+
+#adminmenu li .wp-submenu {
+       left: auto;
+       right: 146px;
+}
+
+
+.folded #adminmenu .wp-submenu.sub-open,
+.folded #adminmenu .opensub .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
+.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,
+.folded #adminmenu a.menu-top:focus + .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu,
+.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu  {
+       left: auto;
+       right: 32px;
+}
+
+#adminmenu div.wp-menu-image,
+.folded #adminmenu div.wp-menu-image {
+       float: right;
+       width: 30px;
+}
+
+#adminmenu .wp-submenu a,
+#adminmenu li li a,
+.folded #adminmenu .wp-not-current-submenu li a {
+       padding-left: 0;
+       padding-right: 12px;
+}
+
+#adminmenu .wp-not-current-submenu li a {
+       padding-left: 0;
+       padding-right: 18px;
+}
+
+.wp-menu-arrow {
+       right: 0;
+
+       -moz-transform:    translate( -139px );
+       -webkit-transform: translate( -139px );
+       -o-transform:      translate( -139px );
+       -ms-transform:     translate( -139px );
+       transform:         translate( -139px );
+}
+
+.ie8 .wp-menu-arrow {
+       right: -20px;
+}
+
+#adminmenu .wp-menu-arrow div {
+       left: -8px;
+       width: 16px;
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
+       -moz-transform:    translate( -138px );
+       -webkit-transform: translate( -138px );
+       -o-transform:      translate( -138px );
+       -ms-transform:     translate( -138px );
+       transform:         translate( -138px );
+}
+
+.folded #adminmenu li .wp-menu-arrow {
+       -moz-transform:    translate( -26px );
+       -webkit-transform: translate( -26px );
+       -o-transform:      translate( -26px );
+       -ms-transform:     translate( -26px );
+       transform:         translate( -26px );
+}
+
+#adminmenu .wp-not-current-submenu .wp-menu-arrow div {
+    border-style: solid solid none none;
+    border-width: 1px 1px 0 0;
+}
+
+#adminmenu .wp-menu-image img {
+       padding: 7px 7px 0 0;
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+       padding: 5px 10px 5px 4px;
+       -webkit-border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 0;
+       border-top-left-radius: 3px;
+}
+
+.folded #adminmenu li.wp-has-current-submenu .wp-submenu {
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 3px;
+       -webkit-border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 3px;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 3px;
+       border-top-right-radius: 0;
+       border-top-left-radius: 3px;
+}
+
+#adminmenu .awaiting-mod,
+#adminmenu span.update-plugins,
+#sidemenu li a span.update-plugins {
+       font-family: Tahoma, Arial, sans-serif;
+       margin-left: 0;
+       margin-right: 7px;
+}
+
+#collapse-button {
+       float: right;
+}
+
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       .auto-fold #wpcontent {
+               margin-left: 0;
+               margin-right: 52px;
+       }
+
+       .auto-fold.wp-admin #wpfooter {
+               margin-left: 15px;
+               margin-right: 52px;
+       }
+
+       .auto-fold #adminmenu div.wp-menu-image {
+               float: right;
+               width: 30px;
+       }
+
+       .auto-fold #adminmenu .wp-submenu.sub-open,
+       .auto-fold #adminmenu .opensub .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
+       .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,
+       .auto-fold #adminmenu a.menu-top:focus + .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu,
+       .no-js.auto-fold #adminmenu .wp-has-submenu:hover .wp-submenu  {
+               left: auto;
+               right: 32px;
+       }
+
+       .auto-fold #adminmenu .wp-not-current-submenu li a {
+               padding-left: 0;
+               padding-right: 12px;
+       }
+
+       .auto-fold #adminmenu li .wp-menu-arrow {
+               -moz-transform:    translate( -27px );
+               -webkit-transform: translate( -27px );
+               -o-transform:      translate( -27px );
+               -ms-transform:     translate( -27px );
+               transform:         translate( -27px );
+       }
+
+       .auto-fold #adminmenu li.wp-has-current-submenu .wp-submenu {
+               border-width: 1px;
+               border-style: solid;
+               -webkit-border-bottom-right-radius: 0;
+               -webkit-border-bottom-left-radius: 3px;
+               -webkit-border-top-right-radius: 0;
+               -webkit-border-top-left-radius: 3px;
+               border-bottom-right-radius: 0;
+               border-bottom-left-radius: 3px;
+               border-top-right-radius: 0;
+               border-top-left-radius: 3px;
+       }
+}
+
+/* List table styles */
+.post-com-count-wrapper {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.post-com-count {
+       background-image: url('../images/bubble_bg-rtl.gif');
+}
+
+.column-response .post-com-count {
+       float: right;
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+.response-links {
+       float: right;
+}
+
+
+/*------------------------------------------------------------------------------
+  8.0 - Layout Blocks
+------------------------------------------------------------------------------*/
+
+.widefat th {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.postbox-container {
+       float: right;
+}
+
+#post-body-content {
+       float: right;
+}
+
+#poststuff #post-body.columns-2 {
+       margin-left: 300px;
+       margin-right: 0;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       float: left;
+       margin-left: -300px;
+       margin-right: 0;
+}
+
+@media only screen and (max-width: 850px) {
+       #wpbody-content #post-body.columns-2 #postbox-container-1 {
+               margin-left: 0;
+       }
+}
+
+.postbox .handlediv {
+       float: left;
+}
+
+/*------------------------------------------------------------------------------
+  9.0 - Dashboard
+------------------------------------------------------------------------------*/
+
+#the-comment-list p.comment-author img {
+       float: right;
+       margin-right: 0;
+       margin-left: 8px;
+}
+
+/* Browser Nag */
+#dashboard_browser_nag p.browser-update-nag.has-browser-icon {
+       padding-right: 0;
+       padding-left: 125px;
+}
+
+/* Welcome Panel */
+.welcome-panel .welcome-panel-close {
+       right: auto;
+       left: 10px;
+}
+
+.welcome-panel .welcome-panel-close:before {
+       left: auto;
+       right: -12px;
+}
+
+.welcome-panel-content {
+       margin-left: 0;
+       margin-right: 13px;
+}
+
+.welcome-panel .welcome-panel-column {
+       float: right;
+}
+
+.welcome-panel .welcome-panel-column ul {
+       margin-right: 0;
+       margin-left: 1em;
+}
+
+.welcome-panel .welcome-panel-column li {
+       padding-left: 0;
+       padding-right: 2px;
+}
+
+.welcome-panel .welcome-add-page {
+       background-position: right 2px;
+}
+
+.welcome-panel .welcome-edit-page {
+       background-position: right -90px;
+}
+
+.welcome-panel .welcome-learn-more {
+       background-position: right -136px;
+}
+
+.welcome-panel .welcome-comments {
+       background-position: right -182px;
+}
+
+.welcome-panel .welcome-view-site {
+       background-position: right -274px;
+}
+
+.welcome-panel .welcome-widgets-menus {
+       background-position: right -229px;
+       line-height: 14px;
+}
+
+.welcome-panel .welcome-write-blog {
+       background-position: right -44px;
+}
+
+.welcome-panel .welcome-icon {
+       padding: 2px 32px 8px 0;
+}
+
+@media screen and (max-width: 870px) {
+       .welcome-panel .welcome-panel-column li {
+               margin-right: 0;
+               margin-left: 13px;
+       }
+
+       .welcome-panel .welcome-icon {
+               padding-right: 25px;
+               padding-left: 0;
+       }
+}
+
+/*------------------------------------------------------------------------------
+  10.0 - List Posts (/Pages/etc)
+------------------------------------------------------------------------------*/
+
+.fixed .column-comments {
+       text-align: right;
+}
+.fixed .column-comments .vers {
+       padding-left: 0;
+       padding-right: 3px;
+}
+.fixed .column-comments a {
+       float: right;
+}
+.sorting-indicator {
+       margin-left: 0;
+       margin-right: 7px;
+}
+th.sortable a span,
+th.sorted a span {
+       float: right;
+}
+
+/* Bulk Actions */
+
+.tablenav-pages a {
+       margin-right: 0;
+       margin-left: 1px;
+}
+.tablenav-pages .next-page {
+       margin-left: 0;
+       margin-right: 2px;
+}
+
+.tablenav a.button-secondary {
+       margin: 3px 0 0 8px;
+}
+
+.tablenav .tablenav-pages {
+       float: left;
+}
+
+.tablenav .displaying-num {
+       margin-right: 0;
+       margin-left: 10px;
+       font-family: Tahoma, Arial, sans-serif;
+       font-style: normal;
+}
+
+.tablenav .actions {
+       padding: 2px 0 0 8px;
+}
+
+.tablenav .actions select {
+       float: right;
+       margin-right: 0;
+       margin-left: 6px;
+}
+
+.tablenav .delete {
+       margin-right: 0;
+       margin-left: 20px;
+}
+
+.view-switch {
+       float: left;
+}
+
+.filter {
+       float: right;
+       margin: -5px 10px 0 0;
+}
+
+.filter .subsubsub {
+       margin-left: 0;
+       margin-right: -10px;
+}
+
+#posts-filter fieldset {
+       float: right;
+       margin: 0 0 1em 1.5ex;
+}
+
+#posts-filter fieldset legend {
+       padding: 0 1px .2em 0;
+}
+
+/*------------------------------------------------------------------------------
+  10.1 - Inline Editing
+------------------------------------------------------------------------------*/
+
+#wpbody-content .inline-edit-row fieldset {
+       float: right;
+}
+
+#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
+       border-width: 0 1px 0 0;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
+       float: left;
+}
+
+.inline-edit-row fieldset label span.title {
+       float: right;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+       margin-left: 0;
+       margin-right: 5em;
+}
+
+.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
+       padding-right: 0;
+       padding-left: 0.5em;
+}
+
+#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
+       margin-right: 0;
+       margin-left: 0.5em
+}
+
+/*     Styling */
+
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+       font-family: Tahoma, Arial, sans-serif;
+       font-style: normal;
+}
+
+.inline-edit-row fieldset .inline-edit-date {
+       float: right;
+}
+
+.inline-edit-row fieldset ul.cat-checklist label,
+.inline-edit-row .catshow,
+.inline-edit-row .cathide,
+.inline-edit-row #bulk-titles div {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.quick-edit-row-post fieldset label.inline-edit-status {
+       float: right;
+}
+
+#bulk-titles div a {
+       float: right;
+       margin: 3px -2px 0 3px;
+       overflow: hidden;
+       text-indent: -9999px;
+}
+
+
+/*------------------------------------------------------------------------------
+  11.0 - Write/Edit Post Screen
+------------------------------------------------------------------------------*/
+
+#save-action .spinner,
+#show-comments a,
+#show-comments .spinner {
+       float: right;
+}
+
+#titlediv #title-prompt-text,
+#wp-fullscreen-title-prompt-text {
+       right: 0;
+}
+
+#sample-permalink {
+       direction: ltr;
+}
+
+#sample-permalink #editable-post-name {
+       unicode-bidi: embed;
+}
+
+#wp-fullscreen-title-prompt-text {
+       left: auto;
+       right: 0;
+}
+
+#wp-fullscreen-save .spinner,
+#wp-fullscreen-save .fs-saved {
+       float: left;
+}
+
+#edit-slug-box .cancel {
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+.postarea h3 label {
+       float: right;
+}
+
+.submitbox .submit {
+       text-align: right;
+}
+
+.inside-submitbox #post_status {
+       margin: 2px -2px 2px 0;
+}
+
+.submitbox .submit input {
+       margin-right: 0;
+       margin-left: 4px;
+}
+
+#normal-sortables .postbox .submit {
+       float: left;
+}
+
+.taxonomy div.tabs-panel {
+       margin: 0 125px 0 5px;
+}
+
+#side-sortables .comments-box thead th,
+#normal-sortables .comments-box thead th {
+       font-style: normal;
+}
+
+#commentsdiv .spinner {
+       padding-left: 0;
+       padding-right: 5px;
+}
+
+#post-body .add-menu-item-tabs li.tabs {
+       border-width: 1px 1px 1px 0;
+       margin-right: 0;
+       margin-left: -1px;
+}
+
+/* Global classes */
+
+#post-body .tagsdiv #newtag {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+.autosave-info {
+       padding: 2px 2px 2px 15px;
+       text-align: left;
+}
+
+#post-body .wp_themeSkin .mceStatusbar a.mceResize {
+       background: transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;
+       cursor: sw-resize;
+}
+
+.curtime #timestamp {
+       background-position: right top;
+       padding-left: 0;
+       padding-right: 18px;
+}
+
+.compat-attachment-fields th {
+       padding-right: 0;
+       padding-left: 10px;
+}
+
+/*------------------------------------------------------------------------------
+  11.1 - Custom Fields
+------------------------------------------------------------------------------*/
+
+/* No RTL for now, this space intentionally left blank */
+
+/*------------------------------------------------------------------------------
+  11.2 - Post Revisions
+------------------------------------------------------------------------------*/
+
+table.diff td, table.diff th {
+       font-family: Consolas, Monaco, monospace;
+}
+
+/*------------------------------------------------------------------------------
+  11.3 - Featured Images
+------------------------------------------------------------------------------*/
+
+#select-featured-image a {
+       float: right;
+}
+
+/*------------------------------------------------------------------------------
+  12.0 - Categories
+------------------------------------------------------------------------------*/
+
+.category-adder {
+       margin-left: 0;
+       margin-right: 120px;
+}
+
+#post-body ul.add-menu-item-tabs {
+       float: right;
+       text-align: left;
+       /* Negative margin for the sake of those without JS: all tabs display */
+       margin: 0 5px 0 -120px;
+}
+
+#post-body ul.add-menu-item-tabs li.tabs {
+       -webkit-border-top-left-radius: 0;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: 3px;
+       border-top-left-radius: 0;
+       border-top-right-radius: 3px;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 3px;
+}
+
+#front-page-warning,
+#front-static-pages ul,
+ul.export-filters,
+.inline-editor ul.cat-checklist ul,
+.categorydiv ul.categorychecklist ul,
+.customlinkdiv ul.categorychecklist ul,
+.posttypediv ul.categorychecklist ul,
+.taxonomydiv ul.categorychecklist ul {
+       margin-left: 0;
+       margin-right: 18px;
+}
+
+#post-body .add-menu-item-tabs li.tabs {
+       border-style: solid solid solid none;
+       border-width: 1px 1px 1px 0;
+       margin-right: 0;
+       margin-left: -1px;
+}
+
+p.help,
+p.description,
+span.description,
+.form-wrap p {
+       font-style: normal;
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+/*------------------------------------------------------------------------------
+  13.0 - Tags
+------------------------------------------------------------------------------*/
+
+.taghint {
+       margin: 15px 12px -24px 0;
+}
+
+#poststuff .tagsdiv .howto {
+       margin: 0 8px 6px 0;
+}
+
+.ac_results li {
+       text-align: right;
+}
+
+.links-table th {
+       text-align: right;
+}
+
+/*------------------------------------------------------------------------------
+  14.0 - Media Screen
+------------------------------------------------------------------------------*/
+
+#wpbody-content .describe th {
+       text-align: right;
+
+}
+
+.describe .media-item-info .A1B1 {
+       padding: 0 10px 0 0;
+}
+
+.media-upload-form td label {
+       margin-left: 6px;
+       margin-right: 2px;
+}
+
+.media-upload-form .align .field label {
+       padding: 0 23px 0 0;
+       margin: 0 3px 0 1em;
+}
+
+.media-upload-form tr.image-size label {
+       margin: 0 5px 0 0;
+}
+
+#wpbody-content .describe p.help {
+       padding: 0 5px 0 0;
+}
+
+.media-item .edit-attachment,
+.media-item .error-div a.dismiss,
+.describe-toggle-on,
+.describe-toggle-off {
+       float: left;
+       margin-right: 0;
+       margin-left: 15px;
+}
+
+.media-item .error-div a.dismiss {
+       padding: 0 15px 0 0;
+}
+
+.media-item .error-div {
+       padding-left: 0;
+       padding-right: 10px;
+}
+
+.media-item .pinkynail {
+       float: right;
+}
+
+.media-item .describe td {
+       padding: 0 0 8px 8px;
+}
+
+.media-item .progress {
+       float: left;
+    margin: 6px 0 0 10px;
+}
+
+/*------------------------------------------------------------------------------
+  14.1 - Media Uploader
+------------------------------------------------------------------------------*/
+
+#find-posts-input {
+       float: right;
+}
+
+#find-posts-search {
+       float: right;
+       margin-right: 3px;
+       margin-left: 4px;
+}
+
+.find-box-search .spinner {
+       left: auto;
+       right: 115px;
+}
+
+#find-posts-response .found-radio {
+       padding: 5px 8px 0 0;
+}
+
+.find-box-search label {
+       padding-right: 0;
+       padding-left: 6px;
+}
+
+.find-box #resize-se {
+       right: auto;
+       left: 1px;
+}
+
+form.upgrade .hint {
+       font-style: normal;
+}
+
+
+/*------------------------------------------------------------------------------
+  14.2 - Image Editor
+------------------------------------------------------------------------------*/
+
+.wp_attachment_image .button,
+.A1B1 .button {
+       float: right;
+}
+
+.wp_attachment_image .spinner,
+.A1B1 .spinner {
+       float: right;
+}
+
+.imgedit-menu div {
+       float: right;
+}
+
+.imgedit-crop {
+       margin: 0;
+}
+
+.imgedit-rleft,
+.imgedit-flipv,
+.imgedit-undo {
+       margin: 0 8px 0 3px;
+}
+
+.imgedit-rright,
+.imgedit-fliph,
+.imgedit-redo {
+       margin: 0 3px;
+}
+
+.imgedit-applyto img {
+       margin: 0 0 0 8px;
+}
+
+.imgedit-help {
+       font-style: normal;
+}
+
+.imgedit-submit-btn {
+       margin-left: 0;
+       margin-right: 20px;
+}
+
+
+/*------------------------------------------------------------------------------
+  15.0 - Comments Screen
+------------------------------------------------------------------------------*/
+
+.form-table th {
+       text-align: right;
+}
+
+.form-table input.tog {
+       margin-right: 0;
+       margin-left: 2px;
+       float: right;
+}
+
+.form-table table.color-palette {
+       float: right;
+}
+
+/* reply to comments */
+
+#replysubmit .spinner,
+.inline-edit-save .spinner {
+       float: left;
+}
+
+#replysubmit .button {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+#edithead .inside {
+       float: right;
+       padding: 3px 5px 2px 0;
+}
+
+.comment-ays th {
+       border-right-style: none;
+       border-left-style: solid;
+       border-right-width: 0;
+       border-left-width: 1px;
+}
+
+.spam-undo-inside .avatar,
+.trash-undo-inside .avatar {
+       margin-left: 8px;
+}
+
+#comment-status-radio input {
+       margin: 2px 0 5px 3px;
+}
+
+/*------------------------------------------------------------------------------
+  16.0 - Themes
+------------------------------------------------------------------------------*/
+
+h3.available-themes {
+       float: right;
+}
+
+.available-theme {
+       margin-right: 0;
+       margin-left: 10px;
+       padding: 20px 0 20px 20px;
+}
+
+#current-theme .theme-info li,
+.theme-options li,
+.available-theme .action-links li {
+       float: right;
+       padding-right: 0;
+       padding-left: 10px;
+       margin-right: 0;
+       margin-left: 10px;
+       border-right: none;
+       border-left: 1px solid #dfdfdf;
+}
+
+.available-theme .action-links li {
+       padding-left: 8px;
+       margin-left: 8px;
+}
+
+.ie8 .available-theme .action-links li {
+       padding-left: 7px;
+       margin-left: 7px;
+}
+
+#current-theme .theme-info li:last-child,
+.theme-options li:last-child,
+.available-theme .action-links li:last-child {
+       padding-left: 0;
+       margin-right: 0;
+       border-left: 0;
+}
+
+.available-theme .action-links .delete-theme {
+       float: left;
+       margin-left: 0;
+       margin-right: 8px;
+}
+
+.available-theme .action-links p {
+       float: right;
+}
+
+#current-theme.has-screenshot {
+       padding-left: 0;
+       padding-right: 330px;
+}
+
+#current-theme h4 span {
+       margin-left: 0;
+       margin-right: 20px;
+}
+
+#current-theme img {
+       float: right;
+       width: 300px;
+       margin-left: 0;
+       margin-right: -330px;
+}
+
+.theme-options .load-customize {
+       margin-right: 0;
+       margin-left: 30px;
+       float: right;
+}
+
+.theme-options span {
+       float: right;
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+.theme-options ul {
+       float: right;
+}
+
+/* Allow for three-up on 1024px wide screens, e.g. tablets */
+@media only screen and (max-width: 1200px) {
+       #current-theme.has-screenshot {
+               padding-right: 270px;
+       }
+
+       #current-theme img {
+               margin-right: -270px;
+               width: 240px;
+       }
+}
+
+#broken-themes {
+       text-align: right;
+}
+
+/*------------------------------------------------------------------------------
+  16.1 - Custom Header Screen
+------------------------------------------------------------------------------*/
+
+.appearance_page_custom-header .available-headers .default-header {
+       float: right;
+       margin: 0 0 20px 20px;
+}
+
+.appearance_page_custom-header .random-header {
+       margin: 0 0 20px 20px;
+}
+
+.appearance_page_custom-header .available-headers label input,
+.appearance_page_custom-header .random-header label input {
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+/*------------------------------------------------------------------------------
+  16.2 - Custom Background Screen
+------------------------------------------------------------------------------*/
+
+/* No RTL for now, this space intentionally left blank */
+
+
+/*------------------------------------------------------------------------------
+  16.3 - Tabbed Admin Screen Interface (Experimental)
+------------------------------------------------------------------------------*/
+
+.nav-tab {
+       margin: 0 0 -1px 6px;
+}
+
+h2 .nav-tab {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+
+/*------------------------------------------------------------------------------
+  17.0 - Plugins
+------------------------------------------------------------------------------*/
+
+.plugins .desc ul,
+.plugins .desc ol {
+       margin: 0 2em 0 0;
+}
+
+#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title {
+       padding-right: 0;
+       padding-left: 12px;
+}
+
+
+/*------------------------------------------------------------------------------
+  18.0 - Users
+------------------------------------------------------------------------------*/
+
+#profile-page .form-table #rich_editing {
+       margin-right: 0;
+       margin-left: 5px
+}
+
+#profile-page #pass1,
+#profile-page #pass2,
+#profile-page #user_login {
+       direction: ltr;
+}
+
+#your-profile legend {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+/*------------------------------------------------------------------------------
+  19.0 - Tools
+------------------------------------------------------------------------------*/
+
+.pressthis a span {
+       background-position: right 5px;
+       padding: 8px 27px 8px 11px;
+}
+
+.pressthis a:after {
+       right: auto;
+       left: 10px;
+       background: transparent;
+       transform: skew(-20deg) rotate(-6deg);
+       -webkit-transform: skew(-20deg) rotate(-6deg);
+       -moz-transform: skew(-20deg) rotate(-6deg);
+}
+
+
+.pressthis a:hover:after {
+       transform: skew(-20deg) rotate(-9deg);
+       -webkit-transform: skew(-20deg) rotate(-9deg);
+       -moz-transform: skew(-20deg) rotate(-9deg);
+}
+
+/*------------------------------------------------------------------------------
+  20.0 - Settings
+------------------------------------------------------------------------------*/
+
+#utc-time, #local-time {
+       padding-left: 0;
+       padding-right: 25px;
+       font-style: normal;
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+/*------------------------------------------------------------------------------
+  21.0 - Admin Footer
+------------------------------------------------------------------------------*/
+
+#wpfooter {
+       margin-left: 20px;
+}
+
+#wpcontent,
+#wpfooter {
+       margin-right: 165px;
+}
+
+/*------------------------------------------------------------------------------
+  22.0 - About Pages
+------------------------------------------------------------------------------*/
+
+.wrap.about-wrap {
+       margin-left: 40px;
+       margin-right: 20px;
+}
+
+.about-wrap h1,
+.about-text {
+       margin-right: 0;
+       margin-left: 200px;
+}
+
+.about-wrap h2.nav-tab-wrapper {
+       padding-left: 0px;
+       padding-right: 6px;
+}
+
+.about-wrap .wp-badge {
+       right: auto;
+       left: 0;
+}
+
+.about-wrap h2 .nav-tab {
+       margin-right: 0;
+       margin-left: 3px;
+}
+
+.about-wrap .changelog li {
+       margin-left: 0;
+       margin-right: 3em;
+}
+
+.about-wrap .three-col-images .last-feature {
+       float: left;
+}
+
+.about-wrap .three-col-images .first-feature {
+       float: right;
+}
+
+.about-wrap .feature-section.three-col div {
+       margin-right: 0;
+       margin-left: 4.999999999%;
+       float: right;
+}
+
+.about-wrap .feature-section.three-col h4 {
+       text-align: right;
+}
+
+.about-wrap .feature-section.three-col img {
+       margin-right: 5px;
+       margin-left: 0;
+}
+
+.about-wrap .feature-section.three-col .last-feature {
+       margin-left: 0;
+}
+
+.about-wrap .feature-section img {
+       margin: 0 0 10px 0.7%;
+}
+
+.about-wrap .feature-section.images-stagger-right img {
+       float: left;
+       margin: 0 2em 12px 5px;
+}
+
+.about-wrap .feature-section.images-stagger-left img {
+       float: right;
+       margin: 0 5px 12px 2em;
+}
+
+.about-wrap li.wp-person,
+.about-wrap li.wp-person img.gravatar {
+       float: right;
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+@media only screen and (max-width: 768px) {
+       .about-wrap .feature-section img.image-66 {
+               float: none;
+       }
+
+       .about-wrap .feature-section.images-stagger-right img.image-66 {
+               margin-right: 3px;
+       }
+
+       .about-wrap .feature-section.images-stagger-left img.image-66 {
+               margin-left: 3px;
+       }
+}
+
+/*------------------------------------------------------------------------------
+  23.0 - Misc
+------------------------------------------------------------------------------*/
+
+#template div {
+       margin-right: 0;
+       margin-left: 190px;
+}
+
+.column-author img, .column-username img {
+       float: right;
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+.tagchecklist {
+       margin-left: 0;
+       margin-right: 14px;
+}
+
+.tagchecklist strong {
+       margin-left: 0;
+       margin-right: -8px;
+}
+
+.tagchecklist span {
+       margin-right: 0;
+       margin-left: 25px;
+       float: right;
+
+}
+.tagchecklist span a {
+       margin: 6px -9px 0pt 0pt;
+       float: right;
+}
+
+#poststuff h2 {
+       clear: right;
+}
+
+#poststuff h3,
+.metabox-holder h3 {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.tool-box .title {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+#sidemenu {
+       margin: -30px 315px 0 15px;
+       float: left;
+       padding-left: 0;
+       padding-right: 10px;
+}
+#sidemenu a {
+       float: right;
+}
+
+table .vers,
+table .column-visible,
+table .column-rating {
+       text-align: right;
+}
+
+.screen-meta-toggle {
+       right: auto;
+       left: 15px;
+}
+
+.screen-reader-text,
+.screen-reader-text span,
+.ui-helper-hidden-accessible {
+       left: auto;
+       right: -1000em;
+}
+
+.screen-reader-shortcut:focus {
+       left: auto;
+       right: 6px;
+}
+
+/*------------------------------------------------------------------------------
+  24.0  - Dead
+------------------------------------------------------------------------------*/
+
+/* - Not used anywhere in WordPress - verify and then deprecate
+------------------------------------------------------------------------------*/
+
+/* No RTL for now, this space intentionally left blank */
+
+
+/* - Only used once or twice in all of WP - deprecate for global style
+------------------------------------------------------------------------------*/
+
+* html #template div {margin-left: 0;}
+
+/* - Used - but could/should be deprecated with a CSS reset
+------------------------------------------------------------------------------*/
+/* No RTL for now, this space intentionally left blank */
+
+
+/*------------------------------------------------------------------------------
+ 25.0 - TinyMCE tweaks
+               Small tweaks for until tinymce css files are proprely RTLized
+------------------------------------------------------------------------------*/
+#editorcontainer .wp_themeSkin .mceStatusbar {
+       padding-left: 0;
+       padding-right: 5px;
+}
+
+#editorcontainer .wp_themeSkin .mceStatusbar div {
+       float: right;
+}
+
+#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize {
+       float: left;
+}
+
+#content-resize-handle {
+       background: transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;
+       right: auto;
+       left: 2px;
+       cursor: sw-resize;
+}
+
+/*------------------------------------------------------------------------------
+  26.0 - Full Overlay w/ Sidebar
+------------------------------------------------------------------------------*/
+.wp-full-overlay .wp-full-overlay-sidebar {
+       margin: 0;
+       left: auto;
+       right: 0;
+       border-right: 0;
+       border-left: 1px solid rgba( 0, 0, 0, 0.2 );
+}
+
+.wp-full-overlay-sidebar:after {
+       right: auto;
+       left: 0;
+       box-shadow: inset 5px 0 4px -4px rgba(0, 0, 0, 0.1);
+}
+
+.wp-full-overlay.collapsed,
+.wp-full-overlay.expanded .wp-full-overlay-sidebar {
+       margin-right: 0 !important;
+}
+
+.wp-full-overlay.expanded {
+       margin-right: 300px;
+       margin-left: 0;
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       margin-right: -300px;
+       margin-left: 0;
+}
+
+/* Collapse Button */
+.wp-full-overlay .collapse-sidebar {
+       right: 0;
+       left: auto;
+       margin-right: 15px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar {
+       right: 100%;
+}
+
+.wp-full-overlay .collapse-sidebar-arrow {
+       margin-right: 2px;
+       margin-left: 0;
+       background: transparent url('../images/arrows.png') no-repeat 0 -108px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-arrow {
+       background-position: 0 -72px;
+}
+
+.wp-full-overlay .collapse-sidebar-label {
+       right: 100%;
+       left: auto;
+       margin-right: 10px;
+       margin-left: 0;
+}
+
+/*------------------------------------------------------------------------------
+  27.0 - Customize Loader
+------------------------------------------------------------------------------*/
+.install-theme-info .theme-install {
+       float: left;
+}
+
+/* MERGED */
+
+/* global */
+
+/* 2 column liquid layout */
+
+#wpcontent {
+       margin-left: 0;
+       margin-right: 165px;
+}
+
+#wpbody-content {
+       float: right;
+}
+
+#adminmenuwrap {
+       float: right;
+}
+
+#adminmenu {
+       clear: right;
+}
+
+/* inner 2 column liquid layout */
+.inner-sidebar {
+       float: left;
+       clear: left;
+}
+
+.has-right-sidebar #post-body {
+       float: right;
+       clear: right;
+       margin-right: 0;
+       margin-left: -340px;
+}
+
+.has-right-sidebar #post-body-content {
+       margin-right: 0;
+       margin-left: 300px;
+}
+
+/* 2 columns main area */
+
+#col-right {
+       float: left;
+       clear: left;
+}
+
+/* utility classes*/
+.alignleft {
+       float: right;
+}
+
+.alignright {
+       float: left;
+}
+
+.textleft {
+       text-align: right;
+}
+
+.textright {
+       text-align: left;
+}
+
+/* styles for use by people extending the WordPress interface */
+
+body,
+td,
+textarea,
+input,
+select {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+ul.ul-disc,
+ul.ul-square,
+ol.ol-decimal {
+       margin-left: 0;
+       margin-right: 1.8em;
+}
+
+.subsubsub {
+       float: right;
+}
+
+.widefat thead th:first-of-type {
+       -webkit-border-top-left-radius: 0;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 0;
+       border-top-right-radius: 3px;
+}
+
+.widefat thead th:last-of-type {
+       -webkit-border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 0;
+       border-top-left-radius: 3px;
+}
+.widefat tfoot th:first-of-type {
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 3px;
+}
+.widefat tfoot th:last-of-type {
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 3px;
+}
+
+.widefat th {
+       text-align: right;
+}
+
+.widefat th input {
+       margin: 0 8px 0 0;
+}
+
+.wrap {
+       margin-right: 0;
+       margin-left: 15px;
+}
+
+.wrap h2,
+.subtitle {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.wrap h2 {
+       padding-right: 0;
+       padding-left: 15px;
+}
+
+.subtitle {
+       padding-left: 0;
+       padding-right: 25px;
+}
+
+.wrap .add-new-h2 {
+       font-family: Tahoma, Arial, sans-serif;
+       margin-left: 0;
+       margin-right: 4px;
+}
+
+.wrap h2.long-header {
+       padding-left: 0;
+}
+
+/* dashboard */
+#dashboard-widgets-wrap .has-sidebar {
+       margin-right: 0;
+       margin-left: -51%;
+}
+
+#dashboard-widgets-wrap .has-sidebar .has-sidebar-content {
+       margin-right: 0;
+       margin-left: 51%;
+}
+
+.view-all {
+       right: auto;
+       left: 0;
+}
+
+#dashboard_right_now p.sub,
+#dashboard-widgets h4,
+a.rsswidget,
+#dashboard_plugins h4,
+#dashboard_plugins h5,
+#dashboard_recent_comments .comment-meta .approve,
+#dashboard_right_now td.b,
+#dashboard_right_now .versions a {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+#dashboard_right_now p.sub  {
+       left:auto;
+       right:15px;
+}
+
+#dashboard_right_now td.b {
+       padding-right: 0;
+       padding-left: 6px;
+       text-align: left;
+}
+
+#dashboard_right_now .t {
+       padding-right: 0;
+       padding-left: 12px;
+}
+
+#dashboard_right_now .table_content {
+       float:right;
+}
+
+#dashboard_right_now .table_discussion {
+       float:left;
+}
+
+#dashboard_right_now a.button {
+       float: left;
+       clear: left;
+}
+
+#dashboard_plugins .inside span {
+        padding-left: 0;
+        padding-right: 5px;
+}
+
+#dashboard-widgets h3 .postbox-title-action {
+       right: auto;
+       left: 10px;
+}
+
+.js #dashboard-widgets h3 .postbox-title-action {
+       right: auto;
+       left: 30px;
+}
+
+#the-comment-list .pingback {
+       padding-left: 0 !important;
+       padding-right: 9px !important;
+}
+
+/* Recent Comments */
+#the-comment-list .comment-item {
+       padding: 1em 70px 1em 10px;
+}
+
+#the-comment-list .comment-item .avatar {
+       float: right;
+       margin-left: 0;
+       margin-right: -60px;
+}
+
+/* Feeds */
+.rss-widget cite {
+       text-align: left;
+}
+
+.rss-widget span.rss-date {
+       font-family: Tahoma, Arial, sans-serif;
+       margin-left: 0;
+       margin-right: 3px;
+}
+
+/* QuickPress */
+#dashboard-widgets #dashboard_quick_press form p.submit input {
+       float: right;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
+       margin: 0 1px 0 0.7em;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #publish {
+       float: left;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit .spinner {
+       margin: 4px 0 0 6px;
+}
+
+/* Recent Drafts */
+#dashboard_recent_drafts h4 abbr {
+       font-family: Tahoma, Arial, sans-serif;
+       margin-left:0;
+       margin-right: 3px;
+}
+
+/* login */
+body.login {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.login form {
+       margin-right: 8px;
+       margin-left: 0;
+}
+
+.login form .forgetmenot {
+       float: right;
+}
+
+.login form .submit {
+       float: left;
+}
+
+#login form .submit input {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.login #nav,
+.login #backtoblog {
+       margin: 0 16px 0 0;
+}
+
+#login_error,
+.login .message {
+       margin: 0 8px 16px 0;
+}
+
+.login #user_pass,
+.login #user_login,
+.login #user_email {
+       margin-left: 6px;
+       margin-right: 0;
+       direction: ltr;
+}
+
+.login h1 a {
+       text-decoration: none;
+}
+
+.login .button-primary {
+       float: left;
+}
+
+/* nav-menu */
+#nav-menus-frame {
+       margin-right: 300px;
+       margin-left: 0;
+}
+
+#wpbody-content #menu-settings-column {
+       margin-right: -300px;
+       margin-left: 0;
+       float: right;
+}
+
+/* Menu Container */
+#menu-management-liquid {
+       float: right;
+}
+
+#menu-management {
+       margin-left: 20px;
+       margin-right: 0;
+}
+
+.post-body-plain {
+       padding: 10px 0 0 10px;
+}
+
+/* Menu Tabs */
+
+#menu-management .nav-tabs-arrow-left {
+       right: 0;
+       left:auto;
+}
+
+#menu-management .nav-tabs-arrow-right {
+       left: 0;
+       right:auto;
+       text-align: left;
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+#menu-management .nav-tabs {
+       padding-right: 20px;
+       padding-left: 10px;
+}
+
+.js #menu-management .nav-tabs {
+       float: right;
+       margin-right: 0px;
+       margin-left: -400px;
+}
+
+#select-nav-menu-container {
+       text-align: left;
+}
+
+#wpbody .open-label {
+       float:right;
+}
+
+#wpbody .open-label span {
+       padding-left: 10px;
+       padding-right:0;
+}
+
+.js .input-with-default-title {
+       font-style: normal;
+       font-weight: bold;
+}
+
+/* Add Menu Item Boxes */
+.postbox .howto input {
+       float: left;
+}
+#nav-menu-theme-locations .button-controls {
+       text-align: left;
+}
+
+/* Button Primary Actions */
+
+.meta-sep,
+.submitcancel {
+       float: right;
+}
+
+#cancel-save {
+       margin-left: 0;
+       margin-right: 20px;
+}
+
+.button.right, .button-secondary.right, .button-primary.right {
+       float: left;
+}
+
+/* Button Secondary Actions */
+.list-controls {
+        float: right;
+}
+.add-to-menu {
+       float: left;
+}
+
+/* Custom Links */
+#add-custom-link label span {
+       float: right;
+       padding-left: 5px;
+       padding-right: 0;
+}
+
+.nav-menus-php .howto span {
+       float: right;
+}
+
+.list li .menu-item-title input {
+       margin-left: 3px;
+       margin-right: 0;
+}
+
+/* Nav Menu */
+.menu-item-handle {
+       padding-right: 10px;
+       padding-left: 0;
+}
+.menu-item-edit-active .menu-item-handle {
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 0;
+}
+.menu-item-handle .item-title {
+       margin-left:13em;
+       margin-right:0;
+}
+.menu-item-handle .item-edit {
+       right: auto;
+       left: -20px;
+}
+
+/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
+.menu-item-depth-0 { margin-right: 0px; margin-left:0;}
+.menu-item-depth-1 { margin-right: 30px; margin-left:0;}
+.menu-item-depth-2 { margin-right: 60px; margin-left:0;}
+.menu-item-depth-3 { margin-right: 90px; margin-left:0;}
+.menu-item-depth-4 { margin-right: 120px; margin-left:0;}
+.menu-item-depth-5 { margin-right: 150px; margin-left:0;}
+.menu-item-depth-6 { margin-right: 180px; margin-left:0;}
+.menu-item-depth-7 { margin-right: 210px; margin-left:0;}
+.menu-item-depth-8 { margin-right: 240px; margin-left:0;}
+.menu-item-depth-9 { margin-right: 270px; margin-left:0;}
+.menu-item-depth-10 { margin-right: 300px; margin-left:0;}
+.menu-item-depth-11 { margin-right: 330px; margin-left:0;}
+
+.menu-item-depth-0 .menu-item-transport { margin-right: 0px; margin-left:0;}
+.menu-item-depth-1 .menu-item-transport { margin-right: -30px; margin-left:0;}
+.menu-item-depth-2 .menu-item-transport { margin-right: -60px; margin-left:0;}
+.menu-item-depth-3 .menu-item-transport { margin-right: -90px; margin-left:0;}
+.menu-item-depth-4 .menu-item-transport { margin-right: -120px; margin-left:0;}
+.menu-item-depth-5 .menu-item-transport { margin-right: -150px; margin-left:0;}
+.menu-item-depth-6 .menu-item-transport { margin-right: -180px; margin-left:0;}
+.menu-item-depth-7 .menu-item-transport { margin-right: -210px; margin-left:0;}
+.menu-item-depth-8 .menu-item-transport { margin-right: -240px; margin-left:0;}
+.menu-item-depth-9 .menu-item-transport { margin-right: -270px; margin-left:0;}
+.menu-item-depth-10 .menu-item-transport { margin-right: -300px; margin-left:0;}
+.menu-item-depth-11 .menu-item-transport { margin-right: -330px; margin-left:0;}
+
+/* Menu item controls */
+.item-type {
+       padding-left: 10px;
+       padding-right:0;
+}
+
+.item-controls {
+       left: 20px;
+       right: auto;
+}
+
+.item-controls .item-order {
+       padding-left: 10px;
+       padding-right: 0;
+}
+
+.item-edit {
+       left: -20px;
+       right:auto;
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 0;
+}
+
+/* Menu editing */
+.menu-item-settings {
+       padding: 10px 10px 10px 0;
+       border-width: 0 1px 1px 1px;
+}
+
+#custom-menu-item-url {
+       direction: ltr;
+}
+
+.link-to-original {
+       font-style: normal;
+       font-weight: bold;
+}
+
+.link-to-original a {
+       padding-right: 4px;
+       padding-left:0;
+}
+
+.menu-item-settings .description-thin,
+.menu-item-settings .description-wide {
+       margin-left: 10px;
+       margin-right:0;
+       float: right;
+}
+
+/* Major/minor publishing actions (classes) */
+.major-publishing-actions .publishing-action {
+       text-align: left;
+       float: left;
+}
+
+.major-publishing-actions .delete-action {
+       text-align: right;
+       float: right;
+       padding-left: 15px;
+       padding-right:0;
+}
+
+.menu-name-label {
+       margin-left: 15px;
+       margin-right:0;
+}
+
+.auto-add-pages {
+       float: right;
+}
+
+/* Star ratings */
+div.star-holder {
+       background: url('../images/stars-rtl.png?ver=20121108') repeat-x bottom right;
+}
+div.star-holder .star-rating {
+       background: url('../images/stars-rtl.png?ver=20121108') repeat-x top right;
+       float: right;
+}
+
+#plugin-information ul#sidemenu {
+       left: auto;
+       right: 0;
+}
+
+#plugin-information h2 {
+       margin-right: 0;
+       margin-left: 200px;
+}
+
+#plugin-information .fyi {
+       margin-left: 5px;
+       margin-right: 20px;
+}
+
+#plugin-information .fyi h2 {
+       margin-left: 0;
+}
+
+#plugin-information .fyi ul {
+       padding: 10px 7px 10px 5px;
+}
+
+#plugin-information #section-screenshots li p {
+       padding-left: 0;
+       padding-right: 20px;
+}
+
+#plugin-information #section-screenshots ol,
+#plugin-information .updated,
+#plugin-information pre {
+       margin-right: 0;
+       margin-left: 215px;
+}
+
+#plugin-information .updated,
+#plugin-information .error {
+       clear: none;
+       direction: rtl;
+}
+
+#plugin-information #section-holder .section {
+       direction: ltr;
+}
+
+/* Editor/Main Column */
+.posting {
+       margin-left: 212px;
+       margin-right: 0;
+       position: relative;
+}
+
+h3.tb {
+       margin-left: 0;
+       margin-right: 5px;
+}
+
+#publish {
+       float: left;
+}
+
+.postbox .handlediv {
+       float: left;
+}
+
+.actions li {
+       float: right;
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+#extra-fields .actions {
+    margin: -23px 0 0 -7px;
+}
+
+/* Photo Styles */
+#img_container a {
+       float: right;
+}
+
+#category-add input,
+#category-add select {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+/* Tags */
+#tagsdiv #newtag {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+#tagadd {
+       margin-left: 0;
+       margin-right: 3px;
+}
+
+#tagchecklist span {
+       margin-left: .5em;
+       margin-right: 10px;
+       float: right;
+}
+#tagchecklist span a {
+       margin: 6px -9px 0 0;
+       float: right;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+#postcustomstuff .submit input {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+.ac_results li {
+       text-align: right;
+}
+
+#TB_ajaxContent #options {
+       right: auto;
+       left: 25px;
+}
+
+#post_status {
+       margin-left: 0;
+       margin-right: 10px;
+}
+
+/* theme-editor, plugin-editor */
+#templateside {
+       float: left;
+}
+
+#template textarea,
+#docs-list {
+       direction: ltr;
+}
+
+/* theme-install */
+.theme-details .theme-version {
+       float: right;
+}
+
+.theme-details .star-holder {
+       float: left;
+}
+
+.feature-filter .feature-group {
+       float: right;
+}
+
+.feature-filter .feature-group li {
+       padding-right: 0;
+       padding-left: 25px;
+}
+
+/* widgets */
+/* 2 column liquid layout */
+div.widget-liquid-left {
+       float: right;
+       clear: right;
+       margin-right: 0;
+       margin-left: -325px;
+}
+
+div#widgets-left {
+       margin-right: 5px;
+       margin-left: 325px;
+}
+
+div.widget-liquid-right {
+       float: left;
+       clear: left;
+}
+
+.inactive-sidebar .widget {
+       float: right;
+}
+
+div.sidebar-name h3 {
+       font-family: Tahoma, Arial, sans-serif;
+}
+
+#widget-list .widget {
+       float: right;
+}
+
+.inactive-sidebar .widget-placeholder {
+       float: right;
+}
+
+.widget-top .widget-title-action {
+       float: left;
+}
+
+.widget-control-edit {
+       padding: 0 0 0 8px;
+}
+
+.sidebar-name-arrow {
+       float: left;
+}
+
+/* Press This */
+.press-this-sidebar {
+       float: left;
+}
+
+.press-this #header-logo,
+.press-this #wphead h1 {
+       float: right;
+}
+
+/* RTL */
+.ltr {
+       direction: ltr;
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       .post-com-count {
+               background-image: url('../images/bubble_bg-rtl-2x.gif');
+               background-size: 18px 100px;
+       }
+
+       #content-resize-handle, #post-body .wp_themeSkin .mceStatusbar a.mceResize {
+               background: transparent url('../images/resize-rtl-2x.gif') no-repeat scroll right bottom;
+               background-size: 11px 11px;
+       }
+
+       .wp-full-overlay .collapse-sidebar-arrow {
+               background-image: url('../images/arrows-2x.png');
+               background-size: 15px 123px;
+       }
+
+       div.star-holder {
+               background: url('../images/stars-rtl-2x.png?ver=20121108') repeat-x bottom right;
+               background-size: 21px 37px;
+       }
+
+       div.star-holder .star-rating {
+               background: url('../images/stars-rtl-2x.png?ver=20121108') repeat-x top right;
+               background-size: 21px 37px;
+       }
+
+       #post-body .wp_themeSkin .mceStatusbar a.mceResize,
+       #content-resize-handle {
+               background: transparent url('../images/resize-rtl-2x.gif') no-repeat scroll left bottom;
+       }
+}
+
+/* =Localized CSS
+-------------------------------------------------------------- */
+
+/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */
+body.locale-he-il,
+.locale-he-il .quicktags, .locale-he-il .search,
+.locale-he-il .howto,
+.locale-he-il #adminmenu .awaiting-mod,
+.locale-he-il #adminmenu span.update-plugins,
+.locale-he-il #sidemenu li a span.update-plugins,
+.locale-he-il .post-com-count-wrapper,
+.locale-he-il .widefat th,
+.locale-he-il .tablenav .displaying-num,
+.locale-he-il .inline-edit-row fieldset span.title,
+.locale-he-il .inline-edit-row fieldset span.checkbox-title,
+.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,
+.locale-he-il .inline-edit-row .catshow,
+.locale-he-il .inline-edit-row .cathide,
+.locale-he-il .inline-edit-row #bulk-titles div,
+.locale-he-il p.help,
+.locale-he-il p.description,
+.locale-he-il span.description,
+.locale-he-il .form-wrap p,
+.locale-he-il h2 .nav-tab,
+.locale-he-il #your-profile legend,
+.locale-he-il #utc-time, .locale-he-il #local-time,
+.locale-he-il #poststuff h3,
+.locale-he-il .metabox-holder h3,
+.locale-he-il .tool-box .title,
+.locale-he-il td,
+.locale-he-il textarea,
+.locale-he-il input,
+.locale-he-il select,
+.locale-he-il .wrap h2,
+.locale-he-il .subtitle,
+.locale-he-il .wrap .add-new-h2,
+.locale-he-il #dashboard_right_now p.sub,
+.locale-he-il #dashboard-widgets h4,
+.locale-he-il a.rsswidget,
+.locale-he-il #dashboard_plugins h4,
+.locale-he-il #dashboard_plugins h5,
+.locale-he-il #dashboard_recent_comments .comment-meta .approve,
+.locale-he-il #dashboard_right_now td.b,
+.locale-he-il #dashboard_right_now .versions a,
+.locale-he-il .rss-widget span.rss-date,
+.locale-he-il #dashboard_recent_drafts h4 abbr,
+body.login.locale-he-il,
+.locale-he-il #login form .submit input,
+.locale-he-il #menu-management .nav-tabs-arrow-right,
+.locale-he-il #category-add input,
+.locale-he-il #category-add select,
+.locale-he-il .submit input,
+.locale-he-il .button,
+.locale-he-il .button-primary,
+.locale-he-il .button-secondary,
+.locale-he-il #postcustomstuff .submit input,
+.locale-he-il div.sidebar-name h3 {
+       font-family: Arial, sans-serif;
+}
+
+/* he_IL: Have <em> be bold rather than italic. */
+.locale-he-il em {
+       font-style: normal;
+       font-weight: bold;
+}
diff --git a/wp-admin/css/wp-admin-rtl.dev.css b/wp-admin/css/wp-admin-rtl.dev.css
deleted file mode 100644 (file)
index 84c6c35..0000000
+++ /dev/null
@@ -1,2532 +0,0 @@
-/*------------------------------------------------------------------------------
-
-
-Hello, this is the RTL version of the  main WordPress admin CSS file.
-All the important stuff is in here.
-
-
-TABLE OF CONTENTS:
-------------------
- 1.0 - Text Elements
- 2.0 - Forms
- 3.0 - Actions
- 4.0 - Notifications
- 5.0 - TinyMCE
- 6.0 - Admin Header
-       6.1 - Screen Options Tabs
- 7.0 - Main Navigation
- 8.0 - Layout Blocks
- 9.0 - Dashboard
-10.0 - List Posts
-       10.1 - Inline Editing
-11.0 - Write/Edit Post Screen
-       11.1 - Custom Fields
-       11.2 - Post Revisions
-12.0 - Categories
-13.0 - Tags
-14.0 - Media Screen
-       14.1 - Media Uploader
-       14.2 - Image Editor
-15.0 - Comments Screen
-16.0 - Themes
-       16.1 - Custom Header
-       16.2 - Custom Background
-       16.3 - Tabbed Admin Screen Interface
-17.0 - Plugins
-18.0 - Users
-19.0 - Tools
-20.0 - Settings
-21.0 - Admin Footer
-22.0 - About Pages
-23.0 - Misc
-24.0 - Dead
-25.0 - TinyMCE tweaks
-26.0 - Full Overlay w/ Sidebar
-27.0 - Customize Loader
-
-
-------------------------------------------------------------------------------*/
-
-
-/*------------------------------------------------------------------------------
-  1.0 - Text Styles
-------------------------------------------------------------------------------*/
-
-ol {
-       margin-left: 0;
-       margin-right: 2em;
-}
-
-.code, code {
-       font-family: monospace;
-       direction: ltr;
-}
-
-.quicktags, .search {
-       font: 12px Tahoma, Arial, sans-serif;
-}
-
-.icon32 {
-       float: right;
-       margin-right: 0;
-       margin-left: 8px;
-}
-
-.icon16 {
-       float: right;
-       margin-right: -8px;
-       margin-left: 0;
-}
-
-.howto {
-       font-style: normal;
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-p.install-help {
-       font-style: normal;
-}
-
-
-/*------------------------------------------------------------------------------
-  2.0 - Forms
-------------------------------------------------------------------------------*/
-
-#doaction,
-#doaction2,
-#post-query-submit {
-       margin-right: 0;
-       margin-left: 8px;
-}
-
-#timezone_string option {
-       margin-left: 0;
-       margin-right: 1em;
-}
-
-#pass-strength-result {
-       float: right;
-       margin: 13px 1px 5px 5px;
-}
-
-p.search-box {
-       float: left;
-}
-
-input[type=password] {
-       direction: ltr;
-}
-
-input[type="text"].ui-autocomplete-loading {
-       background: transparent url('../images/loading.gif') no-repeat left center;
-}
-
-ul#add-to-blog-users {
-       margin: 0 14px 0 0;
-}
-
-.ui-autocomplete li {
-       text-align: right;
-}
-
-/*------------------------------------------------------------------------------
-  3.0 - Actions
-------------------------------------------------------------------------------*/
-
-#delete-action {
-       float: right;
-}
-
-#publishing-action {
-       float: left;
-}
-
-#post-body .misc-pub-section {
-       border-right:0;
-       border-left-width: 1px;
-       border-left-style: solid;
-}
-
-#post-body .misc-pub-section-last {
-       border-left: 0;
-}
-
-#minor-publishing-actions {
-       padding: 10px 8px 2px 10px;
-       text-align: left;
-}
-
-#save-post {
-       float: right;
-}
-
-#minor-publishing .ajax-loading {
-       padding: 3px 4px 0 0;
-       float: right;
-}
-
-.preview {
-       float: left;
-}
-
-#sticky-span {
-       margin-left: 0;
-       margin-right: 18px;
-}
-
-.side-info ul {
-       padding-left: 0;
-       padding-right: 18px;
-}
-
-td.action-links,
-th.action-links {
-       text-align: left;
-}
-
-.describe .del-link {
-       padding-left: 0;
-       padding-right: 5px;
-}
-
-
-/*------------------------------------------------------------------------------
-  4.0 - Notifications
-------------------------------------------------------------------------------*/
-
-form.upgrade .hint {
-       font-style: normal;
-}
-
-#ajax-response.alignleft {
-       margin-left: 0;
-       margin-right: 2em;
-}
-
-
-/*------------------------------------------------------------------------------
-  5.0 - TinyMCE
-------------------------------------------------------------------------------*/
-
-#quicktags {
-       background-position: right top;
-}
-
-#ed_reply_toolbar input {
-       margin: 1px 1px 1px 2px;
-}
-
-/*------------------------------------------------------------------------------
-  6.0 - Admin Header
-------------------------------------------------------------------------------*/
-#wphead {
-       height: 32px;
-       margin-left: 15px;
-       margin-right: 2px;
-}
-
-#header-logo {
-       float: right;
-}
-
-#wphead h1 {
-       float: right;
-}
-
-/*------------------------------------------------------------------------------
-  6.1 - Screen Options Tabs
-------------------------------------------------------------------------------*/
-
-#screen-meta-links {
-       margin-right: 0;
-       margin-left: 24px;
-}
-
-#screen-meta {
-       margin-right: 5px;
-       margin-left: 15px;
-}
-
-#screen-options-link-wrap,
-#contextual-help-link-wrap {
-       float: left;
-       margin-left: 0;
-       margin-right: 6px;
-}
-
-#screen-meta-links a.show-settings {
-       padding-right: 6px;
-       padding-left: 16px;
-}
-
-.toggle-arrow {
-       background-position: top right;
-}
-.toggle-arrow-active {
-       background-position: bottom right;
-}
-
-.metabox-prefs label {
-       padding-right: 0;
-       padding-left: 15px;
-}
-
-.metabox-prefs label input {
-       margin-right: 2px;
-       margin-left: 5px;
-}
-
-/*------------------------------------------------------------------------------
-  6.2 - Help Menu
-------------------------------------------------------------------------------*/
-
-#contextual-help-wrap {
-       margin-left: 0;
-       margin-right: -4px;
-}
-
-#contextual-help-back {
-       left: 170px;
-       right: 150px;
-}
-
-#contextual-help-wrap.no-sidebar #contextual-help-back {
-       left: 0;
-       right: 150px;
-
-       border-right-width: 1px;
-       border-left-width: 0;
-       -webkit-border-bottom-right-radius: 0;
-       border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 2px;
-       border-bottom-left-radius: 2px;
-}
-
-.contextual-help-tabs {
-       float: right;
-}
-
-.contextual-help-tabs a {
-       padding-left: 5px;
-       padding-right: 12px;
-}
-
-.contextual-help-tabs .active {
-       margin-right: 0;
-       margin-left: -1px;
-}
-
-.contextual-help-tabs .active,
-.contextual-help-tabs-wrap {
-       border-left: 0;
-       border-right-width: 1px;
-}
-
-.help-tab-content {
-       margin-right: 0;
-       margin-left: 22px;
-}
-
-.help-tab-content li {
-       margin-left: 0;
-       margin-right: 18px;
-}
-
-.contextual-help-sidebar {
-       float: left;
-       padding-right: 12px;
-       padding-left: 8px;
-}
-
-/*------------------------------------------------------------------------------
-  7.0 - Main Navigation (Right Menu) (RTL: Left Menu)
-------------------------------------------------------------------------------*/
-
-#adminmenuback,
-#adminmenuwrap {
-       border-width: 0 0 0 1px;
-}
-
-#adminmenushadow {
-       right: auto;
-       left: 0;
-}
-
-#adminmenu li .wp-submenu {
-       left: auto;
-       right: 146px;
-}
-
-.folded #adminmenu .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu {
-       left: auto;
-       right: 26px;
-}
-
-#adminmenu .wp-submenu.sub-open,
-#adminmenu li.focused.wp-not-current-submenu .wp-submenu,
-.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
-.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,
-.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu {
-       padding: 0 0 8px 8px;
-}
-
-#adminmenu div.wp-menu-image {
-       float: right;
-}
-
-#adminmenu li li {
-       margin-left: 0;
-       margin-right: 8px
-}
-
-#adminmenu .wp-submenu a,
-#adminmenu li li a,
-.folded #adminmenu .wp-not-current-submenu li a {
-       padding-left: 0;
-       padding-right: 12px;
-}
-
-#adminmenu .wp-not-current-submenu li a {
-       padding-left: 0;
-       padding-right: 18px;
-}
-
-.folded #adminmenu li li {
-       margin-left: inherit;
-       margin-right: 0
-}
-
-.folded #adminmenu li li a {
-       padding-left: inherit;
-       padding-right: 0
-}
-
-.wp-menu-arrow {
-       right: 0;
-
-       -moz-transform:    translate( -139px );
-       -webkit-transform: translate( -139px );
-       -o-transform:      translate( -139px );
-       -ms-transform:     translate( -139px );
-       transform:         translate( -139px );
-}
-
-.ie8 .wp-menu-arrow {
-       right: -20px;
-}
-
-#adminmenu .wp-menu-arrow div {
-       left: -8px;
-       width: 16px;
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
-       -moz-transform:    translate( -138px );
-       -webkit-transform: translate( -138px );
-       -o-transform:      translate( -138px );
-       -ms-transform:     translate( -138px );
-       transform:         translate( -138px );
-}
-
-.folded .wp-menu-arrow {
-       -moz-transform:    translate( -27px );
-       -webkit-transform: translate( -27px );
-       -o-transform:      translate( -27px );
-       -ms-transform:     translate( -27px );
-       transform:         translate( -27px );
-}
-
-#adminmenu .wp-not-current-submenu .wp-menu-arrow div {
-    border-style: solid solid none none;
-    border-width: 1px 1px 0 0;
-}
-
-#adminmenu .wp-menu-image img {
-       float: right;
-       padding: 5px 2px 0 0;
-}
-
-#adminmenu .wp-submenu .wp-submenu-head {
-       padding: 6px 10px 5px 4px;
-}
-
-#adminmenu li .wp-submenu-wrap {
-       border-width: 1px 0 1px 1px;
-       border-style: solid none solid solid;
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 3px;
-       -webkit-border-top-right-radius: 0;
-       -webkit-border-top-left-radius: 3px;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 3px;
-       border-top-right-radius: 0;
-       border-top-left-radius: 3px;
-}
-
-.folded #adminmenu .wp-submenu ul {
-       border-width: 0 1px 0 0;
-}
-
-.folded #adminmenu .wp-submenu a {
-       padding-left: 0;
-       padding-right: 10px;
-}
-
-.folded #adminmenu a.wp-has-submenu {
-       margin-left: 0;
-       margin-right: 40px;
-}
-
-#adminmenu .wp-menu-toggle {
-       clear: left;
-       float: left;
-       padding: 1px 0 0 2px;
-}
-
-#adminmenu .awaiting-mod,
-#adminmenu span.update-plugins,
-#sidemenu li a span.update-plugins {
-       font-family: Tahoma, Arial, sans-serif;
-       margin-left: 0;
-       margin-right: 7px;
-}
-
-#collapse-button {
-       float: right;
-}
-
-/* Auto-folding of the admin menu */
-@media only screen and (max-width: 900px) {
-       #adminmenu li .wp-submenu,
-       #adminmenu .wp-has-current-submenu .wp-submenu {
-               left: auto;
-               right: 26px;
-       }
-
-       #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
-       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
-               padding: 0 0 8px 8px;
-       }
-
-       .folded #adminmenu .wp-not-current-submenu li a {
-               padding-left: 0;
-               padding-right: 12px;
-       }
-
-       #adminmenu li li,
-       #adminmenu li li a {
-               padding-left: inherit;
-               padding-right: 0
-       }
-
-       .wp-menu-arrow {
-               -moz-transform:    translate( -27px );
-               -webkit-transform: translate( -27px );
-               -o-transform:      translate( -27px );
-               -ms-transform:     translate( -27px );
-               transform:         translate( -27px );
-       }
-
-       #adminmenu .wp-submenu ul {
-               border-width: 0 1px 0 0;
-       }
-
-       #adminmenu .wp-submenu a {
-               padding-left: 0;
-               padding-right: 10px;
-       }
-
-       #adminmenu a.wp-has-submenu {
-               margin-left: 0;
-               margin-right: 40px;
-       }
-
-       body #wpcontent {
-               margin-left: 0;
-               margin-right: 52px;
-       }
-
-       body .wp-admin #footer {
-               margin-left: 15px;
-               margin-right: 52px;
-       }
-}
-
-/* List table styles */
-.post-com-count-wrapper {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.column-response .post-com-count {
-       float: right;
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-.response-links {
-       float: right;
-}
-
-
-/*------------------------------------------------------------------------------
-  8.0 - Layout Blocks
-------------------------------------------------------------------------------*/
-
-.widefat th {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.widefat td p {
-       margin: 2px 0 0.8em;
-}
-
-.postbox-container {
-       float: right;
-}
-
-.postbox .handlediv {
-       float: left;
-}
-
-/*------------------------------------------------------------------------------
-  9.0 - Dashboard
-------------------------------------------------------------------------------*/
-
-#the-comment-list p.comment-author img {
-       float: right;
-       margin-right: 0;
-       margin-left: 8px;
-}
-
-/* Browser Nag */
-#dashboard_browser_nag p.browser-update-nag.has-browser-icon {
-       padding-right: 0;
-       padding-left: 125px;
-}
-
-.welcome-panel .welcome-panel-close {
-       right: auto;
-       left: 10px;
-}
-
-.welcome-panel .welcome-panel-close:before {
-       left: auto;
-       right: -12px;
-}
-
-.welcome-panel .wp-badge {
-       float: right;
-}
-
-.welcome-panel-content .about-description, .welcome-panel h3 {
-       margin-left: 0;
-       margin-right: 190px;
-}
-
-.welcome-panel .welcome-panel-column {
-       margin: 0 -25px 0 5%;
-       padding-left: 0;
-       padding-right: 25px;
-       float: right;
-}
-
-.welcome-panel .welcome-panel-column.welcome-panel-last {
-       margin-right: auto;
-       padding-right: 0;
-       margin-left: 0;
-}
-
-.welcome-panel h4 .icon16 {
-       margin-left: 0;
-       margin-right: -32px;
-}
-
-.welcome-panel .welcome-panel-column-container {
-       padding: 0 25px 0 0;
-}
-
-.welcome-panel .welcome-panel-column ul {
-       margin: 1.6em 1.3em 1em 1em;
-}
-
-.welcome-panel .welcome-panel-column li {
-       padding-left: 0;
-       padding-right: 2px;
-}
-
-/*------------------------------------------------------------------------------
-  10.0 - List Posts (/Pages/etc)
-------------------------------------------------------------------------------*/
-
-.fixed .column-comments {
-       text-align: right;
-}
-.fixed .column-comments .vers {
-       padding-left: 0;
-       padding-right: 3px;
-}
-.fixed .column-comments a {
-       float: right;
-}
-.sorting-indicator {
-       margin-left: 0;
-       margin-right: 7px;
-}
-th.sortable a span,
-th.sorted a span {
-       float: right;
-}
-
-/* Bulk Actions */
-
-.tablenav-pages a {
-       margin-right: 0;
-       margin-left: 1px;
-}
-.tablenav-pages .next-page {
-       margin-left: 0;
-       margin-right: 2px;
-}
-
-.tablenav a.button-secondary {
-       margin: 3px 0 0 8px;
-}
-
-.tablenav .tablenav-pages {
-       float: left;
-}
-
-.tablenav .displaying-num {
-       margin-right: 0;
-       margin-left: 10px;
-       font-family: Tahoma, Arial, sans-serif;
-       font-style: normal;
-}
-
-.tablenav .actions {
-       padding: 2px 0 0 8px;
-}
-
-.tablenav .delete {
-       margin-right: 0;
-       margin-left: 20px;
-}
-
-.view-switch {
-       float: left;
-}
-
-.filter {
-       float: right;
-       margin: -5px 10px 0 0;
-}
-
-.filter .subsubsub {
-       margin-left: 0;
-       margin-right: -10px;
-}
-
-#posts-filter fieldset {
-       float: right;
-       margin: 0 0 1em 1.5ex;
-}
-
-#posts-filter fieldset legend {
-       padding: 0 1px .2em 0;
-}
-
-/*------------------------------------------------------------------------------
-  10.1 - Inline Editing
-------------------------------------------------------------------------------*/
-
-#wpbody-content .inline-edit-row fieldset {
-       float: right;
-}
-
-#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
-       border-width: 0 1px 0 0;
-}
-
-#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
-       float: left;
-}
-
-.inline-edit-row fieldset label span.title {
-       float: right;
-}
-
-.inline-edit-row fieldset label span.input-text-wrap {
-       margin-left: 0;
-       margin-right: 5em;
-}
-
-.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
-       padding-right: 0;
-       padding-left: 0.5em;
-}
-
-#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
-       margin-right: 0;
-       margin-left: 0.5em
-}
-
-/*     Styling */
-
-.inline-edit-row fieldset span.title,
-.inline-edit-row fieldset span.checkbox-title {
-       font-family: Tahoma, Arial, sans-serif;
-       font-style: normal;
-}
-
-.inline-edit-row fieldset .inline-edit-date {
-       float: right;
-}
-
-.inline-edit-row fieldset ul.cat-checklist label,
-.inline-edit-row .catshow,
-.inline-edit-row .cathide,
-.inline-edit-row #bulk-titles div {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.quick-edit-row-post fieldset label.inline-edit-status {
-       float: right;
-}
-
-#bulk-titles div a {
-       float: right;
-       margin: 3px -2px 0 3px;
-       overflow: hidden;
-       text-indent: -9999px;
-}
-
-
-/*------------------------------------------------------------------------------
-  11.0 - Write/Edit Post Screen
-------------------------------------------------------------------------------*/
-/* structural/layout */
-#post-body-content {
-       float: right;
-}
-
-#poststuff #post-body.columns-2 {
-       margin-left: 300px;
-       margin-right: 0;
-}
-
-#post-body.columns-2 #postbox-container-1 {
-       float: left;
-       margin-left: -300px;
-       margin-right: 0;
-}
-
-@media only screen and (max-width: 850px) {
-       #wpbody-content #post-body.columns-2 #postbox-container-1 {
-               margin-left: 0;
-       }
-}
-
-#titlediv #title-prompt-text,
-#wp-fullscreen-title-prompt-text {
-       right:0;
-}
-
-#sample-permalink {
-       direction:ltr;
-}
-
-#sample-permalink #editable-post-name {
-       unicode-bidi:embed;
-}
-#wp-fullscreen-title-prompt-text {
-       left: auto;
-       right: 0;
-}
-
-.postarea h3 label {
-       float: right;
-}
-
-.submitbox .submit {
-       text-align: right;
-}
-
-.inside-submitbox #post_status {
-       margin: 2px -2px 2px 0;
-}
-
-.submitbox .submit input {
-       margin-right: 0;
-       margin-left: 4px;
-}
-
-#normal-sortables .postbox .submit {
-       float: left;
-}
-
-.taxonomy div.tabs-panel {
-       margin: 0 125px 0 5px;
-}
-
-#side-sortables .comments-box thead th,
-#normal-sortables .comments-box thead th {
-       font-style: normal;
-}
-
-#commentsdiv img.waiting {
-       padding-left: 0;
-       padding-right: 5px;
-}
-
-#post-body .add-menu-item-tabs li.tabs {
-       border-width: 1px 1px 1px 0;
-       margin-right: 0;
-       margin-left: -1px;
-}
-
-/* Global classes */
-
-#post-body .tagsdiv #newtag {
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-.autosave-info {
-       padding: 2px 2px 2px 15px;
-       text-align: left;
-}
-
-#post-body .wp_themeSkin .mceStatusbar a.mceResize {
-       background: transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;
-       cursor: sw-resize;
-}
-
-.curtime #timestamp {
-       background-position: right top;
-       padding-left: 0;
-       padding-right: 18px;
-}
-
-/*------------------------------------------------------------------------------
-  11.1 - Custom Fields
-------------------------------------------------------------------------------*/
-
-#postcustomstuff table input,
-#postcustomstuff table select,
-#postcustomstuff table textarea {
-       margin: 8px 8px 8px 0;
-}
-
-/*------------------------------------------------------------------------------
-  11.2 - Post Revisions
-------------------------------------------------------------------------------*/
-
-table.diff td, table.diff th {
-       font-family: Consolas, Monaco, monospace;
-}
-
-/*------------------------------------------------------------------------------
-  12.0 - Categories
-------------------------------------------------------------------------------*/
-
-.category-adder {
-       margin-left: 0;
-       margin-right: 120px;
-}
-
-#post-body ul.add-menu-item-tabs {
-       float: right;
-       text-align: left;
-       /* Negative margin for the sake of those without JS: all tabs display */
-       margin: 0 5px 0 -120px;
-}
-
-#post-body ul.add-menu-item-tabs li.tabs {
-       -webkit-border-top-left-radius: 0;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 3px;
-       border-top-left-radius: 0;
-       border-top-right-radius: 3px;
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 3px;
-}
-
-#front-page-warning,
-#front-static-pages ul,
-ul.export-filters,
-.inline-editor ul.cat-checklist ul,
-.categorydiv ul.categorychecklist ul,
-.customlinkdiv ul.categorychecklist ul,
-.posttypediv ul.categorychecklist ul,
-.taxonomydiv ul.categorychecklist ul {
-       margin-left: 0;
-       margin-right: 18px;
-}
-
-#post-body .add-menu-item-tabs li.tabs {
-       border-style: solid solid solid none;
-       border-width: 1px 1px 1px 0;
-       margin-right: 0;
-       margin-left: -1px;
-}
-
-p.help,
-p.description,
-span.description,
-.form-wrap p {
-       font-style: normal;
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-/*------------------------------------------------------------------------------
-  13.0 - Tags
-------------------------------------------------------------------------------*/
-
-.taghint {
-       margin: 15px 12px -24px 0;
-}
-
-#poststuff .tagsdiv .howto {
-       margin: 0 8px 6px 0;
-}
-
-.ac_results li {
-       text-align: right;
-}
-
-.links-table th {
-       text-align: right;
-}
-
-/*------------------------------------------------------------------------------
-  14.0 - Media Screen
-------------------------------------------------------------------------------*/
-
-#wpbody-content .describe th {
-       text-align: right;
-
-}
-
-.describe .media-item-info .A1B1 {
-       padding: 0 10px 0 0;
-}
-
-.media-upload-form td label {
-       margin-left: 6px;
-       margin-right: 2px;
-}
-
-.media-upload-form .align .field label {
-       padding: 0 23px 0 0;
-       margin: 0 3px 0 1em;
-}
-
-.media-upload-form tr.image-size label {
-       margin: 0 5px 0 0;
-}
-
-#wpbody-content .describe p.help {
-       padding: 0 5px 0 0;
-}
-
-.media-item .error-div a.dismiss,
-.describe-toggle-on,
-.describe-toggle-off {
-       float: left;
-       margin-right: 0;
-       margin-left: 15px;
-}
-
-.media-item .error-div a.dismiss {
-       padding: 0 15px 0 0;
-}
-
-.media-item .error-div {
-       padding-left: 0;
-       padding-right: 10px;
-}
-
-.media-item .pinkynail {
-       float: right;
-}
-
-.media-item .describe td {
-       padding: 0 0 8px 8px;
-}
-
-.media-item .progress {
-       float: left;
-    margin: 6px 0 0 10px;
-}
-
-/*------------------------------------------------------------------------------
-  14.1 - Media Uploader
-------------------------------------------------------------------------------*/
-
-#find-posts-response .found-radio {
-       padding: 5px 8px 0 0;
-}
-
-.find-box-search label {
-       padding-right: 0;
-       padding-left: 6px;
-}
-
-.find-box #resize-se {
-       right: auto;
-       left: 1px;
-}
-
-form.upgrade .hint {
-       font-style: normal;
-}
-
-
-/*------------------------------------------------------------------------------
-  14.2 - Image Editor
-------------------------------------------------------------------------------*/
-
-.imgedit-menu div {
-       float: right;
-}
-
-.imgedit-help {
-       font-style: normal;
-}
-
-.imgedit-submit-btn {
-       margin-left: 0;
-       margin-right: 20px;
-}
-
-
-/*------------------------------------------------------------------------------
-  15.0 - Comments Screen
-------------------------------------------------------------------------------*/
-
-.form-table th {
-       text-align: right;
-}
-
-.form-table input.tog {
-       margin-right: 0;
-       margin-left: 2px;
-       float: right;
-}
-
-.form-table table.color-palette {
-       float: right;
-}
-
-/* reply to comments */
-
-#replysubmit img.waiting,
-.inline-edit-save img.waiting {
-       float: left;
-}
-
-#replysubmit .button {
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-#edithead .inside {
-       float: right;
-       padding: 3px 5px 2px 0;
-}
-
-.comment-ays th {
-       border-right-style: none;
-       border-left-style: solid;
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-
-.spam-undo-inside .avatar,
-.trash-undo-inside .avatar {
-       margin-left: 8px;
-}
-
-#comment-status-radio input {
-       margin: 2px 0 5px 3px;
-}
-
-/*------------------------------------------------------------------------------
-  16.0 - Themes
-------------------------------------------------------------------------------*/
-
-h3.available-themes {
-       float: right;
-}
-
-.available-theme {
-       margin-right: 0;
-       margin-left: 10px;
-       padding: 20px 0 20px 20px;
-}
-
-#current-theme .theme-info li,
-.theme-options li,
-.available-theme .action-links li {
-       float: right;
-       padding-right: 0;
-       padding-left: 10px;
-       margin-right: 0;
-       margin-left: 10px;
-       border-right: none;
-       border-left: 1px solid #dfdfdf;
-}
-
-.available-theme .action-links li {
-       padding-left: 8px;
-       margin-left: 8px;
-}
-
-#current-theme .theme-info li:last-child,
-.theme-options li:last-child,
-.available-theme .action-links li:last-child {
-       padding-left: 0;
-       margin-right: 0;
-       border-left: 0;
-}
-
-.available-theme .action-links .delete-theme {
-       float: left;
-       margin-left: 0;
-       margin-right: 8px;
-}
-
-.available-theme .action-links p {
-       float: right;
-}
-
-#current-theme.has-screenshot {
-       padding-left: 0;
-       padding-right: 330px;
-}
-
-#current-theme h4 span {
-       margin-left: 0;
-       margin-right: 20px;
-}
-
-#current-theme img {
-       float: right;
-       width: 300px;
-       margin-left: 0;
-       margin-right: -330px;
-}
-
-.theme-options .load-customize {
-       margin-right: 0;
-       margin-left: 30px;
-       float: right;
-}
-
-.theme-options span {
-       float: right;
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-.theme-options ul {
-       float: right;
-}
-
-/* Allow for three-up on 1024px wide screens, e.g. tablets */
-@media only screen and (max-width: 1200px) {
-       #current-theme.has-screenshot {
-               padding-right: 270px;
-       }
-
-       #current-theme img {
-               margin-right: -270px;
-               width: 240px;
-       }
-}
-
-#broken-themes {
-       text-align: right;
-}
-
-/*------------------------------------------------------------------------------
-  16.1 - Custom Header Screen
-------------------------------------------------------------------------------*/
-
-.appearance_page_custom-header .available-headers .default-header {
-       float: right;
-       margin: 0 0 20px 20px;
-}
-
-.appearance_page_custom-header .random-header {
-       margin: 0 0 20px 20px;
-}
-
-.appearance_page_custom-header .available-headers label input,
-.appearance_page_custom-header .random-header label input {
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-/*------------------------------------------------------------------------------
-  16.2 - Custom Background Screen
-------------------------------------------------------------------------------*/
-
-/* No RTL for now, this space intentionally left blank */
-
-
-/*------------------------------------------------------------------------------
-  16.3 - Tabbed Admin Screen Interface (Experimental)
-------------------------------------------------------------------------------*/
-
-.nav-tab {
-       margin: 0 0 -1px 6px;
-}
-
-h2 .nav-tab {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-
-/*------------------------------------------------------------------------------
-  17.0 - Plugins
-------------------------------------------------------------------------------*/
-
-.plugins .desc ul,
-.plugins .desc ol {
-       margin: 0 2em 0 0;
-}
-
-#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title {
-       padding-right: 0;
-       padding-left: 12px;
-}
-
-
-/*------------------------------------------------------------------------------
-  18.0 - Users
-------------------------------------------------------------------------------*/
-
-#profile-page .form-table #rich_editing {
-       margin-right: 0;
-       margin-left: 5px
-}
-
-#profile-page #pass1,
-#profile-page #pass2,
-#profile-page #user_login {
-       direction: ltr;
-}
-
-#your-profile legend {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-/*------------------------------------------------------------------------------
-  19.0 - Tools
-------------------------------------------------------------------------------*/
-
-.pressthis a span {
-       background-position: right 5px;
-       padding: 8px 27px 8px 11px;
-}
-
-.pressthis a:after {
-       right: auto;
-       left: 10px;
-       background: transparent;
-       transform: skew(-20deg) rotate(-6deg);
-       -webkit-transform: skew(-20deg) rotate(-6deg);
-       -moz-transform: skew(-20deg) rotate(-6deg);
-}
-
-
-.pressthis a:hover:after {
-       transform: skew(-20deg) rotate(-9deg);
-       -webkit-transform: skew(-20deg) rotate(-9deg);
-       -moz-transform: skew(-20deg) rotate(-9deg);
-}
-
-/*------------------------------------------------------------------------------
-  20.0 - Settings
-------------------------------------------------------------------------------*/
-
-#utc-time, #local-time {
-       padding-left: 0;
-       padding-right: 25px;
-       font-style: normal;
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-/*------------------------------------------------------------------------------
-  21.0 - Admin Footer
-------------------------------------------------------------------------------*/
-
-#footer {
-       margin-left: 20px;
-}
-
-#wpcontent,
-#footer {
-       margin-right: 165px;
-}
-
-/*------------------------------------------------------------------------------
-  22.0 - About Pages
-------------------------------------------------------------------------------*/
-
-.wrap.about-wrap {
-       margin-left: 40px;
-       margin-right: 20px;
-}
-
-.about-wrap h1,
-.about-text {
-       margin-right: 0;
-       margin-left: 200px;
-}
-
-.about-wrap h2.nav-tab-wrapper {
-       padding-left: 0px;
-       padding-right: 6px;
-}
-
-.about-wrap .wp-badge {
-       right: auto;
-       left: 0;
-}
-
-.about-wrap h2 .nav-tab {
-       margin-right: 0;
-       margin-left: 3px;
-}
-
-.about-wrap .changelog li {
-       margin-left: 0;
-       margin-right: 3em;
-}
-
-.about-wrap .three-col-images .last-feature {
-       float: left;
-}
-
-.about-wrap .three-col-images .first-feature {
-       float: right;
-}
-
-.about-wrap .feature-section.three-col div {
-       margin-right: 0;
-       margin-left: 4.999999999%;
-       float: right;
-}
-
-.about-wrap .feature-section.three-col h4 {
-       text-align: right;
-}
-
-.about-wrap .feature-section.three-col img {
-       margin-right: 5px;
-       margin-left: 0;
-}
-
-.about-wrap .feature-section.three-col .last-feature {
-       margin-left: 0;
-}
-
-.about-wrap .feature-section img {
-       margin: 0 0 10px 0.7%;
-}
-
-.about-wrap .feature-section.images-stagger-right img {
-       float: left;
-       margin: 0 12px 12px 5px;
-}
-
-.about-wrap .feature-section.images-stagger-left img {
-       float: right;
-       margin: 0 5px 12px 12px;
-}
-
-.about-wrap li.wp-person,
-.about-wrap li.wp-person img.gravatar {
-       float: right;
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-/*------------------------------------------------------------------------------
-  23.0 - Misc
-------------------------------------------------------------------------------*/
-
-#template div {
-       margin-right: 0;
-       margin-left: 190px;
-}
-
-.column-author img, .column-username img {
-       float: right;
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-.tagchecklist {
-       margin-left: 0;
-       margin-right: 14px;
-}
-
-.tagchecklist strong {
-       margin-left: 0;
-       margin-right: -8px;
-}
-
-.tagchecklist span {
-       margin-right: 0;
-       margin-left: 25px;
-       float: right;
-
-}
-.tagchecklist span a {
-       margin: 6px -9px 0pt 0pt;
-       float: right;
-}
-
-#poststuff h2 {
-       clear: right;
-}
-
-#poststuff h3,
-.metabox-holder h3 {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.tool-box .title {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-#sidemenu {
-       margin: -30px 315px 0 15px;
-       float: left;
-       padding-left: 0;
-       padding-right: 10px;
-}
-#sidemenu a {
-       float: right;
-}
-
-table .vers,
-table .column-visible,
-table .column-rating {
-       text-align: right;
-}
-
-.screen-meta-toggle {
-       right: auto;
-       left: 15px;
-}
-
-/*------------------------------------------------------------------------------
-  24.0  - Dead
-------------------------------------------------------------------------------*/
-
-/* - Not used anywhere in WordPress - verify and then deprecate
-------------------------------------------------------------------------------*/
-
-/* No RTL for now, this space intentionally left blank */
-
-
-/* - Only used once or twice in all of WP - deprecate for global style
-------------------------------------------------------------------------------*/
-
-* html #template div {margin-left: 0;}
-
-.list-ajax-loading {
-       float: left;
-       margin-right: 0;
-       margin-left: 9px;
-}
-
-/* - Used - but could/should be deprecated with a CSS reset
-------------------------------------------------------------------------------*/
-/* No RTL for now, this space intentionally left blank */
-
-
-/*------------------------------------------------------------------------------
- 25.0 - TinyMCE tweaks
-               Small tweaks for until tinymce css files are proprely RTLized
-------------------------------------------------------------------------------*/
-#editorcontainer .wp_themeSkin .mceStatusbar {
-       padding-left: 0;
-       padding-right: 5px;
-}
-#editorcontainer .wp_themeSkin .mceStatusbar div {
-       float: right;
-}
-
-#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize {
-       float: left;
-}
-
-/*------------------------------------------------------------------------------
-  26.0 - Full Overlay w/ Sidebar
-------------------------------------------------------------------------------*/
-.wp-full-overlay .wp-full-overlay-sidebar {
-       margin: 0;
-       left: auto;
-       right: 0;
-       border-right: 0;
-       border-left: 1px solid rgba( 0, 0, 0, 0.2 );
-}
-
-.wp-full-overlay-sidebar:after {
-       right: auto;
-       left: 0;
-       box-shadow: inset 5px 0 4px -4px rgba(0, 0, 0, 0.1);
-}
-
-.wp-full-overlay.collapsed,
-.wp-full-overlay.expanded .wp-full-overlay-sidebar {
-       margin-right: 0 !important;
-}
-
-.wp-full-overlay.expanded {
-       margin-right: 300px;
-       margin-left: 0;
-}
-
-.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
-       margin-right: -300px;
-       margin-left: 0;
-}
-
-/* Collapse Button */
-.wp-full-overlay .collapse-sidebar {
-       right: 0;
-       left: auto;
-       margin-right: 15px;
-}
-
-.wp-full-overlay.collapsed .collapse-sidebar {
-       right: 100%;
-}
-
-.wp-full-overlay .collapse-sidebar-arrow {
-       margin-right: 2px;
-       margin-left: 0;
-       background: transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px;
-}
-
-.wp-full-overlay.collapsed .collapse-sidebar-arrow {
-       background-position: 0 -72px;
-}
-
-.wp-full-overlay .collapse-sidebar-label {
-       right: 100%;
-       left: auto;
-       margin-right: 10px;
-       margin-left: 0;
-}
-
-/*------------------------------------------------------------------------------
-  27.0 - Customize Loader
-------------------------------------------------------------------------------*/
-.install-theme-info .theme-install {
-       float: left;
-}
-
-/* MERGED */
-
-/* global */
-
-/* 2 column liquid layout */
-
-#wpcontent {
-       margin-left: 0;
-       margin-right: 165px;
-}
-
-.folded #wpcontent {
-       margin-left: 0;
-       margin-right: 52px;
-}
-
-.folded.wp-admin #footer {
-       margin-left: 15px;
-       margin-right: 52px;
-}
-
-#wpbody-content {
-       float: right;
-}
-
-#adminmenuwrap {
-       float: right;
-}
-
-#adminmenu {
-       clear: right;
-}
-
-/* inner 2 column liquid layout */
-.inner-sidebar {
-       float: left;
-       clear: left;
-}
-
-.has-right-sidebar #post-body {
-       float: right;
-       clear: right;
-       margin-right: 0;
-       margin-left: -340px;
-}
-
-.has-right-sidebar #post-body-content {
-       margin-right: 0;
-       margin-left: 300px;
-}
-
-/* 2 columns main area */
-
-#col-right {
-       float: left;
-       clear: left;
-}
-
-/* utility classes*/
-.alignleft {
-       float: right;
-}
-
-.alignright {
-       float: left;
-}
-
-.textleft {
-       text-align: right;
-}
-
-.textright {
-       text-align: left;
-}
-
-/* Hide visually but not from screen readers */
-.screen-reader-text, .screen-reader-text span {
-       left: auto;
-       right: -1000em;
-}
-
-/* styles for use by people extending the WordPress interface */
-
-body,
-td,
-textarea,
-input,
-select {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-ul.ul-disc,
-ul.ul-square,
-ol.ol-decimal {
-       margin-left: 0;
-       margin-right: 1.8em;
-}
-
-.subsubsub {
-       float: right;
-}
-
-.widefat thead th:first-of-type {
-       -webkit-border-top-left-radius: 0;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 0;
-       border-top-right-radius: 3px;
-}
-
-.widefat thead th:last-of-type {
-       -webkit-border-top-right-radius: 0;
-       -webkit-border-top-left-radius: 3px;
-       border-top-right-radius: 0;
-       border-top-left-radius: 3px;
-}
-.widefat tfoot th:first-of-type {
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 3px;
-}
-.widefat tfoot th:last-of-type {
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 3px;
-}
-
-.widefat th {
-       text-align: right;
-}
-
-.widefat th input {
-       margin: 0 8px 0 0;
-}
-
-.wrap {
-       margin-right: 0;
-       margin-left: 15px;
-}
-
-.wrap h2,
-.subtitle {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.wrap h2 {
-       padding-right: 0;
-       padding-left: 15px;
-}
-
-.subtitle {
-       padding-left: 0;
-       padding-right: 25px;
-}
-
-.wrap .add-new-h2 {
-       font-family: Tahoma, Arial, sans-serif;
-       margin-left: 0;
-       margin-right: 4px;
-}
-
-.wrap h2.long-header {
-       padding-left: 0;
-}
-
-/* dashboard */
-#dashboard-widgets-wrap .has-sidebar {
-       margin-right: 0;
-       margin-left: -51%;
-}
-
-#dashboard-widgets-wrap .has-sidebar .has-sidebar-content {
-       margin-right: 0;
-       margin-left: 51%;
-}
-
-.view-all {
-       right: auto;
-       left: 0;
-}
-
-#dashboard_right_now p.sub,
-#dashboard-widgets h4,
-a.rsswidget,
-#dashboard_plugins h4,
-#dashboard_plugins h5,
-#dashboard_recent_comments .comment-meta .approve,
-#dashboard_right_now td.b,
-#dashboard_right_now .versions a {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-#dashboard_right_now p.sub  {
-       left:auto;
-       right:15px;
-}
-
-#dashboard_right_now td.b {
-       padding-right: 0;
-       padding-left: 6px;
-       text-align: left;
-}
-
-#dashboard_right_now .t {
-       padding-right: 0;
-       padding-left: 12px;
-}
-
-#dashboard_right_now .table_content {
-       float:right;
-}
-
-#dashboard_right_now .table_discussion {
-       float:left;
-}
-
-#dashboard_right_now a.button {
-       float: left;
-       clear: left;
-}
-
-#dashboard_plugins .inside span {
-        padding-left: 0;
-        padding-right: 5px;
-}
-
-#dashboard-widgets h3 .postbox-title-action {
-       right: auto;
-       left: 30px;
-}
-
-#the-comment-list .pingback {
-       padding-left: 0 !important;
-       padding-right: 9px !important;
-}
-
-/* Recent Comments */
-#the-comment-list .comment-item {
-       padding: 1em 70px 1em 10px;
-}
-
-#the-comment-list .comment-item .avatar {
-       float: right;
-       margin-left: 0;
-       margin-right: -60px;
-}
-
-/* Feeds */
-.rss-widget cite {
-       text-align: left;
-}
-
-.rss-widget span.rss-date {
-       font-family: Tahoma, Arial, sans-serif;
-       margin-left: 0;
-       margin-right: 3px;
-}
-
-/* QuickPress */
-#dashboard_quick_press h4 {
-       float: right;
-       text-align: left;
-}
-
-#dashboard_quick_press .wp-media-buttons {
-       margin: 0 5em 0.5em 0;
-}
-
-#dashboard_quick_press h4 label {
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-#dashboard_quick_press .input-text-wrap,
-#dashboard_quick_press .textarea-wrap {
-       margin: 0 5em 1em 0;
-}
-
-#dashboard_quick_press #media-buttons {
-       margin: 0 5em .5em 0;
-       padding: 0;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit {
-       margin-left: 0;
-       margin-right: 4.6em;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit input {
-       float: right;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
-       margin: 0 10px 0 1em;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit #publish {
-       float: left;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit img.waiting {
-       margin: 4px 0 0 6px;
-}
-
-/* Recent Drafts */
-#dashboard_recent_drafts h4 abbr {
-       font-family: Tahoma, Arial, sans-serif;
-       margin-left:0;
-       margin-right: 3px;
-}
-
-/* login */
-body.login {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.login form {
-       margin-right: 8px;
-       margin-left: 0;
-}
-
-.login form .forgetmenot {
-       float: right;
-}
-
-.login form .submit {
-       float: left;
-}
-
-#login form .submit input {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.login #nav,
-.login #backtoblog {
-       margin: 0 16px 0 0;
-}
-
-#login_error,
-.login .message {
-       margin: 0 8px 16px 0;
-}
-
-.login #user_pass,
-.login #user_login,
-.login #user_email {
-       margin-left: 6px;
-       margin-right: 0;
-       direction: ltr;
-}
-
-.login h1 a {
-       text-decoration: none;
-}
-
-.login .button-primary {
-       float: left;
-}
-
-/* nav-menu */
-#nav-menus-frame {
-       margin-right: 300px;
-       margin-left: 0;
-}
-
-#wpbody-content #menu-settings-column {
-       margin-right: -300px;
-       margin-left: 0;
-       float: right;
-}
-
-/* Menu Container */
-#menu-management-liquid {
-       float: right;
-}
-
-#menu-management {
-       margin-left: 20px;
-       margin-right: 0;
-}
-
-.post-body-plain {
-       padding: 10px 0 0 10px;
-}
-
-/* Menu Tabs */
-
-#menu-management .nav-tabs-arrow-left {
-       right: 0;
-       left:auto;
-}
-
-#menu-management .nav-tabs-arrow-right {
-       left: 0;
-       right:auto;
-       text-align: left;
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-#menu-management .nav-tabs {
-       padding-right: 20px;
-       padding-left: 10px;
-}
-
-.js #menu-management .nav-tabs {
-       float: right;
-       margin-right: 0px;
-       margin-left: -400px;
-}
-
-#select-nav-menu-container {
-       text-align: left;
-}
-
-#wpbody .open-label {
-       float:right;
-}
-
-#wpbody .open-label span {
-       padding-left: 10px;
-       padding-right:0;
-}
-
-.js .input-with-default-title {
-       font-style: normal;
-       font-weight: bold;
-}
-
-/* Add Menu Item Boxes */
-.postbox .howto input {
-       float: left;
-}
-#nav-menu-theme-locations .button-controls {
-       text-align: left;
-}
-
-/* Button Primary Actions */
-
-.meta-sep,
-.submitcancel {
-       float: right;
-}
-
-#cancel-save {
-       margin-left: 0;
-       margin-right: 20px;
-}
-
-/* Button Secondary Actions */
-.list-controls {
-        float: right;
-}
-.add-to-menu {
-       float: left;
-}
-
-/* Custom Links */
-#add-custom-link label span {
-       float: right;
-       padding-left: 5px;
-       padding-right: 0;
-}
-
-.nav-menus-php .howto span {
-       float: right;
-}
-
-.list li .menu-item-title input {
-       margin-left: 3px;
-       margin-right: 0;
-}
-
-/* Nav Menu */
-.menu-item-handle {
-       padding-right: 10px;
-       padding-left: 0;
-}
-.menu-item-edit-active .menu-item-handle {
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 0;
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 0;
-}
-.menu-item-handle .item-title {
-       margin-left:13em;
-       margin-right:0;
-}
-.menu-item-handle .item-edit {
-       right: auto;
-       left: -20px;
-}
-
-/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
-.menu-item-depth-0 { margin-right: 0px; margin-left:0;}
-.menu-item-depth-1 { margin-right: 30px; margin-left:0;}
-.menu-item-depth-2 { margin-right: 60px; margin-left:0;}
-.menu-item-depth-3 { margin-right: 90px; margin-left:0;}
-.menu-item-depth-4 { margin-right: 120px; margin-left:0;}
-.menu-item-depth-5 { margin-right: 150px; margin-left:0;}
-.menu-item-depth-6 { margin-right: 180px; margin-left:0;}
-.menu-item-depth-7 { margin-right: 210px; margin-left:0;}
-.menu-item-depth-8 { margin-right: 240px; margin-left:0;}
-.menu-item-depth-9 { margin-right: 270px; margin-left:0;}
-.menu-item-depth-10 { margin-right: 300px; margin-left:0;}
-.menu-item-depth-11 { margin-right: 330px; margin-left:0;}
-
-.menu-item-depth-0 .menu-item-transport { margin-right: 0px; margin-left:0;}
-.menu-item-depth-1 .menu-item-transport { margin-right: -30px; margin-left:0;}
-.menu-item-depth-2 .menu-item-transport { margin-right: -60px; margin-left:0;}
-.menu-item-depth-3 .menu-item-transport { margin-right: -90px; margin-left:0;}
-.menu-item-depth-4 .menu-item-transport { margin-right: -120px; margin-left:0;}
-.menu-item-depth-5 .menu-item-transport { margin-right: -150px; margin-left:0;}
-.menu-item-depth-6 .menu-item-transport { margin-right: -180px; margin-left:0;}
-.menu-item-depth-7 .menu-item-transport { margin-right: -210px; margin-left:0;}
-.menu-item-depth-8 .menu-item-transport { margin-right: -240px; margin-left:0;}
-.menu-item-depth-9 .menu-item-transport { margin-right: -270px; margin-left:0;}
-.menu-item-depth-10 .menu-item-transport { margin-right: -300px; margin-left:0;}
-.menu-item-depth-11 .menu-item-transport { margin-right: -330px; margin-left:0;}
-
-/* Menu item controls */
-.item-type {
-       padding-left: 10px;
-       padding-right:0;
-}
-
-.item-controls {
-       left: 20px;
-       right: auto;
-}
-
-.item-controls .item-order {
-       padding-left: 10px;
-       padding-right: 0;
-}
-
-.item-edit {
-       left: -20px;
-       right:auto;
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 0;
-       border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 0;
-}
-
-/* Menu editing */
-.menu-item-settings {
-       padding: 10px 10px 10px 0;
-       border-width: 0 1px 1px 1px;
-}
-
-#custom-menu-item-url {
-       direction: ltr;
-}
-
-.link-to-original {
-       font-style: normal;
-       font-weight: bold;
-}
-
-.link-to-original a {
-       padding-right: 4px;
-       padding-left:0;
-}
-
-.menu-item-settings .description-thin,
-.menu-item-settings .description-wide {
-       margin-left: 10px;
-       margin-right:0;
-       float: right;
-}
-
-/* Major/minor publishing actions (classes) */
-.major-publishing-actions .publishing-action {
-       text-align: left;
-       float: left;
-}
-
-.major-publishing-actions .delete-action {
-       text-align: right;
-       float: right;
-       padding-left: 15px;
-       padding-right:0;
-}
-
-.menu-name-label {
-       margin-left: 15px;
-       margin-right:0;
-}
-
-.auto-add-pages {
-       float: right;
-}
-
-/* Star ratings */
-div.star-holder {
-       background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right;
-}
-div.star-holder .star-rating {
-       background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right;
-       float: right;
-}
-
-#plugin-information ul#sidemenu {
-       left: auto;
-       right: 0;
-}
-
-#plugin-information h2 {
-       margin-right: 0;
-       margin-left: 200px;
-}
-
-#plugin-information .fyi {
-       margin-left: 5px;
-       margin-right: 20px;
-}
-
-#plugin-information .fyi h2 {
-       margin-left: 0;
-}
-
-#plugin-information .fyi ul {
-       padding: 10px 7px 10px 5px;
-}
-
-#plugin-information #section-screenshots li p {
-       padding-left: 0;
-       padding-right: 20px;
-}
-
-#plugin-information #section-screenshots ol,
-#plugin-information .updated,
-#plugin-information pre {
-       margin-right: 0;
-       margin-left: 215px;
-}
-
-#plugin-information .updated,
-#plugin-information .error {
-       clear: none;
-       direction: rtl;
-}
-
-#plugin-information #section-holder .section {
-       direction: ltr;
-}
-
-/* Editor/Main Column */
-.posting {
-       margin-left: 212px;
-       margin-right: 0;
-       position: relative;
-}
-
-h3.tb {
-       margin-left: 0;
-       margin-right: 5px;
-}
-
-#publish {
-       float: left;
-}
-
-.postbox .handlediv {
-       float: left;
-}
-
-.actions li {
-       float: right;
-       margin-right: 0;
-       margin-left: 10px;
-}
-
-#extra-fields .actions {
-    margin: -23px 0 0 -7px;
-}
-
-/* Photo Styles */
-#img_container a {
-       float: right;
-}
-
-#category-add input,
-#category-add select {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-/* Tags */
-#tagsdiv #newtag {
-       margin-right: 0;
-       margin-left: 5px;
-}
-
-#tagadd {
-       margin-left: 0;
-       margin-right: 3px;
-}
-
-#tagchecklist span {
-       margin-left: .5em;
-       margin-right: 10px;
-       float: right;
-}
-#tagchecklist span a {
-       margin: 6px -9px 0 0;
-       float: right;
-}
-
-.submit input,
-.button,
-.button-primary,
-.button-secondary,
-.button-highlighted,
-#postcustomstuff .submit input {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-.ac_results li {
-       text-align: right;
-}
-
-#TB_ajaxContent #options {
-       right: auto;
-       left: 25px;
-}
-
-#post_status {
-       margin-left: 0;
-       margin-right: 10px;
-}
-
-/* theme-editor, plugin-editor */
-#templateside {
-       float: left;
-}
-
-#template textarea,
-#docs-list {
-       direction: ltr;
-}
-
-/* theme-install */
-.theme-details .theme-version {
-       float: right;
-}
-
-.theme-details .star-holder {
-       float: left;
-}
-
-.feature-filter .feature-group {
-       float: right;
-}
-
-.feature-filter .feature-name {
-       float: right;
-       text-align: left;
-}
-
-.feature-filter .feature-group li {
-       float: right;
-       padding-right: 0;
-       padding-left: 25px;
-}
-
-/* widgets */
-/* 2 column liquid layout */
-div.widget-liquid-left {
-       float: right;
-       clear: right;
-       margin-right: 0;
-       margin-left: -325px;
-}
-
-div#widgets-left {
-       margin-right: 5px;
-       margin-left: 325px;
-}
-
-div.widget-liquid-right {
-       float: left;
-       clear: left;
-}
-
-.inactive-sidebar .widget {
-       float: right;
-}
-
-div.sidebar-name h3 {
-       font-family: Tahoma, Arial, sans-serif;
-}
-
-#widget-list .widget {
-       float: right;
-}
-
-.inactive-sidebar .widget-placeholder {
-       float: right;
-}
-
-.widget-top .widget-title-action {
-       float: left;
-}
-
-.widget-control-edit {
-       padding: 0 0 0 8px;
-}
-
-.sidebar-name-arrow {
-       float: left;
-}
-
-/* Press This */
-.press-this-sidebar {
-       float: left;
-}
-
-.press-this #header-logo,
-.press-this #wphead h1 {
-       float: right;
-}
-
-/* RTL */
-.ltr {
-       direction: ltr;
-}
-
-/* =Localized CSS
--------------------------------------------------------------- */
-
-/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */
-body.locale-he-il,
-.locale-he-il .quicktags, .locale-he-il .search,
-.locale-he-il .howto,
-.locale-he-il #adminmenu .awaiting-mod,
-.locale-he-il #adminmenu span.update-plugins,
-.locale-he-il #sidemenu li a span.update-plugins,
-.locale-he-il .post-com-count-wrapper,
-.locale-he-il .widefat th,
-.locale-he-il .tablenav .displaying-num,
-.locale-he-il .inline-edit-row fieldset span.title,
-.locale-he-il .inline-edit-row fieldset span.checkbox-title,
-.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,
-.locale-he-il .inline-edit-row .catshow,
-.locale-he-il .inline-edit-row .cathide,
-.locale-he-il .inline-edit-row #bulk-titles div,
-.locale-he-il p.help,
-.locale-he-il p.description,
-.locale-he-il span.description,
-.locale-he-il .form-wrap p,
-.locale-he-il h2 .nav-tab,
-.locale-he-il #your-profile legend,
-.locale-he-il #utc-time, .locale-he-il #local-time,
-.locale-he-il #poststuff h3,
-.locale-he-il .metabox-holder h3,
-.locale-he-il .tool-box .title,
-.locale-he-il td,
-.locale-he-il textarea,
-.locale-he-il input,
-.locale-he-il select,
-.locale-he-il .wrap h2,
-.locale-he-il .subtitle,
-.locale-he-il .wrap .add-new-h2,
-.locale-he-il #dashboard_right_now p.sub,
-.locale-he-il #dashboard-widgets h4,
-.locale-he-il a.rsswidget,
-.locale-he-il #dashboard_plugins h4,
-.locale-he-il #dashboard_plugins h5,
-.locale-he-il #dashboard_recent_comments .comment-meta .approve,
-.locale-he-il #dashboard_right_now td.b,
-.locale-he-il #dashboard_right_now .versions a,
-.locale-he-il .rss-widget span.rss-date,
-.locale-he-il #dashboard_recent_drafts h4 abbr,
-body.login.locale-he-il,
-.locale-he-il #login form .submit input,
-.locale-he-il #menu-management .nav-tabs-arrow-right,
-.locale-he-il #category-add input,
-.locale-he-il #category-add select,
-.locale-he-il .submit input,
-.locale-he-il .button,
-.locale-he-il .button-primary,
-.locale-he-il .button-secondary,
-.locale-he-il .button-highlighted,
-.locale-he-il #postcustomstuff .submit input,
-.locale-he-il div.sidebar-name h3 {
-       font-family: Arial, sans-serif;
-}
-
-/* he_IL: Have <em> be bold rather than italic. */
-.locale-he-il em {
-       font-style: normal;
-       font-weight: bold;
-}
diff --git a/wp-admin/css/wp-admin-rtl.min.css b/wp-admin/css/wp-admin-rtl.min.css
new file mode 100644 (file)
index 0000000..8bcf2ee
--- /dev/null
@@ -0,0 +1 @@
+ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:right;margin-right:0;margin-left:4px}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left;text-align:left}#publishing-action .spinner{float:right}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #wpfooter{margin-left:15px;margin-right:52px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}#adminmenu div.wp-menu-image,.folded #adminmenu div.wp-menu-image{float:right;width:30px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(-26px);-webkit-transform:translate(-26px);-o-transform:translate(-26px);-ms-transform:translate(-26px);transform:translate(-26px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{padding:7px 7px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 10px 5px 4px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){.auto-fold #wpcontent{margin-left:0;margin-right:52px}.auto-fold.wp-admin #wpfooter{margin-left:15px;margin-right:52px}.auto-fold #adminmenu div.wp-menu-image{float:right;width:30px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.auto-fold #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}.auto-fold #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}.auto-fold #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.post-com-count{background-image:url('../images/bubble_bg-rtl.gif')}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.postbox-container{float:right}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel-content{margin-left:0;margin-right:13px}.welcome-panel .welcome-panel-column{float:right}.welcome-panel .welcome-panel-column ul{margin-right:0;margin-left:1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.welcome-panel .welcome-add-page{background-position:right 2px}.welcome-panel .welcome-edit-page{background-position:right -90px}.welcome-panel .welcome-learn-more{background-position:right -136px}.welcome-panel .welcome-comments{background-position:right -182px}.welcome-panel .welcome-view-site{background-position:right -274px}.welcome-panel .welcome-widgets-menus{background-position:right -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:right -44px}.welcome-panel .welcome-icon{padding:2px 32px 8px 0}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{margin-right:0;margin-left:13px}.welcome-panel .welcome-icon{padding-right:25px;padding-left:0}}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.sorting-indicator{margin-left:0;margin-right:7px}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .actions select{float:right;margin-right:0;margin-left:6px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#save-action .spinner,#show-comments a,#show-comments .spinner{float:right}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}#wp-fullscreen-save .spinner,#wp-fullscreen-save .fs-saved{float:left}#edit-slug-box .cancel{margin-right:0;margin-left:10px}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv .spinner{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}.compat-attachment-fields th{padding-right:0;padding-left:10px}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace}#select-featured-image a{float:right}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .edit-attachment,.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-input{float:right}#find-posts-search{float:right;margin-right:3px;margin-left:4px}.find-box-search .spinner{left:auto;right:115px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.wp_attachment_image .button,.A1B1 .button{float:right}.wp_attachment_image .spinner,.A1B1 .spinner{float:right}.imgedit-menu div{float:right}.imgedit-crop{margin:0}.imgedit-rleft,.imgedit-flipv,.imgedit-undo{margin:0 8px 0 3px}.imgedit-rright,.imgedit-fliph,.imgedit-redo{margin:0 3px}.imgedit-applyto img{margin:0 0 0 8px}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit .spinner,.inline-edit-save .spinner{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}.ie8 .available-theme .action-links li{padding-left:7px;margin-left:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#wpfooter{margin-left:20px}#wpcontent,#wpfooter{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 2em}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}@media only screen and (max-width:768px){.about-wrap .feature-section img.image-66{float:none}.about-wrap .feature-section.images-stagger-right img.image-66{margin-right:3px}.about-wrap .feature-section.images-stagger-left img.image-66{margin-left:3px}}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{left:auto;right:-1000em}.screen-reader-shortcut:focus{left:auto;right:6px}* html #template div{margin-left:0}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}#content-resize-handle{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;right:auto;left:2px;cursor:sw-resize}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay .collapse-sidebar{right:0;left:auto;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../images/arrows.png') no-repeat 0 -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:10px}.js #dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1px 0 .7em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.button.right,.button-secondary.right,.button-primary.right{float:left}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}.auto-add-pages{float:right}div.star-holder{background:url('../images/stars-rtl.png?ver=20121108') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20121108') repeat-x top right;float:right}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information h2{margin-right:0;margin-left:200px}#plugin-information .fyi{margin-left:5px;margin-right:20px}#plugin-information .fyi h2{margin-left:0}#plugin-information .fyi ul{padding:10px 7px 10px 5px}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-group li{padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.post-com-count{background-image:url('../images/bubble_bg-rtl-2x.gif');background-size:18px 100px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}div.star-holder{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x bottom right;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x top right;background-size:21px 37px}#post-body .wp_themeSkin .mceStatusbar a.mceResize,#content-resize-handle{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll left bottom}}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row .catshow,.locale-he-il .inline-edit-row .cathide,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold}
\ No newline at end of file
index cffb7b9f33fdbda7e61964ac88008dc730b90dfa..d4495c48eac156501392811a824f270b6146e07f 100644 (file)
@@ -1 +1,8589 @@
-#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#footer{margin-left:165px}.folded #wpcontent,.folded #footer{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu,#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.col-wrap{padding:0 7px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input,select{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;background:0;border:0}.subsubsub li{display:inline;margin:0;padding:0}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:11px 0 0;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}select option{padding:2px}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:12px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin-right:8px}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px}.tablenav select[name="m"]{width:155px}.tablenav select#cat{width:170px}#wpcontent option{padding:2px}#timezone_string option{margin-left:1em}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-hover{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}.describe .del-link{padding-left:5px}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}.ajax-feedback{visibility:hidden;vertical-align:bottom}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative;overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu .wp-submenu{list-style:none;padding:0;margin:0;overflow:hidden}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;top:-1px;left:146px;z-index:999;overflow:hidden}.js #adminmenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu li.focused .wp-submenu{display:block}#adminmenu .wp-has-current-submenu .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;padding:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 8px 8px 0}.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{padding:0}#adminmenu .wp-submenu a{font-size:12px;line-height:18px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;line-height:18px}#adminmenu div.wp-submenu-head{display:none}.folded #adminmenu div.wp-submenu-head{display:block}.folded #adminmenu a.menu-top,body.no-js #adminmenu .wp-menu-toggle,.folded #adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:30px}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:29px;position:relative}#adminmenu a.menu-top{font-weight:bold;line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 0 1px;border-style:solid}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu .wp-submenu ul{padding:4px 0}#adminmenu .wp-submenu a{margin:0}#adminmenu li li{margin-left:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu .wp-not-current-submenu li a{padding-left:18px}.folded #adminmenu li li{margin-left:0}.folded #adminmenu li li a{padding-left:0}.wp-menu-arrow{display:none;cursor:auto;z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.current .wp-menu-arrow,#adminmenu li.focused .wp-menu-arrow,#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div{display:block}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div{display:none}#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.menu-top.focused .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-menu-arrow div{position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid}.folded .wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current:hover .wp-menu-arrow,.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu .wp-submenu li{padding:0;margin:0}.folded #adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{float:left;padding:5px 0 0 2px;opacity:.6;filter:alpha(opacity=60)}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 4px 5px 10px;cursor:default;border-width:1px 0;border-style:solid}#adminmenu li .wp-submenu-wrap{border-width:1px 1px 1px 0;border-style:solid solid solid none;position:relative;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open .wp-submenu-wrap{border:0 none}.folded #adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}.folded #adminmenu .wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}.folded #adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}.folded #adminmenu .wp-submenu a{padding-left:10px}.folded #adminmenu a.wp-has-submenu{margin-left:40px}#adminmenu .wp-menu-toggle{width:18px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:pointer}#adminmenu .wp-menu-image a{height:24px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){#wpcontent,#footer{margin-left:52px}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu li.menu-top{width:32px}#adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;width:145px;z-index:999;overflow:hidden}#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{display:block}#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 8px 8px 0}#adminmenu div.wp-submenu-head{display:block}#adminmenu a.menu-top,#adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{width:30px}#adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu li li{margin-left:0}#adminmenu li li a{padding-left:0}.wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu li.current:hover .wp-menu-arrow,#adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}#adminmenu .wp-has-current-submenu{margin-bottom:1px}#adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}#adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}#adminmenu .wp-submenu a{padding-left:10px}#adminmenu a.wp-has-submenu{margin-left:40px}#collapse-menu{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.metabox-holder .postbox-container .empty-container{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{cursor:move;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.stuffbox h3{cursor:auto}.postbox .inside,.stuffbox .inside{padding:0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{margin:20px 8px;padding:30px 10px 20px;border-width:1px 0;border-style:solid;position:relative;line-height:1.6em;overflow:auto}.welcome-panel h3{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:32px;font-weight:normal;line-height:1.2;margin:.1em 0 .8em}.welcome-panel h4{font-size:14px}.welcome-panel .welcome-panel-close{position:absolute;top:0;right:10px;padding:8px 3px;font-size:13px;text-decoration:none}.welcome-panel .welcome-panel-close:before{background:url('../images/xit.gif') 0 17% no-repeat;content:' ';height:100%;width:10px;left:-12px;position:absolute}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.welcome-panel .wp-badge{float:left;margin-bottom:20px}.welcome-panel-content{max-width:1500px}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:190px}.welcome-panel p.welcome-panel-dismiss{clear:both;padding:1em 0 0 0}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;position:relative;padding-left:26px}.welcome-panel .welcome-panel-column{margin:0 5% 0 -25px;padding-left:25px;width:30%;min-width:200px;float:left}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:0}.welcome-panel h4 .icon16{margin-left:-32px}.welcome-panel .welcome-panel-column ul{margin:1.6em 1em 1em 1.3em}.welcome-panel .welcome-panel-column li{list-style-type:disc;padding-left:2px}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-slug{width:25%}.fixed .column-posts{width:10%}.fixed .column-icon{width:80px}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv img.waiting{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat}.fixed .column-comments .sorting-indicator{margin-top:3px}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}span.post-state-format{font-weight:normal}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#titlediv{position:relative;margin-bottom:20px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;width:100%;outline:0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px}#wp-fullscreen-title-prompt-text{left:0;padding:11px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{height:1em;margin-top:8px;padding:0 10px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle}#wpcontent .ajax-loading{visibility:hidden}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select,#post-format{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px}#postcustomstuff th.left,#postcustomstuff td.left{width:38%}#postcustomstuff #newmeta .submit{padding:0 8px}#postcustomstuff .submit input,#postcustomstuff table #addmetasub{width:auto}#postcustomstuff #newmetaleft{vertical-align:top}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none}table.diff{width:100%}table.diff col.content{width:50%}table.diff tr{background-color:transparent}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:0}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}.colunms-1 .categorydiv div.tabs-panel,.taxonomy div.tabs-panel{margin:0 5px 0 125px}.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul{list-style:none;padding:0;margin:0}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.form-wrap .form-field{margin:0 0 10px;padding:8px}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.links-table td label{margin-right:8px}.links-table td input[type="text"],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on,.media-item.open img.pinkynail{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#fff;background-image:linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-o-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-moz-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-webkit-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-ms-linear-gradient(bottom,#fff 0,#f7f7f7 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#83b4d8;background-image:linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:25%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;width:100%;height:100%}.find-box-search{padding:12px;border-width:1px;border-style:none none solid}#find-posts-response{margin:8px 0;padding:0 1px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px}.find-box-buttons{width:480px;margin:8px}.find-box-search label{padding-right:6px}.find-box #resize-se{position:absolute;right:1px;bottom:1px}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}td.imgedit-settings input{vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.media-disabled,.imgedit-settings .disabled{color:grey}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}.imgedit-help ul li{font-size:11px}a.imgedit-help-toggle{text-decoration:none}#wpbody-content .imgedit-response div{width:600px;margin:8px}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{border-width:1px;border-style:solid;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 7px 3px;text-align:center}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}h3.available-themes{margin:0 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom:1px solid #dfdfdf;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.appearance_page_custom-header #headimg{border:1px solid #dfdfdf;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}.nav-tab{border-style:solid;border-color:#dfdfdf #dfdfdf #fff;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a{display:inline-block;position:relative;cursor:move;color:#333;background:#dfdfdf;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0.07,#e6e6e6),color-stop(0.77,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-ms-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:hover,.pressthis a:active{color:#333}.pressthis a:hover:after{transform:skew(20deg) rotate(9deg);-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,0.7);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;transform:skew(20deg) rotate(6deg);-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,0.6);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}#footer{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#footer p{margin:0;line-height:20px}#footer a{text-decoration:none}#footer a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .changelog{overflow:hidden}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section img.image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col{padding-top:15px;margin-bottom:0}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col h4{margin:0 0 .6em 0}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-right:0}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .feature-section.images-stagger-right img{float:right;margin:0 5px 12px 12px}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 12px 12px 5px}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img{clear:both}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{float:left;margin-right:10px}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header,.wp-full-overlay-sidebar .wp-full-overlay-footer{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{top:0;border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay .collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat 0 -72px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -108px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:#fff url("../images/wpspin_light.gif") no-repeat fixed center center}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,.inline-edit-row #post_parent{max-width:100%}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#titlediv,#poststuff .postarea{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px}.tablenav .list-ajax-loading{margin-top:7px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}.index-php form .input-text-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:0;margin:0;padding:0;width:99%;color:#333}form .textarea-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px;border-color:#ccc}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:0;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;top:5px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}#dashboard_quick_press h4{font-family:sans-serif;float:left;width:5em;clear:both;font-weight:normal;text-align:right;font-size:12px}#dashboard_quick_press h4 label{margin-right:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em}#dashboard_quick_press .wp-media-buttons{margin:0 0 .5em 5em;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#fff}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;background:transparent none;color:#fff}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{font-size:13px!important;line-height:16px;padding:3px 10px;float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login form p{margin-bottom:24px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-moz-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}#nav-menus-frame{margin-left:300px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px}.no-js #wpbody-content #menu-settings-column{padding-top:31px}#menu-settings-column .inside{clear:both}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}#menu-management-liquid{float:left;min-width:100%}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#menu-management .nav-tabs-nav{margin:0 20px}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff}#menu-management .nav-tabs-arrow-left{left:0}#menu-management .nav-tabs-arrow-right{right:0;text-align:right}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden}#menu-management .nav-tabs{padding-left:20px;padding-right:10px}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px}#menu-management .nav-tab{margin-bottom:0;font-size:14px}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input{width:180px;float:right}.customlinkdiv .howto input{width:200px}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox img.waiting{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom:5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{padding:1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:13px 0 0 0}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background-color:#f6c9cc;background-image:-ms-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(bottom,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal}.menu-name-label{margin-right:15px}.auto-add-pages input{margin-top:0}.auto-add-pages{margin-top:4px;float:left}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20120307') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20120307') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-25px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:130px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:357px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}#saving{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;float:left}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;float:left}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions .ajax-feedback{padding-bottom:3px}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru #dashboard_quick_press .input-text-wrap,.locale-ru-ru #dashboard_quick_press .textarea-wrap,.locale-ru-ru #dashboard_quick_press .wp-media-buttons{margin-left:5.7em}.locale-ru-ru #dashboard_quick_press h4{width:5.7em}.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit{margin-left:5.3em}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-lt-lt #dashboard_quick_press .input-text-wrap,.locale-lt-lt #dashboard_quick_press .textarea-wrap,.locale-lt-lt #dashboard_quick_press .wp-media-buttons{margin-left:7em}.locale-lt-lt #dashboard_quick_press h4{width:7em}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}
\ No newline at end of file
+/*------------------------------------------------------------------------------
+
+
+Hello, this is the main WordPress admin CSS file.
+All the important stuff is in here.
+
+
+TABLE OF CONTENTS:
+------------------
+ 1.0 - Text Elements
+ 2.0 - Forms
+ 3.0 - Actions
+ 4.0 - Notifications
+ 5.0 - TinyMCE
+ 6.0 - Admin Header
+       6.1 - Screen Options Tabs
+       6.2 - Help Menu
+ 7.0 - Main Navigation
+ 8.0 - Layout Blocks
+ 9.0 - Dashboard
+10.0 - List Posts
+       10.1 - Inline Editing
+11.0 - Write/Edit Post Screen
+       11.1 - Custom Fields
+       11.2 - Post Revisions
+       11.3 - Featured Images
+12.0 - Categories
+13.0 - Tags
+14.0 - Media Screen
+       14.1 - Media Library
+       14.2 - Image Editor
+15.0 - Comments Screen
+16.0 - Themes
+       16.1 - Custom Header
+       16.2 - Custom Background
+       16.3 - Tabbed Admin Screen Interface
+17.0 - Plugins
+18.0 - Users
+19.0 - Tools
+20.0 - Settings
+21.0 - Admin Footer
+22.0 - About Pages
+23.0 - Full Overlay w/ Sidebar
+24.0 - Customize Loader
+25.0 - Misc
+
+------------------------------------------------------------------------*/
+
+/* 2 column liquid layout */
+#wpwrap {
+       height: auto;
+       min-height: 100%;
+       width: 100%;
+       position: relative;
+}
+
+#wpcontent {
+       height: 100%;
+}
+
+#wpcontent,
+#wpfooter {
+       margin-left: 165px;
+}
+
+.folded #wpcontent,
+.folded #wpfooter {
+       margin-left: 52px;
+}
+
+#wpbody-content {
+       padding-bottom: 65px;
+       float: left;
+       width: 100%;
+}
+
+#adminmenuback,
+#adminmenuwrap,
+#adminmenu,
+#adminmenu .wp-submenu {
+       width: 145px;
+}
+
+#adminmenuback {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       z-index: -1;
+}
+
+#adminmenu {
+       clear: left;
+       margin: 0;
+       padding: 0;
+       list-style: none;
+}
+
+.folded #adminmenuback,
+.folded #adminmenuwrap,
+.folded #adminmenu,
+.folded #adminmenu li.menu-top {
+       width: 32px;
+}
+
+/* inner 2 column liquid layout */
+
+.inner-sidebar {
+       float: right;
+       clear: right;
+       display: none;
+       width: 281px;
+       position: relative;
+}
+
+.columns-2 .inner-sidebar {
+       margin-right: auto;
+       width: 286px;
+       display: block;
+}
+
+.inner-sidebar #side-sortables,
+.columns-2 .inner-sidebar #side-sortables {
+       min-height: 300px;
+       width: 280px;
+       padding: 0;
+}
+
+.has-right-sidebar .inner-sidebar {
+       display: block;
+}
+
+.has-right-sidebar #post-body {
+       float: left;
+       clear: left;
+       width: 100%;
+       margin-right: -2000px;
+}
+
+.has-right-sidebar #post-body-content {
+       margin-right: 300px;
+       float: none;
+       width: auto;
+}
+
+/* 2 columns main area */
+
+#col-container,
+#col-left,
+#col-right {
+       overflow: hidden;
+       padding: 0;
+       margin: 0;
+}
+
+#col-left {
+       width: 35%;
+}
+
+#col-right {
+       float: right;
+       clear: right;
+       width: 65%;
+}
+
+.col-wrap {
+       padding: 0 7px;
+}
+
+/* utility classes */
+.alignleft {
+       float: left;
+}
+
+.alignright {
+       float: right;
+}
+
+.textleft {
+       text-align: left;
+}
+
+.textright {
+       text-align: right;
+}
+
+.clear {
+       clear: both;
+}
+
+/* Hide visually but not from screen readers */
+.screen-reader-text,
+.screen-reader-text span,
+.ui-helper-hidden-accessible {
+       position: absolute;
+       left: -1000em;
+       top: -1000em;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+}
+
+.screen-reader-shortcut {
+       position: absolute;
+       top: -1000em;
+}
+
+.screen-reader-shortcut:focus {
+       left: 6px;
+       top: -21px;
+       height: auto;
+       width: auto;
+       display: block;
+       font-size: 14px;
+       font-weight: bold;
+       padding: 15px 23px 14px;
+       background: #f1f1f1;
+       color: #21759b;
+       border-radius: 3px;
+       z-index: 100000;
+       line-height: normal;
+       -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
+       box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
+       text-decoration: none;
+}
+
+.hidden,
+.js .closed .inside,
+.js .hide-if-js,
+.no-js .hide-if-no-js,
+.js.wp-core-ui .hide-if-js,
+.js .wp-core-ui .hide-if-js,
+.no-js.wp-core-ui .hide-if-no-js,
+.no-js .wp-core-ui .hide-if-no-js {
+       display: none;
+}
+
+/* include margin and padding in the width calculation of input and textarea */
+input[type="text"],
+input[type="password"],
+input[type="number"],
+input[type="search"],
+input[type="email"],
+input[type="url"],
+textarea {
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box; /* ie8 only */
+       box-sizing: border-box;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+       vertical-align: text-top;
+       padding: 0;
+       margin: 1px 0 0;
+}
+
+input[type="search"] {
+       -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-decoration {
+       display: none;
+}
+
+/* general */
+html,
+body {
+       height: 100%;
+       margin: 0;
+       padding: 0;
+}
+
+body {
+       font-family: sans-serif;
+       font-size: 12px;
+       line-height: 1.4em;
+       min-width: 600px;
+}
+
+body.iframe {
+       min-width: 0;
+}
+
+body.login {
+       background: #fbfbfb;
+       min-width: 0;
+}
+
+iframe,
+img {
+       border: 0;
+}
+
+td,
+textarea,
+input,
+select,
+button {
+       font-family: inherit;
+       font-size: inherit;
+       font-weight: inherit;
+}
+
+td,
+textarea {
+       line-height: inherit;
+}
+
+input,
+select {
+       line-height: 15px;
+}
+
+a,
+input[type="text"],
+input[type="password"],
+input[type="number"],
+input[type="search"],
+input[type="email"],
+input[type="url"],
+select,
+textarea,
+div {
+       outline: 0;
+}
+
+a:focus,
+a:active {
+       outline: thin dotted;
+}
+
+#adminmenu a:focus,
+#adminmenu a:active,
+.screen-reader-text:focus {
+       outline: none;
+}
+
+blockquote,
+q {
+       quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+       content: '';
+       content: none;
+}
+
+p {
+       margin: 1em 0;
+}
+
+blockquote {
+       margin: 1em;
+}
+
+label {
+       cursor: pointer;
+}
+
+li,
+dd {
+       margin-bottom: 6px;
+}
+
+textarea,
+input,
+select {
+       margin: 1px;
+       padding: 3px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       display: block;
+       font-weight: bold;
+}
+
+h1 {
+       font-size: 2em;
+       margin: .67em 0;
+}
+
+h2 {
+       font-size: 1.5em;
+       margin: .83em 0;
+}
+
+h3 {
+       font-size: 1.17em;
+       margin: 1em 0;
+}
+
+h4 {
+       font-size: 1em;
+       margin: 1.33em 0;
+}
+
+h5 {
+       font-size: 0.83em;
+       margin: 1.67em 0;
+}
+
+h6 {
+       font-size: 0.67em;
+       margin: 2.33em 0;
+}
+
+ul,
+ol {
+       padding: 0;
+}
+
+ul {
+       list-style: none;
+}
+
+ol {
+       list-style-type: decimal;
+       margin-left: 2em;
+}
+
+ul.ul-disc {
+       list-style: disc outside;
+}
+
+ul.ul-square {
+       list-style: square outside;
+}
+
+ol.ol-decimal {
+       list-style: decimal outside;
+}
+
+ul.ul-disc,
+ul.ul-square,
+ol.ol-decimal {
+       margin-left: 1.8em;
+}
+
+ul.ul-disc > li,
+ul.ul-square > li,
+ol.ol-decimal > li {
+       margin: 0 0 0.5em;
+}
+
+.code,
+code {
+       font-family: Consolas, Monaco, monospace;
+}
+
+kbd,
+code {
+       padding: 1px 3px;
+       margin: 0 1px;
+       font-size: 11px;
+}
+
+.subsubsub {
+       list-style: none;
+       margin: 8px 0 5px;
+       padding: 0;
+       font-size: 12px;
+       float: left;
+}
+
+.subsubsub a {
+       line-height: 2;
+       padding: .2em;
+       text-decoration: none;
+}
+
+.subsubsub a .count,
+.subsubsub a.current .count {
+       color: #999;
+       font-weight: normal;
+}
+
+.subsubsub a.current {
+       font-weight: bold;
+       border: none;
+}
+
+.subsubsub li {
+       display: inline-block;
+       margin: 0;
+       padding: 0;
+       white-space: nowrap;
+}
+
+.widefat,
+div.updated,
+div.error,
+.wrap .add-new-h2,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="file"],
+input[type="email"],
+input[type="number"],
+input[type="search"],
+input[type="tel"],
+input[type="url"],
+select,
+.tablenav .tablenav-pages a,
+.tablenav-pages span.current,
+#titlediv #title,
+.postbox,
+#postcustomstuff table,
+#postcustomstuff input,
+#postcustomstuff textarea,
+.imgedit-menu div,
+.plugin-update-tr .update-message,
+#poststuff .inside .the-tagcloud,
+.login form,
+#login_error,
+.login .message,
+#menu-management .menu-edit,
+.nav-menus-php .list-container,
+.menu-item-handle,
+.link-to-original,
+.nav-menus-php .major-publishing-actions .form-invalid,
+.press-this #message,
+#TB_window,
+.tbtitle,
+.highlight,
+.feature-filter,
+#widget-list .widget-top,
+.editwidget .widget-inside {
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       border-width: 1px;
+       border-style: solid;
+}
+
+/* .widefat - main style for tables */
+.widefat {
+       border-spacing: 0;
+       width: 100%;
+       clear: both;
+       margin: 0;
+}
+
+.widefat * {
+       word-wrap: break-word;
+}
+
+.widefat a {
+       text-decoration: none;
+}
+
+.widefat thead th:first-of-type {
+       -webkit-border-top-left-radius: 3px;
+       border-top-left-radius: 3px;
+}
+.widefat thead th:last-of-type {
+       -webkit-border-top-right-radius: 3px;
+       border-top-right-radius: 3px;
+}
+.widefat tfoot th:first-of-type {
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+.widefat tfoot th:last-of-type {
+       -webkit-border-bottom-right-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+.widefat td,
+.widefat th {
+       border-width: 1px 0;
+       border-style: solid;
+}
+.widefat tfoot th {
+       border-bottom: none;
+}
+
+.widefat .no-items td {
+       border-bottom-width: 0;
+}
+
+.widefat td {
+       font-size: 12px;
+       padding: 4px 7px 2px;
+       vertical-align: top;
+}
+
+.widefat td p,
+.widefat td ol,
+.widefat td ul {
+       font-size: 12px;
+}
+
+.widefat th {
+       padding: 7px 7px 8px;
+       text-align: left;
+       line-height: 1.3em;
+       font-size: 14px;
+}
+
+.widefat th input {
+       margin: 0 0 0 8px;
+       padding: 0;
+       vertical-align: text-top;
+}
+
+.widefat .check-column {
+       width: 2.2em;
+       padding: 6px 0 25px;
+       vertical-align: top;
+}
+
+.widefat tbody th.check-column {
+       padding: 9px 0 22px;
+}
+
+.widefat.media .check-column {
+       padding-top: 8px;
+}
+
+.widefat thead .check-column,
+.widefat tfoot .check-column {
+       padding: 10px 0 0;
+}
+
+.no-js .widefat thead .check-column input,
+.no-js .widefat tfoot .check-column input {
+       display: none;
+}
+
+.widefat .num,
+.column-comments,
+.column-links,
+.column-posts {
+       text-align: center;
+}
+
+.widefat th#comments {
+       vertical-align: middle;
+}
+
+.wrap {
+       margin: 4px 15px 0 0;
+}
+
+div.updated,
+div.error {
+       padding: 0 0.6em;
+       margin: 5px 15px 2px;
+}
+
+div.updated p,
+div.error p {
+       margin: 0.5em 0;
+       padding: 2px;
+}
+
+.wrap div.updated,
+.wrap div.error,
+.media-upload-form div.error {
+       margin: 5px 0 15px;
+}
+
+.wrap h2,
+.subtitle {
+       font-weight: normal;
+       margin: 0;
+       text-shadow: #fff 0 1px 0;
+}
+
+.wrap h2 {
+       font-size: 23px;
+       padding: 9px 15px 4px 0;
+       line-height: 29px;
+}
+
+.subtitle {
+       font-size: 14px;
+       padding-left: 25px;
+}
+
+.wrap .add-new-h2 {
+       font-family: sans-serif;
+       margin-left: 4px;
+       padding: 3px 8px;
+       position: relative;
+       top: -3px;
+       text-decoration: none;
+       font-size: 12px;
+       border: 0 none;
+}
+
+.wrap h2.long-header {
+       padding-right: 0;
+}
+
+html,
+.wp-dialog {
+       background-color: #fff;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="file"],
+input[type="email"],
+input[type="number"],
+input[type="search"],
+input[type="tel"],
+input[type="url"],
+select {
+       background-color: #fff;
+       color: #333;
+}
+
+select {
+       color: #000;
+}
+
+select[disabled] {
+       color: #7f7f7f;
+}
+
+select:focus {
+       border-color: #aaa;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="file"]:focus,
+input[type="email"]:focus,
+input[type="number"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="url"]:focus,
+select:focus {
+       -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
+       box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
+}
+
+input[readonly] {
+       background-color: #eee;
+}
+
+:-moz-placeholder {
+   color: #a9a9a9;
+}
+
+/*------------------------------------------------------------------------------
+  1.0 - Text Styles
+------------------------------------------------------------------------------*/
+
+div.sidebar-name h3,
+#menu-management .nav-tab,
+#dashboard_plugins h5,
+a.rsswidget,
+#dashboard_right_now td.b,
+#dashboard-widgets h4,
+.tool-box .title,
+#poststuff h3,
+.metabox-holder h3,
+.pressthis a,
+#your-profile legend,
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title,
+.tablenav .displaying-num,
+.widefat th,
+.quicktags,
+.search {
+       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+}
+
+h2 .nav-tab,
+.wrap h2,
+.subtitle,
+.login form .input {
+       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
+}
+
+.quicktags,
+.search {
+       font-size: 12px;
+}
+
+.icon32 {
+       float: left;
+       height: 34px;
+       margin: 7px 8px 0 0;
+       width: 36px;
+}
+
+.icon16 {
+       height: 18px;
+       width: 18px;
+       padding: 6px 6px;
+       margin: -6px 0 0 -8px;
+       float: left;
+}
+
+.key-labels label {
+       line-height: 24px;
+}
+
+.pre {
+       /* https://developer.mozilla.org/en-US/docs/CSS/white-space */
+       white-space: pre-wrap; /* css-3 */
+       word-wrap: break-word; /* IE 5.5 - 7 */
+}
+
+.howto {
+       font-style: italic;
+       display: block;
+       font-family: sans-serif;
+}
+
+p.install-help {
+       margin: 8px 0;
+       font-style: italic;
+}
+
+.no-break {
+       white-space: nowrap;
+}
+
+/*------------------------------------------------------------------------------
+  2.0 - Forms
+------------------------------------------------------------------------------*/
+
+
+.wp-admin select {
+       padding: 2px;
+       height: 2em;
+}
+
+.wp-admin select[multiple] {
+       height: auto;
+}
+
+.submit {
+       padding: 1.5em 0;
+       margin: 5px 0;
+       -webkit-border-bottom-left-radius: 3px;
+       -webkit-border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+form p.submit a.cancel:hover {
+       text-decoration: none;
+}
+
+#minor-publishing-actions input,
+#major-publishing-actions input,
+#minor-publishing-actions .preview {
+       text-align: center;
+}
+
+textarea.all-options,
+input.all-options {
+       width: 250px;
+}
+
+input.large-text,
+textarea.large-text {
+       width: 99%;
+}
+
+input.regular-text,
+#adduser .form-field input {
+       width: 25em;
+}
+
+input.small-text {
+       width: 50px;
+}
+
+input[type="number"].small-text {
+       width: 60px;
+}
+
+#doaction,
+#doaction2,
+#post-query-submit {
+       margin: 1px 8px 0 0;
+}
+
+.tablenav #changeit,
+.tablenav #delete_all,
+.tablenav #clear-recent-list {
+       margin-top: 1px;
+}
+
+.tablenav .actions select {
+       float: left;
+       margin-right: 6px;
+       max-width: 200px;
+}
+
+.ie8 .tablenav .actions select {
+       width: 155px;
+}
+
+.ie8 .tablenav .actions select#cat {
+       width: 200px;
+}
+
+#timezone_string option {
+       margin-left: 1em;
+}
+
+label,
+#your-profile label + a {
+       vertical-align: middle;
+}
+
+#misc-publishing-actions label {
+       vertical-align: baseline;
+}
+
+#pass-strength-result {
+       border-style: solid;
+       border-width: 1px;
+       float: left;
+       margin: 13px 5px 5px 1px;
+       padding: 3px 5px;
+       text-align: center;
+       width: 200px;
+       display: none;
+}
+.indicator-hint {
+       padding-top: 8px;
+}
+
+p.search-box {
+       float: right;
+       margin: 0;
+}
+
+.search-box input[name="s"],
+#search-plugins input[name="s"],
+.tagsdiv .newtag {
+       float: left;
+       height: 2em;
+       margin: 0 4px 0 0;
+}
+
+input[type="text"].ui-autocomplete-loading {
+       background: transparent url('../images/loading.gif') no-repeat right center;
+       visibility: visible;
+}
+
+ul#add-to-blog-users {
+       margin: 0 0 0 14px;
+}
+
+.ui-autocomplete-input.open {
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 0;
+}
+
+.ui-autocomplete {
+       padding: 0;
+       margin: 0;
+       list-style: none;
+       position: absolute;
+       z-index: 10000;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-width: 1px;
+       border-style: solid;
+}
+
+.ui-autocomplete li {
+       margin-bottom: 0;
+       white-space: nowrap;
+       text-align: left;
+}
+
+.ui-autocomplete li a {
+       display: block;
+       height: 100%;
+       padding: 4px 10px;
+}
+
+.ui-autocomplete li a.ui-state-focus {
+       cursor: pointer;
+}
+
+/*------------------------------------------------------------------------------
+  3.0 - Actions
+------------------------------------------------------------------------------*/
+
+#major-publishing-actions {
+       padding: 10px 10px 8px;
+       clear: both;
+       border-top: 1px solid #f5f5f5;
+       margin-top: -2px;
+}
+
+#delete-action {
+       line-height: 25px;
+       vertical-align: middle;
+       text-align: left;
+       float: left;
+}
+
+#publishing-action {
+       text-align: right;
+       float: right;
+       line-height: 23px;
+}
+
+#publishing-action .spinner {
+       float: left;
+}
+
+#misc-publishing-actions {
+       padding: 6px 0 0;
+}
+
+.misc-pub-section {
+       padding: 6px 10px 8px;
+       border-width: 1px 0;
+       border-style: solid;
+}
+
+.misc-pub-section:first-child {
+       border-top-width: 0;
+}
+
+.misc-pub-section-last {
+       border-bottom-width: 0;
+}
+
+#minor-publishing-actions {
+       padding: 10px 10px 2px 8px;
+       text-align: right;
+}
+
+#minor-publishing {
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+       -webkit-box-shadow: 0 1px 0 #fff;
+       box-shadow: 0 1px 0 #fff;
+}
+
+#save-post {
+       float: left;
+}
+
+.preview {
+       float: right;
+}
+
+#sticky-span {
+       margin-left: 18px;
+}
+
+.side-info {
+       margin: 0;
+       padding: 4px;
+       font-size: 11px;
+}
+
+.side-info h5 {
+       padding-bottom: 7px;
+       font-size: 14px;
+       margin: 12px 2px 5px;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+.side-info ul {
+       margin: 0;
+       padding-left: 18px;
+       list-style: square;
+}
+
+.approve,
+.unapproved .unapprove {
+       display: none;
+}
+
+.unapproved .approve,
+.spam .approve,
+.trash .approve {
+       display: inline;
+}
+
+td.action-links,
+th.action-links {
+       text-align: right;
+}
+
+
+/*------------------------------------------------------------------------------
+  4.0 - Notifications
+------------------------------------------------------------------------------*/
+
+#update-nag,
+.update-nag {
+       line-height: 19px;
+       padding: 5px 0;
+       font-size: 12px;
+       text-align: center;
+       margin: -1px 15px 0 5px;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+.plugins .plugin-update {
+       padding: 0;
+}
+
+.plugin-update .update-message {
+       margin: 0 10px 8px 31px;
+       font-weight: bold;
+}
+
+ul#dismissed-updates {
+       display: none;
+}
+
+form.upgrade {
+       margin-top: 8px;
+}
+
+form.upgrade .hint {
+       font-style: italic;
+       font-size: 85%;
+       margin: -0.5em 0 2em 0;
+}
+
+#ajax-loading,
+.ajax-loading,
+.ajax-feedback,
+.imgedit-wait-spin,
+.list-ajax-loading { /* deprecated */
+       visibility: hidden;
+}
+
+#ajax-response.alignleft {
+       margin-left: 2em;
+}
+
+
+/*------------------------------------------------------------------------------
+  6.0 - Admin Header
+------------------------------------------------------------------------------*/
+#adminmenu a,
+#sidemenu a,
+#taglist a,
+#catlist a {
+       text-decoration: none;
+}
+
+/*------------------------------------------------------------------------------
+  6.1 - Screen Options Tabs
+------------------------------------------------------------------------------*/
+
+#screen-options-wrap,
+#contextual-help-wrap {
+       margin: 0;
+       padding: 8px 20px 12px;
+       position: relative;
+}
+
+#contextual-help-wrap {
+       overflow: auto;
+}
+
+#screen-meta .screen-reader-text {
+       visibility: hidden;
+}
+
+#screen-meta-links {
+       margin: 0 24px 0 0;
+}
+
+#screen-meta-links a:focus {
+       -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
+       box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
+       outline: none;
+}
+
+/* screen options and help tabs revert */
+#screen-meta {
+       display: none;
+       position: relative;
+       margin: 0 15px 0 5px;
+       border-width: 0 1px 1px;
+       border-style: none solid solid;
+}
+
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+       float: right;
+       height: 23px;
+       padding: 0;
+       margin: 0 0 0 6px;
+       font-family: sans-serif;
+}
+
+#screen-options-link-wrap,
+#contextual-help-link-wrap,
+#screen-meta {
+       -webkit-border-bottom-left-radius: 3px;
+       -webkit-border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+#screen-meta-links .screen-meta-toggle {
+       position: relative;
+       top: -1px;
+}
+
+#screen-meta-links a.show-settings {
+       text-decoration: none;
+       z-index: 1;
+       padding: 1px 16px 0 6px;
+       height: 22px;
+       line-height: 22px;
+       font-size: 12px;
+       display: block;
+       text-shadow: rgba(255,255,255,0.7) 0 1px 0;
+}
+
+#screen-meta-links a.show-settings:hover {
+       text-decoration: none;
+}
+/* end screen options and help tabs */
+
+.toggle-arrow {
+       background-repeat: no-repeat;
+       background-position: top left;
+       background-color: transparent;
+       height: 22px;
+       line-height: 22px;
+       display: block;
+}
+
+.toggle-arrow-active {
+       background-position: bottom left;
+}
+
+#screen-options-wrap h5,
+#contextual-help-wrap h5 {
+       margin: 8px 0;
+       font-size: 13px;
+}
+
+.metabox-prefs label {
+       display: inline-block;
+       padding-right: 15px;
+       white-space: nowrap;
+       line-height: 30px;
+}
+
+.metabox-prefs label input {
+       margin: 0 5px 0 2px;
+}
+
+.metabox-prefs .columns-prefs label input {
+       margin: 0 2px;
+}
+
+.metabox-prefs label a {
+       display: none;
+}
+
+/*------------------------------------------------------------------------------
+  6.2 - Help Menu
+------------------------------------------------------------------------------*/
+
+#contextual-help-wrap {
+       padding: 0;
+       margin-left: -4px;
+}
+
+#contextual-help-columns {
+       position: relative;
+}
+
+#contextual-help-back {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       left: 150px;
+       right: 170px;
+       border-width: 0 1px;
+       border-style: solid;
+}
+
+#contextual-help-wrap.no-sidebar #contextual-help-back {
+       right: 0;
+
+       border-right-width: 0;
+       -webkit-border-bottom-right-radius: 2px;
+       border-bottom-right-radius: 2px;
+}
+
+.contextual-help-tabs {
+       float: left;
+       width: 150px;
+       margin: 0;
+}
+
+.contextual-help-tabs ul {
+       margin: 1em 0;
+}
+
+.contextual-help-tabs li {
+       margin-bottom: 0;
+       list-style-type: none;
+       border-style: solid;
+       border-width: 1px 0;
+       border-color: transparent;
+}
+
+.contextual-help-tabs a {
+       display: block;
+       padding: 5px 5px 5px 12px;
+       line-height: 18px;
+       text-decoration: none;
+}
+
+.contextual-help-tabs .active {
+       padding: 0;
+       margin: 0 -1px 0 0;
+       border-width: 1px 0 1px 1px;
+       border-style: solid;
+}
+
+.contextual-help-tabs-wrap {
+       padding: 0 20px;
+       overflow: auto;
+}
+
+.help-tab-content {
+       display: none;
+       margin: 0 22px 12px 0;
+       line-height: 1.6em;
+}
+
+.help-tab-content.active {
+       display: block;
+}
+
+.help-tab-content li {
+       list-style-type: disc;
+       margin-left: 18px;
+}
+
+.contextual-help-sidebar {
+       width: 150px;
+       float: right;
+       padding: 0 8px 0 12px;
+       overflow: auto;
+}
+
+
+/*------------------------------------------------------------------------------
+  7.0 - Main Navigation (Left Menu)
+------------------------------------------------------------------------------*/
+
+#adminmenuback,
+#adminmenuwrap {
+       border-width: 0 1px 0 0;
+       border-style: solid;
+}
+
+#adminmenuwrap {
+       position: relative;
+       float: left;
+}
+
+#adminmenushadow {
+       position: absolute;
+       top: 0;
+       right: 0;
+       bottom: 0;
+       width: 6px;
+       z-index: 20;
+}
+
+/* side admin menu */
+#adminmenu * {
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+#adminmenu li {
+       margin: 0;
+       padding: 0;
+       cursor: pointer;
+}
+
+#adminmenu a {
+       display: block;
+       line-height: 18px;
+       padding: 2px 5px;
+}
+
+#adminmenu li.menu-top {
+       min-height: 28px;
+       position: relative;
+}
+
+#adminmenu .wp-submenu {
+       list-style: none;
+       padding: 4px 0;
+       margin: 0;
+       position: absolute;
+       top: -1000em;
+       left: 146px;
+       z-index: 1000;
+       overflow: visible;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-bottom-right-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.js #adminmenu .sub-open,
+.js #adminmenu .opensub .wp-submenu,
+#adminmenu a.menu-top:focus + .wp-submenu,
+.no-js li.wp-has-submenu:hover .wp-submenu {
+       top: -1px;
+}
+
+#adminmenu .wp-has-current-submenu .wp-submenu,
+.no-js li.wp-has-current-submenu:hover .wp-submenu,
+#adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu {
+       position: relative;
+       z-index: 2;
+       top: auto;
+       left: auto;
+       right: auto;
+       bottom: auto;
+       border: 0 none;
+
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.folded #adminmenu .wp-submenu.sub-open,
+.folded #adminmenu .opensub .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
+.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,
+.folded #adminmenu a.menu-top:focus + .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu,
+.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu  {
+       top: -1px;
+       left: 32px;
+}
+
+.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+       border-width: 1px;
+       border-style: solid;
+       position: absolute;
+       top: -1000em;
+}
+
+#adminmenu .wp-submenu a {
+       font-size: 12px;
+       line-height: 18px;
+       margin: 0;
+       padding-left: 12px;
+}
+
+#adminmenu .wp-not-current-submenu li > a {
+       padding-left: 16px;
+}
+
+#adminmenu .wp-has-current-submenu ul > li > a,
+.folded #adminmenu li.menu-top .wp-submenu > li > a {
+       padding-left: 12px;
+}
+
+#adminmenu a.menu-top,
+#adminmenu .wp-submenu-head {
+       font-size: 13px;
+       font-weight: bold;
+       line-height: 18px;
+       padding: 0;
+}
+
+#adminmenu .wp-submenu-head,
+.folded #adminmenu .wp-menu-name {
+       display: none;
+}
+
+.folded #adminmenu .wp-submenu-head {
+       display: block;
+}
+
+#adminmenu .wp-submenu li {
+       padding: 0;
+       margin: 0;
+       overflow: hidden;
+}
+
+#adminmenu a.menu-top {
+       border-width: 1px 0;
+       border-style: solid none;
+}
+
+#adminmenu .wp-menu-image img {
+       padding: 7px 0 0 7px;
+       opacity: 0.6;
+       filter: alpha(opacity=60);
+}
+
+#adminmenu div.wp-menu-name {
+       padding: 5px;
+}
+
+#adminmenu div.wp-menu-image {
+       float: left;
+       width: 28px;
+       height: 28px;
+}
+
+.folded #adminmenu div.wp-menu-image {
+       width: 32px;
+       position: absolute;
+       z-index: 25;
+}
+
+.folded #adminmenu a.menu-top {
+       height: 28px;
+}
+
+.wp-menu-arrow {
+       z-index: 25;
+       position: absolute;
+       right: 100%;
+       margin: 0;
+       height: 30px;
+       width: 6px;
+
+       -moz-transform:    translate( 146px );
+       -webkit-transform: translate( 146px );
+       -o-transform:      translate( 146px );
+       -ms-transform:     translate( 146px );
+       transform:         translate( 146px );
+}
+
+#adminmenu .wp-menu-arrow div {
+       display: none;
+       position: absolute;
+       top: 7px;
+       left: -1px;
+       width: 14px;
+       height: 15px;
+
+       -moz-transform:    matrix( -0.6, 1, 0.6, 1, 0, 0 );
+       -webkit-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 );
+       -o-transform:      matrix( -0.6, 1, 0.6, 1, 0, 0 );
+       -ms-transform:     matrix( -0.6, 1, 0.6, 1, 0, 0 );
+       transform:         matrix( -0.6, 1, 0.6, 1, 0, 0 );
+}
+
+#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
+       -moz-transform:    translate( 145px );
+       -webkit-transform: translate( 145px );
+       -o-transform:      translate( 145px );
+       -ms-transform:     translate( 145px );
+       transform:         translate( 145px );
+       height: 28px;
+       border-width: 1px 0;
+       border-style: solid;
+       top: 0;
+}
+
+.folded #adminmenu li .wp-menu-arrow {
+       -moz-transform:    translate( 32px );
+       -webkit-transform: translate( 32px );
+       -o-transform:      translate( 32px );
+       -ms-transform:     translate( 32px );
+       transform:         translate( 32px );
+}
+
+#adminmenu li.current .wp-menu-arrow,
+#adminmenu li.wp-has-current-submenu .wp-menu-arrow,
+#adminmenu li.wp-has-current-submenu .wp-menu-arrow div,
+#adminmenu li.wp-has-submenu .wp-menu-arrow div,
+#adminmenu li.current .wp-menu-arrow div,
+.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,
+#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,
+#adminmenu a.wp-has-submenu:focus .wp-menu-arrow,
+#adminmenu a:hover .wp-menu-arrow {
+       display: block;
+}
+
+#adminmenu li.current .wp-menu-arrow,
+#adminmenu li.wp-menu-open .wp-menu-arrow {
+       top: 0;
+}
+
+.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,
+#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,
+#adminmenu a.wp-has-submenu:focus .wp-menu-arrow {
+       z-index: 1001;
+}
+
+.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow {
+       display: none;
+}
+
+#adminmenu .wp-not-current-submenu .wp-menu-arrow div {
+       width: 15px;
+       top: 6px;
+       border-width: 0 0 1px 1px;
+       border-style: solid;
+}
+
+.wp-menu-arrow,
+.folded #adminmenu li .wp-menu-arrow div,
+.no-js #adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow {
+       display: none;
+}
+
+.folded #adminmenu li.current .wp-menu-arrow,
+.folded #adminmenu li.current .wp-menu-arrow div,
+.folded #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,
+.folded #adminmenu li.wp-menu-open .wp-menu-arrow,
+.folded #adminmenu li a:focus .wp-menu-arrow {
+       display: block;
+}
+
+#adminmenu li.menu-top:hover .wp-menu-image img,
+#adminmenu li.wp-has-current-submenu .wp-menu-image img {
+       opacity: 1;
+       filter: alpha(opacity=100);
+}
+
+#adminmenu li.wp-menu-separator {
+       height: 3px;
+       padding: 0;
+       margin: 0;
+       border-width: 1px 0;
+       border-style: solid;
+       cursor: inherit;
+}
+
+#adminmenu div.separator {
+       height: 1px;
+       padding: 0;
+       border-width: 1px 0 0 0;
+       border-style: solid;
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+       padding: 5px 4px 5px 10px;
+       margin: -4px -1px 4px;
+       border-width: 1px 0;
+       border-style: solid;
+       -webkit-border-top-right-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+#adminmenu li.wp-menu-open {
+       border-width: 0 0 1px;
+       border-style: solid;
+}
+
+#adminmenu li.current,
+.folded #adminmenu li.wp-menu-open {
+       border: 0 none;
+}
+
+.folded #adminmenu li.wp-has-current-submenu {
+       margin-bottom: 1px;
+}
+
+.folded #adminmenu .wp-has-current-submenu.menu-top-last {
+       margin-bottom: 0;
+}
+
+#adminmenu .awaiting-mod,
+#adminmenu span.update-plugins,
+#sidemenu li a span.update-plugins {
+       position: absolute;
+       font-family: sans-serif;
+       font-size: 9px;
+       line-height: 17px;
+       font-weight: bold;
+       margin-top: 1px;
+       margin-left: 7px;
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+       z-index: 26;
+}
+
+#adminmenu li .awaiting-mod span,
+#adminmenu li span.update-plugins span,
+#sidemenu li a span.update-plugins span {
+       display: block;
+       padding: 0 6px;
+}
+
+#adminmenu li span.count-0,
+#sidemenu li a .count-0 {
+       display: none;
+}
+
+#collapse-menu {
+       font-size: 12px;
+       line-height: 34px;
+       border-width: 1px 0 0;
+       border-style: solid;
+}
+
+.folded #collapse-menu span {
+       display: none;
+}
+
+#collapse-button,
+#collapse-button div {
+       width: 15px;
+       height: 15px;
+}
+
+#collapse-button {
+       float: left;
+       margin: 8px 6px;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+}
+
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       .auto-fold #wpcontent,
+       .auto-fold #wpfooter {
+               margin-left: 52px;
+       }
+
+       .auto-fold #adminmenuback,
+       .auto-fold #adminmenuwrap,
+       .auto-fold #adminmenu,
+       .auto-fold #adminmenu li.menu-top {
+               width: 32px;
+       }
+
+       .auto-fold #adminmenu .wp-submenu.sub-open,
+       .auto-fold #adminmenu .opensub .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
+       .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,
+       .auto-fold #adminmenu a.menu-top:focus + .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu  {
+               top: -1px;
+               left: 32px;
+       }
+
+       .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu,
+       .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu {
+               border-width: 1px;
+               border-style: solid;
+               position: absolute;
+               top: -1000em;
+       }
+
+       .auto-fold #adminmenu li.menu-top .wp-submenu > li > a {
+               padding-left: 12px;
+       }
+
+       .auto-fold #adminmenu .wp-menu-name {
+               display: none;
+       }
+
+       .auto-fold #adminmenu .wp-submenu-head {
+               display: block;
+       }
+
+       .auto-fold #adminmenu div.wp-menu-image {
+               width: 32px;
+               position: absolute;
+               z-index: 25;
+       }
+
+       .auto-fold #adminmenu a.menu-top {
+               height: 28px;
+       }
+
+       .auto-fold #adminmenu li .wp-menu-arrow {
+               -moz-transform:    translate( 32px );
+               -webkit-transform: translate( 32px );
+               -o-transform:      translate( 32px );
+               -ms-transform:     translate( 32px );
+               transform:         translate( 32px );
+       }
+
+       .auto-fold #adminmenu li .wp-menu-arrow div {
+               display: none;
+       }
+
+       .auto-fold #adminmenu li.current .wp-menu-arrow,
+       .auto-fold #adminmenu li.current .wp-menu-arrow div,
+       .auto-fold #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,
+       .auto-fold #adminmenu li.wp-menu-open .wp-menu-arrow,
+       .auto-fold #adminmenu li a:focus .wp-menu-arrow {
+               display: block;
+       }
+
+       .auto-fold #adminmenu li.wp-menu-open {
+               border: 0 none;
+       }
+
+       .auto-fold #adminmenu li.wp-has-current-submenu {
+               margin-bottom: 1px;
+       }
+
+       .auto-fold #adminmenu .wp-has-current-submenu.menu-top-last {
+               margin-bottom: 0;
+       }
+
+       .auto-fold #collapse-menu span {
+               display: none;
+       }
+
+}
+
+/* List table styles */
+.post-com-count-wrapper {
+       min-width: 22px;
+       font-family: sans-serif;
+}
+
+.post-com-count {
+       background-image: url('../images/bubble_bg.gif');
+       height: 1.3em;
+       line-height: 1.1em;
+       display: block;
+       text-decoration: none;
+       padding: 0 0 6px;
+       cursor: pointer;
+       background-position: center -80px;
+       background-repeat: no-repeat;
+}
+
+.post-com-count span {
+       font-size: 11px;
+       font-weight: bold;
+       height: 1.4em;
+       line-height: 1.4em;
+       min-width: 0.7em;
+       padding: 0 6px;
+       display: inline-block;
+       -webkit-border-radius: 5px;
+       border-radius: 5px;
+}
+
+strong .post-com-count {
+       background-position: center -55px;
+}
+
+.post-com-count:hover {
+       background-position: center -3px;
+}
+
+.column-response .post-com-count {
+       float: left;
+       margin-right: 5px;
+       text-align: center;
+}
+
+.response-links {
+       float: left;
+}
+
+#the-comment-list .attachment-80x60 {
+       padding: 4px 8px;
+}
+
+th .comment-grey-bubble {
+       background-image: url('../images/comment-grey-bubble.png');
+       background-repeat: no-repeat;
+       height: 12px;
+       width: 12px;
+}
+
+/*------------------------------------------------------------------------------
+  8.0 - Layout Blocks
+------------------------------------------------------------------------------*/
+
+html.wp-toolbar {
+       padding-top: 28px;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+.narrow {
+       width: 70%;
+       margin-bottom: 40px;
+}
+
+.narrow p {
+       line-height: 150%;
+}
+
+.widefat th,
+.widefat td {
+       overflow: hidden;
+}
+
+.widefat th {
+       font-weight: normal;
+}
+
+.widefat td p {
+       margin: 2px 0 0.8em;
+}
+
+.widefat .column-comment p {
+       margin: 0.6em 0;
+}
+
+/* Screens with postboxes */
+.postbox-container {
+       float: left;
+}
+
+#dashboard-widgets.columns-1 .postbox-container {
+       width: 100%;
+}
+
+#dashboard-widgets.columns-2 .postbox-container {
+       width: 49.5%;
+}
+
+#dashboard-widgets.columns-2 #postbox-container-2,
+#dashboard-widgets.columns-2 #postbox-container-3,
+#dashboard-widgets.columns-2 #postbox-container-4 {
+       float: right;
+       width: 50.5%;
+}
+
+#dashboard-widgets.columns-3 .postbox-container {
+       width: 33.5%;
+}
+
+#dashboard-widgets.columns-3 #postbox-container-1 {
+       width: 33%;
+}
+
+#dashboard-widgets.columns-3 #postbox-container-3,
+#dashboard-widgets.columns-3 #postbox-container-4 {
+       float: right;
+}
+
+#dashboard-widgets.columns-4 .postbox-container {
+       width: 25%;
+}
+
+.postbox-container .meta-box-sortables {
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+.metabox-holder .postbox-container .empty-container {
+       border: 3px dashed #CCCCCC;
+       height: 250px;
+}
+
+.metabox-holder.columns-1 .postbox-container .empty-container,
+.columns-2 #postbox-container-3 .empty-container,
+.columns-2 #postbox-container-4 .empty-container,
+.columns-3 #postbox-container-4 .empty-container {
+       border: 0 none;
+       height: 0;
+       min-height: 0;
+}
+
+#poststuff {
+       padding-top: 10px;
+}
+
+#poststuff #post-body {
+       padding: 0;
+}
+
+#post-body-content {
+       width: 100%;
+       float: left;
+}
+
+#poststuff .postbox-container {
+       width: 100%;
+}
+
+#poststuff #post-body.columns-2 {
+       margin-right: 300px;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       float: right;
+       margin-right: -300px;
+       width: 280px;
+}
+
+#post-body.columns-2 #side-sortables {
+       min-height: 250px;
+}
+
+/* one column on the dash */
+@media only screen and (max-width: 799px) {
+       #wpbody-content #dashboard-widgets .postbox-container {
+               width: 100%;
+       }
+
+       #wpbody-content .metabox-holder .postbox-container .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+}
+
+/* two columns on the dash, but keep the setting if one is selected */
+@media only screen and (min-width: 800px) and (max-width: 1200px) {
+       #wpbody-content #dashboard-widgets .postbox-container {
+               width: 49.5%;
+       }
+
+       #wpbody-content #dashboard-widgets #postbox-container-2,
+       #wpbody-content #dashboard-widgets #postbox-container-3,
+       #wpbody-content #dashboard-widgets #postbox-container-4 {
+               float: right;
+               width: 50.5%;
+       }
+
+       #dashboard-widgets #postbox-container-3 .empty-container,
+       #dashboard-widgets #postbox-container-4 .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container {
+               width: 100%;
+       }
+
+       #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       /* show the radio buttons for column prefs only for one or two columns */
+       .index-php .screen-layout,
+       .index-php .columns-prefs {
+               display: block;
+       }
+
+       .columns-prefs .columns-prefs-3,
+       .columns-prefs .columns-prefs-4 {
+               display: none;
+       }
+}
+
+/* one column on the post write/edit screen */
+@media only screen and (max-width: 850px) {
+       #wpbody-content #poststuff #post-body {
+               margin: 0;
+       }
+
+       #wpbody-content #post-body.columns-2 #postbox-container-1 {
+               margin-right: 0;
+               width: 100%;
+       }
+
+       #poststuff #postbox-container-1 .empty-container,
+       #poststuff #postbox-container-1 #side-sortables:empty {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       #poststuff #post-body.columns-2 #side-sortables {
+               min-height: 0;
+       }
+
+       /* hide the radio buttons for column prefs */
+       .screen-layout,
+       .columns-prefs {
+               display: none;
+       }
+}
+
+.postbox .hndle {
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.js .postbox .hndle {
+       cursor: move;
+}
+
+.postbox.closed .hndle {
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.hndle a {
+       font-size: 11px;
+       font-weight: normal;
+}
+
+.postbox .handlediv {
+       float: right;
+       width: 27px;
+       height: 30px;
+}
+
+.js .postbox .handlediv {
+       cursor: pointer;
+}
+
+.sortable-placeholder {
+       border-width: 1px;
+       border-style: dashed;
+       margin-bottom: 20px;
+}
+
+.widget,
+.postbox,
+.stuffbox {
+       margin-bottom: 20px;
+       padding: 0;
+       border-width: 1px;
+       border-style: solid;
+       line-height: 1;
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3 {
+       margin-top: 1px;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.js .widget .widget-top,
+.js .postbox h3 {
+       cursor: move;
+}
+
+.postbox .inside,
+.stuffbox .inside {
+       padding: 0 12px 0 10px;
+       line-height: 1.4em;
+}
+
+.postbox .inside {
+       margin: 10px 0;
+       position: relative;
+}
+
+.postbox.closed h3 {
+       border: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.postbox table.form-table {
+       margin-bottom: 0;
+}
+
+.temp-border {
+       border: 1px dotted #ccc;
+}
+
+.columns-prefs label {
+       padding: 0 5px;
+}
+
+
+/*------------------------------------------------------------------------------
+  9.0 - Dashboard
+------------------------------------------------------------------------------*/
+
+#dashboard-widgets-wrap {
+       margin: 0 -8px;
+}
+
+#wpbody-content .metabox-holder {
+       padding-top: 10px;
+}
+
+#dashboard-widgets .meta-box-sortables {
+       margin: 0 8px;
+}
+
+#dashboard_recent_comments div.undo {
+       border-top-style: solid;
+       border-top-width: 1px;
+       margin: 0 -10px;
+       padding: 3px 8px;
+       font-size: 11px;
+}
+
+#the-comment-list td.comment p.comment-author {
+       margin-top: 0;
+       margin-left: 0;
+}
+
+#the-comment-list p.comment-author img {
+       float: left;
+       margin-right: 8px;
+}
+
+#the-comment-list p.comment-author strong a {
+       border: none;
+}
+
+#the-comment-list td {
+       vertical-align: top;
+}
+
+#the-comment-list td.comment {
+       word-wrap: break-word;
+}
+
+/* Welcome Panel */
+.welcome-panel {
+       position: relative;
+       overflow: auto;
+       margin: 20px 0;
+       padding: 23px 10px 12px;
+       border-width: 1px;
+       border-style: solid;
+       border-radius: 3px;
+       font-size: 13px;
+       line-height: 2.1em;
+}
+
+.welcome-panel h3 {
+       margin: 0;
+       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
+       font-size: 21px;
+       font-weight: normal;
+       line-height: 1.2;
+}
+.welcome-panel h4 {
+       margin: 1.33em 0 0;
+       font-size: 13px;
+}
+
+.welcome-panel .about-description {
+       font-size: 16px;
+       margin: 0;
+}
+
+.welcome-panel .welcome-panel-close {
+       position: absolute;
+       top: 5px;
+       right: 10px;
+       padding: 8px 3px;
+       font-size: 13px;
+       text-decoration: none;
+       line-height: 1;
+}
+
+.welcome-panel .welcome-panel-close:before {
+       content: ' ';
+       position: absolute;
+       left: -12px;
+       width: 10px;
+       height: 100%;
+       background: url('../images/xit.gif') 0 17% no-repeat;
+}
+
+.welcome-panel .welcome-panel-close:hover:before {
+       background-position: 100% 17%;
+}
+
+.wp-core-ui .welcome-panel .button.button-hero {
+    margin: 15px 0 3px;
+}
+
+.welcome-panel-content {
+       margin-left: 13px;
+       max-width: 1500px;
+}
+
+.welcome-panel .welcome-panel-column-container {
+       clear: both;
+       overflow: hidden;
+       position: relative;
+}
+
+.welcome-panel .welcome-panel-column {
+       width: 32%;
+       min-width: 200px;
+       float: left;
+}
+
+.ie8 .welcome-panel .welcome-panel-column {
+       min-width: 230px;
+}
+
+.welcome-panel .welcome-panel-column:first-child {
+       width: 36%;
+}
+
+.welcome-panel-column p {
+       margin-top: 7px;
+}
+
+.welcome-panel .welcome-icon {
+       display: block;
+       padding: 2px 0 8px 32px;
+       background-image: url('../images/welcome-icons.png');
+       background-repeat: no-repeat;
+       background-size: 16px;
+}
+
+.welcome-panel .welcome-add-page {
+       background-position: 0 2px;
+}
+
+.welcome-panel .welcome-edit-page {
+       background-position: 0 -90px;
+}
+
+.welcome-panel .welcome-learn-more {
+       background-position: 0 -136px;
+}
+
+.welcome-panel .welcome-comments {
+       background-position: 0 -182px;
+}
+
+.welcome-panel .welcome-view-site {
+       background-position: 0 -274px;
+}
+
+.welcome-panel .welcome-widgets-menus {
+       background-position: 1px -229px;
+       line-height: 14px;
+}
+
+.welcome-panel .welcome-write-blog {
+       background-position: 0 -44px;
+}
+
+.welcome-panel .welcome-panel-column ul {
+       margin: 0.8em 1em 1em 0;
+}
+
+.welcome-panel .welcome-panel-column li {
+    line-height: 16px;
+    list-style-type: none;
+}
+
+@media screen and (max-width: 870px) {
+       .welcome-panel .welcome-panel-column,
+       .welcome-panel .welcome-panel-column:first-child {
+               display: block;
+               float: none;
+               width: 100%;
+       }
+
+       .welcome-panel .welcome-panel-column li {
+               display: inline-block;
+               margin-right: 13px;
+       }
+
+       .welcome-panel .welcome-panel-column ul {
+               margin: 0.4em 0 0;
+       }
+
+       .welcome-panel .welcome-icon {
+               padding-left: 25px;
+       }
+}
+
+/*------------------------------------------------------------------------------
+  10.0 - List Posts (/Pages/etc)
+------------------------------------------------------------------------------*/
+
+table.fixed {
+       table-layout: fixed;
+}
+
+.fixed .column-rating,
+.fixed .column-visible {
+       width: 8%;
+}
+
+.fixed .column-date,
+.fixed .column-parent,
+.fixed .column-links {
+       width: 10%;
+}
+
+.fixed .column-response,
+.fixed .column-author,
+.fixed .column-categories,
+.fixed .column-tags,
+.fixed .column-rel,
+.fixed .column-role {
+       width: 15%;
+}
+
+.fixed .column-comments {
+       width: 4em;
+       padding: 8px 0;
+       text-align: left;
+}
+
+.fixed .column-comments .vers {
+       padding-left: 3px;
+}
+
+.fixed .column-comments a {
+       float: left;
+}
+
+.fixed .column-slug {
+       width: 25%;
+}
+
+.fixed .column-posts {
+       width: 10%;
+}
+
+.fixed .column-icon {
+       width: 80px;
+}
+
+#comments-form .fixed .column-author {
+       width: 20%;
+}
+
+#commentsdiv.postbox .inside {
+       margin: 0;
+       padding: 0;
+}
+
+#commentsdiv .inside .row-actions {
+       line-height:18px;
+}
+
+#commentsdiv .inside .column-author {
+       width: 25%;
+}
+
+#commentsdiv .column-comment p {
+       margin: 0.6em 0;
+       padding: 0;
+}
+
+#commentsdiv #replyrow td {
+       padding: 0;
+}
+
+#commentsdiv p {
+       padding: 8px 10px;
+       margin: 0;
+}
+
+#commentsdiv #add-new-comment {
+       border-width: 0 0 1px;
+       border-style: none none solid;
+}
+
+#commentsdiv .comments-box {
+       border: 0 none;
+}
+
+#commentsdiv .comments-box thead th {
+       background: transparent;
+       padding: 0 7px 4px;
+       font-style: italic;
+}
+
+#commentsdiv .comments-box tr:last-child td {
+       border-bottom: 0 none;
+}
+
+#commentsdiv .spinner {
+       padding-left: 5px;
+}
+
+.sorting-indicator {
+       display: none;
+       width: 7px;
+       height: 4px;
+       margin-top: 8px;
+       margin-left: 7px;
+       background-image: url('../images/sort.gif');
+       background-repeat: no-repeat;
+}
+
+.fixed .column-comments .sorting-indicator {
+       margin-top: 3px;
+}
+
+.widefat th.sortable,
+.widefat th.sorted {
+       padding: 0;
+}
+
+th.sortable a,
+th.sorted a {
+       display: block;
+       overflow: hidden;
+       padding: 7px 7px 8px;
+}
+
+.fixed .column-comments.sortable a,
+.fixed .column-comments.sorted a {
+       padding: 8px 0;
+}
+
+th.sortable a span,
+th.sorted a span {
+       float: left;
+       cursor: pointer;
+}
+
+th.sorted.asc .sorting-indicator,
+th.desc:hover span.sorting-indicator {
+       display: block;
+       background-position: 0 0;
+}
+
+th.sorted.desc .sorting-indicator,
+th.asc:hover span.sorting-indicator {
+       display: block;
+       background-position: -7px 0;
+}
+
+/* Bulk Actions */
+.tablenav-pages a {
+       border-bottom-style: solid;
+       border-bottom-width: 2px;
+       font-weight: bold;
+       margin-right: 1px;
+       padding: 0 2px;
+}
+.tablenav-pages .current-page {
+       text-align: center;
+}
+.tablenav-pages .next-page {
+       margin-left: 2px;
+}
+
+.tablenav a.button-secondary {
+       display: block;
+       margin: 3px 8px 0 0;
+}
+
+.tablenav {
+       clear: both;
+       height: 30px;
+       margin: 6px 0 4px;
+       vertical-align: middle;
+}
+
+.tablenav.themes {
+       max-width: 98%;
+}
+
+.tablenav .tablenav-pages {
+       float: right;
+       display: block;
+       cursor: default;
+       height: 30px;
+       line-height: 30px;
+       font-size: 12px;
+}
+
+.tablenav .no-pages,
+.tablenav .one-page .pagination-links {
+       display: none;
+}
+
+.tablenav .tablenav-pages a,
+.tablenav-pages span.current  {
+       text-decoration: none;
+       padding: 3px 6px;
+}
+
+.tablenav .tablenav-pages a.disabled:hover ,
+.tablenav .tablenav-pages a.disabled:active {
+       cursor: default;
+}
+
+.tablenav .displaying-num {
+       margin-right: 10px;
+       font-size: 12px;
+       font-style: italic;
+}
+
+.tablenav .actions {
+       overflow: hidden;
+       padding: 2px 8px 0 0;
+}
+
+.tablenav .delete {
+       margin-right: 20px;
+}
+
+.view-switch {
+       float: right;
+       margin: 6px 8px 0;
+}
+
+.view-switch a {
+       text-decoration: none;
+}
+
+.filter {
+       float: left;
+       margin: -5px 0 0 10px;
+}
+
+.filter .subsubsub {
+       margin-left: -10px;
+       margin-top: 13px;
+}
+.screen-per-page {
+       width: 4em;
+}
+
+#posts-filter fieldset {
+       float: left;
+       margin: 0 1.5ex 1em 0;
+       padding: 0;
+}
+
+#posts-filter fieldset legend {
+       padding: 0 0 .2em 1px;
+}
+
+span.post-state-format {
+       font-weight: normal;
+}
+
+
+/*------------------------------------------------------------------------------
+  10.1 - Inline Editing
+------------------------------------------------------------------------------*/
+
+/*
+.quick-edit* is for Quick Edit
+.bulk-edit* is for Bulk Edit
+.inline-edit* is for everything
+*/
+
+/*     Layout */
+
+#wpbody-content .inline-edit-row fieldset {
+       font-size: 12px;
+       float: left;
+       margin: 0;
+       padding: 0;
+       width: 100%;
+}
+
+tr.inline-edit-row td,
+#wpbody-content .inline-edit-row fieldset .inline-edit-col {
+       padding: 0 0.5em;
+}
+
+#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
+       border-width: 0 0 0 1px;
+       border-style: none none none solid;
+}
+
+#wpbody-content .quick-edit-row-post .inline-edit-col-left {
+       width: 40%;
+}
+
+#wpbody-content .quick-edit-row-post .inline-edit-col-right {
+       width: 39%;
+}
+
+#wpbody-content .inline-edit-row-post .inline-edit-col-center {
+       width: 20%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-left {
+       width: 50%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-right,
+#wpbody-content .bulk-edit-row-post .inline-edit-col-right {
+       width: 49%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-left {
+       width: 30%;
+}
+
+#wpbody-content .bulk-edit-row-page .inline-edit-col-right {
+       width: 69%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
+       float: right;
+       width: 69%;
+}
+
+#wpbody-content .inline-edit-row-page .inline-edit-col-right {
+       margin-top: 27px;
+}
+
+.inline-edit-row fieldset .inline-edit-group {
+       clear: both;
+}
+
+.inline-edit-row fieldset .inline-edit-group:after {
+       content: ".";
+       display: block;
+       height: 0;
+       clear: both;
+       visibility: hidden;
+}
+
+.inline-edit-row p.submit {
+       clear: both;
+       padding: 0.5em;
+       margin: 0.5em 0 0;
+}
+
+.inline-edit-row span.error {
+       line-height: 22px;
+       margin: 0 15px;
+       padding: 3px 5px;
+}
+
+/*     Positioning */
+.inline-edit-row h4 {
+       margin: .2em 0;
+       padding: 0;
+       line-height: 23px;
+}
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+       margin: 0;
+       padding: 0;
+       line-height: 27px;
+}
+
+.inline-edit-row fieldset label,
+.inline-edit-row fieldset span.inline-edit-categories-label {
+       display: block;
+       margin: .2em 0;
+}
+
+.inline-edit-row fieldset label.inline-edit-tags {
+       margin-top: 0;
+}
+
+.inline-edit-row fieldset label.inline-edit-tags span.title {
+       margin: .2em 0;
+}
+
+.inline-edit-row fieldset label span.title {
+       display: block;
+       float: left;
+       width: 5em;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+       display: block;
+       margin-left: 5em;
+}
+
+.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
+       width: auto;
+       padding-right: 0.5em;
+}
+
+.inline-edit-row .input-text-wrap input[type=text] {
+       width: 100%;
+}
+
+.inline-edit-row fieldset label input[type=checkbox] {
+       vertical-align: text-bottom;
+}
+
+.inline-edit-row fieldset label textarea {
+       width: 100%;
+       height: 4em;
+}
+
+#wpbody-content .bulk-edit-row fieldset .inline-edit-group label {
+       max-width: 50%;
+}
+
+#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
+       margin-right: 0.5em
+}
+
+.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input {
+       width: 6em;
+}
+
+.inline-edit-save .spinner {
+       padding: 4px 10px 0;
+       vertical-align: top;
+       float: right;
+}
+
+/*     Styling */
+.inline-edit-row h4 {
+       text-transform: uppercase;
+}
+
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+       font-style: italic;
+       line-height: 1.8em;
+}
+
+/*     Specific Elements */
+.inline-edit-row fieldset input[type="text"],
+.inline-edit-row fieldset textarea {
+       border-style: solid;
+       border-width: 1px;
+}
+
+.inline-edit-row fieldset .inline-edit-date {
+       float: left;
+}
+
+.inline-edit-row fieldset input[name=jj],
+.inline-edit-row fieldset input[name=hh],
+.inline-edit-row fieldset input[name=mn] {
+       font-size: 12px;
+       width: 2.1em;
+}
+
+.inline-edit-row fieldset input[name=aa] {
+       font-size: 12px;
+       width: 3.5em;
+}
+
+.inline-edit-row fieldset label input.inline-edit-password-input {
+       width: 8em;
+}
+
+.inline-edit-row .catshow,
+.inline-edit-row .cathide {
+       cursor: pointer;
+}
+
+ul.cat-checklist {
+       height: 12em;
+       border-style: solid;
+       border-width: 1px;
+       overflow-y: scroll;
+       padding: 0 5px;
+       margin: 0;
+}
+
+#bulk-titles {
+       display: block;
+       height: 12em;
+       border-style: solid;
+       border-width: 1px;
+       overflow-y: scroll;
+       padding: 0 5px;
+       margin: 0 0 5px;
+}
+
+.inline-edit-row fieldset ul.cat-checklist li,
+.inline-edit-row fieldset ul.cat-checklist input {
+       margin: 0;
+}
+
+.inline-edit-row fieldset ul.cat-checklist label,
+.inline-edit-row .catshow,
+.inline-edit-row .cathide,
+.inline-edit-row #bulk-titles div {
+       font-family: sans-serif;
+       font-style: normal;
+       font-size: 11px;
+}
+
+table .inline-edit-row fieldset ul.cat-hover {
+       height: auto;
+       max-height: 30em;
+       overflow-y: auto;
+       position: absolute;
+}
+
+.inline-edit-row fieldset label input.inline-edit-menu-order-input {
+       width: 3em;
+}
+
+.inline-edit-row fieldset label input.inline-edit-slug-input {
+       width: 75%;
+}
+
+.quick-edit-row-post fieldset label.inline-edit-status {
+       float: left;
+}
+
+#bulk-titles {
+       line-height: 140%;
+}
+#bulk-titles div {
+       margin: 0.2em 0.3em;
+}
+
+#bulk-titles div a {
+       cursor: pointer;
+       display: block;
+       float: left;
+       height: 10px;
+       margin: 3px 3px 0 -2px;
+       overflow: hidden;
+       position: relative;
+       text-indent: -9999px;
+       width: 10px;
+}
+
+
+/*------------------------------------------------------------------------------
+  11.0 - Write/Edit Post Screen
+------------------------------------------------------------------------------*/
+
+#show-comments {
+       overflow: hidden;
+}
+
+#save-action .spinner,
+#show-comments a,
+#show-comments .spinner {
+       float: left;
+}
+
+#titlediv {
+       position: relative;
+       margin-bottom: 10px;
+}
+
+#titlediv label {
+       cursor: text;
+}
+
+#titlediv div.inside {
+       margin: 0;
+}
+
+#poststuff #titlewrap {
+       border: 0;
+       padding: 0;
+}
+
+#titlediv #title {
+       padding: 3px 8px;
+       font-size: 1.7em;
+       line-height: 100%;
+       width: 100%;
+       outline: none;
+}
+
+#titlediv #title-prompt-text,
+#wp-fullscreen-title-prompt-text {
+       color: #bbb;
+       position: absolute;
+       font-size: 1.7em;
+       padding: 8px 10px;
+}
+
+#wp-fullscreen-save .fs-saved {
+       color: #999;
+       float: right;
+       margin-top: 4px;
+}
+
+#wp-fullscreen-title-prompt-text {
+       padding: 11px;
+}
+
+#poststuff .inside-submitbox,
+#side-sortables .inside-submitbox {
+       margin: 0 3px;
+       font-size: 11px;
+}
+
+input#link_description,
+input#link_url {
+       width: 98%;
+}
+
+#pending {
+       background: 0 none;
+       border: 0 none;
+       padding: 0;
+       font-size: 11px;
+       margin-top: -1px;
+}
+
+#edit-slug-box {
+       line-height: 23px;
+       min-height: 23px;
+       margin-top: 5px;
+       padding: 0 10px;
+}
+
+#edit-slug-box .cancel {
+       margin-right: 10px;
+       font-size: 11px;
+}
+
+#editable-post-name-full {
+       display: none;
+}
+
+#editable-post-name input {
+       width: 16em;
+}
+
+.postarea h3 label {
+       float: left;
+}
+
+.submitbox .submit {
+       text-align: left;
+       padding: 12px 10px 10px;
+       font-size: 11px;
+}
+
+.submitbox .submitdelete {
+       text-decoration: none;
+       padding: 1px 2px;
+}
+
+.submitbox .submitdelete,
+.submitbox .submit a:hover {
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+.submitbox .submit input {
+       margin-bottom: 8px;
+       margin-right: 4px;
+       padding: 6px;
+}
+
+.inside-submitbox #post_status {
+       margin: 2px 0 2px -2px;
+}
+
+#post-status-select, #post-format {
+       line-height: 2.5em;
+       margin-top: 3px;
+}
+
+/* Post Screen */
+#post-body #normal-sortables {
+       min-height: 50px;
+}
+
+.postbox {
+       position: relative;
+       min-width: 255px;
+}
+
+#trackback_url {
+       width: 99%;
+}
+
+#normal-sortables .postbox .submit {
+       background: transparent none;
+       border: 0 none;
+       float: right;
+       padding: 0 12px;
+       margin:0;
+}
+
+.category-add input[type="text"],
+.category-add select {
+       width: 100%;
+       max-width: 260px;
+}
+
+.press-this #side-sortables .category-tabs li,
+ul.category-tabs li,
+#side-sortables .add-menu-item-tabs li,
+.wp-tab-bar li {
+       display: inline;
+       line-height: 1.35em;
+}
+
+.no-js .category-tabs li.hide-if-no-js {
+       display: none;
+}
+
+.category-tabs a,
+#side-sortables .add-menu-item-tabs a,
+.wp-tab-bar a {
+       text-decoration: none;
+}
+
+.category-tabs {
+       margin: 8px 0 3px;
+}
+
+#category-adder h4 {
+       margin: 10px 0;
+}
+
+#side-sortables .add-menu-item-tabs,
+.wp-tab-bar {
+       margin-bottom: 3px;
+}
+
+#normal-sortables .postbox #replyrow .submit {
+       float: none;
+       margin: 0;
+       padding: 0 7px 5px;
+}
+
+#side-sortables .submitbox .submit input,
+#side-sortables .submitbox .submit .preview,
+#side-sortables .submitbox .submit a.preview:hover {
+       border: 0 none;
+}
+
+#side-sortables .inside-submitbox .insidebox,
+.stuffbox .insidebox {
+       margin: 11px 0;
+}
+
+ul.category-tabs,
+ul.add-menu-item-tabs,
+ul.wp-tab-bar {
+       margin-top: 12px;
+}
+
+ul.category-tabs li {
+       border-style: solid;
+       border-width: 1px;
+       position: relative;
+}
+
+ul.add-menu-item-tabs li.tabs,
+.wp-tab-active {
+       border-style: solid solid none;
+       border-width: 1px 1px 0;
+}
+
+#post-body .add-menu-item-tabs li.tabs {
+       border-style: solid none solid solid;
+       border-width: 1px 0 1px 1px;
+       margin-right: -1px;
+}
+
+ul.category-tabs li,
+ul.add-menu-item-tabs li,
+ul.wp-tab-bar li {
+       padding: 3px 5px 5px;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+/* positioning etc. */
+form#tags-filter {
+       position: relative;
+}
+
+/* Edit posts */
+td.post-title strong,
+td.plugin-title strong {
+       display: block;
+       margin-bottom: .2em;
+}
+
+td.post-title p,
+td.plugin-title p {
+       margin: 6px 0;
+}
+
+/* Global classes */
+.wp-hidden-children .wp-hidden-child,
+.ui-tabs-hide {
+       display: none;
+}
+
+.commentlist .avatar {
+       vertical-align: text-top;
+}
+
+#post-body .tagsdiv #newtag {
+       margin-right: 5px;
+       width: 16em;
+}
+
+#side-sortables input#post_password {
+       width: 94%
+}
+
+#side-sortables .tagsdiv #newtag {
+       width: 68%;
+}
+
+#post-status-info {
+       border-width: 0 1px 1px;
+       border-style: none solid solid;
+       width: 100%;
+       -webkit-border-bottom-left-radius: 3px;
+       -webkit-border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+#post-status-info td {
+       font-size: 12px;
+}
+
+.autosave-info {
+       padding: 2px 15px;
+       text-align: right;
+}
+
+#editorcontent #post-status-info {
+       border: none;
+}
+
+#post-body .wp_themeSkin .mceStatusbar a.mceResize {
+       display: block;
+       background: transparent url('../images/resize.gif') no-repeat scroll right bottom;
+       width: 12px;
+       cursor: se-resize;
+       margin: 0 1px;
+       position: relative;
+       top: -2px;
+}
+
+#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize {
+       top: 20px;
+}
+
+#content-resize-handle {
+       background: transparent url('../images/resize.gif') no-repeat scroll right bottom;
+       width: 12px;
+       cursor: se-resize;
+       position: absolute;
+       right: 2px;
+       height: 19px;
+}
+
+.press-this #content-resize-handle {
+       bottom: 2px;
+}
+
+.tmce-active #content-resize-handle {
+       display: none;
+}
+
+#wp-word-count {
+       display: block;
+       padding: 2px 10px;
+}
+
+#timestampdiv select {
+       height: 20px;
+       line-height: 14px;
+       padding: 0;
+       vertical-align: top;
+}
+
+#aa, #jj, #hh, #mn {
+       padding: 1px;
+       font-size: 12px;
+}
+
+#jj, #hh, #mn {
+       width: 2em;
+}
+
+#aa {
+       width: 3.4em;
+}
+
+.curtime #timestamp {
+       background-repeat: no-repeat;
+       background-position: left center;
+       padding: 2px 0 1px 20px;
+}
+
+#timestampdiv {
+       padding-top: 5px;
+       line-height: 23px;
+}
+
+#timestampdiv p {
+       margin: 8px 0 6px;
+}
+
+#timestampdiv input {
+       border-width: 1px;
+       border-style: solid;
+}
+
+
+/*------------------------------------------------------------------------------
+  11.1 - Custom Fields
+------------------------------------------------------------------------------*/
+
+#postcustomstuff thead th {
+       padding: 5px 8px 8px;
+}
+
+#postcustom #postcustomstuff .submit {
+       border: 0 none;
+       float: none;
+       padding: 0 8px 8px;
+}
+
+#side-sortables #postcustom #postcustomstuff .submit {
+       margin: 0;
+       padding: 0;
+}
+
+#side-sortables #postcustom #postcustomstuff #the-list textarea {
+       height: 85px;
+}
+
+#side-sortables #postcustom #postcustomstuff td.left input,
+#side-sortables #postcustom #postcustomstuff td.left select,
+#side-sortables #postcustomstuff #newmetaleft a {
+       margin: 3px 3px 0;
+}
+
+#postcustomstuff table {
+       margin: 0;
+       width: 100%;
+       border-width: 1px;
+       border-style: solid;
+       border-spacing: 0;
+}
+
+#postcustomstuff tr {
+       vertical-align: top;
+}
+
+#postcustomstuff table input,
+#postcustomstuff table select,
+#postcustomstuff table textarea {
+       width: 96%;
+       margin: 8px;
+}
+
+#side-sortables #postcustomstuff table input,
+#side-sortables #postcustomstuff table select,
+#side-sortables #postcustomstuff table textarea {
+       margin: 3px;
+}
+
+#postcustomstuff th.left,
+#postcustomstuff td.left {
+       width: 38%;
+}
+
+#postcustomstuff .submit input {
+       margin: 0;
+       width: auto;
+}
+
+#postcustomstuff #newmetaleft a {
+       display: inline-block;
+       margin: 0 8px 8px;
+       text-decoration: none;
+}
+
+.no-js #postcustomstuff #enternew {
+       display: none;
+}
+
+#post-body-content .compat-attachment-fields {
+       margin-bottom: 20px;
+}
+
+.compat-attachment-fields th {
+       padding-top: 5px;
+       padding-right: 10px;
+}
+
+/*------------------------------------------------------------------------------
+  11.2 - Post Revisions
+------------------------------------------------------------------------------*/
+
+table.diff {
+       width: 100%;
+}
+
+table.diff col.content {
+       width: 50%;
+}
+
+table.diff tr {
+       background-color: transparent;
+}
+
+table.diff td, table.diff th {
+       padding: .5em;
+       font-family: Consolas, Monaco, monospace;
+       border: none;
+}
+
+table.diff .diff-deletedline del, table.diff .diff-addedline ins {
+       text-decoration: none;
+}
+
+/*------------------------------------------------------------------------------
+  11.3 - Featured Images
+------------------------------------------------------------------------------*/
+
+#select-featured-image {
+       padding: 4px 0;
+       overflow: hidden;
+}
+
+#select-featured-image img {
+       max-width: 100%;
+       height: auto;
+       margin-bottom: 10px;
+}
+
+#select-featured-image a {
+       float: left;
+       clear: both;
+}
+
+#select-featured-image .remove {
+       display: none;
+       margin-top: 10px;
+}
+
+.js #select-featured-image.has-featured-image .remove {
+       display: inline-block;
+}
+
+.no-js #select-featured-image .choose {
+       display: none;
+}
+
+/*------------------------------------------------------------------------------
+  12.0 - Categories
+------------------------------------------------------------------------------*/
+
+.category-adder {
+       margin-left: 120px;
+       padding: 4px 0;
+}
+
+.category-adder h4 {
+       margin: 0 0 8px;
+}
+
+#side-sortables .category-adder {
+       margin: 0;
+}
+
+#post-body ul.add-menu-item-tabs {
+       float: left;
+       width: 120px;
+       text-align: right;
+       /* Negative margin for the sake of those without JS: all tabs display */
+       margin: 0 -120px 0 5px;
+       padding: 0;
+}
+
+#post-body ul.add-menu-item-tabs li {
+       padding: 8px;
+}
+
+#post-body ul.add-menu-item-tabs li.tabs {
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+.wp-tab-panel,
+.categorydiv div.tabs-panel,
+.customlinkdiv div.tabs-panel,
+.posttypediv div.tabs-panel,
+.taxonomydiv div.tabs-panel {
+       min-height: 42px;
+       max-height: 200px;
+       overflow: auto;
+       padding: 0 0.9em;
+       border-style: solid;
+       border-width: 1px;
+}
+
+div.tabs-panel-active {
+       display:block;
+}
+
+div.tabs-panel-inactive {
+       display:none;
+}
+
+.customlinkdiv ul,
+.posttypediv ul,
+.taxonomydiv ul {
+       list-style: none;
+       padding: 0;
+       margin: 0;
+}
+
+#front-page-warning,
+#front-static-pages ul,
+ul.export-filters,
+.inline-editor ul.cat-checklist ul,
+.categorydiv ul.categorychecklist ul,
+.customlinkdiv ul.categorychecklist ul,
+.posttypediv ul.categorychecklist ul,
+.taxonomydiv ul.categorychecklist ul {
+       margin-left: 18px;
+}
+
+ul.categorychecklist li {
+       margin: 0;
+       padding: 0;
+       line-height: 19px;
+       word-wrap: break-word;
+}
+
+.categorydiv .tabs-panel,
+.customlinkdiv .tabs-panel,
+.posttypediv .tabs-panel,
+.taxonomydiv .tabs-panel {
+       border-width: 3px;
+       border-style: solid;
+}
+
+.form-wrap p,
+.form-wrap label {
+       font-size: 11px;
+}
+
+.form-wrap label {
+       display: block;
+       padding: 2px;
+       font-size: 12px;
+}
+
+.form-field input,
+.form-field textarea {
+       border-style: solid;
+       border-width: 1px;
+       width: 95%;
+}
+
+p.description,
+.form-wrap p {
+       margin: 2px 0 5px;
+}
+
+p.help,
+p.description,
+span.description,
+.form-wrap p {
+       font-size: 12px;
+       font-style: italic;
+       font-family: sans-serif;
+}
+
+.form-wrap .form-field {
+       margin: 0 0 10px;
+       padding: 8px 0;
+}
+
+.col-wrap h3 {
+       margin: 12px 0;
+       font-size: 1.1em;
+}
+
+.col-wrap p.submit {
+       margin-top: -10px;
+}
+
+
+/*------------------------------------------------------------------------------
+  13.0 - Tags
+------------------------------------------------------------------------------*/
+
+#poststuff .taghint {
+       color: #aaa;
+       margin: 15px 0 -24px 12px;
+}
+
+#poststuff .tagsdiv .howto {
+       margin: 0 0 6px 8px;
+}
+
+.ajaxtag .newtag {
+       position: relative;
+}
+
+.tagsdiv .newtag {
+       width: 180px;
+}
+
+.tagsdiv .the-tags {
+       display: block;
+       height: 60px;
+       margin: 0 auto;
+       overflow: auto;
+       width: 260px;
+}
+
+#post-body-content .tagsdiv .the-tags {
+       margin: 0 5px;
+}
+
+p.popular-tags {
+       -webkit-border-radius: 8px;
+       border-radius: 8px;
+       border-width: 1px;
+       border-style: solid;
+       line-height: 2em;
+       max-width: 1000px;
+       padding: 8px 12px 12px;
+       text-align: justify;
+}
+
+p.popular-tags a {
+       padding: 0 3px;
+}
+
+.tagcloud {
+       width: 97%;
+       margin: 0 0 40px;
+       text-align: justify;
+}
+
+.tagcloud h3 {
+       margin: 2px 0 12px;
+}
+
+.ac_results {
+       padding: 0;
+       margin: 0;
+       list-style: none;
+       position: absolute;
+       z-index: 10000;
+       display: none;
+       border-width: 1px;
+       border-style: solid;
+}
+
+.ac_results li {
+       padding: 2px 5px;
+       white-space: nowrap;
+       text-align: left;
+}
+
+.ac_over {
+       cursor: pointer;
+}
+
+.ac_match {
+       text-decoration: underline;
+}
+
+/* links tables */
+table.links-table {
+       width: 100%;
+}
+
+.links-table th {
+       font-weight: normal;
+       text-align: left;
+       vertical-align: top;
+       min-width: 80px;
+       width: 20%;
+       word-wrap: break-word;
+}
+
+.links-table th,
+.links-table td {
+       padding: 5px 0;
+}
+
+.links-table td label {
+       margin-right: 8px;
+}
+
+.links-table td input[type="text"],
+.links-table td textarea {
+       width: 100%;
+}
+
+.links-table #link_rel {
+       max-width: 280px;
+}
+
+/*------------------------------------------------------------------------------
+  14.0 - Media Screen
+------------------------------------------------------------------------------*/
+
+.media-item .describe {
+       border-collapse: collapse;
+       width: 100%;
+       border-top-style: solid;
+       border-top-width: 1px;
+       clear: both;
+       cursor: default;
+}
+
+.media-item.media-blank .describe {
+       border: 0;
+}
+
+.media-item .describe th {
+       vertical-align: top;
+       text-align: left;
+       padding: 5px 10px 10px;
+       width: 140px;
+}
+
+.media-item .describe .align th {
+       padding-top: 0;
+}
+
+.media-item .media-item-info tr {
+       background-color: transparent;
+}
+
+.media-item .describe td {
+       padding: 0 8px 8px 0;
+       vertical-align: top;
+}
+
+.media-item thead.media-item-info td {
+       padding: 4px 10px 0;
+}
+
+.media-item .media-item-info .A1B1 {
+       padding: 0 0 0 10px;
+}
+
+.media-item td.savesend {
+       padding-bottom: 15px;
+}
+
+.media-item .thumbnail {
+       max-height: 128px;
+       max-width: 128px;
+}
+
+#wpbody-content #async-upload-wrap a {
+       display: none;
+}
+
+.media-upload-form {
+       margin-top: 20px;
+}
+
+.media-upload-form td label {
+       margin-right: 6px;
+       margin-left: 2px;
+}
+
+.media-upload-form .align .field label {
+       display: inline;
+       padding: 0 0 0 23px;
+       margin: 0 1em 0 3px;
+       font-weight: bold;
+}
+
+.media-upload-form tr.image-size label {
+       margin: 0 0 0 5px;
+       font-weight: bold;
+}
+
+.media-upload-form th.label label {
+       font-weight: bold;
+       margin: 0.5em;
+       font-size: 13px;
+}
+
+.media-upload-form th.label label span {
+       padding: 0 5px;
+}
+
+abbr.required {
+       border: medium none;
+       text-decoration: none;
+}
+
+.media-item .describe input[type="text"],
+.media-item .describe textarea {
+       width: 460px;
+}
+
+.media-item .describe p.help {
+       margin: 0;
+       padding: 0 0 0 5px;
+}
+
+.media-item .edit-attachment,
+.describe-toggle-on,
+.describe-toggle-off {
+       display: block;
+       line-height: 36px;
+       float: right;
+       margin-right: 15px;
+}
+
+.media-item .describe-toggle-off,
+.media-item.open .describe-toggle-on {
+       display: none;
+}
+
+.media-item.open .describe-toggle-off {
+       display: block;
+}
+
+#media-items .media-item {
+       border-style: solid;
+       border-width: 1px;
+       min-height: 36px;
+       position: relative;
+       margin-top: -1px;
+       width: 100%;
+}
+
+#media-items {
+       width: 623px;
+}
+
+.media-new-php #media-items {
+       margin: 1em 0;
+}
+
+#media-items:empty {
+       border: 0 none;
+}
+
+.media-item .filename {
+       line-height: 36px;
+       overflow: hidden;
+       padding: 0 10px;
+}
+
+.media-item .error-div {
+       padding-left: 10px;
+}
+
+.media-item .pinkynail {
+       float: left;
+       margin: 2px 2px 0;
+       max-width: 40px;
+       max-height: 32px;
+}
+
+.media-item .startopen,
+.media-item .startclosed {
+       display: none;
+}
+
+.media-item .original {
+       position: relative;
+       height: 34px;
+}
+
+.media-item .progress {
+       float: right;
+       height: 22px;
+       margin: 6px 10px 0 0;
+       width: 200px;
+       line-height: 2em;
+       padding: 0;
+       overflow: hidden;
+       margin-bottom: 2px;
+       border: 1px solid #d1d1d1;
+       background: #f7f7f7;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#f7f7f7));
+       background-image: -webkit-linear-gradient(bottom, #fff, #f7f7f7);
+       background-image:    -moz-linear-gradient(bottom, #fff, #f7f7f7);
+       background-image:      -o-linear-gradient(bottom, #fff, #f7f7f7);
+       background-image: linear-gradient(to top, #fff, #f7f7f7);
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.1);
+       box-shadow: inset 0 0 3px rgba(0,0,0,0.1);
+}
+
+.media-item .bar {
+       z-index: 9;
+       width: 0;
+       height: 100%;
+       margin-top: -24px;
+       background-color: #8cc1e9;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#72a7cf), to(#8cc1e9));
+       background-image: -webkit-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image:    -moz-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image:      -o-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image: linear-gradient(to top, #72a7cf, #8cc1e9);
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.3);
+       box-shadow: 0 0 3px rgba(0,0,0,0.3);
+}
+
+.media-item .progress .percent {
+       z-index: 10;
+       position: relative;
+       width: 200px;
+       padding: 0 8px;
+       text-shadow: 0 1px 0 rgba(255,255,255,0.4);
+       color: rgba(0,0,0,0.6);
+}
+
+.upload-php .fixed .column-parent {
+       width: 15%;
+}
+
+.js .html-uploader #plupload-upload-ui {
+       display: none;
+}
+
+.js .html-uploader #html-upload-ui {
+       display: block;
+}
+
+.media-upload-form .media-item.error {
+       margin: 0;
+       padding: 0;
+}
+
+.media-upload-form .media-item.error p,
+.media-item .error-div {
+       line-height: 16px;
+       margin: 5px 10px;
+       padding: 0;
+}
+
+.media-item .error-div a.dismiss {
+       display: block;
+       float: right;
+       margin: 5px 4px 0 15px;
+}
+
+/*------------------------------------------------------------------------------
+  14.1 - Media Library
+------------------------------------------------------------------------------*/
+
+.find-box {
+       width: 600px;
+       height: 300px;
+       overflow: hidden;
+       padding: 33px 0 51px;
+       position: absolute;
+       z-index: 1000;
+}
+
+.find-box-head {
+       cursor: move;
+       font-weight: bold;
+       height: 2em;
+       line-height: 2em;
+       padding: 1px 12px;
+       position: absolute;
+       top: 5px;
+       width: 100%;
+}
+
+.find-box-inside {
+       overflow: auto;
+       padding: 6px;
+       height: 100%;
+}
+
+.find-box-search {
+       overflow: hidden;
+       padding: 9px;
+       position: relative;
+}
+
+.find-box-search .spinner {
+       float: none;
+       left: 125px;
+       position: absolute;
+       top: 9px;
+}
+
+#find-posts-input {
+       float: left;
+       width: 140px;
+       height: 24px;
+}
+
+#find-posts-search {
+       float: left;
+       margin: 1px 4px 0 3px;
+}
+
+#find-posts-response {
+       margin: 8px 0;
+       padding: 0 1px 6px;
+}
+
+#find-posts-response table {
+       width: 100%;
+}
+
+#find-posts-response .found-radio {
+       padding: 3px 0 0 8px;
+       width: 15px;
+}
+
+.find-box-buttons {
+       padding: 8px;
+       overflow: hidden;
+}
+
+.find-box #resize-se {
+       position: absolute;
+       right: 1px;
+       bottom: 1px;
+}
+
+.ui-find-overlay {
+       position: absolute;
+       top: 0;
+       left: 0;
+       background-color: #000;
+       opacity: 0.6;
+       filter: alpha(opacity=60);
+}
+
+ul#dismissed-updates {
+       display: none;
+}
+
+form.upgrade {
+       margin-top: 8px;
+}
+
+form.upgrade .hint {
+       font-style: italic;
+       font-size: 85%;
+       margin: -0.5em 0 2em 0;
+}
+
+#poststuff .inside .the-tagcloud {
+       margin: 5px 0 10px;
+       padding: 8px;
+       border-width: 1px;
+       border-style: solid;
+       line-height: 1.8em;
+       word-spacing: 3px;
+       -webkit-border-radius: 6px;
+       border-radius: 6px;
+}
+
+.drag-drop #drag-drop-area {
+       border: 4px dashed #DDDDDD;
+       height: 200px;
+}
+
+.drag-drop .drag-drop-inside {
+       margin: 70px auto 0;
+       width: 250px;
+}
+
+.drag-drop-inside p {
+       color: #aaa;
+       font-size: 14px;
+       margin: 5px 0;
+       display: none;
+}
+
+.drag-drop .drag-drop-inside p {
+       text-align: center;
+}
+
+.drag-drop-inside p.drag-drop-info {
+       font-size: 20px;
+}
+
+.drag-drop .drag-drop-inside p,
+.drag-drop-inside p.drag-drop-buttons {
+       display: block;
+}
+
+/*
+#drag-drop-area:-moz-drag-over {
+       border-color: #83b4d8;
+}
+borger color while dragging a file over the uploader drop area */
+.drag-drop.drag-over #drag-drop-area {
+       border-color: #83b4d8;
+}
+
+#plupload-upload-ui {
+       position: relative;
+}
+
+
+/*------------------------------------------------------------------------------
+  14.2 - Image Editor
+------------------------------------------------------------------------------*/
+
+.describe .image-editor {
+       vertical-align: top;
+}
+
+.imgedit-wrap {
+       position: relative;
+}
+
+.imgedit-settings p {
+       margin: 8px 0;
+}
+
+.post-php .imgedit-wrap table {
+       width: 100%;
+}
+
+.describe .imgedit-wrap table td,
+.wp_attachment_holder .imgedit-wrap table td {
+       vertical-align: top;
+       padding-top: 0;
+}
+
+.describe .imgedit-wrap table td.imgedit-settings {
+       padding: 0 5px;
+}
+
+.wp_attachment_holder .imgedit-wrap table td.imgedit-settings {
+       width: 250px;
+}
+
+td.imgedit-settings input {
+       margin-top: 0;
+       vertical-align: middle;
+}
+
+.imgedit-wait {
+       position: absolute;
+       top: 0;
+       background: #fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;
+       background-size: 16px 16px;
+       opacity: 0.7;
+       filter: alpha(opacity=70);
+       width: 100%;
+       height: 500px;
+       display: none;
+}
+
+.spinner {
+       background: url(../images/wpspin_light.gif) no-repeat;
+       background-size: 16px 16px;
+       display: none;
+       float: right;
+       opacity: 0.7;
+       filter: alpha(opacity=70);
+       width: 16px;
+       height: 16px;
+       margin: 5px 5px 0;
+}
+
+.no-float {
+       float: none;
+}
+
+.media-disabled,
+.imgedit-settings .disabled  {
+       color: grey;
+}
+
+.wp_attachment_image,
+.A1B1 {
+       overflow: hidden;
+}
+
+.wp_attachment_image .button,
+.A1B1 .button {
+       float: left;
+}
+
+.no-js .wp_attachment_image .button {
+       display: none;
+}
+
+.wp_attachment_image .spinner,
+.A1B1 .spinner {
+       float: left;
+       padding: 0 4px 4px;
+       vertical-align: bottom;
+}
+
+.imgedit-menu {
+       margin: 0 0 12px;
+       min-width: 300px;
+}
+
+.imgedit-menu div {
+       float: left;
+       width: 32px;
+       height: 32px;
+}
+
+.imgedit-crop-wrap {
+       position: relative;
+}
+
+.imgedit-crop {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -9px -31px;
+       margin: 0 8px 0 0;
+}
+
+.imgedit-crop.disabled:hover {
+       background-position: -9px -31px;
+}
+
+.imgedit-crop:hover {
+       background-position: -9px -1px;
+}
+
+.imgedit-rleft {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -46px -31px;
+       margin: 0 3px;
+}
+
+.imgedit-rleft.disabled:hover {
+       background-position: -46px -31px;
+}
+
+.imgedit-rleft:hover {
+       background-position: -46px -1px;
+}
+
+.imgedit-rright {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -77px -31px;
+       margin: 0 8px 0 3px;
+}
+
+.imgedit-rright.disabled:hover {
+       background-position: -77px -31px;
+}
+
+.imgedit-rright:hover {
+       background-position: -77px -1px;
+}
+
+.imgedit-flipv {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -115px -31px;
+       margin: 0 3px;
+}
+
+.imgedit-flipv.disabled:hover {
+       background-position: -115px -31px;
+}
+
+.imgedit-flipv:hover {
+       background-position: -115px -1px;
+}
+
+.imgedit-fliph {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -147px -31px;
+       margin: 0 8px 0 3px;
+}
+
+.imgedit-fliph.disabled:hover {
+       background-position: -147px -31px;
+}
+
+.imgedit-fliph:hover {
+       background-position: -147px -1px;
+}
+
+.imgedit-undo {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -184px -31px;
+       margin: 0 3px;
+}
+
+.imgedit-undo.disabled:hover {
+       background-position: -184px -31px;
+}
+
+.imgedit-undo:hover {
+       background-position: -184px -1px;
+}
+
+.imgedit-redo {
+       background: transparent url('../images/imgedit-icons.png') no-repeat scroll -215px -31px;
+       margin: 0 8px 0 3px;
+}
+
+.imgedit-redo.disabled:hover {
+       background-position: -215px -31px;
+}
+
+.imgedit-redo:hover {
+       background-position: -215px -1px;
+}
+
+.imgedit-applyto img {
+       margin: 0 8px 0 0;
+}
+
+.imgedit-group-top {
+       margin: 5px 0;
+}
+
+.imgedit-applyto .imgedit-label {
+       padding: 2px 0 0;
+       display: block;
+}
+
+.imgedit-help {
+       display: none;
+       font-style: italic;
+       margin-bottom: 8px;
+}
+
+a.imgedit-help-toggle {
+       text-decoration: none;
+}
+
+.form-table td.imgedit-response {
+       padding: 0;
+}
+
+.imgedit-submit {
+       margin: 8px 0;
+}
+
+.imgedit-submit-btn {
+       margin-left: 20px;
+}
+
+.imgedit-wrap .nowrap {
+       white-space: nowrap;
+}
+
+span.imgedit-scale-warn {
+       color: red;
+       font-size: 20px;
+       font-style: normal;
+       visibility: hidden;
+       vertical-align: middle;
+}
+
+.imgedit-group {
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       margin-bottom: 8px;
+       padding: 2px 10px;
+}
+
+.wp_attachment_details {
+       margin-bottom: 20px;
+}
+
+/*------------------------------------------------------------------------------
+  15.0 - Comments Screen
+------------------------------------------------------------------------------*/
+
+.form-table {
+       border-collapse: collapse;
+       margin-top: 0.5em;
+       width: 100%;
+       margin-bottom: -8px;
+       clear: both;
+}
+
+.form-table td {
+       margin-bottom: 9px;
+       padding: 8px 10px;
+       line-height: 20px;
+       font-size: 12px;
+}
+
+.form-table th,
+.form-wrap label {
+       font-weight: normal;
+       text-shadow: #fff 0 1px 0;
+}
+
+.form-table th {
+       vertical-align: top;
+       text-align: left;
+       padding: 10px;
+       width: 200px;
+}
+
+.form-table th.th-full {
+       width: auto;
+}
+
+.form-table div.color-option {
+       display: block;
+       clear: both;
+       margin-top: 12px;
+}
+
+.form-table input.tog {
+       margin-top: 2px;
+       margin-right: 2px;
+       float: left;
+}
+
+.form-table td p {
+       margin-top: 4px;
+}
+
+.form-table table.color-palette {
+       vertical-align: bottom;
+       float: left;
+       margin: -12px 3px 11px;
+}
+
+.form-table .color-palette td {
+       border-width: 1px 1px 0;
+       border-style: solid solid none;
+       height: 10px;
+       line-height: 20px;
+       width: 10px;
+}
+
+.commentlist li {
+       padding: 1em 1em .2em;
+       margin: 0;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+.commentlist li li {
+       border-bottom: 0;
+       padding: 0;
+}
+
+.commentlist p {
+       padding: 0;
+       margin: 0 0 .8em;
+}
+
+/* reply to comments */
+#replyrow input {
+       border-width: 1px;
+       border-style: solid;
+}
+
+#replyrow td {
+       padding: 2px;
+}
+
+#replysubmit {
+       margin: 0;
+       padding: 0 5px 3px;
+       text-align: center;
+}
+
+#replysubmit .spinner {
+       padding: 2px 0 0;
+       vertical-align: top;
+       float: right;
+}
+
+#replysubmit .button {
+       margin-right: 5px;
+}
+
+#replysubmit .error {
+       color: red;
+       line-height: 21px;
+       text-align: center;
+}
+
+#replyrow h5 {
+       margin: .2em 0 0;
+       padding: 0 5px;
+       line-height: 1.4em;
+       font-size: 1em;
+}
+
+#edithead .inside {
+       float: left;
+       padding: 3px 0 2px 5px;
+       margin: 0;
+       text-align: center;
+}
+
+#edithead .inside input {
+       width: 180px;
+}
+
+#edithead label {
+       padding: 2px 0;
+}
+
+#replycontainer {
+       padding: 5px;
+}
+
+#replycontent {
+       height: 120px;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.comment-php .wp-editor-area {
+       height: 200px;
+}
+
+.comment-ays {
+       margin-bottom: 0;
+       border-style: solid;
+       border-width: 1px;
+}
+
+.comment-ays th {
+       border-right-style: solid;
+       border-right-width: 1px;
+}
+
+.trash-undo-inside,
+.spam-undo-inside {
+       margin: 1px 8px 1px 0;
+       line-height: 16px;
+}
+
+.spam-undo-inside .avatar,
+.trash-undo-inside .avatar {
+       height: 20px;
+       width: 20px;
+       margin-right: 8px;
+       vertical-align: middle;
+}
+
+.stuffbox .editcomment {
+       clear: none;
+}
+
+#comment-status-radio p {
+       margin: 3px 0 5px;
+}
+
+#comment-status-radio input {
+       margin: 2px 3px 5px 0;
+       vertical-align: middle;
+}
+
+#comment-status-radio label {
+       padding: 5px 0;
+}
+
+.commentlist .avatar {
+       vertical-align: text-top;
+}
+
+
+/*------------------------------------------------------------------------------
+  16.0 - Themes
+------------------------------------------------------------------------------*/
+
+.theme-install-php .tablenav {
+       height: auto;
+}
+
+.theme-install-php .spinner {
+       margin-top: 9px;
+}
+
+h3.available-themes {
+       margin: 0 0 1em;
+       float: left;
+}
+
+.available-theme {
+       display: inline-block;
+       margin-right: 10px;
+       overflow: hidden;
+       padding: 20px 20px 20px 0;
+       vertical-align: top;
+       width: 300px;
+}
+
+.available-theme .screenshot {
+       width: 300px;
+       height: 225px;
+       display: block;
+       border-width: 1px;
+       border-style: solid;
+       margin-bottom: 10px;
+       overflow: hidden;
+}
+
+.available-theme img {
+       width: 300px;
+}
+
+.available-theme h3 {
+       margin: 15px 0 0;
+}
+
+.available-theme .theme-author {
+       line-height: 18px;
+}
+
+.available-theme .action-links {
+       margin-top: 10px;
+       overflow: hidden;
+}
+
+.available-theme a.screenshot:focus {
+       border-color: #777;
+}
+
+#current-theme .theme-info li,
+.theme-options li,
+.available-theme .action-links li {
+       float: left;
+       padding-right: 10px;
+       margin-right: 10px;
+       border-right: 1px solid #dfdfdf;
+}
+
+.available-theme .action-links li {
+       padding-right: 8px;
+       margin-right: 8px;
+}
+
+.ie8 .available-theme .action-links li {
+       padding-right: 7px;
+       margin-right: 7px;
+}
+
+#current-theme .theme-info li:last-child,
+.theme-options li:last-child,
+.available-theme .action-links li:last-child {
+       padding-right: 0;
+       margin-right: 0;
+       border-right: 0;
+}
+
+.available-theme .action-links .delete-theme {
+       float: right;
+       margin-left: 8px;
+       margin-right: 0;
+}
+
+.available-theme .action-links .delete-theme a {
+       color: red;
+       padding: 2px;
+}
+
+.available-theme .action-links .delete-theme a:hover {
+       background: red;
+       color: #fff;
+       text-decoration: none;
+}
+
+.available-theme .action-links p {
+       float: left;
+}
+
+#current-theme {
+       margin: 20px 0 10px;
+       padding: 0 0 20px;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+       overflow: hidden;
+}
+
+#current-theme.has-screenshot {
+       padding-left: 330px;
+}
+
+#current-theme h3 {
+       margin: 0;
+       font-size: 12px;
+       font-weight: normal;
+       color: #999;
+}
+
+#current-theme h4 {
+       margin: 3px 0 16px;
+       font-size: 20px;
+}
+
+#current-theme h4 span {
+       margin-left: 20px;
+       font-size: 12px;
+       font-weight: normal;
+}
+
+#current-theme a {
+       border-bottom: none;
+}
+
+#current-theme .theme-info {
+       margin: 1em 0;
+       overflow: hidden;
+}
+
+#current-theme .theme-description {
+       margin-top: 5px;
+       max-width: 600px;
+       line-height: 1.6em;
+}
+
+#current-theme img {
+       float: left;
+       width: 300px;
+       margin-left: -330px;
+
+       border-width: 1px;
+       border-style: solid;
+}
+
+.theme-options {
+       overflow: hidden;
+       font-size: 14px;
+       padding-bottom: 10px;
+}
+
+.theme-options .load-customize {
+       margin-right: 30px;
+       float: left;
+}
+
+.theme-options span {
+       float: left;
+       margin-right: 10px;
+       text-transform: uppercase;
+       font-size: 11px;
+       line-height: 18px;
+       color: #999;
+}
+
+.theme-options ul {
+       float: left;
+       margin: 0;
+}
+
+/* Allow for three-up on 1024px wide screens, e.g. tablets */
+@media only screen and (max-width: 1200px) {
+       .available-theme,
+       .available-theme .screenshot,
+       #current-theme img {
+               width: 240px;
+       }
+
+       .available-theme .screenshot {
+               height: 180px;
+       }
+
+       .available-theme img {
+               width: 100%;
+       }
+
+       #current-theme.has-screenshot {
+               padding-left: 270px;
+       }
+
+       #current-theme img {
+               margin-left: -270px;
+       }
+}
+
+#post-body ul.add-menu-item-tabs li.tabs a,
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+       font-weight: bold;
+       text-decoration: none;
+}
+
+#TB_window #TB_title {
+       background-color: #222;
+       color: #cfcfcf;
+}
+
+#broken-themes {
+       text-align: left;
+       width: 50%;
+       border-spacing: 3px;
+       padding: 3px;
+}
+
+.theme-install-php h4 {
+       margin: 2.5em 0 8px;
+}
+
+
+/*------------------------------------------------------------------------------
+  16.1 - Custom Header Screen
+------------------------------------------------------------------------------*/
+
+.appearance_page_custom-header #headimg {
+       border: 1px solid #DFDFDF;
+       overflow: hidden;
+       width: 100%;
+}
+
+.appearance_page_custom-header #upload-form p label {
+       font-size: 12px;
+}
+
+.appearance_page_custom-header .available-headers .default-header {
+       float: left;
+       margin: 0 20px 20px 0;
+}
+
+.appearance_page_custom-header .random-header {
+       clear: both;
+       margin: 0 20px 20px 0;
+       vertical-align: middle;
+}
+
+.appearance_page_custom-header .available-headers label input,
+.appearance_page_custom-header .random-header label input {
+       margin-right: 10px;
+}
+
+.appearance_page_custom-header .available-headers label img {
+       vertical-align: middle;
+}
+
+
+/*------------------------------------------------------------------------------
+  16.2 - Custom Background Screen
+------------------------------------------------------------------------------*/
+
+div#custom-background-image {
+       min-height: 100px;
+       border: 1px solid #dfdfdf;
+}
+
+div#custom-background-image img {
+       max-width: 400px;
+       max-height: 300px;
+}
+
+
+/*------------------------------------------------------------------------------
+  16.3 - Tabbed Admin Screen Interface (Experimental)
+------------------------------------------------------------------------------*/
+
+.nav-tab {
+       border-style: solid;
+       border-width: 1px 1px 0;
+       color: #aaa;
+       text-shadow: #fff 0 1px 0;
+       font-size: 12px;
+       line-height: 16px;
+       display: inline-block;
+       padding: 4px 14px 6px;
+       text-decoration: none;
+       margin: 0 6px -1px 0;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.nav-tab-active {
+       border-width: 1px;
+       color: #464646;
+}
+
+h2.nav-tab-wrapper, h3.nav-tab-wrapper {
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+       padding-bottom: 0;
+}
+
+h2 .nav-tab {
+       padding: 4px 10px 6px;
+       font-weight: 200;
+       font-size: 20px;
+       line-height: 24px;
+
+}
+
+
+/*------------------------------------------------------------------------------
+  17.0 - Plugins
+------------------------------------------------------------------------------*/
+
+#dashboard_right_now .versions .b,
+#post-status-display,
+#post-visibility-display,
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover,
+.media-item .percent,
+.plugins .name,
+#pass-strength-result.strong,
+#pass-strength-result.short,
+#ed_reply_toolbar #ed_reply_strong,
+.item-controls .item-order a,
+.feature-filter .feature-name {
+       font-weight: bold;
+}
+
+.plugins p {
+       margin: 0 4px;
+       padding: 0;
+}
+
+.plugins .desc p {
+       margin: 0 0 8px;
+}
+
+.plugins td.desc {
+       line-height: 1.5em;
+}
+
+.plugins .desc ul,
+.plugins .desc ol {
+       margin: 0 0 0 2em;
+}
+
+.plugins .desc ul {
+       list-style-type: disc;
+}
+
+.plugins .row-actions-visible {
+       padding: 0;
+}
+
+.plugins tbody th.check-column {
+       padding: 7px 0;
+}
+
+.plugins .inactive td,
+.plugins .inactive th,
+.plugins .active td,
+.plugins .active th {
+       border-top-style: solid;
+       border-top-width: 1px;
+       padding: 5px 7px 0;
+}
+
+.plugins .update th,
+.plugins .update td {
+       border-bottom: 0;
+}
+.plugin-update-tr td {
+       border-top: 0;
+}
+
+#wpbody-content .plugins .plugin-title,
+#wpbody-content .plugins .theme-title {
+       padding-right: 12px;
+       white-space:nowrap;
+}
+
+.plugins .second,
+.plugins .row-actions-visible {
+       padding: 0 0 5px;
+}
+
+.plugins .update .second,
+.plugins .update .row-actions-visible {
+       padding-bottom: 0;
+}
+
+.plugins-php .widefat tfoot th,
+.plugins-php .widefat tfoot td {
+       border-top-style: solid;
+       border-top-width: 1px;
+}
+
+.plugin-update-tr .update-message {
+       margin: 5px;
+       padding: 3px 5px;
+}
+
+.plugin-install-php h4 {
+       margin: 2.5em 0 8px;
+}
+
+
+/*------------------------------------------------------------------------------
+  18.0 - Users
+------------------------------------------------------------------------------*/
+
+#profile-page .form-table textarea {
+       width: 500px;
+       margin-bottom: 6px;
+}
+
+#profile-page .form-table #rich_editing {
+       margin-right: 5px
+}
+
+#your-profile legend {
+       font-size: 22px;
+}
+
+#your-profile #rich_editing {
+       border: none;
+}
+
+#display_name {
+       width: 15em;
+}
+
+#createuser .form-field input {
+       width: 25em;
+}
+
+/*------------------------------------------------------------------------------
+  19.0 - Tools
+------------------------------------------------------------------------------*/
+
+.pressthis {
+       margin: 20px 0;
+}
+
+.pressthis a,
+.pressthis a:hover,
+.pressthis a:focus,
+.pressthis a:active {
+       display: inline-block;
+       position: relative;
+       cursor: move;
+       color: #333;
+       background: #e6e6e6;
+       background-image: -webkit-gradient(linear, left bottom, left top, color-stop(7%, #e6e6e6), color-stop(77%, #d8d8d8));
+       background-image: -webkit-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image:    -moz-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image:      -o-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image: linear-gradient(to top, #e6e6e6 7%, #d8d8d8 77%);
+       -webkit-border-radius: 5px;
+       border-radius: 5px;
+       border: 1px solid #b4b4b4;
+       font-style: normal;
+       line-height: 16px;
+       font-size: 14px;
+       text-decoration: none;
+       text-shadow: 0 1px 0px #fff;
+}
+
+.pressthis a:active {
+       outline: none;
+}
+
+.pressthis a:hover:after {
+       -webkit-transform: skew(20deg) rotate(9deg);
+       -moz-transform: skew(20deg) rotate(9deg);
+       transform: skew(20deg) rotate(9deg);
+       -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7);
+       box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7);
+}
+
+.pressthis a span {
+       background: url(../images/press-this.png?v=20120502) no-repeat 0px 5px;
+       background-size: 24px 20px;
+       padding: 8px 11px 8px 27px;
+       margin: 0 5px;
+       display: inline-block;
+}
+
+.pressthis a:after {
+       content: '';
+       width: 70%;
+       height: 55%;
+       z-index: -1;
+       position: absolute;
+       right: 10px;
+       bottom: 9px;
+       background: transparent;
+
+       -webkit-transform: skew(20deg) rotate(6deg);
+       -moz-transform: skew(20deg) rotate(6deg);
+       transform: skew(20deg) rotate(6deg);
+       -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6);
+       box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6);
+}
+
+/*------------------------------------------------------------------------------
+  20.0 - Settings
+------------------------------------------------------------------------------*/
+
+#utc-time, #local-time {
+       padding-left: 25px;
+       font-style: italic;
+       font-family: sans-serif;
+}
+
+.defaultavatarpicker .avatar {
+       margin: 2px 0;
+       vertical-align: middle;
+}
+
+.options-general-php .spinner {
+       float: none;
+       margin: -3px 3px;
+}
+
+/*------------------------------------------------------------------------------
+  21.0 - Admin Footer
+------------------------------------------------------------------------------*/
+
+#wpfooter {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       padding: 10px 0;
+       margin-right: 20px;
+       border-top-width: 1px;
+       border-top-style: solid;
+}
+
+#wpfooter p {
+       margin: 0;
+       line-height: 20px;
+}
+
+#wpfooter a {
+       text-decoration: none;
+}
+
+#wpfooter a:hover {
+       text-decoration: underline;
+}
+
+/*------------------------------------------------------------------------------
+  22.0 - About Pages
+------------------------------------------------------------------------------*/
+
+.about-wrap {
+       position: relative;
+       margin: 25px 40px 0 20px;
+       max-width: 1050px; /* readability */
+
+       font-size: 15px;
+}
+
+.about-wrap div.updated,
+.about-wrap div.error {
+       display: none !important;
+}
+
+/* Typography */
+
+.about-wrap p {
+       line-height: 1.6em;
+}
+
+.about-wrap h1 {
+       margin: 0.2em 200px 0 0;
+       line-height: 1.2em;
+       font-size: 2.8em;
+       font-weight: 200;
+}
+
+.about-text,
+.about-description,
+.about-wrap li.wp-person a.web {
+       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
+       font-weight: normal;
+       line-height: 1.6em;
+       font-size: 20px;
+}
+
+.about-description {
+       margin-top: 1.4em;
+}
+
+.about-text {
+       margin: 1em 200px 1.4em 0;
+       min-height: 60px;
+       font-size: 24px;
+}
+
+.about-wrap h3 {
+       font-size: 24px;
+       margin-bottom: 1em;
+       padding-top: 20px;
+}
+
+.about-wrap .feature-section {
+       padding-bottom: 20px;
+}
+
+.about-wrap .feature-section h4 {
+       margin-bottom: 0.6em;
+}
+
+.about-wrap .feature-section p {
+       margin-top: 0.6em;
+}
+
+.about-wrap code {
+       font-size: 14px;
+}
+
+/* Point Releases */
+
+.about-wrap .point-releases {
+       margin-top: 5px;
+}
+
+.about-wrap .changelog.point-releases h3 {
+       padding-top: 35px;
+}
+
+.about-wrap .changelog.point-releases h3:first-child {
+       padding-top: 7px;
+}
+
+/* WordPress Version Badge */
+
+.wp-badge {
+       padding-top: 142px;
+       height: 50px;
+       width: 173px;
+       font-weight: bold;
+       font-size: 14px;
+       text-align: center;
+       margin: 0 -5px;
+       background: url('../images/wp-badge.png?ver=20111120') no-repeat;
+}
+
+.about-wrap .wp-badge {
+       position: absolute;
+       top: 0;
+       right: 0;
+}
+
+/* Tabs */
+
+.about-wrap h2.nav-tab-wrapper {
+       padding-left: 6px;
+}
+
+.about-wrap h2 .nav-tab {
+       padding: 4px 10px 6px;
+       margin: 0 3px -1px 0;
+       font-size: 18px;
+       vertical-align: top;
+}
+
+.about-wrap h2 .nav-tab-active {
+       font-weight: bold;
+       padding-top: 3px;
+}
+
+/* Changelog / Update screen */
+
+.about-wrap .feature-section img {
+       border: none;
+       margin: 0 1.94% 10px 0;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.about-wrap .feature-section.three-col img {
+       margin: 0.5em 0 0.5em 5px;
+       max-width: 100%;
+       float: none;
+}
+
+.ie8 .about-wrap .feature-section.three-col img {
+       margin-left: 0;
+}
+
+.about-wrap .feature-section.images-stagger-right img {
+       float: right;
+       margin: 0 5px 12px 2em;
+}
+
+.about-wrap .feature-section.images-stagger-left img {
+       float: left;
+       margin: 0 2em 12px 5px;
+}
+
+.about-wrap .feature-section img.image-100 {
+       margin: 0 0 2em 0;
+       width: 100%;
+}
+
+.about-wrap .feature-section img.image-66 {
+       width: 65%;
+}
+
+.about-wrap .feature-section img.image-50 {
+       max-width: 50%;
+}
+
+.about-wrap .feature-section img.image-30 {
+       max-width: 31.2381%;
+}
+
+.ie8 .about-wrap .feature-section img {
+       border-width: 1px;
+       border-style: solid;
+}
+
+.about-wrap .images-stagger-right img.image-30:nth-child(2) {
+       margin-left: 1em;
+}
+
+.about-wrap .feature-section.col {
+       margin-bottom: 0;
+}
+
+.about-wrap .feature-section.col h4 {
+       margin:  0 0 0.6em 0;
+}
+
+.about-wrap .feature-section.col .last-feature {
+       margin-right: 0;
+}
+
+.about-wrap .feature-section.two-col div {
+       width: 47%;
+       margin-right: 4.999999999%;
+       float: left;
+}
+
+.about-wrap .feature-section.three-col div {
+       width: 30%;
+       margin-right: 4.999999999%;
+       float: left;
+}
+
+.about-wrap .three-col-images {
+       text-align: center;
+}
+
+.about-wrap .three-col-images img {
+       margin: 0 0 10px;
+}
+
+.about-wrap .three-col-images .last-feature {
+       float: right;
+}
+
+.about-wrap .three-col-images .first-feature {
+       float: left;
+}
+
+.about-wrap .changelog .feature-section {
+       overflow: hidden;
+       padding-bottom: 0;
+}
+
+.about-wrap .changelog li {
+       list-style-type: disc;
+       margin-left: 3em;
+}
+
+@media only screen and (max-width: 900px) {
+       .about-wrap .feature-section.images-stagger-left img,
+       .about-wrap .feature-section.images-stagger-right img {
+               clear: both;
+       }
+}
+
+@media only screen and (max-width: 768px) {
+       .about-wrap .feature-section img.image-66 {
+               float: none;
+               width: 98%;
+               max-width: 98%;
+       }
+
+       .about-wrap .feature-section.images-stagger-right img.image-66 {
+               margin-left: 3px;
+       }
+
+       .about-wrap .feature-section.images-stagger-left img.image-66 {
+               margin-right: 3px;
+       }
+}
+
+/* Return to Dashboard Home link */
+
+.about-wrap .return-to-dashboard {
+       margin: 30px 0 0 -5px;
+       font-size: 14px;
+       font-weight: bold;
+}
+
+.about-wrap .return-to-dashboard a {
+       text-decoration: none;
+       padding: 0 5px;
+}
+
+/* Credits */
+
+.about-wrap h4.wp-people-group {
+       margin-top: 2.6em;
+       font-size: 16px;
+}
+
+.about-wrap ul.wp-people-group {
+       overflow: hidden;
+       padding: 5px;
+       margin: 0 -15px 0 -5px;
+}
+
+.about-wrap ul.compact {
+       margin-bottom: 0
+}
+
+.about-wrap li.wp-person {
+       float: left;
+       margin-right: 10px;
+}
+
+.about-wrap li.wp-person img.gravatar {
+       float: left;
+       margin: 0 10px 10px 0;
+       padding: 2px;
+       width: 60px;
+       height: 60px;
+}
+
+.about-wrap ul.compact li.wp-person img.gravatar {
+       width: 30px;
+       height: 30px;
+}
+
+.about-wrap li.wp-person {
+       height: 70px;
+       width: 280px;
+       padding-bottom: 15px;
+}
+
+.about-wrap ul.compact li.wp-person {
+       height: auto;
+       width: 180px;
+       padding-bottom: 0;
+       margin-bottom: 0;
+}
+
+.about-wrap #wp-people-group-validators + p.wp-credits-list {
+       margin-top: 0;
+}
+
+.about-wrap li.wp-person a.web {
+       display: block;
+       margin: 6px 0 2px;
+       font-size: 16px;
+       text-decoration: none;
+}
+
+.about-wrap p.wp-credits-list a {
+       white-space: nowrap;
+}
+
+/* Freedoms */
+
+.freedoms-php .about-wrap ol {
+       margin: 40px 60px;
+}
+
+.freedoms-php .about-wrap ol li {
+       list-style-type: decimal;
+       font-weight: bold;
+}
+
+.freedoms-php .about-wrap ol p {
+       font-weight: normal;
+       margin: 0.6em 0;
+}
+
+/*------------------------------------------------------------------------------
+  23.0 - Full Overlay w/ Sidebar
+------------------------------------------------------------------------------*/
+
+body.full-overlay-active {
+       overflow: hidden;
+}
+
+.wp-full-overlay {
+       background: #fff;
+       z-index: 500000;
+       position: fixed;
+       overflow: visible;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 100%;
+       min-width: 0;
+}
+
+.wp-full-overlay-sidebar {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing:    border-box;
+       box-sizing:         border-box;
+
+       position: fixed;
+       width: 300px;
+       height: 100%;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       padding: 0;
+       margin: 0;
+       z-index: 10;
+       overflow: auto;
+       background: #f5f5f5;
+       border-right: 1px solid rgba( 0, 0, 0, 0.2 );
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       overflow: visible;
+}
+
+.wp-full-overlay.collapsed,
+.wp-full-overlay.expanded .wp-full-overlay-sidebar {
+       margin-left: 0 !important;
+}
+
+.wp-full-overlay.expanded {
+       margin-left: 300px;
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       margin-left: -300px;
+}
+
+.wp-full-overlay-sidebar:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       right: 0;
+       width: 3px;
+       box-shadow: -5px 0 4px -4px rgba(0, 0, 0, 0.1) inset;
+       z-index: 1000;
+}
+
+.wp-full-overlay-main {
+       position: absolute;
+       left: 0;
+       right: 0;
+       top: 0;
+       bottom: 0;
+       height: 100%;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-header {
+       position: absolute;
+       left: 0;
+       right: 0;
+       height: 45px;
+       padding: 0 20px;
+       line-height: 45px;
+       z-index: 10;
+       margin: 0;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-header {
+       border-top: 0;
+       border-bottom: 1px solid #fff;
+       box-shadow: inset 0 -1px 0 0px #dfdfdf;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-footer {
+       bottom: 0;
+       border-bottom: 0;
+       border-top: 1px solid #dfdfdf;
+       box-shadow: inset 0 1px 0 0px #fff;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content {
+       position: absolute;
+       top: 45px;
+       bottom: 45px;
+       left: 0;
+       right: 0;
+       overflow: auto;
+}
+
+/* Close Link */
+.wp-full-overlay .close-full-overlay {
+       text-decoration: none;
+}
+
+/* Collapse Button */
+.wp-full-overlay a.collapse-sidebar {
+       position: absolute;
+       bottom: 12px;
+       left: 0;
+       z-index: 50;
+       display: block;
+       width: 19px;
+       height: 19px;
+       margin-left: 15px;
+       padding: 0;
+       border-radius: 50%;
+       text-decoration: none;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar {
+       position: absolute;
+       left: 100%;
+}
+
+.wp-full-overlay .collapse-sidebar-arrow {
+       position: absolute;
+       margin-top: 2px;
+       margin-left: 2px;
+       display: block;
+       width: 15px;
+       height: 15px;
+       background: transparent url('../images/arrows.png') no-repeat -1px -73px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-arrow {
+       background-position: -1px -109px;
+}
+
+.wp-full-overlay .collapse-sidebar-label {
+       position: absolute;
+       left: 100%;
+       color: #808080;
+       line-height: 20px;
+       margin-left: 10px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-label {
+       display: none;
+}
+
+.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label {
+       color: #666;
+}
+
+/* Animations */
+.wp-full-overlay,
+.wp-full-overlay-sidebar,
+.wp-full-overlay .collapse-sidebar,
+.wp-full-overlay-main {
+       -webkit-transition-property: left, right, top, bottom, width, margin;
+       -moz-transition-property:    left, right, top, bottom, width, margin;
+       -ms-transition-property:     left, right, top, bottom, width, margin;
+       -o-transition-property:      left, right, top, bottom, width, margin;
+       transition-property:         left, right, top, bottom, width, margin;
+
+       -webkit-transition-duration: 0.2s;
+       -moz-transition-duration:    0.2s;
+       -ms-transition-duration:     0.2s;
+       -o-transition-duration:      0.2s;
+       transition-duration:         0.2s;
+}
+
+
+/*------------------------------------------------------------------------------
+  24.0 - Customize Loader
+------------------------------------------------------------------------------*/
+
+.no-customize-support .hide-if-no-customize,
+.customize-support .hide-if-customize,
+.no-customize-support.wp-core-ui .hide-if-no-customize,
+.no-customize-support .wp-core-ui .hide-if-no-customize,
+.customize-support.wp-core-ui .hide-if-customize,
+.customize-support .wp-core-ui .hide-if-customize {
+       display: none;
+}
+
+#customize-container {
+       display: none;
+       background: #fff;
+       z-index: 500000;
+       position: fixed;
+       overflow: visible;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 100%;
+}
+
+.customize-active #customize-container {
+       display: block;
+}
+
+.customize-loading #customize-container iframe {
+       opacity: 0;
+}
+
+.customize-loading #customize-container {
+       background: #fff url("../images/wpspin_light.gif") no-repeat fixed center center;
+       background-size: 16px 16px;
+}
+
+#customize-container iframe,
+#theme-installer iframe {
+       height: 100%;
+       width: 100%;
+       z-index: 20;
+
+       -webkit-transition: opacity 0.3s;
+       -moz-transition:    opacity 0.3s;
+       -ms-transition:     opacity 0.3s;
+       -o-transition:      opacity 0.3s;
+       transition:         opacity 0.3s;
+}
+
+#customize-container .collapse-sidebar {
+       bottom: 16px;
+}
+
+#theme-installer {
+       display: none;
+}
+
+#theme-installer.single-theme {
+       display: block;
+}
+
+.install-theme-info {
+       display: none;
+       padding: 10px 20px 20px;
+}
+
+.single-theme .install-theme-info {
+       padding-top: 15px;
+}
+
+#theme-installer .install-theme-info {
+       display: block;
+}
+
+.install-theme-info .theme-install {
+       float: right;
+       margin-top: 18px;
+}
+
+.install-theme-info .theme-name {
+       font-size: 16px;
+       line-height: 24px;
+       margin-bottom: 0;
+}
+
+.install-theme-info .theme-screenshot {
+       margin-top: 15px;
+       width: 258px;
+       border: 1px solid #ccc;
+}
+
+.install-theme-info .theme-details {
+       overflow: hidden;
+}
+
+.theme-details .theme-version {
+       margin: 15px 0;
+       float: left;
+}
+
+.theme-details .star-holder {
+       margin: 14px 0;
+       float: right;
+}
+
+.theme-details .theme-description {
+       float: left;
+       color: #777;
+       line-height: 20px;
+}
+
+/*------------------------------------------------------------------------------
+  25.0 - Misc
+------------------------------------------------------------------------------*/
+
+#excerpt,
+.attachmentlinks {
+       margin: 0;
+       height: 4em;
+       width: 98%;
+}
+
+#template div {
+       margin-right: 190px;
+}
+
+p.pagenav {
+       margin: 0;
+       display: inline;
+}
+
+.pagenav span {
+       font-weight: bold;
+       margin: 0 6px;
+}
+
+.row-title {
+       font-size: 13px !important;
+       font-weight: bold;
+}
+
+.column-author img, .column-username img {
+       float: left;
+       margin-right: 10px;
+       margin-top: 1px;
+}
+
+.row-actions {
+       visibility: hidden;
+       padding: 2px 0 0;
+}
+
+.mobile .row-actions {
+       visibility: visible;
+}
+
+tr:hover .row-actions,
+div.comment-item:hover .row-actions {
+       visibility: visible;
+}
+
+.row-actions-visible {
+       padding: 2px 0 0;
+}
+
+.form-table .pre {
+       padding: 8px;
+       margin: 0;
+}
+
+table.form-table td .updated {
+       font-size: 13px;
+}
+
+.tagchecklist {
+       margin-left: 14px;
+       font-size: 12px;
+       overflow: auto;
+}
+.tagchecklist strong {
+       margin-left: -8px;
+       position: absolute;
+}
+.tagchecklist span {
+       margin-right: 25px;
+       display: block;
+       float: left;
+       font-size: 11px;
+       line-height: 1.8em;
+       white-space: nowrap;
+       cursor: default;
+}
+.tagchecklist span a {
+       margin: 6px 0pt 0pt -9px;
+       cursor: pointer;
+       width: 10px;
+       height: 10px;
+       display: block;
+       float: left;
+       text-indent: -9999px;
+       overflow: hidden;
+       position: absolute;
+}
+
+#poststuff h2 {
+       margin-top: 20px;
+       font-size: 1.5em;
+       margin-bottom: 15px;
+       padding: 0 0 3px;
+       clear: left;
+}
+
+#poststuff h3,
+.metabox-holder h3 {
+       font-size: 15px;
+       font-weight: normal;
+       padding: 7px 10px;
+       margin: 0;
+       line-height: 1;
+}
+
+#poststuff .inside {
+       margin: 6px 0 8px;
+}
+
+#poststuff .inside #parent_id,
+#poststuff .inside #page_template {
+       max-width: 100%;
+}
+
+.inline-edit-row #post_parent,
+.inline-edit-row select[name="page_template"] {
+       max-width: 80%;
+}
+
+.ie8 #poststuff .inside #parent_id,
+.ie8 #poststuff .inside #page_template,
+.ie8 .inline-edit-row #post_parent,
+.ie8 .inline-edit-row select[name="page_template"] {
+       width: 250px;
+}
+
+#post-visibility-select,
+#post-formats-select {
+       line-height: 1.5em;
+       margin-top: 3px;
+}
+
+#poststuff #submitdiv .inside {
+       margin: 0;
+       padding: 0;
+}
+
+#post-body-content {
+       margin-bottom: 20px;
+}
+
+#templateside ul li a {
+       text-decoration: none;
+}
+
+.tool-box .title {
+       margin: 8px 0;
+       font-size: 18px;
+       font-weight: normal;
+       line-height: 24px;
+}
+
+#sidemenu {
+       margin: -30px 15px 0 315px;
+       list-style: none;
+       position: relative;
+       float: right;
+       padding-left: 10px;
+       font-size: 12px;
+}
+
+#sidemenu a {
+       padding: 0 7px;
+       display: block;
+       float: left;
+       line-height: 28px;
+       border-top-width: 1px;
+       border-top-style: solid;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+#sidemenu li {
+       display: inline;
+       line-height: 200%;
+       list-style: none;
+       text-align: center;
+       white-space: nowrap;
+       margin: 0;
+       padding: 0;
+}
+
+#sidemenu a.current {
+       font-weight: normal;
+       padding-left: 6px;
+       padding-right: 6px;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+       border-width: 1px;
+       border-style: solid;
+}
+
+#sidemenu li a .count-0 {
+       display: none;
+}
+
+.plugin-install #description,
+.plugin-install-network #description {
+       width: 60%;
+}
+
+table .vers,
+table .column-visible,
+table .column-rating {
+       text-align: left;
+}
+
+.error-message {
+       color: red;
+       font-weight: bold;
+}
+
+/* Scrollbar fix for bulk upgrade iframe */
+body.iframe {
+       height: 98%;
+}
+
+
+/* - Only used once or twice in all of WP - deprecate for global style
+------------------------------------------------------------------------------*/
+td.media-icon {
+       text-align: center;
+       width: 80px;
+       padding-top: 8px;
+       padding-bottom: 8px;
+}
+
+td.media-icon img {
+       max-width: 80px;
+       max-height: 60px;
+}
+
+#howto {
+       font-size: 11px;
+       margin: 0 5px;
+       display: block;
+}
+
+.importers td {
+       padding-right: 14px;
+}
+
+.importers {
+       font-size: 16px;
+       width: auto;
+}
+
+#namediv table {
+       width: 100%;
+}
+
+#namediv td.first {
+       width: 10px;
+       white-space: nowrap;
+}
+
+#namediv input {
+       width: 98%;
+}
+
+#namediv p {
+       margin: 10px 0;
+}
+
+#submitdiv h3 {
+       margin-bottom: 0 !important;
+}
+
+/* - Used - but could/should be deprecated with a CSS reset
+------------------------------------------------------------------------------*/
+.zerosize {
+       height: 0;
+       width: 0;
+       margin: 0;
+       border: 0;
+       padding: 0;
+       overflow: hidden;
+       position: absolute;
+}
+
+br.clear {
+       height: 2px;
+       line-height: 2px;
+}
+
+.checkbox {
+       border: none;
+       margin: 0;
+       padding: 0;
+}
+
+fieldset {
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+
+.post-categories {
+       display: inline;
+       margin: 0;
+       padding: 0;
+}
+
+.post-categories li {
+       display: inline;
+}
+
+
+/*-----------------------------------------------------------------------------
+ MERGED
+-------------------------------------------------------------------------------*/
+
+/* dashboard */
+.edit-box {
+       display: none;
+}
+
+h3:hover .edit-box {
+       display: inline;
+}
+
+#dashboard-widgets form .input-text-wrap input {
+       width: 100%;
+}
+
+#dashboard-widgets form .textarea-wrap textarea {
+       width: 100%;
+}
+
+#dashboard-widgets .postbox form .submit {
+       float: none;
+       margin: .5em 0 0;
+       padding: 0;
+       border: none;
+}
+
+#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish {
+       min-width: 0;
+}
+
+#dashboard-widgets a {
+       text-decoration: none;
+}
+
+#dashboard-widgets h3 a {
+       text-decoration: underline;
+}
+
+#dashboard-widgets h3 .postbox-title-action {
+       position: absolute;
+       right: 10px;
+       padding: 0;
+       top: 5px;
+}
+
+.js #dashboard-widgets h3 .postbox-title-action {
+       right: 30px;
+}
+
+#dashboard-widgets h4 {
+       font-weight: normal;
+       font-size: 13px;
+       margin: 0 0 .2em;
+       padding: 0;
+}
+
+/* Right Now */
+#dashboard_right_now p.sub,
+#dashboard_right_now .table, #dashboard_right_now .versions {
+       margin: -12px;
+}
+
+#dashboard_right_now .inside {
+       font-size: 12px;
+       padding-top: 20px;
+}
+
+#dashboard_right_now p.sub {
+       padding: 5px 0 15px;
+       color: #8f8f8f;
+       font-size: 14px;
+       position: absolute;
+       top: -17px;
+       left: 15px;
+}
+
+#dashboard_right_now .table {
+       margin: 0;
+       padding: 0;
+       position: relative;
+}
+
+#dashboard_right_now .table_content {
+       float: left;
+       border-top-width: 1px;
+       border-top-style: solid;
+       width: 45%;
+}
+
+#dashboard_right_now .table_discussion {
+       float: right;
+       border-top-width: 1px;
+       border-top-style: solid;
+       width: 45%;
+}
+
+#dashboard_right_now table td {
+       padding: 3px 0;
+       white-space: nowrap;
+}
+
+#dashboard_right_now table tr.first td {
+       border-top: none;
+}
+
+#dashboard_right_now td.b {
+       padding-right: 6px;
+       text-align: right;
+       font-size: 14px;
+       width: 1%;
+}
+
+#dashboard_right_now td.b a {
+       font-size: 18px;
+}
+
+#dashboard_right_now td.b a:hover {
+       color: #d54e21;
+}
+
+#dashboard_right_now .t {
+       font-size: 12px;
+       padding-right: 12px;
+       padding-top: 6px;
+       color: #777;
+}
+
+#dashboard_right_now .t a {
+       white-space: nowrap;
+}
+
+#dashboard_right_now .spam {
+       color: red;
+}
+
+#dashboard_right_now .waiting {
+       color: #e66f00;
+}
+
+#dashboard_right_now .approved {
+       color: green;
+}
+
+#dashboard_right_now .versions {
+       padding: 6px 10px 12px;
+       clear: both;
+}
+
+#dashboard_right_now a.button {
+       float: right;
+       clear: right;
+       position: relative;
+       top: -5px;
+}
+
+/* Recent Comments */
+#dashboard_recent_comments h3 {
+       margin-bottom: 0;
+}
+
+#dashboard_recent_comments .inside {
+       margin-top: 0;
+}
+
+#dashboard_recent_comments .comment-meta .approve {
+       font-style: italic;
+       font-family: sans-serif;
+       font-size: 10px;
+}
+
+#dashboard_recent_comments .subsubsub {
+       float: none;
+       white-space: normal;
+}
+
+#the-comment-list {
+       position: relative;
+}
+
+#the-comment-list .comment-item {
+       padding: 1em 10px;
+       border-top: 1px solid;
+}
+
+#the-comment-list .pingback {
+       padding-left: 9px !important;
+}
+
+#the-comment-list .comment-item,
+#the-comment-list #replyrow {
+       margin: 0 -10px;
+}
+
+#the-comment-list .comment-item:first-child {
+       border-top: none;
+}
+
+#the-comment-list .comment-item .avatar {
+       float: left;
+       margin: 0 10px 5px 0;
+}
+
+#the-comment-list .comment-item h4 {
+       line-height: 1.7em;
+       margin-top: -0.4em;
+       color: #777;
+}
+
+#the-comment-list .comment-item h4 cite {
+       font-style: normal;
+       font-weight: normal;
+}
+
+#the-comment-list .comment-item blockquote,
+#the-comment-list .comment-item blockquote p {
+       margin: 0;
+       padding: 0;
+       display: inline;
+}
+
+#dashboard_recent_comments #the-comment-list .trackback blockquote,
+#dashboard_recent_comments #the-comment-list .pingback blockquote {
+       display: block;
+}
+
+#the-comment-list .comment-item p.row-actions {
+       margin: 3px 0 0;
+       padding: 0;
+       font-size: 12px;
+}
+
+/* QuickPress */
+.no-js #dashboard_quick_press {
+       display: none;
+}
+
+#dashboard_quick_press .easy-blogging {
+       padding: 0 8px;
+       text-align: left;
+}
+
+#dashboard_quick_press .input-text-wrap {
+       position: relative;
+}
+
+#dashboard_quick_press .prompt {
+       color: #bbb;
+       position: absolute;
+}
+
+#dashboard_quick_press div.updated  {
+       padding: 0 5px;
+}
+
+#title-wrap label,
+#tags-input-wrap label {
+       cursor: text;
+}
+
+#title-wrap #title {
+       padding: 2px 6px;
+       font-size: 1.3em;
+       line-height: 100%;
+       outline: none;
+}
+
+#tags-input-wrap #tags-input {
+       outline: none;
+}
+
+#title-wrap #title-prompt-text {
+       font-size: 1.3em;
+       padding: 5px 8px;
+}
+
+#tags-input-wrap #tags-input-prompt-text {
+       font-size: 1em;
+       padding: 4px 8px;
+}
+
+#dashboard_quick_press .input-text-wrap,
+#dashboard_quick_press .textarea-wrap {
+       margin: 0 0 1em 0;
+}
+
+#dashboard_quick_press .wp-media-buttons {
+       margin: 0 0 .2em 1px;
+       padding: 0;
+}
+
+#dashboard_quick_press .wp-media-buttons a {
+       color: #777;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit input {
+       float: left;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
+       margin: 0 0.7em 0 1px;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #publish {
+       float: right;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit .spinner {
+       vertical-align: middle;
+       margin: 4px 6px 0 0;
+}
+
+/* Recent Drafts */
+#dashboard_recent_drafts ul,
+#dashboard_recent_drafts p {
+       margin: 0;
+       padding: 0;
+       word-wrap: break-word;
+}
+
+#dashboard_recent_drafts ul {
+       list-style: none;
+}
+
+#dashboard_recent_drafts ul li {
+       margin-bottom: 1em;
+}
+
+#dashboard_recent_drafts h4 {
+       line-height: 1.7em;
+       word-wrap: break-word;
+}
+
+#dashboard_recent_drafts h4 abbr {
+       font-weight: normal;
+       font-family: sans-serif;
+       font-size: 12px;
+       color: #999;
+       margin-left: 3px;
+}
+
+/* Feeds */
+.rss-widget ul {
+       margin: 0;
+       padding: 0;
+       list-style: none;
+}
+
+a.rsswidget {
+       font-size: 13px;
+       line-height: 1.7em;
+}
+
+.rss-widget ul li {
+       line-height: 1.5em;
+       margin-bottom: 12px;
+}
+
+.rss-widget span.rss-date {
+       color: #999;
+       font-size: 12px;
+       margin-left: 3px;
+}
+
+.rss-widget cite {
+       display: block;
+       text-align: right;
+       margin: 0 0 1em;
+       padding: 0;
+}
+
+.rss-widget cite:before {
+       content: '\2014';
+}
+
+/* Plugins */
+#dashboard_plugins h4 {
+       line-height: 1.7em;
+}
+
+#dashboard_plugins h5 {
+       font-weight: normal;
+       font-size: 13px;
+       margin: 0;
+       display: inline;
+       line-height: 1.4em;
+}
+
+#dashboard_plugins h5 a {
+       line-height: 1.4em;
+}
+
+#dashboard_plugins .inside span {
+       font-size: 12px;
+       padding-left: 5px;
+}
+
+#dashboard_plugins p {
+       margin: 0.3em 0 1.4em;
+       line-height: 1.4em;
+}
+
+.dashboard-comment-wrap {
+       overflow: hidden;
+       word-wrap: break-word;
+}
+
+/* Browser Nag */
+#dashboard_browser_nag a.update-browser-link {
+       font-size: 1.2em;
+       font-weight: bold;
+}
+
+#dashboard_browser_nag a {
+       text-decoration: underline;
+}
+
+#dashboard_browser_nag p.browser-update-nag.has-browser-icon {
+       padding-right: 125px;
+}
+
+#dashboard_browser_nag .browser-icon {
+       margin-top: -35px;
+}
+
+#dashboard_browser_nag.postbox.browser-insecure {
+       background-color: #ac1b1b;
+       border-color: #ac1b1b;
+}
+
+#dashboard_browser_nag.postbox {
+       background-color: #e29808;
+       background-image: none;
+       border-color: #edc048;
+       color: #fff;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+#dashboard_browser_nag.postbox.browser-insecure h3 {
+       border-bottom-color: #cd5a5a;
+       color: #fff;
+}
+
+#dashboard_browser_nag.postbox h3 {
+       border-bottom-color: #f6e2ac;
+       text-shadow: none;
+       background: transparent none;
+       color: #fff;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+#dashboard_browser_nag a {
+       color: #fff;
+}
+
+#dashboard_browser_nag.browser-insecure a.browse-happy-link,
+#dashboard_browser_nag.browser-insecure a.update-browser-link {
+       text-shadow: #871b15 0 1px 0;
+}
+
+#dashboard_browser_nag a.browse-happy-link,
+#dashboard_browser_nag a.update-browser-link {
+       text-shadow: #d29a04 0 1px 0;
+}
+
+
+/* login */
+
+.login * {
+       margin: 0;
+       padding: 0;
+}
+
+.login form {
+       margin-left: 8px;
+       padding: 26px 24px 46px;
+       font-weight: normal;
+       background: #fff;
+       border: 1px solid #e5e5e5;
+       -webkit-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px;
+       box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px;
+}
+
+.login form .forgetmenot {
+       font-weight: normal;
+       float: left;
+       margin-bottom: 0;
+}
+
+.login .button-primary {
+       float: right;
+}
+
+#login form p {
+       margin-bottom: 0;
+}
+
+#login form p.submit {
+       padding: 0;
+}
+
+.login label {
+       color: #777;
+       font-size: 14px;
+}
+
+.login form .forgetmenot label {
+       font-size: 12px;
+       line-height: 19px;
+}
+
+.login h1 a {
+       background-image: url('../images/wordpress-logo.png?ver=20120216');
+       background-size: 274px 63px;
+       background-position: top center;
+       background-repeat: no-repeat;
+       width: 326px;
+       height: 67px;
+       text-indent: -9999px;
+       outline: none;
+       overflow: hidden;
+       padding-bottom: 15px;
+       display: block;
+}
+
+#login {
+       width: 320px;
+       padding: 114px 0 0;
+       margin: auto;
+}
+
+#login_error,
+.login .message {
+       margin: 0 0 16px 8px;
+       padding: 12px;
+}
+
+.login #nav,
+.login #backtoblog {
+       text-shadow: #fff 0 1px 0;
+       margin: 0 0 0 16px;
+       padding: 16px 16px 0;
+}
+
+#backtoblog {
+       padding: 12px 16px 0;
+}
+
+.login form .input,
+.login input[type="text"] {
+       color: #555;
+       font-weight: 200;
+       font-size: 24px;
+       line-height: 1;
+       width: 100%;
+       padding: 3px;
+       margin-top: 2px;
+       margin-right: 6px;
+       margin-bottom: 16px;
+       border: 1px solid #e5e5e5;
+       background: #fbfbfb;
+       outline: none;
+       -webkit-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
+       box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
+}
+
+.login #pass-strength-result {
+       width: 250px;
+       font-weight: bold;
+       border-style: solid;
+       border-width: 1px;
+       margin: 12px 0 6px;
+       padding: 6px 5px;
+       text-align: center;
+}
+
+.mobile #login {
+       padding: 20px 0;
+}
+
+.mobile #login form,
+.mobile #login .message,
+.mobile #login_error {
+       margin-left: 0;
+}
+
+.mobile #login #nav,
+.mobile #login #backtoblog {
+       margin-left: 8px;
+}
+
+.mobile #login h1 a {
+       width: auto;
+}
+
+
+/* ms */
+/* Dashboard: MS Specific Data */
+#dashboard_right_now p.musub {
+       margin-top: 12px;
+       border-top: 1px solid #ececec;
+       padding-left: 16px;
+       position: static;
+}
+
+.rtl #dashboard_right_now p.musub {
+       padding-left: 0;
+       padding-right: 16px;
+}
+
+#dashboard_right_now td.b a.musublink {
+       font-size: 16px;
+}
+
+#dashboard_right_now div.musubtable {
+       border-top: none;
+}
+
+#dashboard_right_now div.musubtable .t {
+       white-space: normal;
+}
+
+/* Background Color for Site Status */
+.wp-list-table .site-deleted {
+       background: #ff8573;
+}
+.wp-list-table .site-spammed {
+       background: #faafaa;
+}
+.wp-list-table .site-archived {
+       background: #ffebe8;
+}
+.wp-list-table .site-mature {
+       background: #fecac2;
+}
+
+/* nav-menu */
+
+#nav-menus-frame {
+       margin-left: 300px;
+}
+
+#wpbody-content #menu-settings-column {
+       display:inline;
+       width:281px;
+       margin-left: -300px;
+       clear: both;
+       float: left;
+       padding-top: 24px;
+}
+
+.no-js #wpbody-content #menu-settings-column {
+       padding-top: 31px;
+}
+
+#menu-settings-column .inside {
+       clear: both;
+       margin: 10px 0 0;
+}
+
+.metabox-holder-disabled .postbox {
+       opacity: 0.5;
+       filter: alpha(opacity=50);
+}
+
+.metabox-holder-disabled .button-controls .select-all {
+       display: none;
+}
+
+#wpbody {
+       position: relative;
+}
+
+/* Menu Container */
+#menu-management-liquid {
+       float: left;
+       min-width: 100%;
+}
+
+#menu-management {
+       position: relative;
+       margin-right: 20px;
+       margin-top: -3px;
+       width: 100%;
+}
+
+#menu-management .menu-edit {
+       margin-bottom: 20px;
+}
+
+.nav-menus-php #post-body {
+       padding: 10px;
+       border-width: 1px 0;
+       border-style: solid;
+}
+
+#nav-menu-header,
+#nav-menu-footer {
+       padding: 0 10px;
+}
+
+#nav-menu-header {
+       border-bottom: 1px solid;
+}
+
+#nav-menu-footer {
+       border-top: 1px solid;
+}
+
+.nav-menus-php #post-body div.updated,
+.nav-menus-php #post-body div.error {
+       margin: 0;
+}
+
+.nav-menus-php #post-body-content {
+       position: relative;
+       float: none;
+}
+
+#menu-management .menu-add-new abbr {
+       font-weight:bold;
+}
+
+/* Menu Tabs */
+
+#menu-management .nav-tabs-nav {
+       margin: 0 20px;
+}
+
+#menu-management .nav-tabs-arrow {
+       width: 10px;
+       padding: 0 5px 4px;
+       cursor: pointer;
+       position: absolute;
+       top: 0;
+       line-height: 22px;
+       font-size: 18px;
+       text-shadow: 0 1px 0 #fff;
+}
+
+#menu-management .nav-tabs-arrow-left {
+       left: 0;
+}
+
+#menu-management .nav-tabs-arrow-right {
+       right: 0;
+       text-align: right;
+}
+
+#menu-management .nav-tabs-wrapper {
+       width: 100%;
+       height: 28px;
+       margin-bottom: -1px;
+       overflow: hidden;
+}
+
+#menu-management .nav-tabs {
+       padding-left: 20px;
+       padding-right: 10px;
+}
+
+.js #menu-management .nav-tabs {
+       float: left;
+       margin-left: 0px;
+       margin-right: -400px;
+}
+
+#menu-management .nav-tab {
+       margin-bottom: 0;
+       font-size: 14px;
+}
+
+#select-nav-menu-container {
+       text-align: right;
+       padding: 0 10px 3px 10px;
+       margin-bottom: 5px;
+}
+
+#select-nav-menu {
+       width: 100px;
+       display: inline;
+}
+
+#menu-name-label {
+       margin-top: -2px;
+}
+
+#wpbody .open-label {
+       display: block;
+       float:left;
+}
+
+#wpbody .open-label span {
+       padding-right: 10px;
+}
+
+.js .input-with-default-title {
+       font-style: italic;
+}
+
+#menu-management .inside {
+       padding: 0 10px;
+}
+
+/* Add Menu Item Boxes */
+.postbox .howto input {
+       width: 180px;
+       float: right;
+}
+
+.customlinkdiv .howto input {
+       width: 200px;
+}
+
+#nav-menu-theme-locations .howto select {
+       width: 100%;
+}
+
+#nav-menu-theme-locations .button-controls {
+       text-align: right;
+}
+
+.add-menu-item-view-all {
+       height: 400px;
+}
+
+/* Button Primary Actions */
+#menu-container .submit {
+       margin: 0px 0px 10px;
+       padding: 0px;
+}
+
+.nav-menus-php .meta-sep,
+.nav-menus-php .submitdelete,
+.nav-menus-php .submitcancel {
+       display: block;
+       float: left;
+       margin: 4px 0;
+       line-height: 15px;
+}
+
+.meta-sep {
+       padding: 0 2px;
+}
+
+#cancel-save {
+       text-decoration: underline;
+       font-size: 12px;
+       margin-left: 20px;
+       margin-top: 5px;
+}
+
+.button.right, .button-secondary.right, .button-primary.right {
+       float: right;
+}
+
+/* Button Secondary Actions */
+.list-controls {
+       float: left;
+       margin-top: 5px;
+}
+
+.add-to-menu {
+       float: right;
+}
+
+.postbox .spinner {
+       display: none;
+       vertical-align: middle;
+}
+
+.button-controls {
+       clear:both;
+       margin: 10px 0;
+}
+
+.show-all,
+.hide-all {
+       cursor: pointer;
+}
+
+.hide-all {
+       display: none;
+}
+
+/* Create Menu */
+#menu-name {
+       width: 270px;
+}
+
+#manage-menu .inside {
+       padding: 0px 0px;
+}
+
+/* Custom Links */
+#available-links dt {
+       display: block;
+}
+
+#add-custom-link .howto {
+       font-size: 12px;
+}
+
+#add-custom-link label span {
+       display: block;
+       float: left;
+       margin-top: 5px;
+       padding-right: 5px;
+}
+
+.menu-item-textbox {
+       width: 180px;
+}
+
+.nav-menus-php .howto span {
+       margin-top: 4px;
+       display: block;
+       float: left;
+}
+
+/* Menu item types */
+.quick-search {
+       width: 190px;
+}
+
+.nav-menus-php .list-wrap {
+       display: none;
+       clear: both;
+       margin-bottom: 10px;
+}
+
+.nav-menus-php .list-container {
+       max-height: 200px;
+       overflow-y: auto;
+       padding: 10px 10px 5px;
+}
+
+.nav-menus-php .postbox p.submit {
+       margin-bottom: 0;
+}
+
+/* Listings */
+.nav-menus-php .list li {
+       display: none;
+       margin: 0;
+       margin-bottom: 5px;
+}
+
+.nav-menus-php .list li .menu-item-title {
+       cursor: pointer;
+       display: block;
+}
+
+.nav-menus-php .list li .menu-item-title input {
+       margin-right: 3px;
+       margin-top: -3px;
+}
+
+/* Nav Menu */
+#menu-container .inside {
+       padding-bottom: 10px;
+}
+
+.menu {
+       padding-top:1em;
+}
+
+#menu-to-edit {
+       padding: 1em 0;
+}
+
+.menu ul {
+       width: 100%;
+}
+
+.menu li {
+       margin-bottom: 0;
+       position:relative;
+}
+
+.menu-item-bar {
+       clear:both;
+       line-height:1.5em;
+       position:relative;
+       margin: 13px 0 0 0;
+}
+
+.menu-item-handle {
+       border: 1px solid #dfdfdf;
+       position: relative;
+       padding-left: 10px;
+       height: auto;
+       width: 400px;
+       line-height: 35px;
+       text-shadow: 0 1px 0 #FFFFFF;
+       overflow: hidden;
+       word-wrap: break-word;
+}
+
+#menu-to-edit .menu-item-invalid .menu-item-handle {
+       background: #f6c9cc;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f6c9cc), to(#fdf8ff));
+       background-image: -webkit-linear-gradient(bottom, #f6c9cc, #fdf8ff);
+       background-image:    -moz-linear-gradient(bottom, #f6c9cc, #fdf8ff);
+       background-image:      -o-linear-gradient(bottom, #f6c9cc, #fdf8ff);
+       background-image: linear-gradient(to top, #f6c9cc, #fdf8ff);
+}
+
+.menu-item-edit-active .menu-item-handle {
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 0;
+}
+
+.no-js .menu-item-edit-active .item-edit {
+       display: none;
+}
+
+.js .menu-item-handle {
+       cursor: move;
+}
+
+.menu li.deleting .menu-item-handle {
+       background-image: none;
+       text-shadow: 0 0 0;
+}
+
+.menu-item-handle .item-title {
+       font-size: 12px;
+       font-weight: bold;
+       padding: 7px 0;
+       line-height: 20px;
+       display:block;
+       margin-right:13em;
+}
+
+/* Sortables */
+li.menu-item.ui-sortable-helper dl {
+       margin-top: 0;
+}
+
+li.menu-item.ui-sortable-helper .menu-item-transport dl {
+       margin-top: 13px;
+}
+
+.menu .sortable-placeholder {
+       height: 35px;
+       width: 410px;
+       margin-top: 13px;
+}
+
+/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
+.menu-item-depth-0 { margin-left: 0px; }
+.menu-item-depth-1 { margin-left: 30px; }
+.menu-item-depth-2 { margin-left: 60px; }
+.menu-item-depth-3 { margin-left: 90px; }
+.menu-item-depth-4 { margin-left: 120px; }
+.menu-item-depth-5 { margin-left: 150px; }
+.menu-item-depth-6 { margin-left: 180px; }
+.menu-item-depth-7 { margin-left: 210px; }
+.menu-item-depth-8 { margin-left: 240px; }
+.menu-item-depth-9 { margin-left: 270px; }
+.menu-item-depth-10 { margin-left: 300px; }
+.menu-item-depth-11 { margin-left: 330px; }
+
+.menu-item-depth-0 .menu-item-transport { margin-left: 0px; }
+.menu-item-depth-1 .menu-item-transport { margin-left: -30px; }
+.menu-item-depth-2 .menu-item-transport { margin-left: -60px; }
+.menu-item-depth-3 .menu-item-transport { margin-left: -90px; }
+.menu-item-depth-4 .menu-item-transport { margin-left: -120px; }
+.menu-item-depth-5 .menu-item-transport { margin-left: -150px; }
+.menu-item-depth-6 .menu-item-transport { margin-left: -180px; }
+.menu-item-depth-7 .menu-item-transport { margin-left: -210px; }
+.menu-item-depth-8 .menu-item-transport { margin-left: -240px; }
+.menu-item-depth-9 .menu-item-transport { margin-left: -270px; }
+.menu-item-depth-10 .menu-item-transport { margin-left: -300px; }
+.menu-item-depth-11 .menu-item-transport { margin-left: -330px; }
+
+body.menu-max-depth-0 { min-width: 950px !important; }
+body.menu-max-depth-1 { min-width: 980px !important; }
+body.menu-max-depth-2 { min-width: 1010px !important; }
+body.menu-max-depth-3 { min-width: 1040px !important; }
+body.menu-max-depth-4 { min-width: 1070px !important; }
+body.menu-max-depth-5 { min-width: 1100px !important; }
+body.menu-max-depth-6 { min-width: 1130px !important; }
+body.menu-max-depth-7 { min-width: 1160px !important; }
+body.menu-max-depth-8 { min-width: 1190px !important; }
+body.menu-max-depth-9 { min-width: 1220px !important; }
+body.menu-max-depth-10 { min-width: 1250px !important; }
+body.menu-max-depth-11 { min-width: 1280px !important; }
+
+/* Menu item controls */
+.item-type {
+       font-size: 12px;
+       padding-right: 10px;
+}
+
+.item-controls {
+       font-size: 12px;
+       position: absolute;
+       right: 20px;
+       top: -1px;
+}
+
+.item-controls a {
+       text-decoration: none;
+}
+
+.item-controls a:hover {
+       cursor: pointer;
+}
+
+.item-controls .item-order {
+       padding-right: 10px;
+}
+
+.nav-menus-php .item-edit {
+       position: absolute;
+       right: -20px;
+       top: 0;
+       display: block;
+       width: 30px;
+       height: 36px;
+       overflow: hidden;
+       text-indent:-999em;
+       border-bottom: 1px solid;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+/* Menu editing */
+.menu-instructions-inactive {
+       display: none;
+}
+
+.menu-item-settings {
+       display: block;
+       width: 400px;
+       padding: 10px 0 10px 10px;
+       border: solid;
+       border-width: 0 1px 1px 1px;
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+.menu-item-edit-active .menu-item-settings {
+       display: block;
+}
+
+.menu-item-edit-inactive .menu-item-settings {
+       display: none;
+}
+
+.add-menu-item-pagelinks {
+       margin: .5em auto;
+       text-align: center;
+}
+
+.link-to-original {
+       display: block;
+       margin: 0 0 10px;
+       padding: 3px 5px 5px;
+       font-size: 12px;
+       font-style: italic;
+}
+
+.link-to-original a {
+       padding-left: 4px;
+       font-style: normal;
+}
+
+.hidden-field {
+       display: none;
+}
+
+.menu-item-settings .description-thin,
+.menu-item-settings .description-wide {
+       margin-right: 10px;
+       float: left;
+}
+
+.description-thin {
+       width: 190px;
+       height: 40px;
+}
+
+.description-wide {
+       width: 390px;
+}
+
+.menu-item-actions {
+       padding-top: 15px;
+}
+
+#cancel-save {
+       cursor: pointer;
+}
+
+/* Major/minor publishing actions (classes) */
+.nav-menus-php .major-publishing-actions {
+       clear: both;
+       padding: 3px 0 5px;
+}
+
+.nav-menus-php .major-publishing-actions .publishing-action {
+       text-align: right;
+       float: right;
+       line-height: 23px;
+       margin: 5px 0 1px;
+}
+
+.nav-menus-php .major-publishing-actions .delete-action {
+       vertical-align: middle;
+       text-align: left;
+       float: left;
+       padding-right: 15px;
+       margin-top: 5px;
+}
+
+.menu-name-label span,
+.auto-add-pages label {
+       font-size: 12px;
+       font-style: normal;
+}
+
+.menu-name-label {
+       margin-right: 15px;
+}
+
+.auto-add-pages input {
+       margin-top: 0;
+}
+
+.auto-add-pages {
+       margin-top: 4px;
+       float: left;
+}
+
+.nav-menus-php .submitbox .submitcancel {
+       border-bottom: 1px solid;
+       padding: 1px 2px;
+       text-decoration: none;
+}
+
+.nav-menus-php .major-publishing-actions .form-invalid {
+       padding-left: 4px;
+       margin-left: -4px;
+       border: 0 none;
+}
+
+/* Clearfix */
+#menu-item-name-wrap:after,
+#menu-item-url-wrap:after,
+#menu-name-label:after,
+#menu-settings-column .inside:after,
+#nav-menus-frame:after,
+.nav-menus-php #post-body-content:after,
+.nav-menus-php .button-controls:after,
+.nav-menus-php .major-publishing-actions:after,
+.nav-menus-php .menu-item-settings:after {
+       clear: both;
+       content: ".";
+       display: block;
+       height: 0;
+       visibility: hidden;
+}
+
+#nav-menus-frame,
+.button-controls,
+#menu-item-url-wrap,
+#menu-item-name-wrap {
+       display: block;
+}
+
+/* Star ratings */
+div.star-holder {
+       position: relative;
+       height: 17px;
+       width: 100px;
+       background: url('../images/stars.png?ver=20121108') repeat-x bottom left;
+}
+
+div.star-holder .star-rating {
+       background: url('../images/stars.png?ver=20121108') repeat-x top left;
+       height: 17px;
+       float: left;
+}
+
+div.action-links {
+       font-weight: normal;
+       margin: 6px 0 0;
+}
+
+/* Header on thickbox */
+#plugin-information-header {
+       margin: 0;
+       padding: 0 5px;
+       font-weight: bold;
+       position: relative;
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+       height: 2.5em;
+}
+#plugin-information ul#sidemenu {
+       font-weight: normal;
+       margin: 0 5px;
+       position: absolute;
+       left: 0;
+       bottom: -1px;
+}
+
+/* Install sidemenu */
+#plugin-information p.action-button {
+       width: 100%;
+       padding-bottom: 0;
+       margin-bottom: 0;
+       margin-top: 10px;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+#plugin-information .action-button a {
+       text-align: center;
+       font-weight: bold;
+       text-decoration: none;
+       display: block;
+       line-height: 2em;
+}
+
+#plugin-information h2 {
+       clear: none !important;
+       margin-right: 200px;
+}
+
+#plugin-information .fyi {
+       margin: 0 10px 50px;
+       width: 210px;
+}
+
+#plugin-information .fyi h2 {
+       font-size: 0.9em;
+       margin-bottom: 0;
+       margin-right: 0;
+}
+
+#plugin-information .fyi h2.mainheader {
+       padding: 5px;
+       -webkit-border-top-left-radius: 3px;
+       border-top-left-radius: 3px;
+}
+
+#plugin-information .fyi ul {
+       padding: 10px 5px 10px 7px;
+       margin: 0;
+       list-style: none;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+#plugin-information .fyi li {
+       margin-right: 0;
+}
+
+#plugin-information #section-holder {
+       padding: 10px;
+}
+
+#plugin-information .section ul,
+#plugin-information .section ol {
+       margin-left: 16px;
+       list-style-type: square;
+       list-style-image: none;
+}
+
+#plugin-information #section-screenshots ol {
+       list-style: none;
+       margin: 0;
+}
+
+#plugin-information #section-screenshots li img {
+       vertical-align: text-top;
+       max-width: 100%;
+       width: auto;
+       height: auto;
+}
+
+#plugin-information #section-screenshots li p {
+       font-style: italic;
+       padding-left: 20px;
+       padding-bottom: 2em;
+}
+
+#plugin-information #section-screenshots ol,
+#plugin-information .updated,
+#plugin-information pre {
+       margin-right: 215px;
+}
+
+#plugin-information pre {
+       padding: 7px;
+       overflow: auto;
+}
+
+/* press-this */
+body.press-this {
+       color: #333;
+       margin: 0;
+       padding: 0;
+       min-width: 675px;
+       min-height: 400px;
+}
+
+img {
+       border: none;
+}
+
+/* Header */
+.press-this #wphead {
+       height: 32px;
+       margin-left: 0;
+       margin-right: 0;
+       margin-bottom: 5px;
+}
+
+.press-this #header-logo {
+       float: left;
+       margin: 7px 7px 0;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.press-this #wphead h1 {
+       font-weight: normal;
+       font-size: 16px;
+       line-height: 32px;
+       margin: 0;
+       float: left;
+}
+
+.press-this #wphead h1 a {
+       text-decoration: none;
+}
+
+.press-this #wphead h1 a:hover {
+       text-decoration: underline;
+}
+
+.press-this #message {
+       margin: 10px 0;
+}
+
+.press-this-sidebar {
+       float: right;
+       width: 200px;
+       padding-top: 10px;
+}
+
+.press-this #title {
+       margin-left: 0;
+       margin-right: 0;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+.press-this .tagchecklist span a {
+       background: transparent url(../images/xit.gif) no-repeat 0 0;
+}
+
+.press-this #titlediv {
+       margin: 0;
+}
+
+.press-this .wp-media-buttons {
+       cursor: default;
+       padding: 8px 8px 0;
+}
+
+.press-this .howto {
+       margin-top: 2px;
+       margin-bottom: 3px;
+       font-size: 12px;
+       font-style: italic;
+       display: block;
+}
+
+/* Editor/Main Column */
+.press-this #poststuff {
+       margin: 0 10px 10px;
+       padding: 0;
+}
+
+.press-this #photo-add-url-div input[type="text"] {
+       width: 220px;
+}
+
+#poststuff #editor-toolbar {
+       height: 30px;
+}
+
+div.zerosize {
+       border: 0 none;
+       height: 0;
+       margin: 0;
+       overflow: hidden;
+       padding: 0;
+       width: 0;
+}
+
+.posting {
+       margin-right: 212px;
+       position: relative;
+}
+
+.press-this .inner-sidebar {
+       width: 200px;
+}
+
+.press-this .inner-sidebar .sleeve {
+       padding-top: 5px;
+}
+
+.press-this #submitdiv p {
+       margin: 0;
+       padding: 6px;
+}
+
+.press-this #submitdiv #publishing-actions {
+       border-bottom: 1px solid #dfdfdf;
+}
+
+.press-this #publish {
+       float: right;
+}
+
+.press-this #poststuff h2,
+.press-this #poststuff h3 {
+       font-size: 14px;
+       line-height: 1;
+}
+
+.press-this #tagsdiv-post_tag h3,
+.press-this #categorydiv h3 {
+       cursor: pointer;
+}
+
+.press-this #submitdiv h3 {
+       cursor: default;
+}
+
+h3.tb {
+       text-shadow: 0 1px 0 #fff;
+       font-weight: bold;
+       font-size: 12px;
+       margin-left: 5px;
+}
+
+#TB_window {
+       border: 1px solid #333;
+}
+
+.press-this .postbox,
+.press-this .stuffbox {
+       margin-bottom: 10px;
+       min-width: 0;
+}
+
+.js .postbox:hover .handlediv,
+.js .stuffbox:hover .handlediv {
+       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
+}
+
+.press-this #submitdiv:hover .handlediv {
+       background: none;
+}
+
+.tbtitle {
+       font-size: 1.7em;
+       outline: none;
+       padding: 3px 4px;
+       border-color: #dfdfdf;
+}
+
+.press-this .actions {
+       float: right;
+       margin: -19px 0 0;
+}
+
+.press-this #extra-fields .actions {
+       margin: -32px -7px 0 0;
+}
+
+.press-this .actions li {
+       float: left;
+       list-style: none;
+       margin-right: 10px;
+}
+
+#extra-fields .button {
+       margin-right: 5px;
+}
+
+/* Photo Styles */
+#photo_saving {
+       margin: 0 8px 8px;
+       vertical-align: middle;
+}
+
+#img_container_container {
+       overflow: auto;
+}
+
+#extra-fields {
+       margin-top: 10px;
+       position: relative;
+}
+
+#extra-fields h2 {
+       margin: 12px;
+}
+
+#waiting {
+       margin-top: 10px;
+       overflow: hidden;
+}
+
+#waiting span {
+       float: right;
+       margin: 0 0 0 5px;
+}
+
+#waiting .spinner {
+       display: block;
+}
+
+#extra-fields .postbox {
+       margin-bottom: 5px;
+}
+
+#extra-fields .titlewrap {
+       padding: 0;
+       overflow: auto;
+       height: 100px;
+}
+
+#img_container a {
+       display: block;
+       float: left;
+       overflow: hidden;
+}
+
+#img_container img,
+#img_container a {
+       width: 68px;
+       height: 68px;
+}
+
+#img_container img {
+       border: none;
+       background-color: #f4f4f4;
+       cursor: pointer;
+}
+
+#img_container a,
+#img_container a:link,
+#img_container a:visited {
+       border: 1px solid #ccc;
+       display: block;
+       position: relative;
+}
+
+#img_container a:hover,
+#img_container a:active {
+       border-color: #000;
+       z-index: 1000;
+       border-width: 2px;
+       margin: -1px;
+}
+
+/* Video */
+#embed-code {
+       width: 100%;
+       height: 98px;
+}
+
+/* Categories */
+.press-this .categorydiv div.tabs-panel {
+       height: 100px;
+}
+
+/* Tags */
+.press-this .tagsdiv .newtag {
+       width: 120px;
+}
+
+.press-this #content {
+       margin: 5px 0;
+       padding: 0 5px;
+       border: 0 none;
+       height: 345px;
+       font-family: Consolas, Monaco, monospace;
+       font-size: 13px;
+       line-height: 19px;
+       background: transparent;
+}
+
+/* Submit */
+.press-this #publishing-actions .spinner {
+       display: inline;
+       vertical-align: middle;
+}
+
+#TB_ajaxContent #options {
+       position: absolute;
+       top: 20px;
+       right: 25px;
+       padding: 5px;
+}
+
+#TB_ajaxContent h3 {
+       margin-bottom: .25em;
+}
+
+.error a {
+       text-decoration: underline;
+}
+
+.updated a {
+       text-decoration: none;
+       padding-bottom: 2px;
+}
+
+/* tag hints */
+.taghint {
+       color: #aaa;
+       margin: -17px 0 0 7px;
+       visibility: hidden;
+}
+
+input.newtag ~ div.taghint {
+       visibility: visible;
+}
+
+input.newtag:focus ~ div.taghint {
+       visibility: hidden;
+}
+
+/* TinyMCE */
+#mce_fullscreen_container {
+       background: #fff;
+}
+
+#photo-add-url-div input[type="text"] {
+       width: 300px;
+}
+
+/* theme-editor */
+.alignleft h3 {
+       margin: 0;
+}
+
+h3 span {
+       font-weight: normal;
+}
+
+#template textarea {
+       font-family: Consolas, Monaco, monospace;
+       font-size: 12px;
+       width: 97%;
+       background: #f9f9f9;
+       outline: none;
+}
+
+#template p {
+       width: 97%;
+}
+
+#templateside {
+       float: right;
+       width: 190px;
+       word-wrap: break-word;
+}
+
+#templateside h3,
+#postcustomstuff p.submit {
+       margin: 0;
+}
+
+#templateside h4 {
+       margin: 1em 0 0;
+}
+
+#templateside ol,
+#templateside ul {
+       margin: .5em;
+       padding: 0;
+}
+
+#templateside li {
+       margin: 4px 0;
+}
+
+#templateside ul li a span.highlight {
+       display:block;
+}
+
+.nonessential {
+       font-size: 11px;
+       font-style: italic;
+       padding-left: 12px;
+}
+
+.highlight {
+       padding: 3px 3px 3px 12px;
+       margin-left: -12px;
+       font-weight: bold;
+       border: 0 none;
+}
+
+#documentation {
+       margin-top: 10px;
+}
+#documentation label {
+       line-height: 22px;
+       vertical-align: top;
+       font-weight: bold;
+}
+
+.fileedit-sub {
+       padding: 10px 0 8px;
+       line-height: 180%;
+}
+
+#filter-box {
+       clear: both;
+}
+
+.feature-filter {
+       padding: 8px 12px 0;
+}
+
+.feature-filter .feature-group {
+       float: left;
+       margin: 5px 10px 10px;
+}
+
+.feature-filter .feature-group li {
+       display: inline-block;
+       vertical-align: top;
+       list-style-type: none;
+       padding-right: 25px;
+       width: 150px;
+}
+
+.feature-container {
+       width: 100%;
+       overflow: auto;
+       margin-bottom: 10px;
+}
+
+/* widgets */
+
+/* 2 column liquid layout */
+div.widget-liquid-left {
+       float: left;
+       clear: left;
+       width: 100%;
+       margin-right: -325px;
+}
+
+div#widgets-left {
+       margin-left: 5px;
+       margin-right: 325px;
+}
+
+div#widgets-right {
+       width: 285px;
+       margin: 0 auto;
+}
+
+div.widget-liquid-right {
+       float: right;
+       clear: right;
+       width: 300px;
+}
+
+.widget-liquid-right .widget,
+.inactive-sidebar .widget,
+.widget-liquid-right .sidebar-description {
+       width: 250px;
+       margin: 0 auto 20px;
+       overflow: hidden;
+}
+
+.widget-liquid-right .sidebar-description {
+       margin-bottom: 10px;
+}
+
+.inactive-sidebar .widget {
+       margin: 0 10px 20px;
+       display: inline-block;
+}
+
+div.sidebar-name h3 {
+       font-weight: normal;
+       font-size: 15px;
+       margin: 0;
+       padding: 8px 10px;
+       overflow: hidden;
+       white-space: nowrap;
+}
+
+div.sidebar-name {
+       font-size: 13px;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+}
+
+.js .sidebar-name {
+       cursor: pointer;
+}
+
+.js .closed .sidebar-name {
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+.widget-liquid-right .widgets-sortables,
+#widgets-left .widget-holder {
+       border-width: 0 1px 1px;
+       border-style: none solid solid;
+       -webkit-border-bottom-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+.js .closed .widgets-sortables,
+.js .closed .widget-holder {
+       display: none;
+}
+
+.widget-liquid-right .widgets-sortables {
+       padding: 15px 0 0;
+}
+
+#available-widgets .widget-holder {
+       padding: 7px 5px 0;
+}
+
+#available-widgets .widget {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.inactive-sidebar {
+       padding: 5px 5px 0;
+}
+
+#widget-list .widget {
+       width: 250px;
+       margin: 0 10px 15px;
+       border: 0 none;
+       background: transparent;
+       display: inline-block;
+       vertical-align: top;
+}
+
+#widget-list .widget-description {
+       padding: 5px 8px;
+}
+
+.widget-placeholder {
+       border-width: 1px;
+       border-style: dashed;
+       margin: 0 auto 20px;
+       height: 27px;
+       width: 250px;
+}
+
+.inactive-sidebar .widget-placeholder {
+       margin: 0 10px 20px;
+       float: left;
+}
+
+div.widgets-holder-wrap {
+       padding: 0;
+       margin: 10px 0 20px;
+}
+
+#widgets-left #available-widgets {
+       background-color: transparent;
+       border: 0 none;
+}
+
+ul#widget-list {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+       min-height: 100px;
+}
+
+.widget .widget-top {
+       margin-bottom: -1px;
+       font-size: 12px;
+       font-weight: bold;
+       height: 26px;
+       overflow: hidden;
+}
+
+.widget-top .widget-title {
+       padding: 7px 9px;
+}
+
+.widget-top .widget-title-action {
+       float: right;
+}
+
+a.widget-action {
+       display: block;
+       width: 24px;
+       height: 26px;
+}
+
+#available-widgets a.widget-action {
+       display: none;
+}
+
+.widget-top a.widget-action {
+       background: transparent url(../images/arrows.png) no-repeat 4px 6px;
+}
+
+.widget-top a.widget-action:hover {
+       background: transparent url(../images/arrows-dark.png) no-repeat 4px 6px;
+}
+
+.widget .widget-inside,
+.widget .widget-description {
+       padding: 12px 12px 10px;
+       font-size: 12px;
+       line-height: 16px;
+}
+
+.widget-inside,
+.widget-description {
+       display: none;
+}
+
+#available-widgets .widget-description {
+       display: block;
+}
+
+.widget .widget-inside p {
+       margin: 0 0 1em;
+       padding: 0;
+}
+
+.widget-title h4 {
+       margin: 0;
+       padding-bottom: 0.2em;
+       line-height: 1;
+       overflow: hidden;
+       white-space: nowrap;
+}
+
+.widgets-sortables {
+       min-height: 90px;
+}
+
+.widget-control-actions {
+       margin-top: 8px;
+}
+
+.widget-control-actions a {
+       text-decoration: none;
+}
+
+.widget-control-actions a:hover {
+       text-decoration: underline;
+}
+
+.widget-control-actions div.alignleft {
+       margin-top: 6px;
+}
+
+div#sidebar-info {
+       padding: 0 1em;
+       margin-bottom: 1em;
+       font-size: 12px;
+}
+
+.widget-title a,
+.widget-title a:hover {
+       text-decoration: none;
+       border-bottom: none;
+}
+
+.widget-control-edit {
+       display: block;
+       font-size: 12px;
+       font-weight: normal;
+       line-height: 26px;
+       padding: 0 8px 0 0;
+}
+
+a.widget-control-edit {
+       text-decoration: none;
+}
+
+.widget-control-edit .add,
+.widget-control-edit .edit {
+       display: none;
+}
+
+#available-widgets .widget-control-edit .add,
+#widgets-right .widget-control-edit .edit,
+.inactive-sidebar .widget-control-edit .edit {
+       display: inline;
+}
+
+.editwidget {
+       margin: 0 auto 15px;
+}
+
+.editwidget .widget-inside {
+       display: block;
+       padding: 10px;
+}
+
+.inactive p.description {
+       margin: 5px 15px 10px;
+}
+
+#available-widgets p.description {
+       margin: 0 12px 12px;
+}
+
+.widget-position {
+       margin-top: 8px;
+}
+
+.inactive {
+       padding-top: 2px;
+}
+
+.sidebar-name .spinner {
+       float: none;
+       margin: 0 3px -3px;
+}
+
+.sidebar-name-arrow {
+       float: right;
+       height: 29px;
+       width: 26px;
+}
+
+.widget-title .in-widget-title {
+       font-size: 12px;
+       white-space: nowrap;
+}
+
+#removing-widget {
+       display: none;
+       font-weight: normal;
+       padding-left: 15px;
+       font-size: 12px;
+       line-height: 1;
+}
+
+.widget-control-noform,
+#access-off,
+.widgets_access .widget-action,
+.widgets_access .sidebar-name-arrow,
+.widgets_access #access-on,
+.widgets_access .widget-holder .description {
+       display: none;
+}
+
+.widgets_access .widget-holder,
+.widgets_access #widget-list {
+       padding-top: 10px;
+}
+
+.widgets_access #access-off {
+       display: inline;
+}
+
+.widgets_access #wpbody-content .widget-title-action,
+.widgets_access #wpbody-content .widget-control-edit,
+.widgets_access .closed .widgets-sortables,
+.widgets_access .closed .widget-holder {
+       display: block;
+}
+
+.widgets_access .closed .sidebar-name {
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 0;
+}
+
+.widgets_access .sidebar-name,
+.widgets_access .widget .widget-top {
+       cursor: default;
+}
+
+/* Enable draggable on IE10 touch events until it's rolled into jQuery UI core */
+.ui-sortable,
+.ui-draggable {
+       -ms-touch-action: none;
+}
+
+/* =Media Queries
+-------------------------------------------------------------- */
+
+@media only screen and (max-width: 768px) {
+       /* categories */
+       #col-left {
+               width: 100%;
+       }
+
+       #col-right {
+               width: 100%;
+       }
+}
+
+@media only screen and (min-width: 769px) {
+       /* categories */
+       #col-left {
+               width: 35%;
+       }
+
+       #col-right {
+               width: 65%;
+       }
+}
+
+@media only screen and (max-width: 860px) {
+
+       /* categories */
+       #col-left {
+               width: 35%;
+       }
+
+       #col-right {
+               width: 65%;
+       }
+}
+
+@media only screen and (min-width: 980px) {
+
+       /* categories */
+       #col-left {
+               width: 35%;
+       }
+
+       #col-right {
+               width: 65%;
+       }
+}
+
+@media only screen and (max-width: 768px) {
+       /* categories */
+       #col-left {
+               width: 100%;
+       }
+
+       #col-right {
+               width: 100%;
+       }
+
+       .form-field input,
+       .form-field textarea {
+               width: 99%;
+       }
+
+       .form-wrap .form-field {
+               padding:0;
+       }
+
+       /* users */
+       #profile-page .form-table textarea {
+               max-width: 400px;
+               width: auto;
+       }
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+
+       .press-this .tagchecklist span a {
+               background-image: url('../images/xit-2x.gif');
+               background-size: 20px auto;
+        }
+
+       .js .postbox:hover .handlediv,
+       .js .stuffbox:hover .handlediv,
+       .widget-top a.widget-action {
+               background-image: url('../images/arrows-2x.png');
+               background-size: 15px 123px;
+        }
+
+       .widget-top a.widget-action:hover {
+               background-image: url('../images/arrows-dark-2x.png');
+               background-size: 15px 123px;
+       }
+
+       .post-com-count {
+               background-image: url('../images/bubble_bg-2x.gif');
+               background-size: 18px 100px;
+       }
+
+       th .comment-grey-bubble {
+               background-image: url('../images/comment-grey-bubble-2x.png');
+               background-size: 12px 12px;
+       }
+
+       .sorting-indicator {
+               background-image: url('../images/sort-2x.gif');
+               background-size: 14px 4px;
+       }
+
+       #content-resize-handle,
+       #post-body .wp_themeSkin .mceStatusbar a.mceResize {
+               background: transparent url('../images/resize-2x.gif') no-repeat scroll right bottom;
+               background-size: 11px 11px;
+       }
+
+       div.star-holder {
+               background: url('../images/stars-2x.png?ver=20121108') repeat-x bottom left;
+               background-size: 21px 37px;
+       }
+
+       div.star-holder .star-rating {
+               background: url('../images/stars-2x.png?ver=20121108') repeat-x top left;
+               background-size: 21px 37px;
+       }
+
+       .welcome-panel .welcome-panel-close:before {
+               background-image: url('../images/xit-2x.gif');
+               background-size: 20px auto;
+       }
+
+       .welcome-panel .welcome-icon {
+               background-image: url('../images/welcome-icons-2x.png');
+       }
+
+       .login h1 a {
+               background-image: url('../images/wordpress-logo-2x.png?ver=20120412');
+               background-size: 274px 63px;
+       }
+
+       .wp-badge {
+               background-image: url('../images/wp-badge-2x.png?ver=20120516');
+               background-size: 173px 194px;
+       }
+
+       .wp-full-overlay .collapse-sidebar-arrow {
+               background-image: url('../images/arrows-2x.png');
+               background-size: 15px 123px;
+        }
+
+       .pressthis a span {
+               background-image: url(../images/press-this-2x.png?v=20121105);
+       }
+
+       .imgedit-crop,
+       .imgedit-rleft,
+       .imgedit-rright,
+       .imgedit-flipv,
+       .imgedit-fliph,
+       .imgedit-undo,
+       .imgedit-redo {
+               background-image: url('../images/imgedit-icons-2x.png');
+               background-size: 260px 64px;
+       }
+
+       .spinner,
+       .imgedit-wait,
+       .customize-loading #customize-container {
+               background-image: url(../images/wpspin_light-2x.gif);
+       }
+}
+
+/* =Localized CSS
+-------------------------------------------------------------- */
+
+/* zh_CN: Remove italic properties. */
+.locale-zh-cn .howto,
+.locale-zh-cn .tablenav .displaying-num,
+.locale-zh-cn .js .input-with-default-title,
+.locale-zh-cn .link-to-original,
+.locale-zh-cn .inline-edit-row fieldset span.title,
+.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,
+.locale-zh-cn #utc-time,
+.locale-zh-cn #local-time,
+.locale-zh-cn p.install-help,
+.locale-zh-cn p.help,
+.locale-zh-cn p.description,
+.locale-zh-cn span.description,
+.locale-zh-cn .form-wrap p {
+       font-style: normal;
+}
+
+/* zh_CN: Enlarge dashboard widget 'Configure' link */
+.locale-zh-cn .hdnle a { font-size: 12px; }
+
+/* zn_CH: Enlarge font size, set font-size: normal */
+.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; }
+
+/* Zn_CH: Distraction free writing.
+ *  More beautiful font for "Just write."
+ *  Larger text for HTML/Visual mode.
+ */
+.locale-zh-cn #wp-fullscreen-tagline { font-family: KaiTi, "楷体", sans-serif; }
+.locale-zh-cn #wp-fullscreen-modes a { font-size: 12px; }
+
+/* zh_CN: Enlarge font-size. */
+.locale-zh-cn #sort-buttons { font-size: 1em !important; }
+
+/* ru_RU: Text needs more room to breathe. */
+.locale-ru-ru .inline-edit-row fieldset label span.title {
+       width: auto; /* default 5em */
+       min-width: 5em;
+}
+.locale-ru-ru.press-this .posting {
+       margin-right: 257px; /* default 212px + 45px */
+}
+.locale-ru-ru.press-this #photo-add-url-div input[type="text"]  {
+       width: 255px; /* default 300px - 45px */
+}
+.locale-ru-ru.press-this #side-sortables {
+       width: 245px; /* default 200px + 45px */
+}
+.locale-ru-ru #customize-header-actions .button {
+       padding: 0 8px 1px; /* default 0 10px 1px; */
+}
+
+/* lt_LT: QuickEdit */
+.locale-lt-lt .inline-edit-row fieldset label span.title {
+       width: 8em;
+}
+.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap {
+       margin-left: 8em;
+}
+
+.update-php .spinner {
+       float: none;
+       margin: -4px 0;
+}
diff --git a/wp-admin/css/wp-admin.dev.css b/wp-admin/css/wp-admin.dev.css
deleted file mode 100644 (file)
index 012361e..0000000
+++ /dev/null
@@ -1,8221 +0,0 @@
-/*------------------------------------------------------------------------------
-
-
-Hello, this is the main WordPress admin CSS file.
-All the important stuff is in here.
-
-
-TABLE OF CONTENTS:
-------------------
- 1.0 - Text Elements
- 2.0 - Forms
- 3.0 - Actions
- 4.0 - Notifications
- 5.0 - TinyMCE
- 6.0 - Admin Header
-       6.1 - Screen Options Tabs
-       6.2 - Help Menu
- 7.0 - Main Navigation
- 8.0 - Layout Blocks
- 9.0 - Dashboard
-10.0 - List Posts
-       10.1 - Inline Editing
-11.0 - Write/Edit Post Screen
-       11.1 - Custom Fields
-       11.2 - Post Revisions
-12.0 - Categories
-13.0 - Tags
-14.0 - Media Screen
-       14.1 - Media Library
-       14.2 - Image Editor
-15.0 - Comments Screen
-16.0 - Themes
-       16.1 - Custom Header
-       16.2 - Custom Background
-       16.3 - Tabbed Admin Screen Interface
-17.0 - Plugins
-18.0 - Users
-19.0 - Tools
-20.0 - Settings
-21.0 - Admin Footer
-22.0 - About Pages
-23.0 - Full Overlay w/ Sidebar
-24.0 - Customize Loader
-25.0 - Misc
-
-------------------------------------------------------------------------*/
-
-/* 2 column liquid layout */
-#wpwrap {
-       height: auto;
-       min-height: 100%;
-       width: 100%;
-       position: relative;
-}
-
-#wpcontent {
-       height: 100%;
-}
-
-#wpcontent,
-#footer {
-       margin-left: 165px;
-}
-
-.folded #wpcontent,
-.folded #footer {
-       margin-left: 52px;
-}
-
-#wpbody-content {
-       padding-bottom: 65px;
-       float: left;
-       width: 100%;
-}
-
-#adminmenuback,
-#adminmenuwrap,
-#adminmenu,
-#adminmenu .wp-submenu,
-#adminmenu .wp-submenu-wrap,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu {
-       width: 145px;
-}
-
-#adminmenuback {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       z-index: -1;
-}
-
-#adminmenu {
-       clear: left;
-       margin: 0;
-       padding: 0;
-       list-style: none;
-}
-
-.folded #adminmenuback,
-.folded #adminmenuwrap,
-.folded #adminmenu,
-.folded #adminmenu li.menu-top {
-       width: 32px;
-}
-
-/* inner 2 column liquid layout */
-
-.inner-sidebar {
-       float: right;
-       clear: right;
-       display: none;
-       width: 281px;
-       position: relative;
-}
-
-.columns-2 .inner-sidebar {
-       margin-right: auto;
-       width: 286px;
-       display: block;
-}
-
-.inner-sidebar #side-sortables,
-.columns-2 .inner-sidebar #side-sortables {
-       min-height: 300px;
-       width: 280px;
-       padding: 0;
-}
-
-.has-right-sidebar .inner-sidebar {
-       display: block;
-}
-
-.has-right-sidebar #post-body {
-       float: left;
-       clear: left;
-       width: 100%;
-       margin-right: -2000px;
-}
-
-.has-right-sidebar #post-body-content {
-       margin-right: 300px;
-       float: none;
-       width: auto;
-}
-
-/* 2 columns main area */
-
-#col-container,
-#col-left,
-#col-right {
-       overflow: hidden;
-       padding: 0;
-       margin: 0;
-}
-
-#col-left {
-       width: 35%;
-}
-
-#col-right {
-       float: right;
-       clear: right;
-       width: 65%;
-}
-
-.col-wrap {
-       padding: 0 7px;
-}
-
-/* utility classes */
-.alignleft {
-       float: left;
-}
-
-.alignright {
-       float: right;
-}
-
-.textleft {
-       text-align: left;
-}
-
-.textright {
-       text-align: right;
-}
-
-.clear {
-       clear: both;
-}
-
-/* Hide visually but not from screen readers */
-.screen-reader-text,
-.screen-reader-text span {
-       position: absolute;
-       left: -1000em;
-       height: 1px;
-       width: 1px;
-       overflow: hidden;
-}
-
-.hidden,
-.js .closed .inside,
-.js .hide-if-js,
-.no-js .hide-if-no-js {
-       display: none;
-}
-
-/* include margin and padding in the width calculation of input and textarea */
-input[type="text"],
-input[type="password"],
-input[type="number"],
-input[type="search"],
-input[type="email"],
-input[type="url"],
-textarea {
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       -ms-box-sizing: border-box; /* ie8 only */
-       box-sizing: border-box;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-       vertical-align: text-top;
-       padding: 0;
-       margin: 1px 0 0;
-}
-
-input[type="search"] {
-       -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration {
-       display: none;
-}
-
-/* general */
-html,
-body {
-       height: 100%;
-       margin: 0;
-       padding: 0;
-}
-
-body {
-       font-family: sans-serif;
-       font-size: 12px;
-       line-height: 1.4em;
-       min-width: 600px;
-}
-
-body.iframe {
-       min-width: 0;
-}
-
-body.login {
-       background: #fbfbfb;
-       min-width: 0;
-}
-
-iframe,
-img {
-       border: 0;
-}
-
-td,
-textarea,
-input,
-select {
-       font-family: inherit;
-       font-size: inherit;
-       font-weight: inherit;
-}
-
-td,
-textarea {
-       line-height: inherit;
-}
-
-input,
-select {
-       line-height: 15px;
-}
-
-a,
-input,
-select {
-       outline: 0;
-}
-
-blockquote,
-q {
-       quotes: none;
-}
-
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-       content: '';
-       content: none;
-}
-
-p {
-       margin: 1em 0;
-}
-
-blockquote {
-       margin: 1em;
-}
-
-label {
-       cursor: pointer;
-}
-
-li,
-dd {
-       margin-bottom: 6px;
-}
-
-textarea,
-input,
-select {
-       margin: 1px;
-       padding: 3px;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-       display: block;
-       font-weight: bold;
-}
-
-h1 {
-       font-size: 2em;
-       margin: .67em 0;
-}
-
-h2 {
-       font-size: 1.5em;
-       margin: .83em 0;
-}
-
-h3 {
-       font-size: 1.17em;
-       margin: 1em 0;
-}
-
-h4 {
-       font-size: 1em;
-       margin: 1.33em 0;
-}
-
-h5 {
-       font-size: 0.83em;
-       margin: 1.67em 0;
-}
-
-h6 {
-       font-size: 0.67em;
-       margin: 2.33em 0;
-}
-
-ul,
-ol {
-       padding: 0;
-}
-
-ul {
-       list-style: none;
-}
-
-ol {
-       list-style-type: decimal;
-       margin-left: 2em;
-}
-
-ul.ul-disc {
-       list-style: disc outside;
-}
-
-ul.ul-square {
-       list-style: square outside;
-}
-
-ol.ol-decimal {
-       list-style: decimal outside;
-}
-
-ul.ul-disc,
-ul.ul-square,
-ol.ol-decimal {
-       margin-left: 1.8em;
-}
-
-ul.ul-disc > li,
-ul.ul-square > li,
-ol.ol-decimal > li {
-       margin: 0 0 0.5em;
-}
-
-.code,
-code {
-       font-family: Consolas, Monaco, monospace;
-}
-
-kbd,
-code {
-       padding: 1px 3px;
-       margin: 0 1px;
-       font-size: 11px;
-}
-
-.subsubsub {
-       list-style: none;
-       margin: 8px 0 5px;
-       padding: 0;
-       white-space: nowrap;
-       font-size: 12px;
-       float: left;
-}
-
-.subsubsub a {
-       line-height: 2;
-       padding: .2em;
-       text-decoration: none;
-}
-
-.subsubsub a .count,
-.subsubsub a.current .count {
-       color: #999;
-       font-weight: normal;
-}
-
-.subsubsub a.current {
-       font-weight: bold;
-       background: none;
-       border: none;
-}
-
-.subsubsub li {
-       display: inline;
-       margin: 0;
-       padding: 0;
-}
-
-.widefat,
-div.updated,
-div.error,
-.wrap .add-new-h2,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="file"],
-input[type="button"],
-input[type="submit"],
-input[type="reset"],
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="tel"],
-input[type="url"],
-select,
-.tablenav .tablenav-pages a,
-.tablenav-pages span.current,
-#titlediv #title,
-.postbox,
-#postcustomstuff table,
-#postcustomstuff input,
-#postcustomstuff textarea,
-.imgedit-menu div,
-.plugin-update-tr .update-message,
-#poststuff .inside .the-tagcloud,
-.login form,
-#login_error,
-.login .message,
-#menu-management .menu-edit,
-.nav-menus-php .list-container,
-.menu-item-handle,
-.link-to-original,
-.nav-menus-php .major-publishing-actions .form-invalid,
-.press-this #message,
-#TB_window,
-.tbtitle,
-.highlight,
-.feature-filter,
-#widget-list .widget-top,
-.editwidget .widget-inside {
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       border-width: 1px;
-       border-style: solid;
-}
-
-/* .widefat - main style for tables */
-.widefat {
-       border-spacing: 0;
-       width: 100%;
-       clear: both;
-       margin: 0;
-}
-
-.widefat * {
-       word-wrap: break-word;
-}
-
-.widefat a {
-       text-decoration: none;
-}
-
-.widefat thead th:first-of-type {
-       -webkit-border-top-left-radius: 3px;
-       border-top-left-radius: 3px;
-}
-.widefat thead th:last-of-type {
-       -webkit-border-top-right-radius: 3px;
-       border-top-right-radius: 3px;
-}
-.widefat tfoot th:first-of-type {
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-.widefat tfoot th:last-of-type {
-       -webkit-border-bottom-right-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-.widefat td,
-.widefat th {
-       border-width: 1px 0;
-       border-style: solid;
-}
-.widefat tfoot th {
-       border-bottom: none;
-}
-
-.widefat .no-items td {
-       border-bottom-width: 0;
-}
-
-.widefat td {
-       font-size: 12px;
-       padding: 4px 7px 2px;
-       vertical-align: top;
-}
-
-.widefat td p,
-.widefat td ol,
-.widefat td ul {
-       font-size: 12px;
-}
-
-.widefat th {
-       padding: 7px 7px 8px;
-       text-align: left;
-       line-height: 1.3em;
-       font-size: 14px;
-}
-
-.widefat th input {
-       margin: 0 0 0 8px;
-       padding: 0;
-       vertical-align: text-top;
-}
-
-.widefat .check-column {
-       width: 2.2em;
-       padding: 11px 0 0;
-       vertical-align: top;
-}
-
-.widefat tbody th.check-column {
-       padding: 9px 0 22px;
-}
-
-.widefat .num,
-.column-comments,
-.column-links,
-.column-posts {
-       text-align: center;
-}
-
-.widefat th#comments {
-       vertical-align: middle;
-}
-
-.wrap {
-       margin: 4px 15px 0 0;
-}
-
-div.updated,
-div.error {
-       padding: 0 0.6em;
-       margin: 5px 15px 2px;
-}
-
-div.updated p,
-div.error p {
-       margin: 0.5em 0;
-       padding: 2px;
-}
-
-.wrap div.updated,
-.wrap div.error,
-.media-upload-form div.error {
-       margin: 5px 0 15px;
-}
-
-.wrap h2,
-.subtitle {
-       font-weight: normal;
-       margin: 0;
-       text-shadow: #fff 0 1px 0;
-}
-
-.wrap h2 {
-       font-size: 23px;
-       padding: 9px 15px 4px 0;
-       line-height: 29px;
-}
-
-.subtitle {
-       font-size: 14px;
-       padding-left: 25px;
-}
-
-.wrap .add-new-h2 {
-       font-family: sans-serif;
-       margin-left: 4px;
-       padding: 3px 8px;
-       position: relative;
-       top: -3px;
-       text-decoration: none;
-       font-size: 12px;
-       border: 0 none;
-}
-
-.wrap h2.long-header {
-       padding-right: 0;
-}
-
-
-/*------------------------------------------------------------------------------
-  1.0 - Text Styles
-------------------------------------------------------------------------------*/
-
-div.sidebar-name h3,
-#menu-management .nav-tab,
-#dashboard_plugins h5,
-a.rsswidget,
-#dashboard_right_now td.b,
-#dashboard-widgets h4,
-.tool-box .title,
-#poststuff h3,
-.metabox-holder h3,
-.pressthis a,
-#your-profile legend,
-.inline-edit-row fieldset span.title,
-.inline-edit-row fieldset span.checkbox-title,
-.tablenav .displaying-num,
-.widefat th,
-.quicktags,
-.search {
-       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
-}
-
-h2 .nav-tab,
-.wrap h2,
-.subtitle,
-.login form .input {
-       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
-}
-
-.quicktags,
-.search {
-       font-size: 12px;
-}
-
-.icon32 {
-       float: left;
-       height: 34px;
-       margin: 7px 8px 0 0;
-       width: 36px;
-}
-
-.icon16 {
-       height: 18px;
-       width: 18px;
-       padding: 6px 6px;
-       margin: -6px 0 0 -8px;
-       float: left;
-}
-
-.key-labels label {
-       line-height: 24px;
-}
-
-.pre {
-       /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */
-       white-space: pre-wrap; /* css-3 */
-       white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
-       white-space: -pre-wrap; /* Opera 4-6 */
-       white-space: -o-pre-wrap; /* Opera 7 */
-       word-wrap: break-word; /* Internet Explorer 5.5+ */
-}
-
-.howto {
-       font-style: italic;
-       display: block;
-       font-family: sans-serif;
-}
-
-p.install-help {
-       margin: 8px 0;
-       font-style: italic;
-}
-
-.no-break {
-       white-space: nowrap;
-}
-
-/*------------------------------------------------------------------------------
-  2.0 - Forms
-------------------------------------------------------------------------------*/
-
-
-.wp-admin select {
-       padding: 2px;
-       height: 2em;
-}
-
-.wp-admin select[multiple] {
-       height: auto;
-}
-
-select option {
-       padding: 2px;
-}
-
-.submit {
-       padding: 1.5em 0;
-       margin: 5px 0;
-       -webkit-border-bottom-left-radius: 3px;
-       -webkit-border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-form p.submit a.cancel:hover {
-       text-decoration: none;
-}
-
-.submit input,
-.button,
-input.button,
-.button-primary,
-input.button-primary,
-.button-secondary,
-input.button-secondary,
-.button-highlighted,
-input.button-highlighted,
-#postcustomstuff .submit input {
-       text-decoration: none;
-       font-size: 12px !important;
-       line-height: 13px;
-       padding: 3px 8px;
-       cursor: pointer;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 11px;
-       border-radius: 11px;
-       -moz-box-sizing: content-box;
-       -webkit-box-sizing: content-box;
-       box-sizing: content-box;
-}
-
-#minor-publishing-actions input,
-#major-publishing-actions input,
-#minor-publishing-actions .preview {
-       min-width: 80px;
-       text-align: center;
-}
-
-textarea.all-options,
-input.all-options {
-       width: 250px;
-}
-
-input.large-text,
-textarea.large-text {
-       width: 99%;
-}
-
-input.regular-text,
-#adduser .form-field input {
-       width: 25em;
-}
-
-input.small-text {
-       width: 50px;
-}
-
-input[type="number"].small-text {
-       width: 60px;
-}
-
-#doaction,
-#doaction2,
-#post-query-submit {
-       margin-right: 8px;
-}
-
-.tablenav select[name="action"],
-.tablenav select[name="action2"] {
-       width: 130px;
-}
-
-.tablenav select[name="m"] {
-       width: 155px;
-}
-
-.tablenav select#cat {
-       width: 170px;
-}
-
-#wpcontent option {
-       padding: 2px;
-}
-
-#timezone_string option {
-       margin-left: 1em;
-}
-
-label,
-#your-profile label + a {
-       vertical-align: middle;
-}
-
-#misc-publishing-actions label {
-       vertical-align: baseline;
-}
-
-#pass-strength-result {
-       border-style: solid;
-       border-width: 1px;
-       float: left;
-       margin: 13px 5px 5px 1px;
-       padding: 3px 5px;
-       text-align: center;
-       width: 200px;
-       display: none;
-}
-.indicator-hint {
-       padding-top: 8px;
-}
-
-p.search-box {
-       float: right;
-       margin: 0;
-}
-
-input[type="text"].ui-autocomplete-loading {
-       background: transparent url('../images/loading.gif') no-repeat right center;
-       visibility: visible;
-}
-
-ul#add-to-blog-users {
-       margin: 0 0 0 14px;
-}
-
-.ui-autocomplete-input.open {
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 0;
-}
-
-.ui-autocomplete {
-       padding: 0;
-       margin: 0;
-       list-style: none;
-       position: absolute;
-       z-index: 10000;
-       border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-       border-width: 1px;
-       border-style: solid;
-}
-
-.ui-autocomplete li {
-       margin-bottom: 0;
-       white-space: nowrap;
-       text-align: left;
-}
-
-.ui-autocomplete li a {
-       display: block;
-       height: 100%;
-       padding: 4px 10px;
-}
-
-.ui-autocomplete li a.ui-state-hover {
-       cursor: pointer;
-}
-
-/*------------------------------------------------------------------------------
-  3.0 - Actions
-------------------------------------------------------------------------------*/
-
-#major-publishing-actions {
-       padding: 10px 10px 8px;
-       clear: both;
-       border-top: 1px solid #f5f5f5;
-       margin-top: -2px;
-}
-
-#delete-action {
-       line-height: 25px;
-       vertical-align: middle;
-       text-align: left;
-       float: left;
-}
-
-#publishing-action {
-       text-align: right;
-       float: right;
-       line-height: 23px;
-}
-
-#misc-publishing-actions {
-       padding: 6px 0 0;
-}
-
-.misc-pub-section {
-       padding: 6px 10px 8px;
-       border-width: 1px 0;
-       border-style: solid;
-}
-
-.misc-pub-section:first-child {
-       border-top-width: 0;
-}
-
-.misc-pub-section-last {
-       border-bottom-width: 0;
-}
-
-#minor-publishing-actions {
-       padding: 10px 10px 2px 8px;
-       text-align: right;
-}
-
-#minor-publishing {
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-       -webkit-box-shadow: 0 1px 0 #fff;
-       -moz-box-shadow: 0 1px 0 #fff;
-       box-shadow: 0 1px 0 #fff;
-}
-
-#save-post {
-       float: left;
-}
-
-#minor-publishing .ajax-loading {
-       padding: 3px 0 0 4px;
-       float: left;
-}
-
-.preview {
-       float: right;
-}
-
-#sticky-span {
-       margin-left: 18px;
-}
-
-.side-info {
-       margin: 0;
-       padding: 4px;
-       font-size: 11px;
-}
-
-.side-info h5 {
-       padding-bottom: 7px;
-       font-size: 14px;
-       margin: 12px 2px 5px;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-}
-
-.side-info ul {
-       margin: 0;
-       padding-left: 18px;
-       list-style: square;
-}
-
-a.button,
-a.button-primary,
-a.button-secondary {
-       line-height: 15px;
-       padding: 3px 10px;
-       white-space: nowrap;
-       -webkit-border-radius: 10px;
-}
-
-.approve,
-.unapproved .unapprove {
-       display: none;
-}
-
-.unapproved .approve,
-.spam .approve,
-.trash .approve {
-       display: inline;
-}
-
-td.action-links,
-th.action-links {
-       text-align: right;
-}
-
-.describe .del-link {
-       padding-left: 5px;
-}
-
-
-/*------------------------------------------------------------------------------
-  4.0 - Notifications
-------------------------------------------------------------------------------*/
-
-#update-nag,
-.update-nag {
-       line-height: 19px;
-       padding: 5px 0;
-       font-size: 12px;
-       text-align: center;
-       margin: -1px 15px 0 5px;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-.plugins .plugin-update {
-       padding: 0;
-}
-
-.plugin-update .update-message {
-       margin: 0 10px 8px 31px;
-       font-weight: bold;
-}
-
-ul#dismissed-updates {
-       display: none;
-}
-
-form.upgrade {
-       margin-top: 8px;
-}
-
-form.upgrade .hint {
-       font-style: italic;
-       font-size: 85%;
-       margin: -0.5em 0 2em 0;
-}
-
-.ajax-feedback {
-       visibility: hidden;
-       vertical-align: bottom;
-}
-
-#ajax-response.alignleft {
-       margin-left: 2em;
-}
-
-
-/*------------------------------------------------------------------------------
-  6.0 - Admin Header
-------------------------------------------------------------------------------*/
-#adminmenu a,
-#sidemenu a,
-#taglist a,
-#catlist a {
-       text-decoration: none;
-}
-
-/*------------------------------------------------------------------------------
-  6.1 - Screen Options Tabs
-------------------------------------------------------------------------------*/
-
-#screen-options-wrap,
-#contextual-help-wrap {
-       margin: 0;
-       padding: 8px 20px 12px;
-       position: relative;
-       overflow: auto;
-}
-
-#screen-meta .screen-reader-text {
-       visibility: hidden;
-}
-
-#screen-meta-links {
-       margin: 0 24px 0 0;
-}
-
-/* screen options and help tabs revert */
-#screen-meta {
-       display: none;
-       position: relative;
-       margin: 0 15px 0 5px;
-       border-width: 0 1px 1px;
-       border-style: none solid solid;
-}
-
-#screen-options-link-wrap,
-#contextual-help-link-wrap {
-       float: right;
-       height: 23px;
-       padding: 0;
-       margin: 0 0 0 6px;
-       font-family: sans-serif;
-}
-
-#screen-options-link-wrap,
-#contextual-help-link-wrap,
-#screen-meta {
-       -webkit-border-bottom-left-radius: 3px;
-       -webkit-border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-#screen-meta-links .screen-meta-toggle {
-       position: relative;
-       top: -1px;
-}
-
-#screen-meta-links a.show-settings {
-       text-decoration: none;
-       z-index: 1;
-       padding: 1px 16px 0 6px;
-       height: 22px;
-       line-height: 22px;
-       font-size: 12px;
-       display: block;
-       text-shadow: rgba(255,255,255,0.7) 0 1px 0;
-}
-
-#screen-meta-links a.show-settings:hover {
-       text-decoration: none;
-}
-/* end screen options and help tabs */
-
-.toggle-arrow {
-       background-repeat: no-repeat;
-       background-position: top left;
-       background-color: transparent;
-       height: 22px;
-       line-height: 22px;
-       display: block;
-}
-
-.toggle-arrow-active {
-       background-position: bottom left;
-}
-
-#screen-options-wrap h5,
-#contextual-help-wrap h5 {
-       margin: 8px 0;
-       font-size: 13px;
-}
-
-.metabox-prefs label {
-       display: inline-block;
-       padding-right: 15px;
-       white-space: nowrap;
-       line-height: 30px;
-}
-
-.metabox-prefs label input {
-       margin: 0 5px 0 2px;
-}
-
-.metabox-prefs .columns-prefs label input {
-       margin: 0 2px;
-}
-
-.metabox-prefs label a {
-       display: none;
-}
-
-/*------------------------------------------------------------------------------
-  6.2 - Help Menu
-------------------------------------------------------------------------------*/
-
-#contextual-help-wrap {
-       padding: 0;
-       margin-left: -4px;
-}
-
-#contextual-help-columns {
-       position: relative;
-}
-
-#contextual-help-back {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       left: 150px;
-       right: 170px;
-       border-width: 0 1px;
-       border-style: solid;
-}
-
-#contextual-help-wrap.no-sidebar #contextual-help-back {
-       right: 0;
-
-       border-right-width: 0;
-       -webkit-border-bottom-right-radius: 2px;
-       border-bottom-right-radius: 2px;
-}
-
-.contextual-help-tabs {
-       float: left;
-       width: 150px;
-       margin: 0;
-}
-
-.contextual-help-tabs ul {
-       margin: 1em 0;
-}
-
-.contextual-help-tabs li {
-       margin-bottom: 0;
-       list-style-type: none;
-       border-style: solid;
-       border-width: 1px 0;
-       border-color: transparent;
-}
-
-.contextual-help-tabs a {
-       display: block;
-       padding: 5px 5px 5px 12px;
-       line-height: 18px;
-       text-decoration: none;
-}
-
-.contextual-help-tabs .active {
-       padding: 0;
-       margin: 0 -1px 0 0;
-       border-width: 1px 0 1px 1px;
-       border-style: solid;
-}
-
-.contextual-help-tabs-wrap {
-       padding: 0 20px;
-       overflow: auto;
-}
-
-.help-tab-content {
-       display: none;
-       margin: 0 22px 12px 0;
-       line-height: 1.6em;
-}
-
-.help-tab-content.active {
-       display: block;
-}
-
-.help-tab-content li {
-       list-style-type: disc;
-       margin-left: 18px;
-}
-
-.contextual-help-sidebar {
-       width: 150px;
-       float: right;
-       padding: 0 8px 0 12px;
-       overflow: auto;
-}
-
-
-/*------------------------------------------------------------------------------
-  7.0 - Main Navigation (Left Menu)
-------------------------------------------------------------------------------*/
-
-#adminmenuback,
-#adminmenuwrap {
-       border-width: 0 1px 0 0;
-       border-style: solid;
-}
-
-#adminmenuwrap {
-       position: relative;
-       float: left;
-}
-
-#adminmenushadow {
-       position: absolute;
-       top: 0;
-       right: 0;
-       bottom: 0;
-       width: 6px;
-       z-index: 20;
-}
-
-/* side admin menu */
-#adminmenu * {
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       user-select: none;
-}
-
-#adminmenu .wp-submenu {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-       overflow: hidden;
-}
-
-#adminmenu li .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu {
-       display: none;
-       position: absolute;
-       top: -1px;
-       left: 146px;
-       z-index: 999;
-       overflow: hidden;
-}
-
-.js #adminmenu .wp-submenu.sub-open,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
-.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,
-#adminmenu .wp-has-current-submenu .wp-submenu,
-#adminmenu li.focused .wp-submenu {
-       display: block;
-}
-
-#adminmenu .wp-has-current-submenu .wp-submenu {
-       position: relative;
-       z-index: 2;
-       top: auto;
-       left: auto;
-       right: auto;
-       bottom: auto;
-       padding: 0;
-}
-
-#adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-}
-
-.folded #adminmenu .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu {
-       top: -5px;
-       left: 26px;
-}
-
-#adminmenu .wp-submenu.sub-open,
-#adminmenu li.focused.wp-not-current-submenu .wp-submenu,
-.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
-.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,
-.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu {
-       padding: 0 8px 8px 0;
-}
-
-.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu,
-#adminmenu .wp-has-current-submenu .wp-submenu {
-       padding: 0;
-}
-
-#adminmenu .wp-submenu a {
-       font-size: 12px;
-       line-height: 18px;
-}
-
-#adminmenu a.menu-top,
-#adminmenu .wp-submenu-head {
-       font-size: 13px;
-       line-height: 18px;
-}
-
-#adminmenu div.wp-submenu-head {
-       display: none;
-}
-
-.folded #adminmenu div.wp-submenu-head {
-       display: block;
-}
-
-.folded #adminmenu a.menu-top,
-body.no-js #adminmenu .wp-menu-toggle,
-.folded #adminmenu div.wp-menu-toggle {
-       display: none;
-}
-
-#adminmenu div.wp-menu-image {
-       float: left;
-       width: 28px;
-       height: 28px;
-}
-
-.folded #adminmenu div.wp-menu-image {
-       width: 30px;
-}
-
-#adminmenu li {
-       margin: 0;
-       padding: 0;
-       cursor: pointer;
-}
-
-#adminmenu a {
-       display: block;
-       line-height: 18px;
-       padding: 2px 5px;
-}
-
-#adminmenu li.menu-top {
-       min-height: 29px;
-       position: relative;
-}
-
-#adminmenu a.menu-top {
-       font-weight: bold;
-       line-height: 18px;
-       min-width: 10em;
-       padding: 5px 5px;
-       border-width: 1px 0 1px;
-       border-style: solid;
-}
-
-#adminmenu li.wp-menu-open {
-       border-width: 0 0 1px;
-       border-style: solid;
-}
-
-#adminmenu .wp-submenu ul {
-       padding: 4px 0;
-}
-
-#adminmenu .wp-submenu a {
-       margin: 0;
-}
-
-#adminmenu li li {
-       margin-left: 8px;
-}
-
-#adminmenu .wp-submenu a,
-#adminmenu li li a,
-.folded #adminmenu .wp-not-current-submenu li a {
-       padding-left: 12px;
-}
-
-#adminmenu .wp-not-current-submenu li a {
-       padding-left: 18px;
-}
-
-.folded #adminmenu li li {
-       margin-left: 0;
-}
-
-.folded #adminmenu li li a {
-       padding-left: 0;
-}
-
-.wp-menu-arrow {
-       display: none;
-       cursor: auto;
-       z-index: 25;
-       position: absolute;
-       right: 100%;
-       margin: 0;
-       height: 30px;
-       width: 6px;
-
-       -moz-transform:    translate( 146px );
-       -webkit-transform: translate( 146px );
-       -o-transform:      translate( 146px );
-       -ms-transform:     translate( 146px );
-       transform:         translate( 146px );
-}
-
-#adminmenu li.wp-has-current-submenu .wp-menu-arrow,
-#adminmenu li.menu-top:hover .wp-menu-arrow,
-#adminmenu li.current .wp-menu-arrow,
-#adminmenu li.focused .wp-menu-arrow,
-#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div {
-       display: block;
-}
-
-#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div {
-       display: none;
-}
-
-#adminmenu li.menu-top:hover .wp-menu-arrow,
-#adminmenu li.menu-top.focused .wp-menu-arrow {
-       z-index: 1001;
-}
-
-.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow {
-       display: none;
-}
-
-#adminmenu .wp-menu-arrow div {
-       position: absolute;
-       top: 7px;
-       left: -1px;
-       width: 14px;
-       height: 15px;
-
-       -moz-transform:    matrix( -0.6, 1, 0.6, 1, 0, 0 );
-       -webkit-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 );
-       -o-transform:      matrix( -0.6, 1, 0.6, 1, 0, 0 );
-       -ms-transform:     matrix( -0.6, 1, 0.6, 1, 0, 0 );
-       transform:         matrix( -0.6, 1, 0.6, 1, 0, 0 );
-}
-
-#adminmenu li.wp-not-current-submenu .wp-menu-arrow {
-       -moz-transform:    translate( 145px );
-       -webkit-transform: translate( 145px );
-       -o-transform:      translate( 145px );
-       -ms-transform:     translate( 145px );
-       transform:         translate( 145px );
-       height: 28px;
-       border-width: 1px 0;
-       border-style: solid;
-}
-
-.folded .wp-menu-arrow {
-       -moz-transform:    translate( 33px );
-       -webkit-transform: translate( 33px );
-       -o-transform:      translate( 33px );
-       -ms-transform:     translate( 33px );
-       transform:         translate( 33px );
-}
-
-#adminmenu .wp-not-current-submenu .wp-menu-arrow div {
-       width: 15px;
-       top: 6px;
-       border-width: 0 0 1px 1px;
-       border-style: solid;
-}
-
-.wp-menu-arrow,
-.folded #adminmenu li.menu-top:hover .wp-menu-arrow {
-       display: none;
-}
-
-.folded #adminmenu li.current:hover .wp-menu-arrow,
-.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow {
-       display: block;
-       z-index: 125;
-}
-
-#adminmenu .wp-submenu li {
-       padding: 0;
-       margin: 0;
-}
-
-.folded #adminmenu li.menu-top {
-       border-width: 1px 0;
-       border-style: solid none;
-}
-
-#adminmenu .wp-menu-image img {
-       float: left;
-       padding: 5px 0 0 2px;
-       opacity: 0.6;
-       filter: alpha(opacity=60);
-}
-
-#adminmenu li.menu-top:hover .wp-menu-image img,
-#adminmenu li.wp-has-current-submenu .wp-menu-image img {
-       opacity: 1;
-       filter: alpha(opacity=100);
-}
-
-#adminmenu li.wp-menu-separator {
-       height: 3px;
-       padding: 0;
-       margin: 0;
-       border-width: 1px 0;
-       border-style: solid;
-       cursor: inherit;
-}
-
-#adminmenu div.separator {
-       height: 1px;
-       padding: 0;
-       border-width: 1px 0 0 0;
-       border-style: solid;
-}
-
-#adminmenu .wp-submenu .wp-submenu-head {
-       padding: 6px 4px 5px 10px;
-       cursor: default;
-       border-width: 1px 0;
-       border-style: solid;
-}
-
-#adminmenu li .wp-submenu-wrap {
-       border-width: 1px 1px 1px 0;
-       border-style: solid solid solid none;
-       position: relative;
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-bottom-right-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-#adminmenu li.wp-menu-open .wp-submenu-wrap {
-       border: 0 none;
-}
-
-.folded #adminmenu .wp-submenu .wp-submenu-wrap {
-       margin-top: 3px;
-}
-
-.folded #adminmenu .wp-has-current-submenu {
-       margin-bottom: 1px;
-}
-
-.folded #adminmenu .wp-has-current-submenu.menu-top-last {
-       margin-bottom: 0;
-}
-
-.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-       margin-top: 4px;
-}
-
-.folded #adminmenu .wp-submenu ul {
-       border-width: 0 0 0 1px;
-       border-style: solid;
-}
-
-.folded #adminmenu .wp-submenu a {
-       padding-left: 10px;
-}
-
-.folded #adminmenu a.wp-has-submenu {
-       margin-left: 40px;
-}
-
-#adminmenu .wp-menu-toggle {
-       width: 18px;
-       clear: right;
-       float: right;
-       margin: 1px 0 0;
-       height: 27px;
-       padding: 1px 2px 0 0;
-       cursor: pointer;
-}
-
-#adminmenu .wp-menu-image a {
-       height: 24px;
-}
-
-#adminmenu .awaiting-mod,
-#adminmenu span.update-plugins,
-#sidemenu li a span.update-plugins {
-       position: absolute;
-       font-family: sans-serif;
-       font-size: 9px;
-       line-height: 17px;
-       font-weight: bold;
-       margin-top: 1px;
-       margin-left: 7px;
-       -webkit-border-radius: 10px;
-       border-radius: 10px;
-}
-
-#adminmenu li .awaiting-mod span,
-#adminmenu li span.update-plugins span,
-#sidemenu li a span.update-plugins span {
-       display: block;
-       padding: 0 6px;
-}
-
-#adminmenu li span.count-0,
-#sidemenu li a .count-0 {
-       display: none;
-}
-
-#collapse-menu {
-       font-size: 12px;
-       line-height: 34px;
-}
-
-.folded #collapse-menu span {
-       display: none;
-}
-
-#collapse-button,
-#collapse-button div {
-       width: 15px;
-       height: 15px;
-}
-
-#collapse-button {
-       float: left;
-       margin: 8px 6px;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 10px;
-       border-radius: 10px;
-}
-
-/* Auto-folding of the admin menu */
-@media only screen and (max-width: 900px) {
-       #wpcontent,
-       #footer {
-               margin-left: 52px;
-       }
-
-       #adminmenuback,
-       #adminmenuwrap,
-       #adminmenu,
-       #adminmenu li.menu-top {
-               width: 32px;
-       }
-
-       #adminmenu .wp-has-current-submenu .wp-submenu {
-               display: none;
-               position: absolute;
-               width: 145px;
-               z-index: 999;
-               overflow: hidden;
-       }
-
-       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
-               display: block;
-       }
-
-       #adminmenu li .wp-submenu,
-       #adminmenu .wp-has-current-submenu .wp-submenu {
-               top: -5px;
-               left: 26px;
-       }
-
-       #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
-       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
-               padding: 0 8px 8px 0;
-       }
-
-       #adminmenu div.wp-submenu-head {
-               display: block;
-       }
-
-       #adminmenu a.menu-top,
-       #adminmenu div.wp-menu-toggle {
-               display: none;
-       }
-
-       #adminmenu div.wp-menu-image {
-               width: 30px;
-       }
-
-       #adminmenu .wp-not-current-submenu li a {
-               padding-left: 12px;
-       }
-
-       #adminmenu li li {
-               margin-left: 0;
-       }
-
-       #adminmenu li li a {
-               padding-left: 0;
-       }
-
-       .wp-menu-arrow {
-               -moz-transform:    translate( 33px );
-               -webkit-transform: translate( 33px );
-               -o-transform:      translate( 33px );
-               -ms-transform:     translate( 33px );
-               transform:         translate( 33px );
-       }
-
-       #adminmenu li.menu-top:hover .wp-menu-arrow {
-               display: none;
-       }
-
-       #adminmenu li.current:hover .wp-menu-arrow,
-       #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow {
-               display: block;
-               z-index: 125;
-       }
-
-       #adminmenu li.menu-top {
-               border-width: 1px 0;
-               border-style: solid none;
-       }
-
-       #adminmenu .wp-submenu .wp-submenu-wrap {
-               margin-top: 3px;
-       }
-
-       #adminmenu .wp-has-current-submenu {
-               margin-bottom: 1px;
-       }
-
-       #adminmenu .wp-has-current-submenu.menu-top-last {
-               margin-bottom: 0;
-       }
-
-       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
-               margin-top: 4px;
-       }
-
-       #adminmenu .wp-submenu ul {
-               border-width: 0 0 0 1px;
-               border-style: solid;
-       }
-
-       #adminmenu .wp-submenu a {
-               padding-left: 10px;
-       }
-
-       #adminmenu a.wp-has-submenu {
-               margin-left: 40px;
-       }
-
-       #collapse-menu {
-               display: none;
-       }
-}
-
-/* List table styles */
-.post-com-count-wrapper {
-       min-width: 22px;
-       font-family: sans-serif;
-}
-
-.post-com-count {
-       height: 1.3em;
-       line-height: 1.1em;
-       display: block;
-       text-decoration: none;
-       padding: 0 0 6px;
-       cursor: pointer;
-       background-position: center -80px;
-       background-repeat: no-repeat;
-}
-
-.post-com-count span {
-       font-size: 11px;
-       font-weight: bold;
-       height: 1.4em;
-       line-height: 1.4em;
-       min-width: 0.7em;
-       padding: 0 6px;
-       display: inline-block;
-       -webkit-border-radius: 5px;
-       border-radius: 5px;
-}
-
-strong .post-com-count {
-       background-position: center -55px;
-}
-
-.post-com-count:hover {
-       background-position: center -3px;
-}
-
-.column-response .post-com-count {
-       float: left;
-       margin-right: 5px;
-       text-align: center;
-}
-
-.response-links {
-       float: left;
-}
-
-#the-comment-list .attachment-80x60 {
-       padding: 4px 8px;
-}
-
-
-/*------------------------------------------------------------------------------
-  8.0 - Layout Blocks
-------------------------------------------------------------------------------*/
-
-html.wp-toolbar {
-       padding-top: 28px;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
-.narrow {
-       width: 70%;
-       margin-bottom: 40px;
-}
-
-.narrow p {
-       line-height: 150%;
-}
-
-.widefat th,
-.widefat td {
-       overflow: hidden;
-}
-
-.widefat th {
-       font-weight: normal;
-}
-
-.widefat td p {
-       margin: 2px 0 0.8em;
-}
-
-.widefat .column-comment p {
-       margin: 0.6em 0;
-}
-
-/* Screens with postboxes */
-.postbox-container {
-       float: left;
-}
-
-#dashboard-widgets.columns-1 .postbox-container {
-       width: 100%;
-}
-
-#dashboard-widgets.columns-2 .postbox-container {
-       width: 49.5%;
-}
-
-#dashboard-widgets.columns-2 #postbox-container-2,
-#dashboard-widgets.columns-2 #postbox-container-3,
-#dashboard-widgets.columns-2 #postbox-container-4 {
-       float: right;
-       width: 50.5%;
-}
-
-#dashboard-widgets.columns-3 .postbox-container {
-       width: 33.5%;
-}
-
-#dashboard-widgets.columns-3 #postbox-container-1 {
-       width: 33%;
-}
-
-#dashboard-widgets.columns-3 #postbox-container-3,
-#dashboard-widgets.columns-3 #postbox-container-4 {
-       float: right;
-}
-
-#dashboard-widgets.columns-4 .postbox-container {
-       width: 25%;
-}
-
-.postbox-container .meta-box-sortables {
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       -ms-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
-.metabox-holder .postbox-container .empty-container {
-       border: 3px dashed #CCCCCC;
-       height: 250px;
-}
-
-.metabox-holder.columns-1 .postbox-container .empty-container,
-.columns-2 #postbox-container-3 .empty-container,
-.columns-2 #postbox-container-4 .empty-container,
-.columns-3 #postbox-container-4 .empty-container {
-       border: 0 none;
-       height: 0;
-       min-height: 0;
-}
-
-#poststuff {
-       padding-top: 10px;
-}
-
-#poststuff #post-body {
-       padding: 0;
-}
-
-#post-body-content {
-       width: 100%;
-       float: left;
-}
-
-#poststuff .postbox-container {
-       width: 100%;
-}
-
-#poststuff #post-body.columns-2 {
-       margin-right: 300px;
-}
-
-#post-body.columns-2 #postbox-container-1 {
-       float: right;
-       margin-right: -300px;
-       width: 280px;
-}
-
-#post-body.columns-2 #side-sortables {
-       min-height: 250px;
-}
-
-/* one column on the dash */
-@media only screen and (max-width: 799px) {
-       #wpbody-content #dashboard-widgets .postbox-container {
-               width: 100%;
-       }
-
-       #wpbody-content .metabox-holder .postbox-container .empty-container {
-               border: 0 none;
-               height: 0;
-               min-height: 0;
-       }
-}
-
-/* two columns on the dash, but keep the setting if one is selected */
-@media only screen and (min-width: 800px) and (max-width: 1200px) {
-       #wpbody-content #dashboard-widgets .postbox-container {
-               width: 49.5%;
-       }
-
-       #wpbody-content #dashboard-widgets #postbox-container-2,
-       #wpbody-content #dashboard-widgets #postbox-container-3,
-       #wpbody-content #dashboard-widgets #postbox-container-4 {
-               float: right;
-               width: 50.5%;
-       }
-
-       #dashboard-widgets #postbox-container-3 .empty-container,
-       #dashboard-widgets #postbox-container-4 .empty-container {
-               border: 0 none;
-               height: 0;
-               min-height: 0;
-       }
-
-       #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container {
-               width: 100%;
-       }
-
-       #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container {
-               border: 0 none;
-               height: 0;
-               min-height: 0;
-       }
-
-       /* show the radio buttons for column prefs only for one or two columns */
-       .index-php .screen-layout,
-       .index-php .columns-prefs {
-               display: block;
-       }
-
-       .columns-prefs .columns-prefs-3,
-       .columns-prefs .columns-prefs-4 {
-               display: none;
-       }
-}
-
-/* one column on the post write/edit screen */
-@media only screen and (max-width: 850px) {
-       #wpbody-content #poststuff #post-body {
-               margin: 0;
-       }
-
-       #wpbody-content #post-body.columns-2 #postbox-container-1 {
-               margin-right: 0;
-               width: 100%;
-       }
-
-       #poststuff #postbox-container-1 .empty-container,
-       #poststuff #postbox-container-1 #side-sortables:empty {
-               border: 0 none;
-               height: 0;
-               min-height: 0;
-       }
-
-       #poststuff #post-body.columns-2 #side-sortables {
-               min-height: 0;
-       }
-
-       /* hide the radio buttons for column prefs */
-       .screen-layout,
-       .columns-prefs {
-               display: none;
-       }
-}
-
-.postbox .hndle {
-       cursor: move;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.postbox.closed .hndle {
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-.hndle a {
-       font-size: 11px;
-       font-weight: normal;
-}
-
-.postbox .handlediv {
-       float: right;
-       width: 27px;
-       height: 30px;
-       cursor: pointer;
-}
-
-.sortable-placeholder {
-       border-width: 1px;
-       border-style: dashed;
-       margin-bottom: 20px;
-}
-
-.widget,
-.postbox,
-.stuffbox {
-       margin-bottom: 20px;
-       padding: 0;
-       border-width: 1px;
-       border-style: solid;
-       line-height: 1;
-}
-
-.widget .widget-top,
-.postbox h3,
-.stuffbox h3 {
-       margin-top: 1px;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-       cursor: move;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       user-select: none;
-}
-
-.stuffbox h3 {
-       cursor: auto;
-}
-
-.postbox .inside,
-.stuffbox .inside {
-       padding: 0 10px;
-       line-height: 1.4em;
-}
-
-.postbox .inside {
-       margin: 10px 0;
-       position: relative;
-}
-
-.postbox.closed h3 {
-       border: none;
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-}
-
-.postbox table.form-table {
-       margin-bottom: 0;
-}
-
-.temp-border {
-       border: 1px dotted #ccc;
-}
-
-.columns-prefs label {
-       padding: 0 5px;
-}
-
-
-/*------------------------------------------------------------------------------
-  9.0 - Dashboard
-------------------------------------------------------------------------------*/
-
-#dashboard-widgets-wrap {
-       margin: 0 -8px;
-}
-
-#wpbody-content .metabox-holder {
-       padding-top: 10px;
-}
-
-#dashboard-widgets .meta-box-sortables {
-       margin: 0 8px;
-}
-
-#dashboard_recent_comments div.undo {
-       border-top-style: solid;
-       border-top-width: 1px;
-       margin: 0 -10px;
-       padding: 3px 8px;
-       font-size: 11px;
-}
-
-#the-comment-list td.comment p.comment-author {
-       margin-top: 0;
-       margin-left: 0;
-}
-
-#the-comment-list p.comment-author img {
-       float: left;
-       margin-right: 8px;
-}
-
-#the-comment-list p.comment-author strong a {
-       border: none;
-}
-
-#the-comment-list td {
-       vertical-align: top;
-}
-
-#the-comment-list td.comment {
-       word-wrap: break-word;
-}
-
-/* Welcome Panel */
-.welcome-panel {
-       margin: 20px 8px;
-       padding: 30px 10px 20px;
-       border-width: 1px 0;
-       border-style: solid;
-       position: relative;
-       line-height: 1.6em;
-       overflow: auto;
-}
-
-.welcome-panel h3 {
-       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
-       font-size: 32px;
-       font-weight: normal;
-       line-height: 1.2;
-       margin: 0.1em 0 0.8em;
-}
-.welcome-panel h4 {
-       font-size: 14px;
-}
-
-.welcome-panel .welcome-panel-close {
-       position: absolute;
-       top: 0;
-       right: 10px;
-       padding: 8px 3px;
-       font-size: 13px;
-       text-decoration: none;
-}
-
-.welcome-panel .welcome-panel-close:before {
-       background: url('../images/xit.gif') 0 17% no-repeat;
-       content: ' ';
-       height: 100%;
-       width: 10px;
-       left: -12px;
-       position: absolute;
-}
-
-.welcome-panel .welcome-panel-close:hover:before {
-       background-position: 100% 17%;
-}
-
-.welcome-panel .wp-badge {
-       float: left;
-       margin-bottom: 20px;
-}
-
-.welcome-panel-content {
-       max-width: 1500px;
-}
-
-.welcome-panel-content .about-description,
-.welcome-panel h3 {
-       margin-left: 190px;
-}
-
-.welcome-panel p.welcome-panel-dismiss {
-       clear: both;
-       padding: 1em 0 0 0;
-}
-
-.welcome-panel .welcome-panel-column-container {
-       clear: both;
-       overflow: hidden;
-       position: relative;
-       padding-left: 26px;
-}
-
-.welcome-panel .welcome-panel-column {
-       margin: 0 5% 0 -25px;
-       padding-left: 25px;
-       width: 30%;
-       min-width: 200px;
-       float: left;
-}
-
-.welcome-panel .welcome-panel-column.welcome-panel-last {
-       margin-right: 0;
-}
-
-.welcome-panel h4 .icon16 {
-       margin-left: -32px;
-}
-
-.welcome-panel .welcome-panel-column ul {
-       margin: 1.6em 1em 1em 1.3em;
-}
-
-.welcome-panel .welcome-panel-column li {
-       list-style-type: disc;
-       padding-left: 2px;
-}
-
-
-/*------------------------------------------------------------------------------
-  10.0 - List Posts (/Pages/etc)
-------------------------------------------------------------------------------*/
-
-table.fixed {
-       table-layout: fixed;
-}
-
-.fixed .column-rating,
-.fixed .column-visible {
-       width: 8%;
-}
-
-.fixed .column-date,
-.fixed .column-parent,
-.fixed .column-links {
-       width: 10%;
-}
-
-.fixed .column-response,
-.fixed .column-author,
-.fixed .column-categories,
-.fixed .column-tags,
-.fixed .column-rel,
-.fixed .column-role {
-       width: 15%;
-}
-
-.fixed .column-comments {
-       width: 4em;
-       padding: 8px 0;
-       text-align: left;
-}
-
-.fixed .column-comments .vers {
-       padding-left: 3px;
-}
-
-.fixed .column-comments a {
-       float: left;
-}
-
-.fixed .column-slug {
-       width: 25%;
-}
-
-.fixed .column-posts {
-       width: 10%;
-}
-
-.fixed .column-icon {
-       width: 80px;
-}
-
-#comments-form .fixed .column-author {
-       width: 20%;
-}
-
-#commentsdiv.postbox .inside {
-       margin: 0;
-       padding: 0;
-}
-
-#commentsdiv .inside .row-actions {
-       line-height:18px;
-}
-
-#commentsdiv .inside .column-author {
-       width: 25%;
-}
-
-#commentsdiv .column-comment p {
-       margin: 0.6em 0;
-       padding: 0;
-}
-
-#commentsdiv #replyrow td {
-       padding: 0;
-}
-
-#commentsdiv p {
-       padding: 8px 10px;
-       margin: 0;
-}
-
-#commentsdiv #add-new-comment {
-       border-width: 0 0 1px;
-       border-style: none none solid;
-}
-
-#commentsdiv .comments-box {
-       border: 0 none;
-}
-
-#commentsdiv .comments-box thead th {
-       background: transparent;
-       padding: 0 7px 4px;
-       font-style: italic;
-}
-
-#commentsdiv .comments-box tr:last-child td {
-       border-bottom: 0 none;
-}
-
-#commentsdiv img.waiting {
-       padding-left: 5px;
-}
-
-.sorting-indicator {
-       display: none;
-       width: 7px;
-       height: 4px;
-       margin-top: 8px;
-       margin-left: 7px;
-       background-image: url(../images/sort.gif);
-       background-repeat: no-repeat;
-}
-
-.fixed .column-comments .sorting-indicator {
-       margin-top: 3px;
-}
-
-.widefat th.sortable,
-.widefat th.sorted {
-       padding: 0;
-}
-
-th.sortable a,
-th.sorted a {
-       display: block;
-       overflow: hidden;
-       padding: 7px 7px 8px;
-}
-
-.fixed .column-comments.sortable a,
-.fixed .column-comments.sorted a {
-       padding: 8px 0;
-}
-
-th.sortable a span,
-th.sorted a span {
-       float: left;
-       cursor: pointer;
-}
-
-th.sorted.asc .sorting-indicator,
-th.desc:hover span.sorting-indicator {
-       display: block;
-       background-position: 0 0;
-}
-
-th.sorted.desc .sorting-indicator,
-th.asc:hover span.sorting-indicator {
-       display: block;
-       background-position: -7px 0;
-}
-
-/* Bulk Actions */
-.tablenav-pages a {
-       border-bottom-style: solid;
-       border-bottom-width: 2px;
-       font-weight: bold;
-       margin-right: 1px;
-       padding: 0 2px;
-}
-.tablenav-pages .current-page {
-       text-align: center;
-}
-.tablenav-pages .next-page {
-       margin-left: 2px;
-}
-
-.tablenav a.button-secondary {
-       display: block;
-       margin: 3px 8px 0 0;
-}
-
-.tablenav {
-       clear: both;
-       height: 30px;
-       margin: 6px 0 4px;
-       vertical-align: middle;
-}
-
-.tablenav.themes {
-       max-width: 98%;
-}
-
-.tablenav .tablenav-pages {
-       float: right;
-       display: block;
-       cursor: default;
-       height: 30px;
-       line-height: 30px;
-       font-size: 12px;
-}
-
-.tablenav .no-pages,
-.tablenav .one-page .pagination-links {
-       display: none;
-}
-
-.tablenav .tablenav-pages a,
-.tablenav-pages span.current  {
-       text-decoration: none;
-       padding: 3px 6px;
-}
-
-.tablenav .tablenav-pages a.disabled:hover ,
-.tablenav .tablenav-pages a.disabled:active {
-       cursor: default;
-}
-
-.tablenav .displaying-num {
-       margin-right: 10px;
-       font-size: 12px;
-       font-style: italic;
-}
-
-.tablenav .actions {
-       padding: 2px 8px 0 0;
-}
-
-.tablenav .delete {
-       margin-right: 20px;
-}
-
-.view-switch {
-       float: right;
-       margin: 6px 8px 0;
-}
-
-.view-switch a {
-       text-decoration: none;
-}
-
-.filter {
-       float: left;
-       margin: -5px 0 0 10px;
-}
-
-.filter .subsubsub {
-       margin-left: -10px;
-       margin-top: 13px;
-}
-.screen-per-page {
-       width: 4em;
-}
-
-#posts-filter fieldset {
-       float: left;
-       margin: 0 1.5ex 1em 0;
-       padding: 0;
-}
-
-#posts-filter fieldset legend {
-       padding: 0 0 .2em 1px;
-}
-
-span.post-state-format {
-       font-weight: normal;
-}
-
-
-/*------------------------------------------------------------------------------
-  10.1 - Inline Editing
-------------------------------------------------------------------------------*/
-
-/*
-.quick-edit* is for Quick Edit
-.bulk-edit* is for Bulk Edit
-.inline-edit* is for everything
-*/
-
-/*     Layout */
-
-#wpbody-content .inline-edit-row fieldset {
-       font-size: 12px;
-       float: left;
-       margin: 0;
-       padding: 0;
-       width: 100%;
-}
-
-tr.inline-edit-row td,
-#wpbody-content .inline-edit-row fieldset .inline-edit-col {
-       padding: 0 0.5em;
-}
-
-#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
-       border-width: 0 0 0 1px;
-       border-style: none none none solid;
-}
-
-#wpbody-content .quick-edit-row-post .inline-edit-col-left {
-       width: 40%;
-}
-
-#wpbody-content .quick-edit-row-post .inline-edit-col-right {
-       width: 39%;
-}
-
-#wpbody-content .inline-edit-row-post .inline-edit-col-center {
-       width: 20%;
-}
-
-#wpbody-content .quick-edit-row-page .inline-edit-col-left {
-       width: 50%;
-}
-
-#wpbody-content .quick-edit-row-page .inline-edit-col-right,
-#wpbody-content .bulk-edit-row-post .inline-edit-col-right {
-       width: 49%;
-}
-
-#wpbody-content .bulk-edit-row .inline-edit-col-left {
-       width: 30%;
-}
-
-#wpbody-content .bulk-edit-row-page .inline-edit-col-right {
-       width: 69%;
-}
-
-#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
-       float: right;
-       width: 69%;
-}
-
-#wpbody-content .inline-edit-row-page .inline-edit-col-right {
-       margin-top: 27px;
-}
-
-.inline-edit-row fieldset .inline-edit-group {
-       clear: both;
-}
-
-.inline-edit-row fieldset .inline-edit-group:after {
-       content: ".";
-       display: block;
-       height: 0;
-       clear: both;
-       visibility: hidden;
-}
-
-.inline-edit-row p.submit {
-       clear: both;
-       padding: 0.5em;
-       margin: 0.5em 0 0;
-}
-
-.inline-edit-row span.error {
-       line-height: 22px;
-       margin: 0 15px;
-       padding: 3px 5px;
-}
-
-/*     Positioning */
-.inline-edit-row h4 {
-       margin: .2em 0;
-       padding: 0;
-       line-height: 23px;
-}
-.inline-edit-row fieldset span.title,
-.inline-edit-row fieldset span.checkbox-title {
-       margin: 0;
-       padding: 0;
-       line-height: 27px;
-}
-
-.inline-edit-row fieldset label,
-.inline-edit-row fieldset span.inline-edit-categories-label {
-       display: block;
-       margin: .2em 0;
-}
-
-.inline-edit-row fieldset label.inline-edit-tags {
-       margin-top: 0;
-}
-
-.inline-edit-row fieldset label.inline-edit-tags span.title {
-       margin: .2em 0;
-}
-
-.inline-edit-row fieldset label span.title {
-       display: block;
-       float: left;
-       width: 5em;
-}
-
-.inline-edit-row fieldset label span.input-text-wrap {
-       display: block;
-       margin-left: 5em;
-}
-
-.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
-       width: auto;
-       padding-right: 0.5em;
-}
-
-.inline-edit-row .input-text-wrap input[type=text] {
-       width: 100%;
-}
-
-.inline-edit-row fieldset label input[type=checkbox] {
-       vertical-align: text-bottom;
-}
-
-.inline-edit-row fieldset label textarea {
-       width: 100%;
-       height: 4em;
-}
-
-#wpbody-content .bulk-edit-row fieldset .inline-edit-group label {
-       max-width: 50%;
-}
-
-#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
-       margin-right: 0.5em
-}
-
-.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input {
-       width: 6em;
-}
-
-/*     Styling */
-.inline-edit-row h4 {
-       text-transform: uppercase;
-}
-
-.inline-edit-row fieldset span.title,
-.inline-edit-row fieldset span.checkbox-title {
-       font-style: italic;
-       line-height: 1.8em;
-}
-
-/*     Specific Elements */
-.inline-edit-row fieldset input[type="text"],
-.inline-edit-row fieldset textarea {
-       border-style: solid;
-       border-width: 1px;
-}
-
-.inline-edit-row fieldset .inline-edit-date {
-       float: left;
-}
-
-.inline-edit-row fieldset input[name=jj],
-.inline-edit-row fieldset input[name=hh],
-.inline-edit-row fieldset input[name=mn] {
-       font-size: 12px;
-       width: 2.1em;
-}
-
-.inline-edit-row fieldset input[name=aa] {
-       font-size: 12px;
-       width: 3.5em;
-}
-
-.inline-edit-row fieldset label input.inline-edit-password-input {
-       width: 8em;
-}
-
-.inline-edit-row .catshow,
-.inline-edit-row .cathide {
-       cursor: pointer;
-}
-
-ul.cat-checklist {
-       height: 12em;
-       border-style: solid;
-       border-width: 1px;
-       overflow-y: scroll;
-       padding: 0 5px;
-       margin: 0;
-}
-
-#bulk-titles {
-       display: block;
-       height: 12em;
-       border-style: solid;
-       border-width: 1px;
-       overflow-y: scroll;
-       padding: 0 5px;
-       margin: 0 0 5px;
-}
-
-.inline-edit-row fieldset ul.cat-checklist li,
-.inline-edit-row fieldset ul.cat-checklist input {
-       margin: 0;
-}
-
-.inline-edit-row fieldset ul.cat-checklist label,
-.inline-edit-row .catshow,
-.inline-edit-row .cathide,
-.inline-edit-row #bulk-titles div {
-       font-family: sans-serif;
-       font-style: normal;
-       font-size: 11px;
-}
-
-table .inline-edit-row fieldset ul.cat-hover {
-       height: auto;
-       max-height: 30em;
-       overflow-y: auto;
-       position: absolute;
-}
-
-.inline-edit-row fieldset label input.inline-edit-menu-order-input {
-       width: 3em;
-}
-
-.inline-edit-row fieldset label input.inline-edit-slug-input {
-       width: 75%;
-}
-
-.quick-edit-row-post fieldset label.inline-edit-status {
-       float: left;
-}
-
-#bulk-titles {
-       line-height: 140%;
-}
-#bulk-titles div {
-       margin: 0.2em 0.3em;
-}
-
-#bulk-titles div a {
-       cursor: pointer;
-       display: block;
-       float: left;
-       height: 10px;
-       margin: 3px 3px 0 -2px;
-       overflow: hidden;
-       position: relative;
-       text-indent: -9999px;
-       width: 10px;
-}
-
-
-/*------------------------------------------------------------------------------
-  11.0 - Write/Edit Post Screen
-------------------------------------------------------------------------------*/
-
-#titlediv {
-       position: relative;
-       margin-bottom: 20px;
-}
-#titlediv label { cursor: text; }
-
-#titlediv div.inside {
-       margin: 0;
-}
-
-#poststuff #titlewrap {
-       border: 0;
-       padding: 0;
-}
-
-#titlediv #title {
-       padding: 3px 8px;
-       font-size: 1.7em;
-       line-height: 100%;
-       width: 100%;
-       outline: none;
-}
-
-#titlediv #title-prompt-text,
-#wp-fullscreen-title-prompt-text {
-       color: #bbb;
-       position: absolute;
-       font-size: 1.7em;
-       padding: 8px 10px;
-}
-
-#wp-fullscreen-title-prompt-text {
-       left: 0;
-       padding: 11px;
-}
-
-#poststuff .inside-submitbox,
-#side-sortables .inside-submitbox {
-       margin: 0 3px;
-       font-size: 11px;
-}
-
-input#link_description,
-input#link_url {
-       width: 98%;
-}
-
-#pending {
-       background: 0 none;
-       border: 0 none;
-       padding: 0;
-       font-size: 11px;
-       margin-top: -1px;
-}
-
-#edit-slug-box {
-       height: 1em;
-       margin-top: 8px;
-       padding: 0 10px;
-}
-
-#editable-post-name-full {
-       display: none;
-}
-
-#editable-post-name input {
-       width: 16em;
-}
-
-.postarea h3 label {
-       float: left;
-}
-
-#submitpost #ajax-loading,
-#submitpost .ajax-loading {
-       vertical-align: middle;
-}
-
-#wpcontent .ajax-loading {
-       visibility: hidden;
-}
-
-.submitbox .submit {
-       text-align: left;
-       padding: 12px 10px 10px;
-       font-size: 11px;
-}
-
-.submitbox .submitdelete {
-       text-decoration: none;
-       padding: 1px 2px;
-}
-
-.submitbox .submitdelete,
-.submitbox .submit a:hover {
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-}
-
-.submitbox .submit input {
-       margin-bottom: 8px;
-       margin-right: 4px;
-       padding: 6px;
-}
-
-.inside-submitbox #post_status {
-       margin: 2px 0 2px -2px;
-}
-
-#post-status-select, #post-format {
-       line-height: 2.5em;
-       margin-top: 3px;
-}
-
-/* Post Screen */
-#post-body #normal-sortables {
-       min-height: 50px;
-}
-
-.postbox {
-       position: relative;
-       min-width: 255px;
-}
-
-#trackback_url {
-       width: 99%;
-}
-
-#normal-sortables .postbox .submit {
-       background: transparent none;
-       border: 0 none;
-       float: right;
-       padding: 0 12px;
-       margin:0;
-}
-
-.category-add input[type="text"],
-.category-add select {
-       width: 100%;
-       max-width: 260px;
-}
-
-.press-this #side-sortables .category-tabs li,
-ul.category-tabs li,
-#side-sortables .add-menu-item-tabs li,
-.wp-tab-bar li {
-       display: inline;
-       line-height: 1.35em;
-}
-
-.no-js .category-tabs li.hide-if-no-js {
-       display: none;
-}
-
-.category-tabs a,
-#side-sortables .add-menu-item-tabs a,
-.wp-tab-bar a {
-       text-decoration: none;
-}
-
-.category-tabs {
-       margin: 8px 0 3px;
-}
-
-#category-adder h4 {
-       margin: 10px 0;
-}
-
-#side-sortables .add-menu-item-tabs,
-.wp-tab-bar {
-       margin-bottom: 3px;
-}
-
-#normal-sortables .postbox #replyrow .submit {
-       float: none;
-       margin: 0;
-       padding: 0 7px 5px;
-}
-
-#side-sortables .submitbox .submit input,
-#side-sortables .submitbox .submit .preview,
-#side-sortables .submitbox .submit a.preview:hover {
-       border: 0 none;
-}
-
-#side-sortables .inside-submitbox .insidebox,
-.stuffbox .insidebox {
-       margin: 11px 0;
-}
-
-ul.category-tabs,
-ul.add-menu-item-tabs,
-ul.wp-tab-bar {
-       margin-top: 12px;
-}
-
-ul.category-tabs li,
-ul.add-menu-item-tabs li.tabs,
-.wp-tab-active {
-       border-style: solid solid none;
-       border-width: 1px 1px 0;
-}
-
-#post-body .add-menu-item-tabs li.tabs {
-       border-style: solid none solid solid;
-       border-width: 1px 0 1px 1px;
-       margin-right: -1px;
-}
-
-ul.category-tabs li,
-ul.add-menu-item-tabs li,
-ul.wp-tab-bar li {
-       padding: 3px 5px 5px;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-/* positioning etc. */
-form#tags-filter {
-       position: relative;
-}
-
-/* Edit posts */
-td.post-title strong,
-td.plugin-title strong {
-       display: block;
-       margin-bottom: .2em;
-}
-
-td.post-title p,
-td.plugin-title p {
-       margin: 6px 0;
-}
-
-/* Global classes */
-.wp-hidden-children .wp-hidden-child,
-.ui-tabs-hide {
-       display: none;
-}
-
-.commentlist .avatar {
-       vertical-align: text-top;
-}
-
-#post-body .tagsdiv #newtag {
-       margin-right: 5px;
-       width: 16em;
-}
-
-#side-sortables input#post_password {
-       width: 94%
-}
-
-#side-sortables .tagsdiv #newtag {
-       width: 68%;
-}
-
-#post-status-info {
-       border-width: 0 1px 1px;
-       border-style: none solid solid;
-       width: 100%;
-       -webkit-border-bottom-left-radius: 3px;
-       -webkit-border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-#post-status-info td {
-       font-size: 12px;
-}
-
-.autosave-info {
-       padding: 2px 15px;
-       text-align: right;
-}
-
-#editorcontent #post-status-info {
-       border: none;
-}
-
-#post-body .wp_themeSkin .mceStatusbar a.mceResize {
-       display: block;
-       background: transparent url(../images/resize.gif) no-repeat scroll right bottom;
-       width: 12px;
-       cursor: se-resize;
-       margin: 0 2px;
-       position: relative;
-       top: -2px;
-}
-
-#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize {
-       top: 20px;
-}
-
-#wp-word-count {
-       display: block;
-       padding: 2px 10px;
-}
-
-#timestampdiv select {
-       height: 20px;
-       line-height: 14px;
-       padding: 0;
-       vertical-align: top;
-}
-
-#aa, #jj, #hh, #mn {
-       padding: 1px;
-       font-size: 12px;
-}
-
-#jj, #hh, #mn {
-       width: 2em;
-}
-
-#aa {
-       width: 3.4em;
-}
-
-.curtime #timestamp {
-       background-repeat: no-repeat;
-       background-position: left top;
-       padding-left: 18px;
-}
-
-#timestampdiv {
-       padding-top: 5px;
-       line-height: 23px;
-}
-
-#timestampdiv p {
-       margin: 8px 0 6px;
-}
-
-#timestampdiv input {
-       border-width: 1px;
-       border-style: solid;
-}
-
-
-/*------------------------------------------------------------------------------
-  11.1 - Custom Fields
-------------------------------------------------------------------------------*/
-
-#postcustomstuff .updatemeta,
-#postcustomstuff .deletemeta {
-       margin: auto;
-}
-
-#postcustomstuff thead th {
-       padding: 5px 8px 8px;
-}
-
-#postcustom #postcustomstuff .submit {
-       border: 0 none;
-       float: none;
-       padding: 5px 8px;
-}
-
-#side-sortables #postcustom #postcustomstuff .submit {
-       padding: 0 5px;
-}
-
-#side-sortables #postcustom #postcustomstuff td.left input {
-       margin: 3px 3px 0;
-}
-
-#side-sortables #postcustom #postcustomstuff #the-list textarea {
-       height: 85px;
-       margin: 3px;
-}
-
-#postcustomstuff table {
-       margin: 0;
-       width: 100%;
-       border-width: 1px;
-       border-style: solid;
-       border-spacing: 0;
-}
-
-#postcustomstuff table input,
-#postcustomstuff table select,
-#postcustomstuff table textarea {
-       width: 95%;
-       margin: 8px 0 8px 8px;
-}
-
-#postcustomstuff th.left,
-#postcustomstuff td.left {
-       width: 38%;
-}
-
-#postcustomstuff #newmeta .submit {
-       padding: 0 8px;
-}
-
-#postcustomstuff .submit input,
-#postcustomstuff table #addmetasub {
-       width: auto;
-}
-
-#postcustomstuff #newmetaleft {
-       vertical-align: top;
-}
-
-#postcustomstuff #newmetaleft a {
-       padding: 0 10px;
-       text-decoration: none;
-}
-
-
-/*------------------------------------------------------------------------------
-  11.2 - Post Revisions
-------------------------------------------------------------------------------*/
-
-table.diff {
-       width: 100%;
-}
-
-table.diff col.content {
-       width: 50%;
-}
-
-table.diff tr {
-       background-color: transparent;
-}
-
-table.diff td, table.diff th {
-       padding: .5em;
-       font-family: Consolas, Monaco, monospace;
-       border: none;
-}
-
-table.diff .diff-deletedline del, table.diff .diff-addedline ins {
-       text-decoration: none;
-}
-
-
-/*------------------------------------------------------------------------------
-  12.0 - Categories
-------------------------------------------------------------------------------*/
-
-.category-adder {
-       margin-left: 120px;
-       padding: 4px 0;
-}
-
-.category-adder h4 {
-       margin: 0 0 8px;
-}
-
-#side-sortables .category-adder {
-       margin: 0;
-}
-
-#post-body ul.add-menu-item-tabs {
-       float: left;
-       width: 120px;
-       text-align: right;
-       /* Negative margin for the sake of those without JS: all tabs display */
-       margin: 0 -120px 0 5px;
-       padding: 0;
-}
-
-#post-body ul.add-menu-item-tabs li {
-       padding: 8px;
-}
-
-#post-body ul.add-menu-item-tabs li.tabs {
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-.wp-tab-panel,
-.categorydiv div.tabs-panel,
-.customlinkdiv div.tabs-panel,
-.posttypediv div.tabs-panel,
-.taxonomydiv div.tabs-panel {
-       height: 200px;
-       overflow: auto;
-       padding: 0.5em 0.9em;
-       border-style: solid;
-       border-width: 1px;
-}
-
-.nav-menus-php .customlinkdiv div.tabs-panel,
-.nav-menus-php .posttypediv div.tabs-panel,
-.nav-menus-php .taxonomydiv div.tabs-panel {
-       height: auto;
-       max-height: 205px;
-}
-
-div.tabs-panel-active {
-       display:block;
-}
-
-div.tabs-panel-inactive {
-       display:none;
-}
-
-.colunms-1 .categorydiv div.tabs-panel,
-.taxonomy div.tabs-panel {
-       margin: 0 5px 0 125px;
-}
-
-.customlinkdiv ul,
-.posttypediv ul,
-.taxonomydiv ul {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-}
-
-#front-page-warning,
-#front-static-pages ul,
-ul.export-filters,
-.inline-editor ul.cat-checklist ul,
-.categorydiv ul.categorychecklist ul,
-.customlinkdiv ul.categorychecklist ul,
-.posttypediv ul.categorychecklist ul,
-.taxonomydiv ul.categorychecklist ul {
-       margin-left: 18px;
-}
-
-ul.categorychecklist li {
-       margin: 0;
-       padding: 0;
-       line-height: 19px;
-       word-wrap: break-word;
-}
-
-.categorydiv .tabs-panel,
-.customlinkdiv .tabs-panel,
-.posttypediv .tabs-panel,
-.taxonomydiv .tabs-panel {
-       border-width: 3px;
-       border-style: solid;
-}
-
-.form-wrap p,
-.form-wrap label {
-       font-size: 11px;
-}
-
-.form-wrap label {
-       display: block;
-       padding: 2px;
-       font-size: 12px;
-}
-
-.form-field input,
-.form-field textarea {
-       border-style: solid;
-       border-width: 1px;
-       width: 95%;
-}
-
-p.description,
-.form-wrap p {
-       margin: 2px 0 5px;
-}
-
-p.help,
-p.description,
-span.description,
-.form-wrap p {
-       font-size: 12px;
-       font-style: italic;
-       font-family: sans-serif;
-}
-
-.form-wrap .form-field {
-       margin: 0 0 10px;
-       padding: 8px;
-}
-
-.col-wrap h3 {
-       margin: 12px 0;
-       font-size: 1.1em;
-}
-
-.col-wrap p.submit {
-       margin-top: -10px;
-}
-
-
-/*------------------------------------------------------------------------------
-  13.0 - Tags
-------------------------------------------------------------------------------*/
-
-#poststuff .taghint {
-       color: #aaa;
-       margin: 15px 0 -24px 12px;
-}
-
-#poststuff .tagsdiv .howto {
-       margin: 0 0 6px 8px;
-}
-
-.ajaxtag .newtag {
-       position: relative;
-}
-
-.tagsdiv .newtag {
-       width: 180px;
-}
-
-.tagsdiv .the-tags {
-       display: block;
-       height: 60px;
-       margin: 0 auto;
-       overflow: auto;
-       width: 260px;
-}
-
-#post-body-content .tagsdiv .the-tags {
-       margin: 0 5px;
-}
-
-p.popular-tags {
-       -webkit-border-radius: 8px;
-       border-radius: 8px;
-       border-width: 1px;
-       border-style: solid;
-       line-height: 2em;
-       max-width: 1000px;
-       padding: 8px 12px 12px;
-       text-align: justify;
-}
-
-p.popular-tags a {
-       padding: 0 3px;
-}
-
-.tagcloud {
-       width: 97%;
-       margin: 0 0 40px;
-       text-align: justify;
-}
-
-.tagcloud h3 {
-       margin: 2px 0 12px;
-}
-
-.ac_results {
-       padding: 0;
-       margin: 0;
-       list-style: none;
-       position: absolute;
-       z-index: 10000;
-       display: none;
-       border-width: 1px;
-       border-style: solid;
-}
-
-.ac_results li {
-       padding: 2px 5px;
-       white-space: nowrap;
-       text-align: left;
-}
-
-.ac_over {
-       cursor: pointer;
-}
-
-.ac_match {
-       text-decoration: underline;
-}
-
-/* links tables */
-table.links-table {
-       width: 100%;
-}
-
-.links-table th {
-       font-weight: normal;
-       text-align: left;
-       vertical-align: top;
-       min-width: 80px;
-       width: 20%;
-       word-wrap: break-word;
-}
-
-.links-table th,
-.links-table td {
-       padding: 5px 0;
-}
-
-.links-table td label {
-       margin-right: 8px;
-}
-
-.links-table td input[type="text"],
-.links-table td textarea {
-       width: 100%;
-}
-
-.links-table #link_rel {
-       max-width: 280px;
-}
-
-/*------------------------------------------------------------------------------
-  14.0 - Media Screen
-------------------------------------------------------------------------------*/
-
-.media-item .describe {
-       border-collapse: collapse;
-       width: 100%;
-       border-top-style: solid;
-       border-top-width: 1px;
-       clear: both;
-       cursor: default;
-}
-
-.media-item.media-blank .describe {
-       border: 0;
-}
-
-.media-item .describe th {
-       vertical-align: top;
-       text-align: left;
-       padding: 5px 10px 10px;
-       width: 140px;
-}
-
-.media-item .describe .align th {
-       padding-top: 0;
-}
-
-.media-item .media-item-info tr {
-       background-color: transparent;
-}
-
-.media-item .describe td {
-       padding: 0 8px 8px 0;
-       vertical-align: top;
-}
-
-.media-item thead.media-item-info td {
-       padding: 4px 10px 0;
-}
-
-.media-item .media-item-info .A1B1 {
-       padding: 0 0 0 10px;
-}
-
-.media-item td.savesend {
-       padding-bottom: 15px;
-}
-
-.media-item .thumbnail {
-       max-height: 128px;
-       max-width: 128px;
-}
-
-#wpbody-content #async-upload-wrap a {
-       display: none;
-}
-
-.media-upload-form {
-       margin-top: 20px;
-}
-
-.media-upload-form td label {
-       margin-right: 6px;
-       margin-left: 2px;
-}
-
-.media-upload-form .align .field label {
-       display: inline;
-       padding: 0 0 0 23px;
-       margin: 0 1em 0 3px;
-       font-weight: bold;
-}
-
-.media-upload-form tr.image-size label {
-       margin: 0 0 0 5px;
-       font-weight: bold;
-}
-
-.media-upload-form th.label label {
-       font-weight: bold;
-       margin: 0.5em;
-       font-size: 13px;
-}
-
-.media-upload-form th.label label span {
-       padding: 0 5px;
-}
-
-abbr.required {
-       border: medium none;
-       text-decoration: none;
-}
-
-.media-item .describe input[type="text"],
-.media-item .describe textarea {
-       width: 460px;
-}
-
-.media-item .describe p.help {
-       margin: 0;
-       padding: 0 0 0 5px;
-}
-
-.describe-toggle-on,
-.describe-toggle-off {
-       display: block;
-       line-height: 36px;
-       float: right;
-       margin-right: 15px;
-}
-
-.media-item .describe-toggle-off,
-.media-item.open .describe-toggle-on,
-.media-item.open img.pinkynail {
-       display: none;
-}
-
-.media-item.open .describe-toggle-off {
-       display: block;
-}
-
-#media-items .media-item {
-       border-style: solid;
-       border-width: 1px;
-       min-height: 36px;
-       position: relative;
-       margin-top: -1px;
-       width: 100%;
-}
-
-#media-items {
-       width: 623px;
-}
-
-#media-items:empty {
-       border: 0 none;
-}
-
-.media-item .filename {
-       line-height: 36px;
-       overflow: hidden;
-       padding: 0 10px;
-}
-
-.media-item .error-div {
-       padding-left: 10px;
-}
-
-.media-item .pinkynail {
-       float: left;
-       margin: 2px 2px 0;
-       max-width: 40px;
-       max-height: 32px;
-}
-
-.media-item .startopen,
-.media-item .startclosed {
-       display: none;
-}
-
-.media-item .original {
-       position: relative;
-       height: 34px;
-}
-
-.media-item .progress {
-       float: right;
-       height: 22px;
-       margin: 6px 10px 0 0;
-       width: 200px;
-       line-height: 2em;
-       padding: 0;
-       overflow: hidden;
-       margin-bottom: 2px;
-       border: 1px solid #d1d1d1;
-       background: #fff;
-       background-image: linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%);
-       background-image: -o-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%);
-       background-image: -moz-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%);
-       background-image: -webkit-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%);
-       background-image: -ms-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%);
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.1);
-       box-shadow: inset 0 0 3px rgba(0,0,0,0.1);
-}
-
-.media-item .bar {
-       z-index: 9;
-       width: 0;
-       height: 100%;
-       margin-top: -24px;
-       background-color: #83B4D8;
-       background-image: linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
-       background-image: -o-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
-       background-image: -moz-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
-       background-image: -webkit-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
-       background-image: -ms-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.3);
-       box-shadow: 0 0 3px rgba(0,0,0,0.3);
-}
-
-.media-item .progress .percent {
-       z-index: 10;
-       position: relative;
-       width: 200px;
-       padding: 0 8px;
-       text-shadow: 0 1px 0 rgba(255,255,255,0.4);
-       color: rgba(0,0,0,0.6);
-}
-
-.upload-php .fixed .column-parent {
-       width: 25%;
-}
-
-.js .html-uploader #plupload-upload-ui {
-       display: none;
-}
-
-.js .html-uploader #html-upload-ui {
-       display: block;
-}
-
-.media-upload-form .media-item.error {
-       margin: 0;
-       padding: 0;
-}
-
-.media-upload-form .media-item.error p,
-.media-item .error-div {
-       line-height: 16px;
-       margin: 5px 10px;
-       padding: 0;
-}
-
-.media-item .error-div a.dismiss {
-       display: block;
-       float: right;
-       margin: 5px 4px 0 15px;
-}
-
-/*------------------------------------------------------------------------------
-  14.1 - Media Library
-------------------------------------------------------------------------------*/
-
-.find-box {
-       width: 500px;
-       height: 300px;
-       overflow: hidden;
-       padding: 33px 5px 40px;
-       position: absolute;
-       z-index: 1000;
-}
-
-.find-box-head {
-       cursor: move;
-       font-weight: bold;
-       height: 2em;
-       line-height: 2em;
-       padding: 1px 12px;
-       position: absolute;
-       top: 5px;
-       width: 100%;
-}
-
-.find-box-inside {
-       overflow: auto;
-       width: 100%;
-       height: 100%;
-}
-
-.find-box-search {
-       padding: 12px;
-       border-width: 1px;
-       border-style: none none solid;
-}
-
-#find-posts-response {
-       margin: 8px 0;
-       padding: 0 1px;
-}
-
-#find-posts-response table {
-       width: 100%;
-}
-
-#find-posts-response .found-radio {
-       padding: 5px 0 0 8px;
-       width: 15px;
-}
-
-.find-box-buttons {
-       width: 480px;
-       margin: 8px;
-}
-
-.find-box-search label {
-       padding-right: 6px;
-}
-
-.find-box #resize-se {
-       position: absolute;
-       right: 1px;
-       bottom: 1px;
-}
-
-ul#dismissed-updates {
-       display: none;
-}
-
-form.upgrade {
-       margin-top: 8px;
-}
-
-form.upgrade .hint {
-       font-style: italic;
-       font-size: 85%;
-       margin: -0.5em 0 2em 0;
-}
-
-#poststuff .inside .the-tagcloud {
-       margin: 5px 0 10px;
-       padding: 8px;
-       border-width: 1px;
-       border-style: solid;
-       line-height: 1.8em;
-       word-spacing: 3px;
-       -webkit-border-radius: 6px;
-       border-radius: 6px;
-}
-
-.drag-drop #drag-drop-area {
-       border: 4px dashed #DDDDDD;
-       height: 200px;
-}
-
-.drag-drop .drag-drop-inside {
-       margin: 70px auto 0;
-       width: 250px;
-}
-
-.drag-drop-inside p {
-       color: #aaa;
-       font-size: 14px;
-       margin: 5px 0;
-       display: none;
-}
-
-.drag-drop .drag-drop-inside p {
-       text-align: center;
-}
-
-.drag-drop-inside p.drag-drop-info {
-       font-size: 20px;
-}
-
-.drag-drop .drag-drop-inside p,
-.drag-drop-inside p.drag-drop-buttons {
-       display: block;
-}
-
-/*
-#drag-drop-area:-moz-drag-over {
-       border-color: #83b4d8;
-}
-borger color while dragging a file over the uploader drop area */
-.drag-drop.drag-over #drag-drop-area {
-       border-color: #83b4d8;
-}
-
-#plupload-upload-ui {
-       position: relative;
-}
-
-
-/*------------------------------------------------------------------------------
-  14.2 - Image Editor
-------------------------------------------------------------------------------*/
-
-.describe .image-editor {
-       vertical-align: top;
-}
-
-.imgedit-wrap {
-       position: relative;
-}
-
-.imgedit-settings p {
-       margin: 8px 0;
-}
-
-.describe .imgedit-wrap table td {
-       vertical-align: top;
-       padding-top: 0;
-}
-
-.imgedit-wrap p,
-.describe .imgedit-wrap table td {
-       font-size: 11px;
-       line-height: 18px;
-}
-
-.describe .imgedit-wrap table td.imgedit-settings {
-       padding: 0 5px;
-}
-
-td.imgedit-settings input {
-       vertical-align: middle;
-}
-
-.imgedit-wait {
-       position: absolute;
-       top: 0;
-       background: #FFFFFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;
-       opacity: 0.7;
-       filter: alpha(opacity=70);
-       width: 100%;
-       height: 500px;
-       display: none;
-}
-
-.media-disabled,
-.imgedit-settings .disabled  {
-       color: grey;
-}
-
-.imgedit-wait-spin {
-       padding: 0 4px 4px;
-       vertical-align: bottom;
-       visibility: hidden;
-}
-
-.imgedit-menu {
-       margin: 0 0 12px;
-       min-width: 300px;
-}
-
-.imgedit-menu div {
-       float: left;
-       width: 32px;
-       height: 32px;
-}
-
-.imgedit-crop-wrap {
-       position: relative;
-}
-
-.imgedit-crop {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;
-       margin: 0 8px 0 0;
-}
-
-.imgedit-crop.disabled:hover {
-       background-position: -9px -31px;
-}
-
-.imgedit-crop:hover {
-       background-position: -9px -1px;
-}
-
-.imgedit-rleft {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;
-       margin: 0 3px;
-}
-
-.imgedit-rleft.disabled:hover {
-       background-position: -46px -31px;
-}
-
-.imgedit-rleft:hover {
-       background-position: -46px -1px;
-}
-
-.imgedit-rright {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;
-       margin: 0 8px 0 3px;
-}
-
-.imgedit-rright.disabled:hover {
-       background-position: -77px -31px;
-}
-
-.imgedit-rright:hover {
-       background-position: -77px -1px;
-}
-
-.imgedit-flipv {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;
-       margin: 0 3px;
-}
-
-.imgedit-flipv.disabled:hover {
-       background-position: -115px -31px;
-}
-
-.imgedit-flipv:hover {
-       background-position: -115px -1px;
-}
-
-.imgedit-fliph {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;
-       margin: 0 8px 0 3px;
-}
-
-.imgedit-fliph.disabled:hover {
-       background-position: -147px -31px;
-}
-
-.imgedit-fliph:hover {
-       background-position: -147px -1px;
-}
-
-.imgedit-undo {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;
-       margin: 0 3px;
-}
-
-.imgedit-undo.disabled:hover {
-       background-position: -184px -31px;
-}
-
-.imgedit-undo:hover {
-       background-position: -184px -1px;
-}
-
-.imgedit-redo {
-       background: transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;
-       margin: 0 8px 0 3px;
-}
-
-.imgedit-redo.disabled:hover {
-       background-position: -215px -31px;
-}
-
-.imgedit-redo:hover {
-       background-position: -215px -1px;
-}
-
-.imgedit-applyto img {
-       margin: 0 8px 0 0;
-}
-
-.imgedit-group-top {
-       margin: 5px 0;
-}
-
-.imgedit-applyto .imgedit-label {
-       padding: 2px 0 0;
-       display: block;
-}
-
-.imgedit-help {
-       display: none;
-       font-style: italic;
-       margin-bottom: 8px;
-}
-
-.imgedit-help ul li {
-       font-size: 11px;
-}
-
-a.imgedit-help-toggle {
-       text-decoration: none;
-}
-
-#wpbody-content .imgedit-response div {
-       width: 600px;
-       margin: 8px;
-}
-
-.form-table td.imgedit-response {
-       padding: 0;
-}
-
-.imgedit-submit {
-       margin: 8px 0;
-}
-
-.imgedit-submit-btn {
-       margin-left: 20px;
-}
-
-.imgedit-wrap .nowrap {
-       white-space: nowrap;
-}
-
-span.imgedit-scale-warn {
-       color: red;
-       font-size: 20px;
-       font-style: normal;
-       visibility: hidden;
-       vertical-align: middle;
-}
-
-.imgedit-group {
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 8px;
-       border-radius: 8px;
-       margin-bottom: 8px;
-       padding: 2px 10px;
-}
-
-
-/*------------------------------------------------------------------------------
-  15.0 - Comments Screen
-------------------------------------------------------------------------------*/
-
-.form-table {
-       border-collapse: collapse;
-       margin-top: 0.5em;
-       width: 100%;
-       margin-bottom: -8px;
-       clear: both;
-}
-
-.form-table td {
-       margin-bottom: 9px;
-       padding: 8px 10px;
-       line-height: 20px;
-       font-size: 12px;
-}
-
-.form-table th,
-.form-wrap label {
-       font-weight: normal;
-       text-shadow: #fff 0 1px 0;
-}
-
-.form-table th {
-       vertical-align: top;
-       text-align: left;
-       padding: 10px;
-       width: 200px;
-}
-
-.form-table th.th-full {
-       width: auto;
-}
-
-.form-table div.color-option {
-       display: block;
-       clear: both;
-       margin-top: 12px;
-}
-
-.form-table input.tog {
-       margin-top: 2px;
-       margin-right: 2px;
-       float: left;
-}
-
-.form-table td p {
-       margin-top: 4px;
-}
-
-.form-table table.color-palette {
-       vertical-align: bottom;
-       float: left;
-       margin: -12px 3px 11px;
-}
-
-.form-table .color-palette td {
-       border-width: 1px 1px 0;
-       border-style: solid solid none;
-       height: 10px;
-       line-height: 20px;
-       width: 10px;
-}
-
-.commentlist li {
-       padding: 1em 1em .2em;
-       margin: 0;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-}
-
-.commentlist li li {
-       border-bottom: 0;
-       padding: 0;
-}
-
-.commentlist p {
-       padding: 0;
-       margin: 0 0 .8em;
-}
-
-/* reply to comments */
-#replyrow input {
-       border-width: 1px;
-       border-style: solid;
-}
-
-#replyrow td {
-       padding: 2px;
-}
-
-#replysubmit {
-       margin: 0;
-       padding: 0 7px 3px;
-       text-align: center;
-}
-
-#replysubmit img.waiting,
-.inline-edit-save img.waiting {
-       padding: 4px 10px 0;
-       vertical-align: top;
-       float: right;
-}
-
-#replysubmit .button {
-       margin-right: 5px;
-}
-
-#replysubmit .error {
-       color: red;
-       line-height: 21px;
-       text-align: center;
-       vertical-align: center;
-}
-
-#replyrow h5 {
-       margin: .2em 0 0;
-       padding: 0 5px;
-       line-height: 1.4em;
-       font-size: 1em;
-}
-
-#edithead .inside {
-       float: left;
-       padding: 3px 0 2px 5px;
-       margin: 0;
-       text-align: center;
-}
-
-#edithead .inside input {
-       width: 180px;
-}
-
-#edithead label {
-       padding: 2px 0;
-}
-
-#replycontainer {
-       padding: 5px;
-}
-
-#replycontent {
-       height: 120px;
-}
-
-.comment-ays {
-       margin-bottom: 0;
-       border-style: solid;
-       border-width: 1px;
-}
-
-.comment-ays th {
-       border-right-style: solid;
-       border-right-width: 1px;
-}
-
-.trash-undo-inside,
-.spam-undo-inside {
-       margin: 1px 8px 1px 0;
-       line-height: 16px;
-}
-
-.spam-undo-inside .avatar,
-.trash-undo-inside .avatar {
-       height: 20px;
-       width: 20px;
-       margin-right: 8px;
-       vertical-align: middle;
-}
-
-.stuffbox .editcomment {
-       clear: none;
-}
-
-#comment-status-radio p {
-       margin: 3px 0 5px;
-}
-
-#comment-status-radio input {
-       margin: 2px 3px 5px 0;
-       vertical-align: middle;
-}
-
-#comment-status-radio label {
-       padding: 5px 0;
-}
-
-.commentlist .avatar {
-       vertical-align: text-top;
-}
-
-
-/*------------------------------------------------------------------------------
-  16.0 - Themes
-------------------------------------------------------------------------------*/
-
-.theme-install-php .tablenav {
-       height: auto;
-}
-
-h3.available-themes {
-       margin: 0 0 1em;
-       float: left;
-}
-
-.available-theme {
-       display: inline-block;
-       margin-right: 10px;
-       overflow: hidden;
-       padding: 20px 20px 20px 0;
-       vertical-align: top;
-       width: 300px;
-}
-
-.available-theme .screenshot {
-       width: 300px;
-       height: 225px;
-       display: block;
-       border-width: 1px;
-       border-style: solid;
-       margin-bottom: 10px;
-       overflow: hidden;
-}
-
-.available-theme img {
-       width: 300px;
-}
-
-.available-theme h3 {
-       margin: 15px 0 0;
-}
-
-.available-theme .theme-author {
-       line-height: 18px;
-}
-
-.available-theme .action-links {
-       margin-top: 10px;
-       overflow: hidden;
-}
-
-#current-theme .theme-info li,
-.theme-options li,
-.available-theme .action-links li {
-       float: left;
-       padding-right: 10px;
-       margin-right: 10px;
-       border-right: 1px solid #dfdfdf;
-}
-
-.available-theme .action-links li {
-       padding-right: 8px;
-       margin-right: 8px;
-}
-
-#current-theme .theme-info li:last-child,
-.theme-options li:last-child,
-.available-theme .action-links li:last-child {
-       padding-right: 0;
-       margin-right: 0;
-       border-right: 0;
-}
-
-.available-theme .action-links .delete-theme {
-       float: right;
-       margin-left: 8px;
-       margin-right: 0;
-}
-
-.available-theme .action-links .delete-theme a {
-       color: red;
-       padding: 2px;
-}
-
-.available-theme .action-links .delete-theme a:hover {
-       background: red;
-       color: #fff;
-       text-decoration: none;
-}
-
-.available-theme .action-links p {
-       float: left;
-}
-
-#current-theme {
-       margin: 20px 0 10px;
-       padding: 0 0 20px;
-       border-bottom: 1px solid #dfdfdf;
-       overflow: hidden;
-}
-
-#current-theme.has-screenshot {
-       padding-left: 330px;
-}
-
-#current-theme h3 {
-       margin: 0;
-       font-size: 12px;
-       font-weight: normal;
-       color: #999;
-}
-
-#current-theme h4 {
-       margin: 3px 0 16px;
-       font-size: 20px;
-}
-
-#current-theme h4 span {
-       margin-left: 20px;
-       font-size: 12px;
-       font-weight: normal;
-}
-
-#current-theme a {
-       border-bottom: none;
-}
-
-#current-theme .theme-info {
-       margin: 1em 0;
-       overflow: hidden;
-}
-
-#current-theme .theme-description {
-       margin-top: 5px;
-       max-width: 600px;
-       line-height: 1.6em;
-}
-
-#current-theme img {
-       float: left;
-       width: 300px;
-       margin-left: -330px;
-
-       border-width: 1px;
-       border-style: solid;
-}
-
-.theme-options {
-       overflow: hidden;
-       font-size: 14px;
-       padding-bottom: 10px;
-}
-
-.theme-options .load-customize {
-       margin-right: 30px;
-       float: left;
-}
-
-.theme-options span {
-       float: left;
-       margin-right: 10px;
-       text-transform: uppercase;
-       font-size: 11px;
-       line-height: 18px;
-       color: #999;
-}
-
-.theme-options ul {
-       float: left;
-       margin: 0;
-}
-
-/* Allow for three-up on 1024px wide screens, e.g. tablets */
-@media only screen and (max-width: 1200px) {
-       .available-theme,
-       .available-theme .screenshot,
-       #current-theme img {
-               width: 240px;
-       }
-
-       .available-theme .screenshot {
-               height: 180px;
-       }
-
-       .available-theme img {
-               width: 100%;
-       }
-
-       #current-theme.has-screenshot {
-               padding-left: 270px;
-       }
-
-       #current-theme img {
-               margin-left: -270px;
-       }
-}
-
-#post-body ul.add-menu-item-tabs li.tabs a,
-#TB_window #TB_title a.tb-theme-preview-link,
-#TB_window #TB_title a.tb-theme-preview-link:visited {
-       font-weight: bold;
-       text-decoration: none;
-}
-
-#TB_window #TB_title {
-       background-color: #222;
-       color: #cfcfcf;
-}
-
-#broken-themes {
-       text-align: left;
-       width: 50%;
-       border-spacing: 3px;
-       padding: 3px;
-}
-
-.theme-install-php h4 {
-       margin: 2.5em 0 8px;
-}
-
-
-/*------------------------------------------------------------------------------
-  16.1 - Custom Header Screen
-------------------------------------------------------------------------------*/
-
-.appearance_page_custom-header #headimg {
-       border: 1px solid #DFDFDF;
-       width: 100%;
-}
-
-.appearance_page_custom-header #upload-form p label {
-       font-size: 12px;
-}
-
-.appearance_page_custom-header .available-headers .default-header {
-       float: left;
-       margin: 0 20px 20px 0;
-}
-
-.appearance_page_custom-header .random-header {
-       clear: both;
-       margin: 0 20px 20px 0;
-       vertical-align: middle;
-}
-
-.appearance_page_custom-header .available-headers label input,
-.appearance_page_custom-header .random-header label input {
-       margin-right: 10px;
-}
-
-.appearance_page_custom-header .available-headers label img {
-       vertical-align: middle;
-}
-
-
-/*------------------------------------------------------------------------------
-  16.2 - Custom Background Screen
-------------------------------------------------------------------------------*/
-
-div#custom-background-image {
-       min-height: 100px;
-       border: 1px solid #dfdfdf;
-}
-
-div#custom-background-image img {
-       max-width: 400px;
-       max-height: 300px;
-}
-
-
-/*------------------------------------------------------------------------------
-  16.3 - Tabbed Admin Screen Interface (Experimental)
-------------------------------------------------------------------------------*/
-
-.nav-tab {
-       border-style: solid;
-       border-color: #dfdfdf #dfdfdf #fff;
-       border-width: 1px 1px 0;
-       color: #aaa;
-       text-shadow: #fff 0 1px 0;
-       font-size: 12px;
-       line-height: 16px;
-       display: inline-block;
-       padding: 4px 14px 6px;
-       text-decoration: none;
-       margin: 0 6px -1px 0;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.nav-tab-active {
-       border-width: 1px;
-       color: #464646;
-}
-
-.nav-tab:hover,
-.nav-tab-active {
-       border-color: #ccc #ccc #fff;
-}
-
-h2.nav-tab-wrapper, h3.nav-tab-wrapper {
-       border-bottom: 1px solid #ccc;
-       padding-bottom: 0;
-}
-
-h2 .nav-tab {
-       padding: 4px 10px 6px;
-       font-weight: 200;
-       font-size: 20px;
-       line-height: 24px;
-
-}
-
-
-/*------------------------------------------------------------------------------
-  17.0 - Plugins
-------------------------------------------------------------------------------*/
-
-#dashboard_right_now .versions .b,
-#post-status-display,
-#post-visibility-display,
-#adminmenu .wp-submenu li.current,
-#adminmenu .wp-submenu li.current a,
-#adminmenu .wp-submenu li.current a:hover,
-.media-item .percent,
-.plugins .name,
-#pass-strength-result.strong,
-#pass-strength-result.short,
-.button-highlighted,
-input.button-highlighted,
-#quicktags #ed_strong,
-#ed_reply_toolbar #ed_reply_strong,
-.item-controls .item-order a,
-.feature-filter .feature-name {
-       font-weight: bold;
-}
-
-.plugins p {
-       margin: 0 4px;
-       padding: 0;
-}
-
-.plugins .desc p {
-       margin: 0 0 8px;
-}
-
-.plugins td.desc {
-       line-height: 1.5em;
-}
-
-.plugins .desc ul,
-.plugins .desc ol {
-       margin: 0 0 0 2em;
-}
-
-.plugins .desc ul {
-       list-style-type: disc;
-}
-
-.plugins .row-actions-visible {
-       padding: 0;
-}
-
-.plugins tbody th.check-column {
-       padding: 7px 0;
-}
-
-.plugins .inactive td,
-.plugins .inactive th,
-.plugins .active td,
-.plugins .active th {
-       border-top-style: solid;
-       border-top-width: 1px;
-       padding: 5px 7px 0;
-}
-
-.plugins .update th,
-.plugins .update td {
-       border-bottom: 0;
-}
-.plugin-update-tr td {
-       border-top: 0;
-}
-
-#wpbody-content .plugins .plugin-title,
-#wpbody-content .plugins .theme-title {
-       padding-right: 12px;
-       white-space:nowrap;
-}
-
-.plugins .second,
-.plugins .row-actions-visible {
-       padding: 0 0 5px;
-}
-
-.plugins .update .second,
-.plugins .update .row-actions-visible {
-       padding-bottom: 0;
-}
-
-.plugins-php .widefat tfoot th,
-.plugins-php .widefat tfoot td {
-       border-top-style: solid;
-       border-top-width: 1px;
-}
-
-.plugin-update-tr .update-message {
-       margin: 5px;
-       padding: 3px 5px;
-}
-
-.plugin-install-php h4 {
-       margin: 2.5em 0 8px;
-}
-
-
-/*------------------------------------------------------------------------------
-  18.0 - Users
-------------------------------------------------------------------------------*/
-
-#profile-page .form-table textarea {
-       width: 500px;
-       margin-bottom: 6px;
-}
-
-#profile-page .form-table #rich_editing {
-       margin-right: 5px
-}
-
-#your-profile legend {
-       font-size: 22px;
-}
-
-#your-profile #rich_editing {
-       border: none;
-}
-
-#display_name {
-       width: 15em;
-}
-
-#createuser .form-field input {
-       width: 25em;
-}
-
-/*------------------------------------------------------------------------------
-  19.0 - Tools
-------------------------------------------------------------------------------*/
-
-.pressthis {
-       margin: 20px 0;
-}
-
-.pressthis a {
-       display: inline-block;
-       position: relative;
-       cursor: move;
-       color: #333;
-       background: #dfdfdf;
-       background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.07, #e6e6e6), color-stop(0.77, #d8d8d8));
-       background-image: -webkit-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
-       background-image: -moz-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
-       background-image: -ms-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
-       background-image: -o-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
-       background-image: linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
-       -webkit-border-radius: 5px;
-       border-radius: 5px;
-       border: 1px solid #b4b4b4;
-       font-style: normal;
-       line-height: 16px;
-       font-size: 14px;
-       text-decoration: none;
-       text-shadow: 0 1px 0px #fff;
-}
-
-.pressthis a:hover,
-.pressthis a:active {
-       color: #333
-}
-
-.pressthis a:hover:after {
-       transform: skew(20deg) rotate(9deg);
-       -webkit-transform: skew(20deg) rotate(9deg);
-       -moz-transform: skew(20deg) rotate(9deg);
-       box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7);
-       -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7);
-       -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7);
-}
-
-.pressthis a span {
-       background: url(../images/press-this.png?v=20120502) no-repeat 0px 5px;
-       padding: 8px 11px 8px 27px;
-       margin: 0 5px;
-       display: inline-block;
-}
-
-.pressthis a:after {
-       content: '';
-       width: 70%;
-       height: 55%;
-       z-index: -1;
-       position: absolute;
-       right: 10px;
-       bottom: 9px;
-       background: transparent;
-       transform: skew(20deg) rotate(6deg);
-       -webkit-transform: skew(20deg) rotate(6deg);
-       -moz-transform: skew(20deg) rotate(6deg);
-       box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6);
-       -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6);
-       -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6);
-}
-
-
-/*------------------------------------------------------------------------------
-  20.0 - Settings
-------------------------------------------------------------------------------*/
-
-#utc-time, #local-time {
-       padding-left: 25px;
-       font-style: italic;
-       font-family: sans-serif;
-}
-
-.defaultavatarpicker .avatar {
-       margin: 2px 0;
-       vertical-align: middle;
-}
-
-
-/*------------------------------------------------------------------------------
-  21.0 - Admin Footer
-------------------------------------------------------------------------------*/
-
-#footer {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       padding: 10px 0;
-       margin-right: 20px;
-       border-top-width: 1px;
-       border-top-style: solid;
-}
-
-#footer p {
-       margin: 0;
-       line-height: 20px;
-}
-
-#footer a {
-       text-decoration: none;
-}
-
-#footer a:hover {
-       text-decoration: underline;
-}
-
-/*------------------------------------------------------------------------------
-  22.0 - About Pages
-------------------------------------------------------------------------------*/
-
-.about-wrap {
-       position: relative;
-       margin: 25px 40px 0 20px;
-       max-width: 1050px; /* readability */
-
-       font-size: 15px;
-}
-
-.about-wrap div.updated,
-.about-wrap div.error {
-       display: none !important;
-}
-
-/* Typography */
-
-.about-wrap p {
-       line-height: 1.6em;
-}
-
-.about-wrap h1 {
-       margin: 0.2em 200px 0 0;
-       line-height: 1.2em;
-       font-size: 2.8em;
-       font-weight: 200;
-}
-
-.about-text,
-.about-description,
-.about-wrap li.wp-person a.web {
-       font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
-       font-weight: normal;
-       line-height: 1.6em;
-       font-size: 20px;
-}
-
-.about-description {
-       margin-top: 1.4em;
-}
-
-.about-text {
-       margin: 1em 200px 1.4em 0;
-       min-height: 60px;
-       font-size: 24px;
-}
-
-.about-wrap h3 {
-       font-size: 24px;
-       margin-bottom: 1em;
-       padding-top: 20px;
-}
-
-.about-wrap .changelog {
-       overflow: hidden;
-}
-
-.about-wrap .changelog li {
-       list-style-type: disc;
-       margin-left: 3em;
-}
-
-.about-wrap .feature-section {
-       padding-bottom: 20px;
-}
-
-.about-wrap .feature-section h4 {
-       margin-bottom: 0.6em;
-}
-
-.about-wrap .feature-section p {
-       margin-top: 0.6em;
-}
-
-.about-wrap code {
-       font-size: 14px;
-}
-
-/* Point Releases */
-
-.about-wrap .point-releases {
-       margin-top: 5px;
-}
-
-.about-wrap .changelog.point-releases h3 {
-       padding-top: 35px;
-}
-
-.about-wrap .changelog.point-releases h3:first-child {
-       padding-top: 7px;
-}
-
-/* WordPress Version Badge */
-
-.wp-badge {
-       padding-top: 142px;
-       height: 50px;
-       width: 173px;
-       font-weight: bold;
-       font-size: 14px;
-       text-align: center;
-       margin: 0 -5px;
-       background: url('../images/wp-badge.png?ver=20111120') no-repeat;
-}
-
-.about-wrap .wp-badge {
-       position: absolute;
-       top: 0;
-       right: 0;
-}
-
-/* Tabs */
-
-.about-wrap h2.nav-tab-wrapper {
-       padding-left: 6px;
-}
-
-.about-wrap h2 .nav-tab {
-       padding: 4px 10px 6px;
-       margin: 0 3px -1px 0;
-       font-size: 18px;
-       vertical-align: top;
-}
-
-.about-wrap h2 .nav-tab-active {
-       font-weight: bold;
-       padding-top: 3px;
-}
-
-/* Changelog / Update screen */
-
-.about-wrap .feature-section img {
-       border: none;
-       margin: 0 1.94% 10px 0;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-.about-wrap .feature-section img.image-50 {
-       max-width: 50%;
-}
-
-.about-wrap .feature-section img.image-30 {
-       max-width: 31.2381%;
-}
-
-.ie8 .about-wrap .feature-section img {
-       border-width: 1px;
-       border-style: solid;
-}
-
-.about-wrap .feature-section.three-col {
-       padding-top: 15px;
-       margin-bottom: 0;
-}
-
-.about-wrap .feature-section.three-col div {
-       width: 30%;
-       margin-right: 4.999999999%;
-       float: left;
-}
-
-.about-wrap .feature-section.three-col h4 {
-       margin:  0 0 0.6em 0;
-}
-
-.about-wrap .feature-section.three-col img {
-       margin: 0.5em 0 0.5em 5px;
-       max-width: 100%;
-       float: none;
-}
-
-.ie8 .about-wrap .feature-section.three-col img {
-       margin-left: 0;
-}
-
-.about-wrap .feature-section.three-col .last-feature {
-       margin-right: 0;
-}
-
-.about-wrap .three-col-images {
-       text-align: center;
-}
-
-.about-wrap .three-col-images img {
-       margin: 0 0 10px;
-}
-
-.about-wrap .three-col-images .last-feature {
-       float: right;
-}
-
-.about-wrap .three-col-images .first-feature {
-       float: left;
-}
-
-.about-wrap .feature-section.images-stagger-right img {
-       float: right;
-       margin: 0 5px 12px 12px;
-}
-
-.about-wrap .feature-section.images-stagger-left img {
-       float: left;
-       margin: 0 12px 12px 5px;
-}
-
-@media only screen and (max-width: 900px) {
-       .about-wrap .feature-section.images-stagger-left img,
-       .about-wrap .feature-section.images-stagger-right img {
-               clear: both;
-       }
-}
-
-/* Return to Dashboard Home link */
-
-.about-wrap .return-to-dashboard {
-       margin: 30px 0 0 -5px;
-       font-size: 14px;
-       font-weight: bold;
-}
-
-.about-wrap .return-to-dashboard a {
-       text-decoration: none;
-       padding: 0 5px;
-}
-
-/* Credits */
-
-.about-wrap h4.wp-people-group {
-       margin-top: 2.6em;
-       font-size: 16px;
-}
-
-.about-wrap ul.wp-people-group {
-       overflow: hidden;
-       padding: 5px;
-       margin: 0 -15px 0 -5px;
-}
-
-.about-wrap ul.compact {
-       margin-bottom: 0
-}
-
-.about-wrap li.wp-person {
-       float: left;
-       margin-right: 10px;
-}
-
-.about-wrap li.wp-person img.gravatar {
-       float: left;
-       margin: 0 10px 10px 0;
-       padding: 2px;
-       width: 60px;
-       height: 60px;
-}
-
-.about-wrap ul.compact li.wp-person img.gravatar {
-       width: 30px;
-       height: 30px;
-}
-
-.about-wrap li.wp-person {
-       height: 70px;
-       width: 280px;
-       padding-bottom: 15px;
-}
-
-.about-wrap ul.compact li.wp-person {
-       height: auto;
-       width: 180px;
-       padding-bottom: 0;
-       margin-bottom: 0;
-}
-
-.about-wrap #wp-people-group-validators + p.wp-credits-list {
-       margin-top: 0;
-}
-
-.about-wrap li.wp-person a.web {
-       display: block;
-       margin: 6px 0 2px;
-       font-size: 16px;
-       text-decoration: none;
-}
-
-.about-wrap p.wp-credits-list a {
-       white-space: nowrap;
-}
-
-/* Freedoms */
-
-.freedoms-php .about-wrap ol {
-       margin: 40px 60px;
-}
-
-.freedoms-php .about-wrap ol li {
-       list-style-type: decimal;
-       font-weight: bold;
-}
-
-.freedoms-php .about-wrap ol p {
-       font-weight: normal;
-       margin: 0.6em 0;
-}
-
-/*------------------------------------------------------------------------------
-  23.0 - Full Overlay w/ Sidebar
-------------------------------------------------------------------------------*/
-
-body.full-overlay-active {
-       overflow: hidden;
-}
-
-.wp-full-overlay {
-       background: #fff;
-       z-index: 500000;
-       position: fixed;
-       overflow: visible;
-       top: 0;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       height: 100%;
-       min-width: 0;
-}
-
-.wp-full-overlay-sidebar {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing:    border-box;
-       box-sizing:         border-box;
-
-       position: fixed;
-       width: 300px;
-       height: 100%;
-       top: 0;
-       bottom: 0;
-       left: 0;
-       padding: 0;
-       margin: 0;
-       z-index: 10;
-       overflow: auto;
-       background: #f5f5f5;
-       border-right: 1px solid rgba( 0, 0, 0, 0.2 );
-}
-
-.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
-       overflow: visible;
-}
-
-.wp-full-overlay.collapsed,
-.wp-full-overlay.expanded .wp-full-overlay-sidebar {
-       margin-left: 0 !important;
-}
-
-.wp-full-overlay.expanded {
-       margin-left: 300px;
-}
-
-.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
-       margin-left: -300px;
-}
-
-.wp-full-overlay-sidebar:after {
-       content: '';
-       display: block;
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       width: 3px;
-       box-shadow: -5px 0 4px -4px rgba(0, 0, 0, 0.1) inset;
-       z-index: 1000;
-}
-
-.wp-full-overlay-main {
-       position: absolute;
-       left: 0;
-       right: 0;
-       top: 0;
-       bottom: 0;
-       height: 100%;
-}
-
-.wp-full-overlay-sidebar .wp-full-overlay-header,
-.wp-full-overlay-sidebar .wp-full-overlay-footer {
-       position: absolute;
-       left: 0;
-       right: 0;
-       height: 45px;
-       padding: 0 20px;
-       line-height: 45px;
-       z-index: 10;
-       margin: 0;
-}
-
-.wp-full-overlay-sidebar .wp-full-overlay-header {
-       top: 0;
-       border-top: 0;
-       border-bottom: 1px solid #fff;
-       box-shadow: inset 0 -1px 0 0px #dfdfdf;
-}
-
-.wp-full-overlay-sidebar .wp-full-overlay-footer {
-       bottom: 0;
-       border-bottom: 0;
-       border-top: 1px solid #dfdfdf;
-       box-shadow: inset 0 1px 0 0px #fff;
-}
-
-.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content {
-       position: absolute;
-       top: 45px;
-       bottom: 45px;
-       left: 0;
-       right: 0;
-       overflow: auto;
-}
-
-/* Close Link */
-.wp-full-overlay .close-full-overlay {
-       text-decoration: none;
-}
-
-/* Collapse Button */
-.wp-full-overlay .collapse-sidebar {
-       position: absolute;
-       bottom: 12px;
-       left: 0;
-       z-index: 50;
-       display: block;
-       width: 19px;
-       height: 19px;
-       margin-left: 15px;
-       padding: 0;
-       border-radius: 50%;
-       text-decoration: none;
-}
-
-.wp-full-overlay.collapsed .collapse-sidebar {
-       position: absolute;
-       left: 100%;
-}
-
-.wp-full-overlay .collapse-sidebar-arrow {
-       position: absolute;
-       margin-top: 2px;
-       margin-left: 2px;
-       display: block;
-       width: 15px;
-       height: 15px;
-       background: transparent url('../images/arrows.png') no-repeat 0 -72px;
-}
-
-.wp-full-overlay.collapsed .collapse-sidebar-arrow {
-       background-position: 0 -108px;
-}
-
-.wp-full-overlay .collapse-sidebar-label {
-       position: absolute;
-       left: 100%;
-       color: #808080;
-       line-height: 20px;
-       margin-left: 10px;
-}
-
-.wp-full-overlay.collapsed .collapse-sidebar-label {
-       display: none;
-}
-
-.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label {
-       color: #666;
-}
-
-/* Animations */
-.wp-full-overlay,
-.wp-full-overlay-sidebar,
-.wp-full-overlay .collapse-sidebar,
-.wp-full-overlay-main {
-       -webkit-transition-property: left, right, top, bottom, width, margin;
-       -moz-transition-property:    left, right, top, bottom, width, margin;
-       -ms-transition-property:     left, right, top, bottom, width, margin;
-       -o-transition-property:      left, right, top, bottom, width, margin;
-       transition-property:         left, right, top, bottom, width, margin;
-
-       -webkit-transition-duration: 0.2s;
-       -moz-transition-duration:    0.2s;
-       -ms-transition-duration:     0.2s;
-       -o-transition-duration:      0.2s;
-       transition-duration:         0.2s;
-}
-
-/*------------------------------------------------------------------------------
-  24.0 - Customize Loader
-------------------------------------------------------------------------------*/
-
-.no-customize-support .hide-if-no-customize,
-.customize-support .hide-if-customize {
-       display: none;
-}
-
-#customize-container {
-       display: none;
-       background: #fff;
-       z-index: 500000;
-       position: fixed;
-       overflow: visible;
-       top: 0;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       height: 100%;
-}
-
-.customize-active #customize-container {
-       display: block;
-}
-
-.customize-loading #customize-container iframe {
-       opacity: 0;
-}
-
-.customize-loading #customize-container {
-       background: #fff url("../images/wpspin_light.gif") no-repeat fixed center center;
-}
-
-#customize-container iframe,
-#theme-installer iframe {
-       height: 100%;
-       width: 100%;
-       z-index: 20;
-
-       -webkit-transition: opacity 0.3s;
-       -moz-transition:    opacity 0.3s;
-       -ms-transition:     opacity 0.3s;
-       -o-transition:      opacity 0.3s;
-       transition:         opacity 0.3s;
-}
-
-#customize-container .collapse-sidebar {
-       bottom: 16px;
-}
-
-#theme-installer {
-       display: none;
-}
-
-#theme-installer.single-theme {
-       display: block;
-}
-
-.install-theme-info {
-       display: none;
-       padding: 10px 20px 20px;
-}
-
-.single-theme .install-theme-info {
-       padding-top: 15px;
-}
-
-#theme-installer .install-theme-info {
-       display: block;
-}
-
-.install-theme-info .theme-install {
-       float: right;
-       margin-top: 18px;
-}
-
-.install-theme-info .theme-name {
-       font-size: 16px;
-       line-height: 24px;
-       margin-bottom: 0;
-}
-
-.install-theme-info .theme-screenshot {
-       margin-top: 15px;
-       width: 258px;
-       border: 1px solid #ccc;
-}
-
-.install-theme-info .theme-details {
-       overflow: hidden;
-}
-
-.theme-details .theme-version {
-       margin: 15px 0;
-       float: left;
-}
-
-.theme-details .star-holder {
-       margin: 14px 0;
-       float: right;
-}
-
-.theme-details .theme-description {
-       float: left;
-       color: #777;
-       line-height: 20px;
-}
-
-/*------------------------------------------------------------------------------
-  25.0 - Misc
-------------------------------------------------------------------------------*/
-
-#excerpt,
-.attachmentlinks {
-       margin: 0;
-       height: 4em;
-       width: 98%;
-}
-
-#template div {
-       margin-right: 190px;
-}
-
-p.pagenav {
-       margin: 0;
-       display: inline;
-}
-
-.pagenav span {
-       font-weight: bold;
-       margin: 0 6px;
-}
-
-.row-title {
-       font-size: 13px !important;
-       font-weight: bold;
-}
-
-.column-author img, .column-username img {
-       float: left;
-       margin-right: 10px;
-       margin-top: 1px;
-}
-
-.row-actions {
-       visibility: hidden;
-       padding: 2px 0 0;
-}
-
-.mobile .row-actions {
-       visibility: visible;
-}
-
-tr:hover .row-actions,
-div.comment-item:hover .row-actions {
-       visibility: visible;
-}
-
-.row-actions-visible {
-       padding: 2px 0 0;
-}
-
-.form-table .pre {
-       padding: 8px;
-       margin: 0;
-}
-
-table.form-table td .updated {
-       font-size: 13px;
-}
-
-.tagchecklist {
-       margin-left: 14px;
-       font-size: 12px;
-       overflow: auto;
-}
-.tagchecklist strong {
-       margin-left: -8px;
-       position: absolute;
-}
-.tagchecklist span {
-       margin-right: 25px;
-       display: block;
-       float: left;
-       font-size: 11px;
-       line-height: 1.8em;
-       white-space: nowrap;
-       cursor: default;
-}
-.tagchecklist span a {
-       margin: 6px 0pt 0pt -9px;
-       cursor: pointer;
-       width: 10px;
-       height: 10px;
-       display: block;
-       float: left;
-       text-indent: -9999px;
-       overflow: hidden;
-       position: absolute;
-}
-
-#poststuff h2 {
-       margin-top: 20px;
-       font-size: 1.5em;
-       margin-bottom: 15px;
-       padding: 0 0 3px;
-       clear: left;
-}
-
-#poststuff h3,
-.metabox-holder h3 {
-       font-size: 15px;
-       font-weight: normal;
-       padding: 7px 10px;
-       margin: 0;
-       line-height: 1;
-}
-
-#poststuff .inside {
-       margin: 6px 0 8px;
-}
-
-#poststuff .inside #parent_id,
-.inline-edit-row #post_parent {
-       max-width: 100%;
-}
-
-#post-visibility-select,
-#post-formats-select {
-       line-height: 1.5em;
-       margin-top: 3px;
-}
-
-#poststuff #submitdiv .inside {
-       margin: 0;
-       padding: 0;
-}
-
-#titlediv,
-#poststuff .postarea {
-       margin-bottom: 20px;
-}
-
-#templateside ul li a {
-       text-decoration: none;
-}
-
-.tool-box .title {
-       margin: 8px 0;
-       font-size: 18px;
-       font-weight: normal;
-       line-height: 24px;
-}
-
-#sidemenu {
-       margin: -30px 15px 0 315px;
-       list-style: none;
-       position: relative;
-       float: right;
-       padding-left: 10px;
-       font-size: 12px;
-}
-
-#sidemenu a {
-       padding: 0 7px;
-       display: block;
-       float: left;
-       line-height: 28px;
-       border-top-width: 1px;
-       border-top-style: solid;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-}
-
-#sidemenu li {
-       display: inline;
-       line-height: 200%;
-       list-style: none;
-       text-align: center;
-       white-space: nowrap;
-       margin: 0;
-       padding: 0;
-}
-
-#sidemenu a.current {
-       font-weight: normal;
-       padding-left: 6px;
-       padding-right: 6px;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-       border-width: 1px;
-       border-style: solid;
-}
-
-#sidemenu li a .count-0 {
-       display: none;
-}
-
-.plugin-install #description,
-.plugin-install-network #description {
-       width: 60%;
-}
-
-table .vers,
-table .column-visible,
-table .column-rating {
-       text-align: left;
-}
-
-.error-message {
-       color: red;
-       font-weight: bold;
-}
-
-/* Scrollbar fix for bulk upgrade iframe */
-body.iframe {
-       height: 98%;
-}
-
-
-/* - Only used once or twice in all of WP - deprecate for global style
-------------------------------------------------------------------------------*/
-td.media-icon {
-       text-align: center;
-       width: 80px;
-       padding-top: 8px;
-       padding-bottom: 8px;
-}
-
-td.media-icon img {
-       max-width: 80px;
-       max-height: 60px;
-}
-
-.list-ajax-loading {
-       float: right;
-       margin-right: 9px;
-       margin-top: -1px;
-}
-
-.tablenav .list-ajax-loading {
-       margin-top: 7px;
-}
-
-#howto {
-       font-size: 11px;
-       margin: 0 5px;
-       display: block;
-}
-
-.importers td {
-       padding-right: 14px;
-}
-
-.importers {
-       font-size: 16px;
-       width: auto;
-}
-
-#namediv table {
-       width: 100%;
-}
-
-#namediv td.first {
-       width: 10px;
-       white-space: nowrap;
-}
-
-#namediv input {
-       width: 98%;
-}
-
-#namediv p {
-       margin: 10px 0;
-}
-
-#submitdiv h3 {
-       margin-bottom: 0 !important;
-}
-
-/* - Used - but could/should be deprecated with a CSS reset
-------------------------------------------------------------------------------*/
-.zerosize {
-       height: 0;
-       width: 0;
-       margin: 0;
-       border: 0;
-       padding: 0;
-       overflow: hidden;
-       position: absolute;
-}
-
-br.clear {
-       height: 2px;
-       line-height: 2px;
-}
-
-.checkbox {
-       border: none;
-       margin: 0;
-       padding: 0;
-}
-
-fieldset {
-       border: 0;
-       padding: 0;
-       margin: 0;
-}
-
-.post-categories {
-       display: inline;
-       margin: 0;
-       padding: 0;
-}
-
-.post-categories li {
-       display: inline;
-}
-
-
-/*-----------------------------------------------------------------------------
- MERGED
--------------------------------------------------------------------------------*/
-
-/* dashboard */
-.edit-box {
-       display: none;
-}
-
-h3:hover .edit-box {
-       display: inline;
-}
-
-.index-php form .input-text-wrap {
-       background: #fff;
-       border-style: solid;
-       border-width: 1px;
-       padding: 2px 3px;
-       border-color: #ccc;
-}
-
-#dashboard-widgets form .input-text-wrap input {
-       border: 0 none;
-       outline: none;
-       margin: 0;
-       padding: 0;
-       width: 99%;
-       color: #333;
-}
-
-form .textarea-wrap {
-       background: #fff;
-       border-style: solid;
-       border-width: 1px;
-       padding: 2px;
-       border-color: #ccc;
-}
-
-#dashboard-widgets form .textarea-wrap textarea {
-       border: 0 none;
-       padding: 0;
-       outline: none;
-       width: 99%;
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
-#dashboard-widgets .postbox form .submit {
-       float: none;
-       margin: .5em 0 0;
-       padding: 0;
-       border: none;
-}
-
-#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input {
-       margin: 0;
-}
-
-#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish {
-       min-width: 0;
-}
-
-#dashboard-widgets a {
-       text-decoration: none;
-}
-
-#dashboard-widgets h3 a {
-       text-decoration: underline;
-}
-
-#dashboard-widgets h3 .postbox-title-action {
-       position: absolute;
-       right: 30px;
-       padding: 0;
-       top: 5px;
-}
-
-#dashboard-widgets h4 {
-       font-weight: normal;
-       font-size: 13px;
-       margin: 0 0 .2em;
-       padding: 0;
-}
-
-/* Right Now */
-#dashboard_right_now p.sub,
-#dashboard_right_now .table, #dashboard_right_now .versions {
-       margin: -12px;
-}
-
-#dashboard_right_now .inside {
-       font-size: 12px;
-       padding-top: 20px;
-}
-
-#dashboard_right_now p.sub {
-       padding: 5px 0 15px;
-       color: #8f8f8f;
-       font-size: 14px;
-       position: absolute;
-       top: -17px;
-       left: 15px;
-}
-
-#dashboard_right_now .table {
-       margin: 0;
-       padding: 0;
-       position: relative;
-}
-
-#dashboard_right_now .table_content {
-       float: left;
-       border-top: #ececec 1px solid;
-       width: 45%;
-}
-
-#dashboard_right_now .table_discussion {
-       float: right;
-       border-top: #ececec 1px solid;
-       width: 45%;
-}
-
-#dashboard_right_now table td {
-       padding: 3px 0;
-       white-space: nowrap;
-}
-
-#dashboard_right_now table tr.first td {
-       border-top: none;
-}
-
-#dashboard_right_now td.b {
-       padding-right: 6px;
-       text-align: right;
-       font-size: 14px;
-       width: 1%;
-}
-
-#dashboard_right_now td.b a {
-       font-size: 18px;
-}
-
-#dashboard_right_now td.b a:hover {
-       color: #d54e21;
-}
-
-#dashboard_right_now .t {
-       font-size: 12px;
-       padding-right: 12px;
-       padding-top: 6px;
-       color: #777;
-}
-
-#dashboard_right_now .t a {
-       white-space: nowrap;
-}
-
-#dashboard_right_now .spam {
-       color: red;
-}
-
-#dashboard_right_now .waiting {
-       color: #e66f00;
-}
-
-#dashboard_right_now .approved {
-       color: green;
-}
-
-#dashboard_right_now .versions {
-       padding: 6px 10px 12px;
-       clear: both;
-}
-
-#dashboard_right_now a.button {
-       float: right;
-       clear: right;
-       position: relative;
-       top: -5px;
-}
-
-/* Recent Comments */
-#dashboard_recent_comments h3 {
-       margin-bottom: 0;
-}
-
-#dashboard_recent_comments .inside {
-       margin-top: 0;
-}
-
-#dashboard_recent_comments .comment-meta .approve {
-       font-style: italic;
-       font-family: sans-serif;
-       font-size: 10px;
-}
-
-#dashboard_recent_comments .subsubsub {
-       float: none;
-       white-space: normal;
-}
-
-#the-comment-list {
-       position: relative;
-}
-
-#the-comment-list .comment-item {
-       padding: 1em 10px;
-       border-top: 1px solid;
-}
-
-#the-comment-list .pingback {
-       padding-left: 9px !important;
-}
-
-#the-comment-list .comment-item,
-#the-comment-list #replyrow {
-       margin: 0 -10px;
-}
-
-#the-comment-list .comment-item:first-child {
-       border-top: none;
-}
-
-#the-comment-list .comment-item .avatar {
-       float: left;
-       margin: 0 10px 5px 0;
-}
-
-#the-comment-list .comment-item h4 {
-       line-height: 1.7em;
-       margin-top: -0.4em;
-       color: #777;
-}
-
-#the-comment-list .comment-item h4 cite {
-       font-style: normal;
-       font-weight: normal;
-}
-
-#the-comment-list .comment-item blockquote,
-#the-comment-list .comment-item blockquote p {
-       margin: 0;
-       padding: 0;
-       display: inline;
-}
-
-#dashboard_recent_comments #the-comment-list .trackback blockquote,
-#dashboard_recent_comments #the-comment-list .pingback blockquote {
-       display: block;
-}
-
-#the-comment-list .comment-item p.row-actions {
-       margin: 3px 0 0;
-       padding: 0;
-       font-size: 12px;
-}
-
-/* QuickPress */
-#dashboard_quick_press h4 {
-       font-family: sans-serif;
-       float: left;
-       width: 5em;
-       clear: both;
-       font-weight: normal;
-       text-align: right;
-       font-size: 12px;
-}
-
-#dashboard_quick_press h4 label {
-       margin-right: 10px;
-}
-
-#dashboard_quick_press .input-text-wrap,
-#dashboard_quick_press .textarea-wrap {
-       margin: 0 0 1em 5em;
-}
-
-#dashboard_quick_press .wp-media-buttons {
-       margin: 0 0 .5em 5em;
-       padding: 0;
-}
-
-#dashboard_quick_press .wp-media-buttons a {
-       color: #777;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit {
-       margin-left: 4.6em;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit input {
-       float: left;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
-       margin: 0 1em 0 10px;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit #publish {
-       float: right;
-}
-
-#dashboard-widgets #dashboard_quick_press form p.submit img.waiting {
-       vertical-align: middle;
-       visibility: hidden;
-       margin: 4px 6px 0 0;
-}
-
-/* Recent Drafts */
-#dashboard_recent_drafts ul,
-#dashboard_recent_drafts p {
-       margin: 0;
-       padding: 0;
-       word-wrap: break-word;
-}
-
-#dashboard_recent_drafts ul {
-       list-style: none;
-}
-
-#dashboard_recent_drafts ul li {
-       margin-bottom: 1em;
-}
-
-#dashboard_recent_drafts h4 {
-       line-height: 1.7em;
-       word-wrap: break-word;
-}
-
-#dashboard_recent_drafts h4 abbr {
-       font-weight: normal;
-       font-family: sans-serif;
-       font-size: 12px;
-       color: #999;
-       margin-left: 3px;
-}
-
-/* Feeds */
-.rss-widget ul {
-       margin: 0;
-       padding: 0;
-       list-style: none;
-}
-
-a.rsswidget {
-       font-size: 13px;
-       line-height: 1.7em;
-}
-
-.rss-widget ul li {
-       line-height: 1.5em;
-       margin-bottom: 12px;
-}
-
-.rss-widget span.rss-date {
-       color: #999;
-       font-size: 12px;
-       margin-left: 3px;
-}
-
-.rss-widget cite {
-       display: block;
-       text-align: right;
-       margin: 0 0 1em;
-       padding: 0;
-}
-
-.rss-widget cite:before {
-       content: '\2014';
-}
-
-/* Plugins */
-#dashboard_plugins h4 {
-       line-height: 1.7em;
-}
-
-#dashboard_plugins h5 {
-       font-weight: normal;
-       font-size: 13px;
-       margin: 0;
-       display: inline;
-       line-height: 1.4em;
-}
-
-#dashboard_plugins h5 a {
-       line-height: 1.4em;
-}
-
-#dashboard_plugins .inside span {
-       font-size: 12px;
-       padding-left: 5px;
-}
-
-#dashboard_plugins p {
-       margin: 0.3em 0 1.4em;
-       line-height: 1.4em;
-}
-
-.dashboard-comment-wrap {
-       overflow: hidden;
-       word-wrap: break-word;
-}
-
-/* Browser Nag */
-#dashboard_browser_nag a.update-browser-link {
-       font-size: 1.2em;
-       font-weight: bold;
-}
-
-#dashboard_browser_nag a {
-       text-decoration: underline;
-}
-
-#dashboard_browser_nag p.browser-update-nag.has-browser-icon {
-       padding-right: 125px;
-}
-
-#dashboard_browser_nag .browser-icon {
-       margin-top: -35px;
-}
-
-#dashboard_browser_nag.postbox.browser-insecure {
-       background-color: #ac1b1b;
-       border-color: #ac1b1b;
-}
-
-#dashboard_browser_nag.postbox {
-       background-color: #e29808;
-       background-image: none;
-       border-color: #edc048;
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-       color: #fff;
-}
-
-#dashboard_browser_nag.postbox.browser-insecure h3 {
-       border-bottom-color: #cd5a5a;
-       color: #fff;
-}
-
-#dashboard_browser_nag.postbox h3 {
-       border-bottom-color: #f6e2ac;
-       text-shadow: none;
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-       background: transparent none;
-       color: #fff;
-}
-
-#dashboard_browser_nag a {
-       color: #fff;
-}
-
-#dashboard_browser_nag.browser-insecure a.browse-happy-link,
-#dashboard_browser_nag.browser-insecure a.update-browser-link {
-       text-shadow: #871b15 0 1px 0;
-}
-
-#dashboard_browser_nag a.browse-happy-link,
-#dashboard_browser_nag a.update-browser-link {
-       text-shadow: #d29a04 0 1px 0;
-}
-
-
-/* login */
-
-.login * {
-       margin: 0;
-       padding: 0;
-}
-
-.login form {
-       margin-left: 8px;
-       padding: 26px 24px 46px;
-       font-weight: normal;
-       background: #fff;
-       border: 1px solid #e5e5e5;
-       -moz-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px;
-       -webkit-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px;
-       box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px;
-}
-
-.login form .forgetmenot {
-       font-weight: normal;
-       float: left;
-       margin-bottom: 0;
-}
-
-.login .button-primary {
-       font-size: 13px !important;
-       line-height: 16px;
-       padding: 3px 10px;
-       float: right;
-}
-
-#login form p {
-       margin-bottom: 0;
-}
-
-#login form p.submit {
-       padding: 0;
-}
-
-.login label {
-       color: #777;
-       font-size: 14px;
-}
-
-.login form .forgetmenot label {
-       font-size: 12px;
-       line-height: 19px;
-}
-
-.login form p {
-       margin-bottom: 24px;
-}
-
-.login h1 a {
-       background-image: url('../images/wordpress-logo.png?ver=20120216');
-       background-size: 274px 63px;
-       background-position: top center;
-       background-repeat: no-repeat;
-       width: 326px;
-       height: 67px;
-       text-indent: -9999px;
-       overflow: hidden;
-       padding-bottom: 15px;
-       display: block;
-}
-
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
-       .login h1 a {
-               background-image: url('../images/wordpress-logo-2x.png?ver=20120412');
-               background-size: 274px 63px;
-       }
-
-       .wp-badge {
-               background-image: url('../images/wp-badge-2x.png?ver=20120516');
-               background-size: 173px 194px;
-       }
-}
-
-#login {
-       width: 320px;
-       padding: 114px 0 0;
-       margin: auto;
-}
-
-#login_error,
-.login .message {
-       margin: 0 0 16px 8px;
-       padding: 12px;
-}
-
-.login #nav,
-.login #backtoblog {
-       text-shadow: #fff 0 1px 0;
-       margin: 0 0 0 16px;
-       padding: 16px 16px 0;
-}
-
-#backtoblog {
-       padding: 12px 16px 0;
-}
-
-.login form .input,
-.login input[type="text"] {
-       color: #555;
-       font-weight: 200;
-       font-size: 24px;
-       line-height: 1;
-       width: 100%;
-       padding: 3px;
-       margin-top: 2px;
-       margin-right: 6px;
-       margin-bottom: 16px;
-       border: 1px solid #e5e5e5;
-       background: #fbfbfb;
-       outline: none;
-       -moz-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
-       -webkit-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
-       box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
-}
-
-.login #pass-strength-result {
-       width: 250px;
-       font-weight: bold;
-       border-style: solid;
-       border-width: 1px;
-       margin: 12px 0 6px;
-       padding: 6px 5px;
-       text-align: center;
-}
-
-.mobile #login {
-       padding: 20px 0;
-}
-
-.mobile #login form,
-.mobile #login .message,
-.mobile #login_error {
-       margin-left: 0;
-}
-
-.mobile #login #nav,
-.mobile #login #backtoblog {
-       margin-left: 8px;
-}
-
-.mobile #login h1 a {
-       width: auto;
-}
-
-
-/* ms */
-/* Dashboard: MS Specific Data */
-#dashboard_right_now p.musub {
-       margin-top: 12px;
-       border-top: 1px solid #ececec;
-       padding-left: 16px;
-       position: static;
-}
-
-.rtl #dashboard_right_now p.musub {
-       padding-left: 0;
-       padding-right: 16px;
-}
-
-#dashboard_right_now td.b a.musublink {
-       font-size: 16px;
-}
-
-#dashboard_right_now div.musubtable {
-       border-top: none;
-}
-
-#dashboard_right_now div.musubtable .t {
-       white-space: normal;
-}
-
-/* Background Color for Site Status */
-.wp-list-table .site-deleted {
-       background: #ff8573;
-}
-.wp-list-table .site-spammed {
-       background: #faafaa;
-}
-.wp-list-table .site-archived {
-       background: #ffebe8;
-}
-.wp-list-table .site-mature {
-       background: #fecac2;
-}
-
-/* nav-menu */
-
-#nav-menus-frame {
-       margin-left: 300px;
-}
-
-#wpbody-content #menu-settings-column {
-       display:inline;
-       width:281px;
-       margin-left: -300px;
-       clear: both;
-       float: left;
-       padding-top: 24px;
-}
-
-.no-js #wpbody-content #menu-settings-column {
-       padding-top: 31px;
-}
-
-#menu-settings-column .inside {
-       clear: both;
-}
-
-.metabox-holder-disabled .postbox {
-       opacity: 0.5;
-       filter: alpha(opacity=50);
-}
-
-.metabox-holder-disabled .button-controls .select-all {
-       display: none;
-}
-
-#wpbody {
-       position: relative;
-}
-
-/* Menu Container */
-#menu-management-liquid {
-       float: left;
-       min-width: 100%;
-}
-
-#menu-management {
-       position: relative;
-       margin-right: 20px;
-       margin-top: -3px;
-       width: 100%;
-}
-
-#menu-management .menu-edit {
-       margin-bottom: 20px;
-}
-
-.nav-menus-php #post-body {
-       padding: 10px;
-       border-width: 1px 0;
-       border-style: solid;
-}
-
-#nav-menu-header,
-#nav-menu-footer {
-       padding: 0 10px;
-}
-
-#nav-menu-header {
-       border-bottom: 1px solid;
-}
-
-#nav-menu-footer {
-       border-top: 1px solid;
-}
-
-.nav-menus-php #post-body div.updated,
-.nav-menus-php #post-body div.error {
-       margin: 0;
-}
-
-.nav-menus-php #post-body-content {
-       position: relative;
-       float: none;
-}
-
-#menu-management .menu-add-new abbr {
-       font-weight:bold;
-}
-
-/* Menu Tabs */
-
-#menu-management .nav-tabs-nav {
-       margin: 0 20px;
-}
-
-#menu-management .nav-tabs-arrow {
-       width: 10px;
-       padding: 0 5px 4px;
-       cursor: pointer;
-       position: absolute;
-       top: 0;
-       line-height: 22px;
-       font-size: 18px;
-       text-shadow: 0 1px 0 #fff;
-}
-
-#menu-management .nav-tabs-arrow-left {
-       left: 0;
-}
-
-#menu-management .nav-tabs-arrow-right {
-       right: 0;
-       text-align: right;
-}
-
-#menu-management .nav-tabs-wrapper {
-       width: 100%;
-       height: 28px;
-       margin-bottom: -1px;
-       overflow: hidden;
-}
-
-#menu-management .nav-tabs {
-       padding-left: 20px;
-       padding-right: 10px;
-}
-
-.js #menu-management .nav-tabs {
-       float: left;
-       margin-left: 0px;
-       margin-right: -400px;
-}
-
-#menu-management .nav-tab {
-       margin-bottom: 0;
-       font-size: 14px;
-}
-
-#select-nav-menu-container {
-       text-align: right;
-       padding: 0 10px 3px 10px;
-       margin-bottom: 5px;
-}
-
-#select-nav-menu {
-       width: 100px;
-       display: inline;
-}
-
-#menu-name-label {
-       margin-top: -2px;
-}
-
-#wpbody .open-label {
-       display: block;
-       float:left;
-}
-
-#wpbody .open-label span {
-       padding-right: 10px;
-}
-
-.js .input-with-default-title {
-       font-style: italic;
-}
-
-#menu-management .inside {
-       padding: 0 10px;
-}
-
-/* Add Menu Item Boxes */
-.postbox .howto input {
-       width: 180px;
-       float: right;
-}
-
-.customlinkdiv .howto input {
-       width: 200px;
-}
-
-#nav-menu-theme-locations .howto select {
-       width: 100%;
-}
-
-#nav-menu-theme-locations .button-controls {
-       text-align: right;
-}
-
-.add-menu-item-view-all {
-       height: 400px;
-}
-
-/* Button Primary Actions */
-#menu-container .submit {
-       margin: 0px 0px 10px;
-       padding: 0px;
-}
-
-.nav-menus-php .meta-sep,
-.nav-menus-php .submitdelete,
-.nav-menus-php .submitcancel {
-       display: block;
-       float: left;
-       margin: 4px 0;
-       line-height: 15px;
-}
-
-.meta-sep {
-       padding: 0 2px;
-}
-
-#cancel-save {
-       text-decoration: underline;
-       font-size: 12px;
-       margin-left: 20px;
-       margin-top: 5px;
-}
-
-/* Button Secondary Actions */
-.list-controls {
-       float: left;
-       margin-top: 5px;
-}
-
-.add-to-menu {
-       float: right;
-}
-
-.postbox img.waiting {
-       display: none;
-       vertical-align: middle;
-}
-
-.button-controls {
-       clear:both;
-       margin: 10px 0;
-}
-
-.show-all,
-.hide-all {
-       cursor: pointer;
-}
-
-.hide-all {
-       display: none;
-}
-
-/* Create Menu */
-#menu-name {
-       width: 270px;
-}
-
-#manage-menu .inside {
-       padding: 0px 0px;
-}
-
-/* Custom Links */
-#available-links dt {
-       display: block;
-}
-
-#add-custom-link .howto {
-       font-size: 12px;
-}
-
-#add-custom-link label span {
-       display: block;
-       float: left;
-       margin-top: 5px;
-       padding-right: 5px;
-}
-
-.menu-item-textbox {
-       width: 180px;
-}
-
-.nav-menus-php .howto span {
-       margin-top: 4px;
-       display: block;
-       float: left;
-}
-
-/* Menu item types */
-.quick-search {
-       width: 190px;
-}
-
-.nav-menus-php .list-wrap {
-       display: none;
-       clear: both;
-       margin-bottom: 10px;
-}
-
-.nav-menus-php .list-container {
-       max-height: 200px;
-       overflow-y: auto;
-       padding: 10px 10px 5px;
-}
-
-.nav-menus-php .postbox p.submit {
-       margin-bottom: 0;
-}
-
-/* Listings */
-.nav-menus-php .list li {
-       display: none;
-       margin: 0;
-       margin-bottom: 5px;
-}
-
-.nav-menus-php .list li .menu-item-title {
-       cursor: pointer;
-       display: block;
-}
-
-.nav-menus-php .list li .menu-item-title input {
-       margin-right: 3px;
-       margin-top: -3px;
-}
-
-/* Nav Menu */
-#menu-container .inside {
-       padding-bottom: 10px;
-}
-
-.menu {
-       padding-top:1em;
-}
-
-#menu-to-edit {
-       padding: 1em 0;
-}
-
-.menu ul {
-       width: 100%;
-}
-
-.menu li {
-       margin-bottom: 0;
-       position:relative;
-}
-
-.menu-item-bar {
-       clear:both;
-       line-height:1.5em;
-       position:relative;
-       margin: 13px 0 0 0;
-}
-
-.menu-item-handle {
-       border: 1px solid #dfdfdf;
-       position: relative;
-       padding-left: 10px;
-       height: auto;
-       width: 400px;
-       line-height: 35px;
-       text-shadow: 0 1px 0 #FFFFFF;
-       overflow: hidden;
-       word-wrap: break-word;
-}
-
-#menu-to-edit .menu-item-invalid .menu-item-handle {
-       background-color: #f6c9cc; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#f6c9cc), to(#fdf8ff)); /* old Webkit  */
-       background-image: -webkit-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* new Webkit */
-       background-image: linear-gradient(bottom, #f6c9cc, #fdf8ff); /* proposed W3C Markup */
-}
-
-.menu-item-edit-active .menu-item-handle {
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 0;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 0;
-}
-
-.no-js .menu-item-edit-active .item-edit {
-       display: none;
-}
-
-.js .menu-item-handle {
-       cursor: move;
-}
-
-.menu li.deleting .menu-item-handle {
-       background-image: none;
-       text-shadow: 0 0 0;
-}
-
-.menu-item-handle .item-title {
-       font-size: 12px;
-       font-weight: bold;
-       padding: 7px 0;
-       line-height: 20px;
-       display:block;
-       margin-right:13em;
-}
-
-/* Sortables */
-li.menu-item.ui-sortable-helper dl {
-       margin-top: 0;
-}
-
-li.menu-item.ui-sortable-helper .menu-item-transport dl {
-       margin-top: 13px;
-}
-
-.menu .sortable-placeholder {
-       height: 35px;
-       width: 410px;
-       margin-top: 13px;
-}
-
-/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
-.menu-item-depth-0 { margin-left: 0px; }
-.menu-item-depth-1 { margin-left: 30px; }
-.menu-item-depth-2 { margin-left: 60px; }
-.menu-item-depth-3 { margin-left: 90px; }
-.menu-item-depth-4 { margin-left: 120px; }
-.menu-item-depth-5 { margin-left: 150px; }
-.menu-item-depth-6 { margin-left: 180px; }
-.menu-item-depth-7 { margin-left: 210px; }
-.menu-item-depth-8 { margin-left: 240px; }
-.menu-item-depth-9 { margin-left: 270px; }
-.menu-item-depth-10 { margin-left: 300px; }
-.menu-item-depth-11 { margin-left: 330px; }
-
-.menu-item-depth-0 .menu-item-transport { margin-left: 0px; }
-.menu-item-depth-1 .menu-item-transport { margin-left: -30px; }
-.menu-item-depth-2 .menu-item-transport { margin-left: -60px; }
-.menu-item-depth-3 .menu-item-transport { margin-left: -90px; }
-.menu-item-depth-4 .menu-item-transport { margin-left: -120px; }
-.menu-item-depth-5 .menu-item-transport { margin-left: -150px; }
-.menu-item-depth-6 .menu-item-transport { margin-left: -180px; }
-.menu-item-depth-7 .menu-item-transport { margin-left: -210px; }
-.menu-item-depth-8 .menu-item-transport { margin-left: -240px; }
-.menu-item-depth-9 .menu-item-transport { margin-left: -270px; }
-.menu-item-depth-10 .menu-item-transport { margin-left: -300px; }
-.menu-item-depth-11 .menu-item-transport { margin-left: -330px; }
-
-body.menu-max-depth-0 { min-width: 950px !important; }
-body.menu-max-depth-1 { min-width: 980px !important; }
-body.menu-max-depth-2 { min-width: 1010px !important; }
-body.menu-max-depth-3 { min-width: 1040px !important; }
-body.menu-max-depth-4 { min-width: 1070px !important; }
-body.menu-max-depth-5 { min-width: 1100px !important; }
-body.menu-max-depth-6 { min-width: 1130px !important; }
-body.menu-max-depth-7 { min-width: 1160px !important; }
-body.menu-max-depth-8 { min-width: 1190px !important; }
-body.menu-max-depth-9 { min-width: 1220px !important; }
-body.menu-max-depth-10 { min-width: 1250px !important; }
-body.menu-max-depth-11 { min-width: 1280px !important; }
-
-/* Menu item controls */
-.item-type {
-       font-size: 12px;
-       padding-right: 10px;
-}
-
-.item-controls {
-       font-size: 12px;
-       position: absolute;
-       right: 20px;
-       top: -1px;
-}
-
-.item-controls a {
-       text-decoration: none;
-}
-
-.item-controls a:hover {
-       cursor: pointer;
-}
-
-.item-controls .item-order {
-       padding-right: 10px;
-}
-
-.nav-menus-php .item-edit {
-       position: absolute;
-       right: -20px;
-       top: 0;
-       display: block;
-       width: 30px;
-       height: 36px;
-       overflow: hidden;
-       text-indent:-999em;
-       border-bottom: 1px solid;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-/* Menu editing */
-.menu-instructions-inactive {
-       display: none;
-}
-
-.menu-item-settings {
-       display: block;
-       width: 400px;
-       padding: 10px 0 10px 10px;
-       border: solid;
-       border-width: 0 1px 1px 1px;
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-.menu-item-edit-active .menu-item-settings {
-       display: block;
-}
-
-.menu-item-edit-inactive .menu-item-settings {
-       display: none;
-}
-
-.add-menu-item-pagelinks {
-       margin: .5em auto;
-       text-align: center;
-}
-
-.link-to-original {
-       display: block;
-       margin: 0 0 10px;
-       padding: 3px 5px 5px;
-       font-size: 12px;
-       font-style: italic;
-}
-
-.link-to-original a {
-       padding-left: 4px;
-       font-style: normal;
-}
-
-.hidden-field {
-       display: none;
-}
-
-.menu-item-settings .description-thin,
-.menu-item-settings .description-wide {
-       margin-right: 10px;
-       float: left;
-}
-
-.description-thin {
-       width: 190px;
-       height: 40px;
-}
-
-.description-wide {
-       width: 390px;
-}
-
-.menu-item-actions {
-       padding-top: 15px;
-}
-
-#cancel-save {
-       cursor: pointer;
-}
-
-/* Major/minor publishing actions (classes) */
-.nav-menus-php .major-publishing-actions {
-       clear: both;
-       padding: 3px 0 5px;
-}
-
-.nav-menus-php .major-publishing-actions .publishing-action {
-       text-align: right;
-       float: right;
-       line-height: 23px;
-       margin: 5px 0 1px;
-}
-
-.nav-menus-php .major-publishing-actions .delete-action {
-       vertical-align: middle;
-       text-align: left;
-       float: left;
-       padding-right: 15px;
-       margin-top: 5px;
-}
-
-.menu-name-label span,
-.auto-add-pages label {
-       font-size: 12px;
-       font-style: normal;
-}
-
-.menu-name-label {
-       margin-right: 15px;
-}
-
-.auto-add-pages input {
-       margin-top: 0;
-}
-
-.auto-add-pages {
-       margin-top: 4px;
-       float: left;
-}
-
-.nav-menus-php .submitbox .submitcancel {
-       border-bottom: 1px solid;
-       padding: 1px 2px;
-       text-decoration: none;
-}
-
-.nav-menus-php .major-publishing-actions .form-invalid {
-       padding-left: 4px;
-       margin-left: -4px;
-       border: 0 none;
-}
-
-/* Clearfix */
-#menu-item-name-wrap:after,
-#menu-item-url-wrap:after,
-#menu-name-label:after,
-#menu-settings-column .inside:after,
-#nav-menus-frame:after,
-.nav-menus-php #post-body-content:after,
-.nav-menus-php .button-controls:after,
-.nav-menus-php .major-publishing-actions:after,
-.nav-menus-php .menu-item-settings:after {
-       clear: both;
-       content: ".";
-       display: block;
-       height: 0;
-       visibility: hidden;
-}
-
-#nav-menus-frame,
-.button-controls,
-#menu-item-url-wrap,
-#menu-item-name-wrap {
-       display: block;
-}
-
-/* Star ratings */
-div.star-holder {
-       position: relative;
-       height: 17px;
-       width: 100px;
-       background: url('../images/stars.png?ver=20120307') repeat-x bottom left;
-}
-
-div.star-holder .star-rating {
-       background: url('../images/stars.png?ver=20120307') repeat-x top left;
-       height: 17px;
-       float: left;
-}
-
-div.action-links {
-       font-weight: normal;
-       margin: 6px 0 0;
-}
-
-/* Header on thickbox */
-#plugin-information-header {
-       margin: 0;
-       padding: 0 5px;
-       font-weight: bold;
-       position: relative;
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-       height: 2.5em;
-}
-#plugin-information ul#sidemenu {
-       font-weight: normal;
-       margin: 0 5px;
-       position: absolute;
-       left: 0;
-       bottom: -1px;
-}
-
-/* Install sidemenu */
-#plugin-information p.action-button {
-       width: 100%;
-       padding-bottom: 0;
-       margin-bottom: 0;
-       margin-top: 10px;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-#plugin-information .action-button a {
-       text-align: center;
-       font-weight: bold;
-       text-decoration: none;
-       display: block;
-       line-height: 2em;
-}
-
-#plugin-information h2 {
-       clear: none !important;
-       margin-right: 200px;
-}
-
-#plugin-information .fyi {
-       margin: 0 10px 50px;
-       width: 210px;
-}
-
-#plugin-information .fyi h2 {
-       font-size: 0.9em;
-       margin-bottom: 0;
-       margin-right: 0;
-}
-
-#plugin-information .fyi h2.mainheader {
-       padding: 5px;
-       -webkit-border-top-left-radius: 3px;
-       border-top-left-radius: 3px;
-}
-
-#plugin-information .fyi ul {
-       padding: 10px 5px 10px 7px;
-       margin: 0;
-       list-style: none;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-#plugin-information .fyi li {
-       margin-right: 0;
-}
-
-#plugin-information #section-holder {
-       padding: 10px;
-}
-
-#plugin-information .section ul,
-#plugin-information .section ol {
-       margin-left: 16px;
-       list-style-type: square;
-       list-style-image: none;
-}
-
-#plugin-information #section-screenshots ol {
-       list-style: none;
-       margin: 0;
-}
-
-#plugin-information #section-screenshots li img {
-       vertical-align: text-top;
-       max-width: 100%;
-       width: auto;
-       height: auto;
-}
-
-#plugin-information #section-screenshots li p {
-       font-style: italic;
-       padding-left: 20px;
-       padding-bottom: 2em;
-}
-
-#plugin-information #section-screenshots ol,
-#plugin-information .updated,
-#plugin-information pre {
-       margin-right: 215px;
-}
-
-#plugin-information pre {
-       padding: 7px;
-       overflow: auto;
-}
-
-/* press-this */
-body.press-this {
-       color: #333;
-       margin: 0;
-       padding: 0;
-       min-width: 675px;
-       min-height: 400px;
-}
-
-img {
-       border: none;
-}
-
-/* Header */
-.press-this #wphead {
-       height: 32px;
-       margin-left: 0;
-       margin-right: 0;
-       margin-bottom: 5px;
-}
-
-.press-this #header-logo {
-       float: left;
-       margin: 7px 7px 0;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       user-select: none;
-}
-
-.press-this #wphead h1 {
-       font-weight: normal;
-       font-size: 16px;
-       line-height: 32px;
-       margin: 0;
-       float: left;
-}
-
-.press-this #wphead h1 a {
-       text-decoration: none;
-}
-
-.press-this #wphead h1 a:hover {
-       text-decoration: underline;
-}
-
-.press-this #message {
-       margin: 10px 0;
-}
-
-.press-this-sidebar {
-       float: right;
-       width: 200px;
-       padding-top: 10px;
-}
-
-.press-this #title {
-       margin-left: 0;
-       margin-right: 0;
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       -ms-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
-.press-this .tagchecklist span a {
-       background: transparent url(../images/xit.gif) no-repeat 0 0;
-}
-
-.press-this #titlediv {
-       margin: 0;
-}
-
-.press-this .wp-media-buttons {
-       cursor: default;
-       padding: 8px 8px 0;
-}
-
-.press-this .howto {
-       margin-top: 2px;
-       margin-bottom: 3px;
-       font-size: 12px;
-       font-style: italic;
-       display: block;
-}
-
-/* Editor/Main Column */
-.press-this #poststuff {
-       margin: 0 10px 10px;
-}
-
-#poststuff #editor-toolbar {
-       height: 30px;
-}
-
-div.zerosize {
-       border: 0 none;
-       height: 0;
-       margin: 0;
-       overflow: hidden;
-       padding: 0;
-       width: 0;
-}
-
-.posting {
-       margin-right: 212px;
-       position: relative;
-}
-
-.press-this .inner-sidebar {
-       width: 200px;
-}
-
-.press-this .inner-sidebar .sleeve {
-       padding-top: 5px;
-}
-
-.press-this #submitdiv p {
-       margin: 0;
-       padding: 6px;
-}
-
-.press-this #submitdiv #publishing-actions {
-       border-bottom: 1px solid #dfdfdf;
-}
-
-.press-this #publish {
-       float: right;
-}
-
-.press-this #poststuff h2,
-.press-this #poststuff h3 {
-       font-size: 14px;
-       line-height: 1;
-}
-
-.press-this #tagsdiv-post_tag h3,
-.press-this #categorydiv h3 {
-       cursor: pointer;
-}
-
-.press-this #submitdiv h3 {
-       cursor: default;
-}
-
-h3.tb {
-       text-shadow: 0 1px 0 #fff;
-       font-weight: bold;
-       font-size: 12px;
-       margin-left: 5px;
-}
-
-#TB_window {
-       border: 1px solid #333;
-}
-
-.press-this .postbox,
-.press-this .stuffbox {
-       margin-bottom: 10px;
-       min-width: 0;
-}
-
-.postbox:hover .handlediv,
-.stuffbox:hover .handlediv {
-       background: transparent url(../images/arrows.png) no-repeat 6px 7px;
-}
-
-.press-this #submitdiv:hover .handlediv {
-       background: none;
-}
-
-.tbtitle {
-       font-size: 1.7em;
-       outline: none;
-       padding: 3px 4px;
-       border-color: #dfdfdf;
-}
-
-.press-this .actions {
-       float: right;
-       margin: -19px 0 0;
-}
-
-.press-this #extra-fields .actions {
-       margin: -25px -7px 0 0;
-}
-
-.press-this .actions li {
-       float: left;
-       list-style: none;
-       margin-right: 10px;
-}
-
-#extra-fields .button {
-       margin-right: 5px;
-}
-
-/* Photo Styles */
-#photo_saving {
-       margin: 0 8px 8px;
-       vertical-align: middle;
-}
-
-#img_container_container {
-       overflow: auto;
-}
-
-#extra-fields {
-       margin-top: 10px;
-       position: relative;
-}
-
-#extra-fields h2 {
-       margin: 12px;
-}
-
-#waiting {
-       margin-top: 10px;
-}
-
-#extra-fields .postbox {
-       margin-bottom: 5px;
-}
-
-#extra-fields .titlewrap {
-       padding: 0;
-       overflow: auto;
-       height: 100px;
-}
-
-#img_container a {
-       display: block;
-       float: left;
-       overflow: hidden;
-       vertical-align: center;
-}
-
-#img_container img,
-#img_container a {
-       width: 68px;
-       height: 68px;
-}
-
-#img_container img {
-       border: none;
-       background-color: #f4f4f4;
-       cursor: pointer;
-}
-
-#img_container a,
-#img_container a:link,
-#img_container a:visited {
-       border: 1px solid #ccc;
-       display: block;
-       position: relative;
-}
-
-#img_container a:hover,
-#img_container a:active {
-       border-color: #000;
-       z-index: 1000;
-       border-width: 2px;
-       margin: -1px;
-}
-
-/* Video */
-#embed-code {
-       width: 100%;
-       height: 98px;
-}
-
-/* Categories */
-.press-this .categorydiv div.tabs-panel {
-       height: 100px;
-}
-
-/* Tags */
-.press-this .tagsdiv .newtag {
-       width: 130px;
-}
-
-.press-this #content {
-       margin: 5px 0;
-       padding: 0 5px;
-       border: 0 none;
-       height: 357px;
-       font-family: Consolas, Monaco, monospace;
-       font-size: 13px;
-       line-height: 19px;
-       background: transparent;
-}
-
-/* Submit */
-#saving {
-       display: inline;
-       vertical-align: middle;
-}
-
-#TB_ajaxContent #options {
-       position: absolute;
-       top: 20px;
-       right: 25px;
-       padding: 5px;
-}
-
-#TB_ajaxContent h3 {
-       margin-bottom: .25em;
-}
-
-.error a {
-       text-decoration: underline;
-}
-
-.updated a {
-       text-decoration: none;
-       padding-bottom: 2px;
-}
-
-/* tag hints */
-.taghint {
-       color: #aaa;
-       margin: -17px 0 0 7px;
-       visibility: hidden;
-}
-
-input.newtag ~ div.taghint {
-       visibility: visible;
-}
-
-input.newtag:focus ~ div.taghint {
-       visibility: hidden;
-}
-
-/* TinyMCE */
-#mce_fullscreen_container {
-       background: #fff;
-}
-
-#photo-add-url-div input[type="text"] {
-       width: 300px;
-}
-
-/* theme-editor */
-.alignleft h3 {
-       margin: 0;
-}
-
-h3 span {
-       font-weight: normal;
-}
-
-#template textarea {
-       font-family: Consolas, Monaco, monospace;
-       font-size: 12px;
-       width: 97%;
-       background: #f9f9f9;
-       outline: none;
-}
-
-#template p {
-       width: 97%;
-}
-
-#templateside {
-       float: right;
-       width: 190px;
-       word-wrap: break-word;
-}
-
-#templateside h3,
-#postcustomstuff p.submit {
-       margin: 0;
-}
-
-#templateside h4 {
-       margin: 1em 0 0;
-}
-
-#templateside ol,
-#templateside ul {
-       margin: .5em;
-       padding: 0;
-}
-
-#templateside li {
-       margin: 4px 0;
-}
-
-#templateside ul li a span.highlight {
-       display:block;
-}
-
-.nonessential {
-       font-size: 11px;
-       font-style: italic;
-       padding-left: 12px;
-}
-
-.highlight {
-       padding: 3px 3px 3px 12px;
-       margin-left: -12px;
-       font-weight: bold;
-       border: 0 none;
-}
-
-#documentation {
-       margin-top: 10px;
-}
-#documentation label {
-       line-height: 22px;
-       vertical-align: top;
-       font-weight: bold;
-}
-
-.fileedit-sub {
-       padding: 10px 0 8px;
-       line-height: 180%;
-}
-
-#filter-box {
-       clear: both;
-}
-
-.feature-filter {
-       padding: 8px 12px 0;
-}
-
-.feature-filter .feature-group {
-       float: left;
-       margin: 5px 10px 10px;
-}
-
-.feature-filter .feature-group li {
-       display: inline;
-       float: left;
-       list-style-type: none;
-       padding-right: 25px;
-       width: 150px;
-}
-
-.feature-container {
-width: 100%;
-overflow: auto;
-margin-bottom: 10px;
-}
-
-/* widgets */
-
-/* 2 column liquid layout */
-div.widget-liquid-left {
-       float: left;
-       clear: left;
-       width: 100%;
-       margin-right: -325px;
-}
-
-div#widgets-left {
-       margin-left: 5px;
-       margin-right: 325px;
-}
-
-div#widgets-right {
-       width: 285px;
-       margin: 0 auto;
-}
-
-div.widget-liquid-right {
-       float: right;
-       clear: right;
-       width: 300px;
-}
-
-.widget-liquid-right .widget,
-.inactive-sidebar .widget,
-.widget-liquid-right .sidebar-description {
-       width: 250px;
-       margin: 0 auto 20px;
-       overflow: hidden;
-}
-
-.widget-liquid-right .sidebar-description {
-       margin-bottom: 10px;
-}
-
-.inactive-sidebar .widget {
-       margin: 0 10px 20px;
-       float: left;
-}
-
-div.sidebar-name h3 {
-       font-weight: normal;
-       font-size: 15px;
-       margin: 0;
-       padding: 8px 10px;
-       overflow: hidden;
-       white-space: nowrap;
-}
-
-div.sidebar-name {
-       cursor: pointer;
-       font-size: 13px;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-}
-
-.js .closed .sidebar-name {
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-.widget-liquid-right .widgets-sortables,
-#widgets-left .widget-holder {
-       border-width: 0 1px 1px;
-       border-style: none solid solid;
-       -webkit-border-bottom-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-bottom-right-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-.js .closed .widgets-sortables,
-.js .closed .widget-holder {
-       display: none;
-}
-
-.widget-liquid-right .widgets-sortables {
-       padding: 15px 0 0;
-}
-
-#available-widgets .widget-holder {
-       padding: 7px 5px 0;
-}
-
-#available-widgets .widget {
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-}
-
-.inactive-sidebar {
-       padding: 5px 5px 0;
-}
-
-#widget-list .widget {
-       width: 250px;
-       margin: 0 10px 15px;
-       border: 0 none;
-       background: transparent;
-       float: left;
-}
-
-#widget-list .widget-description {
-       padding: 5px 8px;
-}
-
-.widget-placeholder {
-       border-width: 1px;
-       border-style: dashed;
-       margin: 0 auto 20px;
-       height: 26px;
-       width: 250px;
-}
-
-.inactive-sidebar .widget-placeholder {
-       margin: 0 10px 20px;
-       float: left;
-}
-
-div.widgets-holder-wrap {
-       padding: 0;
-       margin: 10px 0 20px;
-}
-
-#widgets-left #available-widgets {
-       background-color: transparent;
-       border: 0 none;
-}
-
-ul#widget-list {
-       list-style: none;
-       margin: 0;
-       padding: 0;
-       min-height: 100px;
-}
-
-.widget .widget-top {
-       margin-bottom: -1px;
-       font-size: 12px;
-       font-weight: bold;
-       height: 26px;
-       overflow: hidden;
-}
-
-.widget-top .widget-title {
-       padding: 7px 9px;
-}
-
-.widget-top .widget-title-action {
-       float: right;
-}
-
-a.widget-action {
-       display: block;
-       width: 24px;
-       height: 26px;
-}
-
-#available-widgets a.widget-action {
-       display: none;
-}
-
-.widget-top a.widget-action {
-       background: transparent url(../images/arrows.png) no-repeat 4px 6px;
-}
-
-.widget-top a.widget-action:hover {
-       background: transparent url(../images/arrows-dark.png) no-repeat 4px 6px;
-}
-
-.widget .widget-inside,
-.widget .widget-description {
-       padding: 12px 12px 10px;
-       font-size: 12px;
-       line-height: 16px;
-}
-
-.widget-inside,
-.widget-description {
-       display: none;
-}
-
-#available-widgets .widget-description {
-       display: block;
-}
-
-.widget .widget-inside p {
-       margin: 0 0 1em;
-       padding: 0;
-}
-
-.widget-title h4 {
-       margin: 0;
-       line-height: 1;
-       overflow: hidden;
-       white-space: nowrap;
-}
-
-.widgets-sortables {
-       min-height: 90px;
-}
-
-.widget-control-actions {
-       margin-top: 8px;
-}
-
-.widget-control-actions a {
-       text-decoration: none;
-}
-
-.widget-control-actions a:hover {
-       text-decoration: underline;
-}
-
-.widget-control-actions .ajax-feedback {
-       padding-bottom: 3px;
-}
-
-.widget-control-actions div.alignleft {
-       margin-top: 6px;
-}
-
-div#sidebar-info {
-       padding: 0 1em;
-       margin-bottom: 1em;
-       font-size: 12px;
-}
-
-.widget-title a,
-.widget-title a:hover {
-       text-decoration: none;
-       border-bottom: none;
-}
-
-.widget-control-edit {
-       display: block;
-       font-size: 12px;
-       font-weight: normal;
-       line-height: 26px;
-       padding: 0 8px 0 0;
-}
-
-a.widget-control-edit {
-       text-decoration: none;
-}
-
-.widget-control-edit .add,
-.widget-control-edit .edit {
-       display: none;
-}
-
-#available-widgets .widget-control-edit .add,
-#widgets-right .widget-control-edit .edit,
-.inactive-sidebar .widget-control-edit .edit {
-       display: inline;
-}
-
-.editwidget {
-       margin: 0 auto 15px;
-}
-
-.editwidget .widget-inside {
-       display: block;
-       padding: 10px;
-}
-
-.inactive p.description {
-       margin: 5px 15px 10px;
-}
-
-#available-widgets p.description {
-       margin: 0 12px 12px;
-}
-
-.widget-position {
-       margin-top: 8px;
-}
-
-.inactive {
-       padding-top: 2px;
-}
-
-.sidebar-name-arrow {
-       float: right;
-       height: 29px;
-       width: 26px;
-}
-
-.widget-title .in-widget-title {
-       font-size: 12px;
-       white-space: nowrap;
-}
-
-#removing-widget {
-       display: none;
-       font-weight: normal;
-       padding-left: 15px;
-       font-size: 12px;
-       line-height: 1;
-}
-
-.widget-control-noform,
-#access-off,
-.widgets_access .widget-action,
-.widgets_access .sidebar-name-arrow,
-.widgets_access #access-on,
-.widgets_access .widget-holder .description {
-       display: none;
-}
-
-.widgets_access .widget-holder,
-.widgets_access #widget-list {
-       padding-top: 10px;
-}
-
-.widgets_access #access-off {
-       display: inline;
-}
-
-.widgets_access #wpbody-content .widget-title-action,
-.widgets_access #wpbody-content .widget-control-edit,
-.widgets_access .closed .widgets-sortables,
-.widgets_access .closed .widget-holder {
-       display: block;
-}
-
-.widgets_access .closed .sidebar-name {
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 0;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 0;
-}
-
-.widgets_access .sidebar-name,
-.widgets_access .widget .widget-top {
-       cursor: default;
-}
-
-/* =Media Queries
--------------------------------------------------------------- */
-
-@media only screen and (max-width: 768px) {
-       /* categories */
-       #col-left {
-               width: 100%;
-       }
-
-       #col-right {
-               width: 100%;
-       }
-}
-
-@media only screen and (min-width: 769px) {
-       /* categories */
-       #col-left {
-               width: 35%;
-       }
-
-       #col-right {
-               width: 65%;
-       }
-}
-
-@media only screen and (max-width: 860px) {
-
-       /* categories */
-       #col-left {
-               width: 35%;
-       }
-
-       #col-right {
-               width: 65%;
-       }
-}
-
-@media only screen and (min-width: 980px) {
-
-       /* categories */
-       #col-left {
-               width: 35%;
-       }
-
-       #col-right {
-               width: 65%;
-       }
-}
-
-@media only screen and (max-width: 768px) {
-       /* categories */
-       #col-left {
-               width: 100%;
-       }
-
-       #col-right {
-               width: 100%;
-       }
-
-       .form-field input,
-       .form-field textarea {
-               width: 99%;
-       }
-
-       .form-wrap .form-field {
-               padding:0;
-       }
-
-       /* users */
-       #profile-page .form-table textarea {
-               max-width: 400px;
-               width: auto;
-       }
-}
-
-/* =Localized CSS
--------------------------------------------------------------- */
-
-/* zh_CN: Remove italic properties. */
-.locale-zh-cn .howto,
-.locale-zh-cn .tablenav .displaying-num,
-.locale-zh-cn .js .input-with-default-title,
-.locale-zh-cn .link-to-original,
-.locale-zh-cn .inline-edit-row fieldset span.title,
-.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,
-.locale-zh-cn #utc-time,
-.locale-zh-cn #local-time,
-.locale-zh-cn p.install-help,
-.locale-zh-cn p.help,
-.locale-zh-cn p.description,
-.locale-zh-cn span.description,
-.locale-zh-cn .form-wrap p {
-       font-style: normal;
-}
-
-/* zh_CN: Enlarge dashboard widget 'Configure' link */
-.locale-zh-cn .hdnle a { font-size: 12px; }
-
-/* zn_CH: Enlarge font size, set font-size: normal */
-.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; }
-
-/* Zn_CH: Distraction free writing.
- *  More beautiful font for "Just write."
- *  Larger text for HTML/Visual mode.
- */
-.locale-zh-cn #wp-fullscreen-tagline { font-family: KaiTi, "楷体", sans-serif; }
-.locale-zh-cn #wp-fullscreen-modes a { font-size: 12px; }
-
-/* zh_CN: Enlarge font-size. */
-.locale-zh-cn #sort-buttons { font-size: 1em !important; }
-
-/* ru_RU: Text needs more room to breathe. */
-.locale-ru-ru #dashboard_quick_press .input-text-wrap,
-.locale-ru-ru #dashboard_quick_press .textarea-wrap,
-.locale-ru-ru #dashboard_quick_press .wp-media-buttons  {
-       margin-left: 5.7em; /* default 5em + 0.7em */
-}
-.locale-ru-ru #dashboard_quick_press h4 {
-       width: 5.7em; /* default 5.5em + 0.2em */
-}
-.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit {
-       margin-left: 5.3em; /* default 4.6em + 0.7em */
-}
-.locale-ru-ru .inline-edit-row fieldset label span.title {
-       width: auto; /* default 5em */
-       min-width: 5em;
-}
-.locale-ru-ru.press-this .posting {
-       margin-right: 257px; /* default 212px + 45px */
-}
-.locale-ru-ru.press-this #photo-add-url-div input[type="text"]  {
-       width: 255px; /* default 300px - 45px */
-}
-.locale-ru-ru.press-this #side-sortables {
-       width: 245px; /* default 200px + 45px */
-}
-
-/* lt_LT: QuickPress + QuickEdit */
-.locale-lt-lt #dashboard_quick_press .input-text-wrap,
-.locale-lt-lt #dashboard_quick_press .textarea-wrap,
-.locale-lt-lt #dashboard_quick_press .wp-media-buttons  {
-       margin-left: 7em;
-}
-.locale-lt-lt #dashboard_quick_press h4 {
-       width: 7em;
-}
-.locale-lt-lt .inline-edit-row fieldset label span.title {
-       width: 8em;
-}
-.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap {
-       margin-left: 8em;
-}
diff --git a/wp-admin/css/wp-admin.min.css b/wp-admin/css/wp-admin.min.css
new file mode 100644 (file)
index 0000000..e784d4c
--- /dev/null
@@ -0,0 +1 @@
+#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#wpfooter{margin-left:165px}.folded #wpcontent,.folded #wpfooter{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.col-wrap{padding:0 7px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-21px;height:auto;width:auto;display:block;font-size:14px;font-weight:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;border-radius:3px;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js,.js.wp-core-ui .hide-if-js,.js .wp-core-ui .hide-if-js,.no-js.wp-core-ui .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select,button{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],select,textarea,div{outline:0}a:focus,a:active{outline:thin dotted}#adminmenu a:focus,#adminmenu a:active,.screen-reader-text:focus{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;border:0}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.widefat.media .check-column{padding-top:8px}.widefat thead .check-column,.widefat tfoot .check-column{padding:10px 0 0}.no-js .widefat thead .check-column input,.no-js .widefat tfoot .check-column input{display:none}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{background-color:#fff;color:#333}select{color:#000}select[disabled]{color:#7f7f7f}select:focus{border-color:#aaa}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{-webkit-box-shadow:1px 1px 2px rgba(0,0,0,0.1);box-shadow:1px 1px 2px rgba(0,0,0,0.1)}input[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #delete_all,.tablenav #clear-recent-list{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:2em;margin:0 4px 0 0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-focus{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#ajax-loading,.ajax-loading,.ajax-feedback,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta-links a:focus{-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.4);box-shadow:1px 1px 1px rgba(0,0,0,0.4);outline:0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:28px;position:relative}#adminmenu .wp-submenu{list-style:none;padding:4px 0;margin:0;position:absolute;top:-1000em;left:146px;z-index:1000;overflow:visible;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.js #adminmenu .sub-open,.js #adminmenu .opensub .wp-submenu,#adminmenu a.menu-top:focus+.wp-submenu,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;border:0 none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:-1px;left:32px}.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}#adminmenu .wp-submenu a{font-size:12px;line-height:18px;margin:0;padding-left:12px}#adminmenu .wp-not-current-submenu li>a{padding-left:16px}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;font-weight:bold;line-height:18px;padding:0}#adminmenu .wp-submenu-head,.folded #adminmenu .wp-menu-name{display:none}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu a.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{padding:7px 0 0 7px;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:5px}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:28px}.wp-menu-arrow{z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu .wp-menu-arrow div{display:none;position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid;top:0}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow div,#adminmenu li.wp-has-submenu .wp-menu-arrow div,#adminmenu li.current .wp-menu-arrow div,.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow,#adminmenu a:hover .wp-menu-arrow{display:block}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-menu-open .wp-menu-arrow{top:0}.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li .wp-menu-arrow div,.no-js #adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current .wp-menu-arrow,.folded #adminmenu li.current .wp-menu-arrow div,.folded #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.folded #adminmenu li.wp-menu-open .wp-menu-arrow,.folded #adminmenu li a:focus .wp-menu-arrow{display:block}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 4px 5px 10px;margin:-4px -1px 4px;border-width:1px 0;border-style:solid;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}.folded #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px;border-width:1px 0 0;border-style:solid}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:52px}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap,.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top{width:32px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu{top:-1px;left:32px}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{display:none}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:28px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}.auto-fold #adminmenu li .wp-menu-arrow div{display:none}.auto-fold #adminmenu li.current .wp-menu-arrow,.auto-fold #adminmenu li.current .wp-menu-arrow div,.auto-fold #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.auto-fold #adminmenu li.wp-menu-open .wp-menu-arrow,.auto-fold #adminmenu li a:focus .wp-menu-arrow{display:block}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold #collapse-menu span{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{background-image:url('../images/bubble_bg.gif');height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble.png');background-repeat:no-repeat;height:12px;width:12px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.metabox-holder .postbox-container .empty-container{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.js .postbox .hndle{cursor:move}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px}.js .postbox .handlediv{cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .widget .widget-top,.js .postbox h3{cursor:move}.postbox .inside,.stuffbox .inside{padding:0 12px 0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{position:relative;overflow:auto;margin:20px 0;padding:23px 10px 12px;border-width:1px;border-style:solid;border-radius:3px;font-size:13px;line-height:2.1em}.welcome-panel h3{margin:0;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:normal;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:13px}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:5px;right:10px;padding:8px 3px;font-size:13px;text-decoration:none;line-height:1}.welcome-panel .welcome-panel-close:before{content:' ';position:absolute;left:-12px;width:10px;height:100%;background:url('../images/xit.gif') 0 17% no-repeat}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px}.welcome-panel-content{margin-left:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:left}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p{margin-top:7px}.welcome-panel .welcome-icon{display:block;padding:2px 0 8px 32px;background-image:url('../images/welcome-icons.png');background-repeat:no-repeat;background-size:16px}.welcome-panel .welcome-add-page{background-position:0 2px}.welcome-panel .welcome-edit-page{background-position:0 -90px}.welcome-panel .welcome-learn-more{background-position:0 -136px}.welcome-panel .welcome-comments{background-position:0 -182px}.welcome-panel .welcome-view-site{background-position:0 -274px}.welcome-panel .welcome-widgets-menus{background-position:1px -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:0 -44px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}.welcome-panel .welcome-icon{padding-left:25px}}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-slug{width:25%}.fixed .column-posts{width:10%}.fixed .column-icon{width:80px}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv .spinner{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url('../images/sort.gif');background-repeat:no-repeat}.fixed .column-comments .sorting-indicator{margin-top:3px}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{overflow:hidden;padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}span.post-state-format{font-weight:normal}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-save .spinner{padding:4px 10px 0;vertical-align:top;float:right}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a,#show-comments .spinner{float:left}#titlediv{position:relative;margin-bottom:10px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;width:100%;outline:0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px}#wp-fullscreen-save .fs-saved{color:#999;float:right;margin-top:4px}#wp-fullscreen-title-prompt-text{padding:11px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:23px;min-height:23px;margin-top:5px;padding:0 10px}#edit-slug-box .cancel{margin-right:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select,#post-format{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li{border-style:solid;border-width:1px;position:relative}ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 1px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#content-resize-handle{background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;position:absolute;right:2px;height:19px}.press-this #content-resize-handle{bottom:2px}.tmce-active #content-resize-handle{display:none}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left center;padding:2px 0 1px 20px}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff th.left,#postcustomstuff td.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}table.diff{width:100%}table.diff col.content{width:50%}table.diff tr{background-color:transparent}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:0}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border-style:solid;border-width:1px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul{list-style:none;padding:0;margin:0}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.links-table td label{margin-right:8px}.links-table td input[type="text"],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.media-item .edit-attachment,.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}.media-new-php #media-items{margin:1em 0}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#f7f7f7;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f7f7f7));background-image:-webkit-linear-gradient(bottom,#fff,#f7f7f7);background-image:-moz-linear-gradient(bottom,#fff,#f7f7f7);background-image:-o-linear-gradient(bottom,#fff,#f7f7f7);background-image:linear-gradient(to top,#fff,#f7f7f7);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#8cc1e9;background-image:-webkit-gradient(linear,left bottom,left top,from(#72a7cf),to(#8cc1e9));background-image:-webkit-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-moz-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-o-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:linear-gradient(to top,#72a7cf,#8cc1e9);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:600px;height:300px;overflow:hidden;padding:33px 0 51px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;padding:6px;height:100%}.find-box-search{overflow:hidden;padding:9px;position:relative}.find-box-search .spinner{float:none;left:125px;position:absolute;top:9px}#find-posts-input{float:left;width:140px;height:24px}#find-posts-search{float:left;margin:1px 4px 0 3px}#find-posts-response{margin:8px 0;padding:0 1px 6px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:3px 0 0 8px;width:15px}.find-box-buttons{padding:8px;overflow:hidden}.find-box #resize-se{position:absolute;right:1px;bottom:1px}.ui-find-overlay{position:absolute;top:0;left:0;background-color:#000;opacity:.6;filter:alpha(opacity=60)}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.post-php .imgedit-wrap table{width:100%}.describe .imgedit-wrap table td,.wp_attachment_holder .imgedit-wrap table td{vertical-align:top;padding-top:0}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}.wp_attachment_holder .imgedit-wrap table td.imgedit-settings{width:250px}td.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;background-size:16px 16px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.spinner{background:url(../images/wpspin_light.gif) no-repeat;background-size:16px 16px;display:none;float:right;opacity:.7;filter:alpha(opacity=70);width:16px;height:16px;margin:5px 5px 0}.no-float{float:none}.media-disabled,.imgedit-settings .disabled{color:grey}.wp_attachment_image,.A1B1{overflow:hidden}.wp_attachment_image .button,.A1B1 .button{float:left}.no-js .wp_attachment_image .button{display:none}.wp_attachment_image .spinner,.A1B1 .spinner{float:left;padding:0 4px 4px;vertical-align:bottom}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}a.imgedit-help-toggle{text-decoration:none}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;margin-bottom:8px;padding:2px 10px}.wp_attachment_details{margin-bottom:20px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .spinner{padding:2px 0 0;vertical-align:top;float:right}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-webkit-box-shadow:none;box-shadow:none}.comment-php .wp-editor-area{height:200px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}.theme-install-php .spinner{margin-top:9px}h3.available-themes{margin:0 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}.available-theme a.screenshot:focus{border-color:#777}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}.ie8 .available-theme .action-links li{padding-right:7px;margin-right:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom-width:1px;border-bottom-style:solid;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.appearance_page_custom-header #headimg{border:1px solid #dfdfdf;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}.nav-tab{border-style:solid;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-width:1px;border-bottom-style:solid;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a,.pressthis a:hover,.pressthis a:focus,.pressthis a:active{display:inline-block;position:relative;cursor:move;color:#333;background:#e6e6e6;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(7%,#e6e6e6),color-stop(77%,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(to top,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:active{outline:0}.pressthis a:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;background-size:24px 20px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .spinner{float:none;margin:-3px 3px}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#wpfooter p{margin:0;line-height:20px}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.images-stagger-right img{float:right;margin:0 5px 12px 2em}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section img.image-100{margin:0 0 2em 0;width:100%}.about-wrap .feature-section img.image-66{width:65%}.about-wrap .feature-section img.image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .images-stagger-right img.image-30:nth-child(2){margin-left:1em}.about-wrap .feature-section.col{margin-bottom:0}.about-wrap .feature-section.col h4{margin:0 0 .6em 0}.about-wrap .feature-section.col .last-feature{margin-right:0}.about-wrap .feature-section.two-col div{width:47%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .changelog .feature-section{overflow:hidden;padding-bottom:0}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img{clear:both}}@media only screen and (max-width:768px){.about-wrap .feature-section img.image-66{float:none;width:98%;max-width:98%}.about-wrap .feature-section.images-stagger-right img.image-66{margin-left:3px}.about-wrap .feature-section.images-stagger-left img.image-66{margin-right:3px}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{float:left;margin-right:10px}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay a.collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat -1px -73px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:-1px -109px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:#fff url("../images/wpspin_light.gif") no-repeat fixed center center;background-size:16px 16px}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,#poststuff .inside #page_template{max-width:100%}.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{max-width:80%}.ie8 #poststuff .inside #parent_id,.ie8 #poststuff .inside #page_template,.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name="page_template"]{width:250px}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{right:30px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}.no-js #dashboard_quick_press{display:none}#dashboard_quick_press .easy-blogging{padding:0 8px;text-align:left}#dashboard_quick_press .input-text-wrap{position:relative}#dashboard_quick_press .prompt{color:#bbb;position:absolute}#dashboard_quick_press div.updated{padding:0 5px}#title-wrap label,#tags-input-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;line-height:100%;outline:0}#tags-input-wrap #tags-input{outline:0}#title-wrap #title-prompt-text{font-size:1.3em;padding:5px 8px}#tags-input-wrap #tags-input-prompt-text{font-size:1em;padding:4px 8px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 0}#dashboard_quick_press .wp-media-buttons{margin:0 0 .2em 1px;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 .7em 0 1px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{vertical-align:middle;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;background:transparent none;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;outline:0;overflow:hidden;padding-bottom:15px;display:block}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}#nav-menus-frame{margin-left:300px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px}.no-js #wpbody-content #menu-settings-column{padding-top:31px}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}#menu-management-liquid{float:left;min-width:100%}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#menu-management .nav-tabs-nav{margin:0 20px}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff}#menu-management .nav-tabs-arrow-left{left:0}#menu-management .nav-tabs-arrow-right{right:0;text-align:right}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden}#menu-management .nav-tabs{padding-left:20px;padding-right:10px}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px}#menu-management .nav-tab{margin-bottom:0;font-size:14px}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input{width:180px;float:right}.customlinkdiv .howto input{width:200px}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button.right,.button-secondary.right,.button-primary.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox .spinner{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom:5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{padding:1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:13px 0 0 0}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(to top,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal}.menu-name-label{margin-right:15px}.auto-add-pages input{margin-top:0}.auto-add-pages{margin-top:4px;float:left}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20121108') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20121108') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px;padding:0}.press-this #photo-add-url-div input[type="text"]{width:220px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-32px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px;overflow:hidden}#waiting span{float:right;margin:0 0 0 5px}#waiting .spinner{display:block}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:120px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:345px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}.press-this #publishing-actions .spinner{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline-block;vertical-align:top;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;display:inline-block}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .sidebar-name{cursor:pointer}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;display:inline-block;vertical-align:top}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:27px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;padding-bottom:.2em;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name .spinner{float:none;margin:0 3px -3px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.ui-sortable,.ui-draggable{-ms-touch-action:none}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.press-this .tagchecklist span a{background-image:url('../images/xit-2x.gif');background-size:20px auto}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv,.widget-top a.widget-action{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.widget-top a.widget-action:hover{background-image:url('../images/arrows-dark-2x.png');background-size:15px 123px}.post-com-count{background-image:url('../images/bubble_bg-2x.gif');background-size:18px 100px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble-2x.png');background-size:12px 12px}.sorting-indicator{background-image:url('../images/sort-2x.gif');background-size:14px 4px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}div.star-holder{background:url('../images/stars-2x.png?ver=20121108') repeat-x bottom left;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-2x.png?ver=20121108') repeat-x top left;background-size:21px 37px}.welcome-panel .welcome-panel-close:before{background-image:url('../images/xit-2x.gif');background-size:20px auto}.welcome-panel .welcome-icon{background-image:url('../images/welcome-icons-2x.png')}.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.pressthis a span{background-image:url(../images/press-this-2x.png?v=20121105)}.imgedit-crop,.imgedit-rleft,.imgedit-rright,.imgedit-flipv,.imgedit-fliph,.imgedit-undo,.imgedit-redo{background-image:url('../images/imgedit-icons-2x.png');background-size:260px 64px}.spinner,.imgedit-wait,.customize-loading #customize-container{background-image:url(../images/wpspin_light-2x.gif)}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-ru-ru #customize-header-actions .button{padding:0 8px 1px}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.update-php .spinner{float:none;margin:-4px 0}
\ No newline at end of file
index 8fb1399b3b87ebd6c4a320cf6585e79e49964e90..a924ecaf797c0fc866db83139068fdb7f8bd8a4d 100644 (file)
@@ -73,12 +73,6 @@ class Custom_Background {
                add_action("load-$page", array(&$this, 'take_action'), 49);
                add_action("load-$page", array(&$this, 'handle_upload'), 49);
 
-               if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) {
-                       add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
-                       add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
-                       add_filter( 'media_upload_mime_type_links', '__return_empty_array' );
-               }
-
                if ( $this->admin_header_callback )
                        add_action("admin_head-$page", $this->admin_header_callback, 51);
        }
@@ -94,8 +88,8 @@ class Custom_Background {
                        'title'   => __('Overview'),
                        'content' =>
                                '<p>' . __( 'You can customize the look of your site without touching any of your theme&#8217;s code by using a custom background. Your background can be an image or a color.' ) . '</p>' .
-                               '<p>' . __( 'To use a background image, simply upload it, then choose your display options below. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '</p>' .
-                               '<p>' . __( 'You can also choose a background color. If you know the hexadecimal code for the color you want, enter it in the Background Color field. If not, click on the Select a Color link, and a color picker will allow you to choose the exact shade you want.' ) . '</p>' .
+                               '<p>' . __( 'To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the &#8220;Choose Image&#8221; button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '</p>' .
+                               '<p>' . __( 'You can also choose a background color by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. &#8220;#ff0000&#8221; for red, or by choosing a color using the color picker.' ) . '</p>' .
                                '<p>' . __( 'Don&#8217;t forget to click on the Save Changes button when you are finished.' ) . '</p>'
                ) );
 
@@ -105,10 +99,9 @@ class Custom_Background {
                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
                );
 
-               add_thickbox();
-               wp_enqueue_script('media-upload');
+               wp_enqueue_media();
                wp_enqueue_script('custom-background');
-               wp_enqueue_style('farbtastic');
+               wp_enqueue_style('wp-color-picker');
        }
 
        /**
@@ -254,7 +247,7 @@ if ( get_background_image() ) {
 <?php endif; ?>
 <tr valign="top">
 <th scope="row"><?php _e('Select Image'); ?></th>
-<td><form enctype="multipart/form-data" id="upload-form" method="post" action="">
+<td><form enctype="multipart/form-data" id="upload-form" class="wp-upload-form" method="post" action="">
        <p>
                <label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
                <input type="file" id="upload" name="import" />
@@ -262,14 +255,11 @@ if ( get_background_image() ) {
                <?php wp_nonce_field( 'custom-background-upload', '_wpnonce-custom-background-upload' ); ?>
                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
        </p>
-       <?php
-               $image_library_url = get_upload_iframe_src( 'image', null, 'library' );
-               $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
-               $image_library_url = add_query_arg( array( 'context' => 'custom-background', 'TB_iframe' => 1 ), $image_library_url );
-       ?>
        <p>
                <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
-               <a id="choose-from-library-link" class="button thickbox" href="<?php echo esc_url( $image_library_url ); ?>"><?php _e( 'Choose Image' ); ?></a>
+               <a id="choose-from-library-link" class="button"
+                       data-choose="<?php esc_attr_e( 'Choose a Background Image' ); ?>"
+                       data-update="<?php esc_attr_e( 'Set as background' ); ?>"><?php _e( 'Choose Image' ); ?></a>
        </p>
        </form>
 </td>
@@ -327,11 +317,12 @@ if ( get_background_image() ) {
 <tr valign="top">
 <th scope="row"><?php _e( 'Background Color' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Color' ); ?></span></legend>
-<?php $show_clear = get_theme_mod('background_color') ? '' : ' style="display:none"'; ?>
-<input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr(get_background_color()) ?>" />
-<a class="hide-if-no-js" href="#" id="pickcolor"><?php _e('Select a Color'); ?></a> <span<?php echo $show_clear; ?> class="hide-if-no-js" id="clearcolor"> (<a href="#"><?php current_theme_supports( 'custom-background', 'default-color' ) ? _e( 'Default' ) : _e( 'Clear' ); ?></a>)</span>
-<input type="hidden" id="defaultcolor" value="<?php if ( current_theme_supports( 'custom-background', 'default-color' ) ) echo '#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ); ?>" />
-<div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
+<?php
+$default_color = '';
+if ( current_theme_supports( 'custom-background', 'default-color' ) )
+       $default_color = ' data-default-color="#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ) . '"';
+?>
+<input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr( get_background_color() ); ?>"<?php echo $default_color ?> />
 </fieldset></td>
 </tr>
 </tbody>
@@ -357,7 +348,13 @@ if ( get_background_image() ) {
 
                check_admin_referer('custom-background-upload', '_wpnonce-custom-background-upload');
                $overrides = array('test_form' => false);
-               $file = wp_handle_upload($_FILES['import'], $overrides);
+
+               $uploaded_file = $_FILES['import'];
+               $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'], false );
+               if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) )
+                       wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) );
+
+               $file = wp_handle_upload($uploaded_file, $overrides);
 
                if ( isset($file['error']) )
                        wp_die( $file['error'] );
@@ -393,25 +390,21 @@ if ( get_background_image() ) {
        }
 
        /**
-        * Replace default attachment actions with "Set as background" link.
+        * Unused since 3.5.0.
         *
         * @since 3.4.0
         */
-       function attachment_fields_to_edit( $form_fields, $post ) {
-               $form_fields = array( 'image-size' => $form_fields['image-size'] );
-               $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a data-attachment-id="' . $post->ID . '" class="wp-set-background">' . __( 'Set as background' ) . '</a></td></tr>' );
-               $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' );
-
+       function attachment_fields_to_edit( $form_fields ) {
                return $form_fields;
        }
 
        /**
-        * Leave only "Media Library" tab in the uploader window.
+        * Unused since 3.5.0.
         *
         * @since 3.4.0
         */
-       function filter_upload_tabs() {
-               return array( 'library' => __('Media Library') );
+       function filter_upload_tabs( $tabs ) {
+               return $tabs;
        }
 
        public function wp_set_background_image() {
index fc9d4f126f10894ea7e8b1edd341857a50138cb9..14f01dfb587a6f77cb6e2f118a8406ed8029925f 100644 (file)
@@ -93,12 +93,6 @@ class Custom_Image_Header {
                add_action("admin_head-$page", array(&$this, 'js'), 50);
                if ( $this->admin_header_callback )
                        add_action("admin_head-$page", $this->admin_header_callback, 51);
-
-               if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) {
-                       add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
-                       add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
-                       add_filter( 'media_upload_mime_type_links', '__return_empty_array' );
-               }
        }
 
        /**
@@ -130,8 +124,8 @@ class Custom_Image_Header {
                        'title'   => __('Header Text'),
                        'content' =>
                                '<p>' . sprintf( __( 'For most themes, the header text is your Site Title and Tagline, as defined in the <a href="%1$s">General Settings</a> section.' ), admin_url( 'options-general.php' ) ) . '<p>' .
-                               '<p>' . __( 'In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by typing in a legitimate HTML hex value (eg: &#8220;#ff0000&#8221; for red) or by clicking &#8220;Select a Color&#8221; and dialing in a color using the color picker.') . '</p>' .
-                               '<p>' . __( 'Don&#8217;t forget to Save Changes when you&#8217;re done!') . '</p>'
+                               '<p>' . __( 'In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. &#8220;#ff0000&#8221; for red, or by choosing a color using the color picker.' ) . '</p>' .
+                               '<p>' . __( 'Don&#8217;t forget to click &#8220;Save Changes&#8221; when you&#8217;re done!') . '</p>'
                ) );
 
                get_current_screen()->set_help_sidebar(
@@ -171,11 +165,10 @@ class Custom_Image_Header {
                $step = $this->step();
 
                if ( ( 1 == $step || 3 == $step ) ) {
-                       add_thickbox();
-                       wp_enqueue_script( 'media-upload' );
+                       wp_enqueue_media();
                        wp_enqueue_script( 'custom-header' );
                        if ( current_theme_supports( 'custom-header', 'header-text' ) )
-                               wp_enqueue_script('farbtastic');
+                               wp_enqueue_script( 'wp-color-picker' );
                } elseif ( 2 == $step ) {
                        wp_enqueue_script('imgareaselect');
                }
@@ -190,7 +183,7 @@ class Custom_Image_Header {
                $step = $this->step();
 
                if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
-                       wp_enqueue_style('farbtastic');
+                       wp_enqueue_style( 'wp-color-picker' );
                elseif ( 2 == $step )
                        wp_enqueue_style('imgareaselect');
        }
@@ -215,12 +208,6 @@ class Custom_Image_Header {
                        return;
                }
 
-               if ( isset( $_POST['resettext'] ) ) {
-                       check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
-                       remove_theme_mod('header_textcolor');
-                       return;
-               }
-
                if ( isset( $_POST['removeheader'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
                        $this->remove_header_image();
@@ -332,7 +319,6 @@ class Custom_Image_Header {
        function js_1() { ?>
 <script type="text/javascript">
 /* <![CDATA[ */
-var farbtastic;
 (function($){
        var default_color = '#<?php echo get_theme_support( 'custom-header', 'default-text-color' ); ?>',
                header_text_fields;
@@ -341,7 +327,6 @@ var farbtastic;
                $('#name').css('color', color);
                $('#desc').css('color', color);
                $('#text-color').val(color);
-               farbtastic.setColor(color);
        }
 
        function toggle_text() {
@@ -360,45 +345,20 @@ var farbtastic;
        }
 
        $(document).ready(function() {
+               var text_color = $('#text-color');
                header_text_fields = $('.displaying-header-text');
-               $('#pickcolor').click(function(e) {
-                       e.preventDefault();
-                       $('#color-picker').show();
+               text_color.wpColorPicker({
+                       change: function( event, ui ) {
+                               pickColor( text_color.wpColorPicker('color') );
+                       },
+                       clear: function() {
+                               pickColor( '' );
+                       }
                });
-
                $('#display-header-text').click( toggle_text );
-
-               $('#defaultcolor').click(function() {
-                       pickColor(default_color);
-                       $('#text-color').val(default_color);
-               });
-
-               $('#text-color').keyup(function() {
-                       var _hex = $('#text-color').val();
-                       var hex = _hex;
-                       if ( hex[0] != '#' )
-                               hex = '#' + hex;
-                       hex = hex.replace(/[^#a-fA-F0-9]+/, '');
-                       if ( hex != _hex )
-                               $('#text-color').val(hex);
-                       if ( hex.length == 4 || hex.length == 7 )
-                               pickColor( hex );
-               });
-
-               $(document).mousedown(function(){
-                       $('#color-picker').each( function() {
-                               var display = $(this).css('display');
-                               if (display == 'block')
-                                       $(this).fadeOut(2);
-                       });
-               });
-
-               farbtastic = $.farbtastic('#color-picker', function(color) { pickColor(color); });
-               <?php if ( display_header_text() ) { ?>
-               pickColor('#<?php echo get_header_textcolor(); ?>');
-               <?php } else { ?>
+               <?php if ( ! display_header_text() ) : ?>
                toggle_text();
-               <?php } ?>
+               <?php endif; ?>
        });
 })(jQuery);
 /* ]]> */
@@ -510,8 +470,14 @@ var farbtastic;
        <?php if ( $this->admin_image_div_callback ) {
          call_user_func( $this->admin_image_div_callback );
        } else {
+               $custom_header = get_custom_header();
+               $header_image_style = 'background-image:url(' . esc_url( get_header_image() ) . ');';
+               if ( $custom_header->width )
+                       $header_image_style .= 'max-width:' . $custom_header->width . 'px;';
+               if ( $custom_header->height )
+                       $header_image_style .= 'height:' . $custom_header->height . 'px;';
        ?>
-       <div id="headimg" style="background-image:url(<?php esc_url ( header_image() ) ?>);max-width:<?php echo get_custom_header()->width; ?>px;height:<?php echo get_custom_header()->height; ?>px;">
+       <div id="headimg" style="<?php echo $header_image_style; ?>">
                <?php
                if ( display_header_text() )
                        $style = ' style="color:#' . get_header_textcolor() . ';"';
@@ -528,7 +494,7 @@ var farbtastic;
 <tr valign="top">
 <th scope="row"><?php _e( 'Select Image' ); ?></th>
 <td>
-       <p><?php _e( 'You can upload a custom header image to be shown at the top of your site instead of the default one. On the next screen you will be able to crop the image.' ); ?><br />
+       <p><?php _e( 'You can select an image to be shown at the top of your site by uploading from your computer or choosing from your media library. After selecting an image you will be able to crop it.' ); ?><br />
        <?php
        if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) {
                printf( __( 'Images of exactly <strong>%1$d &times; %2$d pixels</strong> will be used as-is.' ) . '<br />', get_theme_support( 'custom-header', 'width' ), get_theme_support( 'custom-header', 'height' ) );
@@ -546,7 +512,7 @@ var farbtastic;
                        printf( __( 'Suggested height is <strong>%1$d pixels</strong>.' ) . ' ', get_theme_support( 'custom-header', 'height' ) );
        }
        ?></p>
-       <form enctype="multipart/form-data" id="upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>">
+       <form enctype="multipart/form-data" id="upload-form" class="wp-upload-form" method="post" action="<?php echo esc_url( add_query_arg( 'step', 2 ) ) ?>">
        <p>
                <label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
                <input type="file" id="upload" name="import" />
@@ -555,13 +521,18 @@ var farbtastic;
                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
        </p>
        <?php
-               $image_library_url = get_upload_iframe_src( 'image', null, 'library' );
-               $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
-               $image_library_url = add_query_arg( array( 'context' => 'custom-header', 'TB_iframe' => 1 ), $image_library_url );
+               $modal_update_href = esc_url( add_query_arg( array(
+                       'page' => 'custom-header',
+                       'step' => 2,
+                       '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'),
+               ), admin_url('themes.php') ) );
        ?>
        <p>
                <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
-               <a id="choose-from-library-link" class="button thickbox" href="<?php echo esc_url( $image_library_url ); ?>"><?php _e( 'Choose Image' ); ?></a>
+               <a id="choose-from-library-link" class="button"
+                       data-update-link="<?php echo esc_attr( $modal_update_href ); ?>"
+                       data-choose="<?php esc_attr_e( 'Choose a Custom Header' ); ?>"
+                       data-update="<?php esc_attr_e( 'Set as header' ); ?>"><?php _e( 'Choose Image' ); ?></a>
        </p>
        </form>
 </td>
@@ -570,7 +541,7 @@ var farbtastic;
 </tbody>
 </table>
 
-<form method="post" action="<?php echo esc_attr( add_query_arg( 'step', 1 ) ) ?>">
+<form method="post" action="<?php echo esc_url( add_query_arg( 'step', 1 ) ) ?>">
 <table class="form-table">
 <tbody>
        <?php if ( get_uploaded_header_images() ) : ?>
@@ -641,27 +612,20 @@ var farbtastic;
 <th scope="row"><?php _e( 'Text Color' ); ?></th>
 <td>
        <p>
-<?php if ( display_header_text() ) : ?>
-               <input type="text" name="text-color" id="text-color" value="#<?php echo esc_attr( get_header_textcolor() ); ?>" />
-<?php else : ?>
-               <input type="text" name="text-color" id="text-color" value="#<?php echo esc_attr( get_theme_support( 'custom-header', 'default-text-color' ) ); ?>" />
-<?php endif; ?>
-               <a href="#" class="hide-if-no-js" id="pickcolor"><?php _e( 'Select a Color' ); ?></a>
+<?php
+$header_textcolor = display_header_text() ? get_header_textcolor() : get_theme_support( 'custom-header', 'default-text-color' );
+$default_color = '';
+if ( current_theme_supports( 'custom-header', 'default-text-color' ) ) {
+       $default_color = '#' . get_theme_support( 'custom-header', 'default-text-color' );
+       $default_color_attr = ' data-default-color="' . esc_attr( $default_color ) . '"';
+       echo '<input type="text" name="text-color" id="text-color" value="#' . esc_attr( $header_textcolor ) . '"' . $default_color_attr . ' />';
+       if ( $default_color )
+               echo ' <span class="description hide-if-js">' . sprintf( _x( 'Default: %s', 'color' ), $default_color ) . '</span>';
+}
+?>
        </p>
-       <div id="color-picker" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
-</td>
-</tr>
-
-       <?php if ( current_theme_supports( 'custom-header', 'default-text-color' ) && get_theme_mod( 'header_textcolor' ) ) { ?>
-<tr valign="top">
-<th scope="row"><?php _e('Reset Text Color'); ?></th>
-<td>
-       <p><?php _e( 'This will restore the original header text. You will not be able to restore any customizations.' ) ?></p>
-       <?php submit_button( __( 'Restore Original Header Text' ), 'button', 'resettext', false ); ?>
 </td>
 </tr>
-       <?php } ?>
-
 </tbody>
 </table>
 <?php endif;
@@ -745,7 +709,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
 <?php screen_icon(); ?>
 <h2><?php _e( 'Crop Header Image' ); ?></h2>
 
-<form method="post" action="<?php echo esc_attr(add_query_arg('step', 3)); ?>">
+<form method="post" action="<?php echo esc_url(add_query_arg('step', 3)); ?>">
        <p class="hide-if-no-js"><?php _e('Choose the part of the image you want to use as your header.'); ?></p>
        <p class="hide-if-js"><strong><?php _e( 'You need Javascript to choose a part of the image.'); ?></strong></p>
 
@@ -767,7 +731,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
        <p class="submit">
        <?php submit_button( __( 'Crop and Publish' ), 'primary', 'submit', false ); ?>
        <?php
-       if ( isset( $oitar ) && 1 == $oitar )
+       if ( isset( $oitar ) && 1 == $oitar && ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) )
                submit_button( __( 'Skip Cropping, Publish Image as Is' ), 'secondary', 'skip-cropping', false );
        ?>
        </p>
@@ -784,7 +748,13 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
         */
        function step_2_manage_upload() {
                $overrides = array('test_form' => false);
-               $file = wp_handle_upload($_FILES['import'], $overrides);
+
+               $uploaded_file = $_FILES['import'];
+               $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'], false );
+               if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) )
+                       wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) );
+
+               $file = wp_handle_upload($uploaded_file, $overrides);
 
                if ( isset($file['error']) )
                        wp_die( $file['error'],  __( 'Image Upload Error' ) );
@@ -819,6 +789,9 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
+               if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) )
+                       wp_die( __( 'Cheatin&#8217; uh?' ) );
+
                if ( $_POST['oitar'] > 1 ) {
                        $_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
                        $_POST['y1'] = $_POST['y1'] * $_POST['oitar'];
@@ -930,32 +903,21 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
        }
 
        /**
-        * Replace default attachment actions with "Set as header" link.
+        * Unused since 3.5.0.
         *
         * @since 3.4.0
         */
-       function attachment_fields_to_edit( $form_fields, $post ) {
-               $form_fields = array();
-               $href = esc_url(add_query_arg(array(
-                       'page' => 'custom-header',
-                       'step' => 2,
-                       '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'),
-                       'file' => $post->ID
-               ), admin_url('themes.php')));
-
-               $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a data-location="' . $href . '" class="wp-set-header">' . __( 'Set as header' ) . '</a></td></tr>' );
-               $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' );
-
+       function attachment_fields_to_edit( $form_fields ) {
                return $form_fields;
        }
 
        /**
-        * Leave only "Media Library" tab in the uploader window.
+        * Unused since 3.5.0.
         *
         * @since 3.4.0
         */
-       function filter_upload_tabs() {
-               return array( 'library' => __('Media Library') );
+       function filter_upload_tabs( $tabs ) {
+               return $tabs;
        }
 
        /**
index 09c5b6789b39b5d83a9516382a1c04b8f19769c0..093f9987b34104fbd9c08ed72771033b5537a7d2 100644 (file)
@@ -44,7 +44,7 @@ do_action( 'customize_controls_enqueue_scripts' );
 wp_user_settings();
 _wp_admin_html_begin();
 
-$body_class = '';
+$body_class = 'wp-core-ui';
 
 if ( wp_is_mobile() ) :
        $body_class .= ' mobile';
@@ -57,6 +57,10 @@ $is_ios = wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USE
 if ( $is_ios )
        $body_class .= ' ios';
 
+if ( is_rtl() )
+       $body_class .=  ' rtl';
+$body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
+
 $admin_title = sprintf( __( '%1$s &#8212; WordPress' ), strip_tags( sprintf( __( 'Customize %s' ), $wp_customize->theme()->display('Name') ) ) );
 ?><title><?php echo $admin_title; ?></title><?php
 
@@ -67,12 +71,13 @@ do_action( 'customize_controls_print_scripts' );
 <body class="<?php echo esc_attr( $body_class ); ?>">
 <div class="wp-full-overlay expanded">
        <form id="customize-controls" class="wrap wp-full-overlay-sidebar">
+
                <div id="customize-header-actions" class="wp-full-overlay-header">
                        <?php
                                $save_text = $wp_customize->is_theme_active() ? __( 'Save &amp; Publish' ) : __( 'Save &amp; Activate' );
-                               submit_button( $save_text, 'primary', 'save', false );
+                               submit_button( $save_text, 'primary save', 'save', false );
                        ?>
-                       <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" />
+                       <span class="spinner"></span>
                        <a class="back button" href="<?php echo esc_url( $return ? $return : admin_url( 'themes.php' ) ); ?>">
                                <?php _e( 'Cancel' ); ?>
                        </a>
@@ -83,9 +88,9 @@ do_action( 'customize_controls_print_scripts' );
                        $cannot_expand = ! ( $screenshot || $wp_customize->theme()->get('Description') );
                ?>
 
-               <div class="wp-full-overlay-sidebar-content">
+               <div class="wp-full-overlay-sidebar-content" tabindex="-1">
                        <div id="customize-info" class="customize-section<?php if ( $cannot_expand ) echo ' cannot-expand'; ?>">
-                               <div class="customize-section-title">
+                               <div class="customize-section-title" aria-label="<?php esc_attr_e( 'Theme Customizer Options' ); ?>" tabindex="0">
                                        <span class="preview-notice"><?php
                                                /* translators: %s is the theme name in the Customize/Live Preview pane */
                                                echo sprintf( __( 'You are previewing %s' ), '<strong class="theme-name">' . $wp_customize->theme()->display('Name') . '</strong>' );
index 100d02302583664abff924259a2a94095b8ff5b6..174cd9af114be3389f69a6872342fcf362b093e2 100644 (file)
@@ -124,7 +124,7 @@ get_current_screen()->add_help_tab( array(
                '<p>' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '</p>' .
                '<p>' . __( 'In the <strong>Author</strong> column, in addition to the author&#8217;s name, email address, and blog URL, the commenter&#8217;s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '</p>' .
                '<p>' . __( 'In the <strong>Comment</strong> column, above each comment it says &#8220;Submitted on,&#8221; followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '</p>' .
-               '<p>' . __( 'In the <strong>In Response To</strong> column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>In Response To</strong> column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows the number of approved comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '</p>' .
                '<p>' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '</p>'
 ) );
 
index c22c68aaf32a28e7e3735b9f2ed82676af5587a1..7d142d9af4fd0e8cc81c6c294edab559e515dfe7 100644 (file)
@@ -15,11 +15,6 @@ wp_enqueue_script('post');
 if ( wp_is_mobile() )
        wp_enqueue_script( 'jquery-touch-punch' );
 
-if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) {
-       add_thickbox();
-       wp_enqueue_script('media-upload');
-}
-
 /**
  * Post ID global
  * @name $post_ID
@@ -29,6 +24,11 @@ $post_ID = isset($post_ID) ? (int) $post_ID : 0;
 $user_ID = isset($user_ID) ? (int) $user_ID : 0;
 $action = isset($action) ? $action : '';
 
+if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) {
+       add_thickbox();
+       wp_enqueue_media( array( 'post' => $post_ID ) );
+}
+
 $messages = array();
 $messages['post'] = array(
         0 => '', // Unused. Messages start at index 1.
@@ -59,6 +59,7 @@ $messages['page'] = array(
         9 => sprintf( __('Page scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview page</a>'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
        10 => sprintf( __('Page draft updated. <a target="_blank" href="%s">Preview page</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
 );
+$messages['attachment'] = array_fill( 1, 10, __( 'Media attachment updated.' ) ); // Hack, for now.
 
 $messages = apply_filters( 'post_updated_messages', $messages );
 
@@ -83,7 +84,7 @@ if ( 'auto-draft' == $post->post_status ) {
 }
 
 $form_action = 'editpost';
-$nonce_action = 'update-' . $post_type . '_' . $post_ID;
+$nonce_action = 'update-post_' . $post_ID;
 $form_extra .= "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_attr($post_ID) . "' />";
 
 // Detect if there exists an autosave newer than the post and if that autosave is different than the post
@@ -102,13 +103,20 @@ $post_type_object = get_post_type_object($post_type);
 // All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
 require_once('./includes/meta-boxes.php');
 
-add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', null, 'side', 'core');
+if ( 'attachment' == $post_type ) {
+       wp_enqueue_script( 'image-edit' );
+       wp_enqueue_style( 'imgareaselect' );
+       add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core' );
+       add_action( 'edit_form_after_title', 'edit_form_image_editor' );
+} else {
+       add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core' );
+}
 
 if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) )
        add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' );
 
 // all taxonomies
-foreach ( get_object_taxonomies($post_type) as $tax_name ) {
+foreach ( get_object_taxonomies( $post ) as $tax_name ) {
        $taxonomy = get_taxonomy($tax_name);
        if ( ! $taxonomy->show_ui )
                continue;
@@ -140,10 +148,10 @@ do_action('dbx_post_advanced');
 if ( post_type_supports($post_type, 'comments') )
        add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', null, 'normal', 'core');
 
-if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
+if ( ( 'publish' == get_post_status( $post ) || 'private' == get_post_status( $post ) ) && post_type_supports($post_type, 'comments') )
        add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', null, 'normal', 'core');
 
-if ( !( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) )
+if ( ! ( 'pending' == get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) )
        add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core');
 
 if ( post_type_supports($post_type, 'author') ) {
@@ -164,7 +172,7 @@ do_action('do_meta_boxes', $post_type, 'side', $post);
 add_screen_option('layout_columns', array('max' => 2, 'default' => 2) );
 
 if ( 'post' == $post_type ) {
-       $customize_display = '<p>' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '</p>';
+       $customize_display = '<p>' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '</p>';
 
        get_current_screen()->add_help_tab( array(
                'id'      => 'customize-display',
@@ -173,7 +181,7 @@ if ( 'post' == $post_type ) {
        ) );
 
        $title_and_editor  = '<p>' . __('<strong>Title</strong> - Enter a title for your post. After you enter a title, you&#8217;ll see the permalink below, which you can edit.') . '</p>';
-       $title_and_editor .= '<p>' . __('<strong>Post editor</strong> - Enter the text for your post. There are two modes of editing: Visual and HTML. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The HTML mode allows you to enter raw HTML along with your post text. You can insert media files by clicking the icons above the post editor and following the directions. You can go to the distraction-free writing screen via the Fullscreen icon in Visual mode (second to last in the top row) or the Fullscreen button in HTML mode (last in the row). Once there, you can make buttons visible by hovering over the top area. Exit Fullscreen back to the regular post editor.') . '</p>';
+       $title_and_editor .= '<p>' . __('<strong>Post editor</strong> - Enter the text for your post. There are two modes of editing: Visual and Text. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The Text mode allows you to enter HTML along with your post text. Line breaks will be converted to paragraphs automatically. You can insert media files by clicking the icons above the post editor and following the directions. You can go to the distraction-free writing screen via the Fullscreen icon in Visual mode (second to last in the top row) or the Fullscreen button in Text mode (last in the row). Once there, you can make buttons visible by hovering over the top area. Exit Fullscreen back to the regular post editor.') . '</p>';
 
        get_current_screen()->add_help_tab( array(
                'id'      => 'title-post-editor',
@@ -181,19 +189,74 @@ if ( 'post' == $post_type ) {
                'content' => $title_and_editor,
        ) );
 
-       $publish_box = '<p>' . __('<strong>Publish</strong> - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '</p>';
+       get_current_screen()->set_help_sidebar(
+                       '<p>' . sprintf(__('You can also create posts with the <a href="%s">Press This bookmarklet</a>.'), 'options-writing.php') . '</p>' .
+                       '<p><strong>' . __('For more information:') . '</strong></p>' .
+                       '<p>' . __('<a href="http://codex.wordpress.org/Posts_Add_New_Screen" target="_blank">Documentation on Writing and Editing Posts</a>') . '</p>' .
+                       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+       );
+} elseif ( 'page' == $post_type ) {
+       $about_pages = '<p>' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the &#8220;Parent&#8221; of the other, creating a group of Pages.') . '</p>' .
+               '<p>' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Text modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '</p>';
+
+       get_current_screen()->add_help_tab( array(
+               'id'      => 'about-pages',
+               'title'   => __('About Pages'),
+               'content' => $about_pages,
+       ) );
+
+       get_current_screen()->set_help_sidebar(
+                       '<p><strong>' . __('For more information:') . '</strong></p>' .
+                       '<p>' . __('<a href="http://codex.wordpress.org/Pages_Add_New_Screen" target="_blank">Documentation on Adding New Pages</a>') . '</p>' .
+                       '<p>' . __('<a href="http://codex.wordpress.org/Pages_Screen#Editing_Individual_Pages" target="_blank">Documentation on Editing Pages</a>') . '</p>' .
+                       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+       );
+} elseif ( 'attachment' == $post_type ) {
+       get_current_screen()->add_help_tab( array(
+               'id'      => 'overview',
+               'title'   => __('Overview'),
+               'content' =>
+                       '<p>' . __('This screen allows you to edit four fields for metadata in a file within the media library.') . '</p>' .
+                       '<p>' . __('For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information.') . '</p>' .
+                       '<p>' . __('Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping.') . '</p>' .
+                       '<p>' . __('Remember to click Update Media to save metadata entered or changed.') . '</p>'
+       ) );
+
+       get_current_screen()->set_help_sidebar(
+       '<p><strong>' . __('For more information:') . '</strong></p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Media_Add_New_Screen#Edit_Media" target="_blank">Documentation on Edit Media</a>') . '</p>' .
+       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+       );
+}
+
+if ( 'post' == $post_type || 'page' == $post_type ) {
+       $inserting_media = '<p>' . __( 'You can upload and insert media (images, audio, documents, etc.) by clicking the Add Media button. You can select from the images and files already uploaded to the Media Library, or upload new media to add to your page or post. To create an image gallery, select the images to add and click the &#8220;Create a new gallery&#8221; button.' ) . '</p>';
+       $inserting_media .= '<p>' . __( 'You can also embed media from many popular websites including Twitter, YouTube, Flickr and others by pasting the media URL on its own line into the content of your post/page. Please refer to the Codex to <a href="http://codex.wordpress.org/Embeds">learn more about embeds</a>.' ) . '</p>';
+
+       get_current_screen()->add_help_tab( array(
+               'id'            => 'inserting-media',
+               'title'         => __( 'Inserting Media' ),
+               'content'       => $inserting_media,
+       ) );
+}
+
+if ( 'post' == $post_type ) {
+       $publish_box = '<p>' . __('Several boxes on this screen contain settings for how your content will be published, including:') . '</p>';
+       $publish_box .= '<ul><li>' . __('<strong>Publish</strong> - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '</li>';
 
        if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) {
-               $publish_box .= '<p>' . __( '<strong>Post Format</strong> - This designates how your theme will display a specific post. For example, you could have a <em>standard</em> blog post with a title and paragraphs, or a short <em>aside</em> that omits the title and contains a short text blurb. Please refer to the Codex for <a href="http://codex.wordpress.org/Post_Formats#Supported_Formats">descriptions of each post format</a>. Your theme could enable all or some of 10 possible formats.' ) . '</p>';
+               $publish_box .= '<li>' . __( '<strong>Format</strong> - Post Formats designate how your theme will display a specific post. For example, you could have a <em>standard</em> blog post with a title and paragraphs, or a short <em>aside</em> that omits the title and contains a short text blurb. Please refer to the Codex for <a href="http://codex.wordpress.org/Post_Formats#Supported_Formats">descriptions of each post format</a>. Your theme could enable all or some of 10 possible formats.' ) . '</li>';
        }
 
        if ( current_theme_supports( 'post-thumbnails' ) && post_type_supports( 'post', 'thumbnail' ) ) {
-               $publish_box .= '<p>' . __('<strong>Featured Image</strong> - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc.') . '</p>';
+               $publish_box .= '<li>' . __('<strong>Featured Image</strong> - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc.') . '</li>';
        }
 
+       $publish_box .= '</ul>';
+
        get_current_screen()->add_help_tab( array(
                'id'      => 'publish-box',
-               'title'   => __('Publish Box'),
+               'title'   => __('Publish Settings'),
                'content' => $publish_box,
        ) );
 
@@ -205,23 +268,7 @@ if ( 'post' == $post_type ) {
                'title'   => __('Discussion Settings'),
                'content' => $discussion_settings,
        ) );
-
-       get_current_screen()->set_help_sidebar(
-                       '<p>' . sprintf(__('You can also create posts with the <a href="%s">Press This bookmarklet</a>.'), 'options-writing.php') . '</p>' .
-                       '<p><strong>' . __('For more information:') . '</strong></p>' .
-                       '<p>' . __('<a href="http://codex.wordpress.org/Posts_Add_New_Screen" target="_blank">Documentation on Writing and Editing Posts</a>') . '</p>' .
-                       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
-       );
 } elseif ( 'page' == $post_type ) {
-       $about_pages = '<p>' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the &#8220;Parent&#8221; of the other, creating a group of Pages.') . '</p>' .
-               '<p>' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and HTML modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '</p>';
-
-       get_current_screen()->add_help_tab( array(
-               'id'      => 'about-pages',
-               'title'   => __('About Pages'),
-               'content' => $about_pages,
-       ) );
-
        $page_attributes = '<p>' . __('<strong>Parent</strong> - You can arrange your pages in hierarchies. For example, you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how many levels you can nest pages.') . '</p>' .
                '<p>' . __('<strong>Template</strong> - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them in this dropdown menu.') . '</p>' .
                '<p>' . __('<strong>Order</strong> - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '</p>';
@@ -231,13 +278,6 @@ if ( 'post' == $post_type ) {
                'title' => __('Page Attributes'),
                'content' => $page_attributes,
        ) );
-
-       get_current_screen()->set_help_sidebar(
-                       '<p><strong>' . __('For more information:') . '</strong></p>' .
-                       '<p>' . __('<a href="http://codex.wordpress.org/Pages_Add_New_Screen" target="_blank">Documentation on Adding New Pages</a>') . '</p>' .
-                       '<p>' . __('<a href="http://codex.wordpress.org/Pages_Screen#Editing_Individual_Pages" target="_blank">Documentation on Editing Pages</a>') . '</p>' .
-                       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
-       );
 }
 
 require_once('./admin-header.php');
@@ -245,7 +285,11 @@ require_once('./admin-header.php');
 
 <div class="wrap">
 <?php screen_icon(); ?>
-<h2><?php echo esc_html( $title ); ?><?php if ( isset( $post_new_file ) ) : ?> <a href="<?php echo esc_url( $post_new_file ) ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a><?php endif; ?></h2>
+<h2><?php
+echo esc_html( $title );
+if ( isset( $post_new_file ) && current_user_can( $post_type_object->cap->create_posts ) )
+       echo ' <a href="' . esc_url( $post_new_file ) . '" class="add-new-h2">' . esc_html( $post_type_object->labels->add_new ) . '</a>';
+?></h2>
 <?php if ( $notice ) : ?>
 <div id="notice" class="error"><p><?php echo $notice ?></p></div>
 <?php endif; ?>
@@ -265,7 +309,7 @@ require_once('./admin-header.php');
 <input type="hidden" id="active_post_lock" value="<?php echo esc_attr( implode( ':', $active_post_lock ) ); ?>" />
 <?php
 }
-if ( 'draft' != $post->post_status )
+if ( 'draft' != get_post_status( $post ) )
        wp_original_referer_field(true, 'previous');
 
 echo $form_extra;
@@ -282,20 +326,20 @@ wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 <?php if ( post_type_supports($post_type, 'title') ) { ?>
 <div id="titlediv">
 <div id="titlewrap">
-       <label class="hide-if-no-js" style="visibility:hidden" id="title-prompt-text" for="title"><?php echo apply_filters( 'enter_title_here', __( 'Enter title here' ), $post ); ?></label>
-       <input type="text" name="post_title" size="30" tabindex="1" value="<?php echo esc_attr( htmlspecialchars( $post->post_title ) ); ?>" id="title" autocomplete="off" />
+       <label class="screen-reader-text" id="title-prompt-text" for="title"><?php echo apply_filters( 'enter_title_here', __( 'Enter title here' ), $post ); ?></label>
+       <input type="text" name="post_title" size="30" value="<?php echo esc_attr( htmlspecialchars( $post->post_title ) ); ?>" id="title" autocomplete="off" />
 </div>
 <div class="inside">
 <?php
 $sample_permalink_html = $post_type_object->public ? get_sample_permalink_html($post->ID) : '';
 $shortlink = wp_get_shortlink($post->ID, 'post');
 if ( !empty($shortlink) )
-    $sample_permalink_html .= '<input id="shortlink" type="hidden" value="' . esc_attr($shortlink) . '" /><a href="#" class="button" onclick="prompt(&#39;URL:&#39;, jQuery(\'#shortlink\').val()); return false;">' . __('Get Shortlink') . '</a>';
+    $sample_permalink_html .= '<input id="shortlink" type="hidden" value="' . esc_attr($shortlink) . '" /><a href="#" class="button button-small" onclick="prompt(&#39;URL:&#39;, jQuery(\'#shortlink\').val()); return false;">' . __('Get Shortlink') . '</a>';
 
-if ( $post_type_object->public && ! ( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { ?>
-       <div id="edit-slug-box">
+if ( $post_type_object->public && ! ( 'pending' == get_post_status( $post ) && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { ?>
+       <div id="edit-slug-box" class="hide-if-no-js">
        <?php
-               if ( ! empty($post->ID) && ! empty($sample_permalink_html) && 'auto-draft' != $post->post_status )
+               if ( $sample_permalink_html && 'auto-draft' != $post->post_status )
                        echo $sample_permalink_html;
        ?>
        </div>
@@ -306,13 +350,17 @@ if ( $post_type_object->public && ! ( 'pending' == $post->post_status && !curren
 <?php
 wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
 ?>
-</div>
-<?php } ?>
+</div><!-- /titlediv -->
+<?php
+}
+
+do_action( 'edit_form_after_title' );
 
-<?php if ( post_type_supports($post_type, 'editor') ) { ?>
+if ( post_type_supports($post_type, 'editor') ) {
+?>
 <div id="postdivrich" class="postarea">
 
-<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabindex' => 1) ); ?>
+<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabfocus_elements' => 'sample-permalink,post-preview', 'editor_height' => 360) ); ?>
 
 <table id="post-status-info" cellspacing="0"><tbody><tr>
        <td id="wp-word-count"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></td>
@@ -334,6 +382,8 @@ wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
 
 </div>
 <?php } ?>
+
+<?php do_action( 'edit_form_after_editor' ); ?>
 </div><!-- /post-body-content -->
 
 <div id="postbox-container-1" class="postbox-container">
@@ -378,7 +428,7 @@ if ( post_type_supports( $post_type, 'comments' ) )
        wp_comment_reply();
 ?>
 
-<?php if ((isset($post->post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?>
+<?php if ( (isset($post->post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message']) ) : ?>
 <script type="text/javascript">
 try{document.post.title.focus();}catch(e){}
 </script>
index 2340baf4f3b6fea7103b9aeaa6a8769269577915..14a2966804d00b003c73dd09d0057a011269ab55 100644 (file)
@@ -31,7 +31,7 @@ if ( !defined('ABSPATH') )
 <tbody>
 <tr valign="top">
        <td class="first"><?php _e( 'Name:' ); ?></td>
-       <td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" tabindex="1" id="name" /></td>
+       <td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" id="name" /></td>
 </tr>
 <tr valign="top">
        <td class="first">
@@ -42,7 +42,7 @@ if ( !defined('ABSPATH') )
                        _e( 'E-mail:' );
                }
 ?></td>
-       <td><input type="text" name="newcomment_author_email" size="30" value="<?php echo $comment->comment_author_email; ?>" tabindex="2" id="email" /></td>
+       <td><input type="text" name="newcomment_author_email" size="30" value="<?php echo $comment->comment_author_email; ?>" id="email" /></td>
 </tr>
 <tr valign="top">
        <td class="first">
@@ -53,7 +53,7 @@ if ( !defined('ABSPATH') )
                } else {
                        _e( 'URL:' );
                } ?></td>
-       <td><input type="text" id="newcomment_author_url" name="newcomment_author_url" size="30" class="code" value="<?php echo esc_attr($comment->comment_author_url); ?>" tabindex="3" /></td>
+       <td><input type="text" id="newcomment_author_url" name="newcomment_author_url" size="30" class="code" value="<?php echo esc_attr($comment->comment_author_url); ?>" /></td>
 </tr>
 </tbody>
 </table>
@@ -98,8 +98,8 @@ $datef = __( 'M j, Y @ G:i' );
 $stamp = __('Submitted on: <b>%1$s</b>');
 $date = date_i18n( $datef, strtotime( $comment->comment_date ) );
 ?>
-<span id="timestamp"><?php printf($stamp, $date); ?></span>&nbsp;<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
-<div id='timestampdiv' class='hide-if-js'><?php touch_time(('editcomment' == $action), 0, 5); ?></div>
+<span id="timestamp"><?php printf($stamp, $date); ?></span>&nbsp;<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js"><?php _e('Edit') ?></a>
+<div id='timestampdiv' class='hide-if-js'><?php touch_time(('editcomment' == $action), 0); ?></div>
 </div>
 </div> <!-- misc actions -->
 <div class="clear"></div>
@@ -110,7 +110,7 @@ $date = date_i18n( $datef, strtotime( $comment->comment_date ) );
 <?php echo "<a class='submitdelete deletion' href='" . wp_nonce_url("comment.php?action=" . ( !EMPTY_TRASH_DAYS ? 'deletecomment' : 'trashcomment' ) . "&amp;c=$comment->comment_ID&amp;_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "</a>\n"; ?>
 </div>
 <div id="publishing-action">
-<?php submit_button( __( 'Update' ), 'primary', 'save', false, array( 'tabindex' => '4' ) ); ?>
+<?php submit_button( __( 'Update' ), 'primary', 'save', false ); ?>
 </div>
 <div class="clear"></div>
 </div>
index 4ae317b8985b8c7190d591f15951ef11a9625657..6d81ec01440d637424ed54280be53b5528f9cd3b 100644 (file)
@@ -82,7 +82,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 <div id="namediv" class="stuffbox">
 <h3><label for="link_name"><?php _ex('Name', 'link name') ?></label></h3>
 <div class="inside">
-       <input type="text" name="link_name" size="30" tabindex="1" value="<?php echo esc_attr($link->link_name); ?>" id="link_name" />
+       <input type="text" name="link_name" size="30" value="<?php echo esc_attr($link->link_name); ?>" id="link_name" />
     <p><?php _e('Example: Nifty blogging software'); ?></p>
 </div>
 </div>
@@ -90,7 +90,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 <div id="addressdiv" class="stuffbox">
 <h3><label for="link_url"><?php _e('Web Address') ?></label></h3>
 <div class="inside">
-       <input type="text" name="link_url" size="30" class="code" tabindex="1" value="<?php echo esc_attr($link->link_url); ?>" id="link_url" />
+       <input type="text" name="link_url" size="30" class="code" value="<?php echo esc_attr($link->link_url); ?>" id="link_url" />
     <p><?php _e('Example: <code>http://wordpress.org/</code> &#8212; don&#8217;t forget the <code>http://</code>'); ?></p>
 </div>
 </div>
@@ -98,7 +98,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 <div id="descriptiondiv" class="stuffbox">
 <h3><label for="link_description"><?php _e('Description') ?></label></h3>
 <div class="inside">
-       <input type="text" name="link_description" size="30" tabindex="1" value="<?php echo isset($link->link_description) ? esc_attr($link->link_description) : ''; ?>" id="link_description" />
+       <input type="text" name="link_description" size="30" value="<?php echo isset($link->link_description) ? esc_attr($link->link_description) : ''; ?>" id="link_description" />
     <p><?php _e('This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'); ?></p>
 </div>
 </div>
index 24efd82f88a30f11f21eb1c17ed43a469a4d6857..034642ad5ba1be3c6b7050fbf72afee0f572c936 100644 (file)
@@ -62,7 +62,7 @@ do_action($taxonomy . '_pre_edit_form', $tag, $taxonomy); ?>
                <tr class="form-field">
                        <th scope="row" valign="top"><label for="description"><?php _ex('Description', 'Taxonomy Description'); ?></label></th>
                        <td><textarea name="description" id="description" rows="5" cols="50" class="large-text"><?php echo $tag->description; // textarea_escaped ?></textarea><br />
-                       <span class="description"><?php _e('The description is not prominent by default, however some themes may show it.'); ?></span></td>
+                       <span class="description"><?php _e('The description is not prominent by default; however, some themes may show it.'); ?></span></td>
                </tr>
                <?php
                // Back compat hooks
@@ -91,3 +91,6 @@ submit_button( __('Update') );
 ?>
 </form>
 </div>
+<script type="text/javascript">
+try{document.forms.edittag.name.focus();}catch(e){}
+</script>
index 44b2aa57e9bd5291018af026ca4ae14dbfcb1c7b..7250a66984db7a723f3e574f4d0750db5ffdb84f 100644 (file)
@@ -26,7 +26,7 @@ $pagenum = $wp_list_table->get_pagenum();
 $title = $tax->labels->name;
 
 if ( 'post' != $post_type ) {
-       $parent_file = "edit.php?post_type=$post_type";
+       $parent_file = ( 'attachment' == $post_type ) ? 'upload.php' : "edit.php?post_type=$post_type";
        $submenu_file = "edit-tags.php?taxonomy=$taxonomy&amp;post_type=$post_type";
 } else if ( 'link_category' == $tax->name ) {
        $parent_file = 'link-manager.php';
@@ -36,7 +36,7 @@ if ( 'post' != $post_type ) {
        $submenu_file = "edit-tags.php?taxonomy=$taxonomy";
 }
 
-add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') );
+add_screen_option( 'per_page', array( 'label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page' ) );
 
 switch ( $wp_list_table->current_action() ) {
 
@@ -195,7 +195,7 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t
                $help = '<p>' . __( 'You can assign keywords to your posts using <strong>tags</strong>. Unlike categories, tags have no hierarchy, meaning there&#8217;s no relationship from one tag to another.' ) . '</p>';
 
        if ( 'link_category' == $taxonomy )
-               $help .= '<p>' . __( 'You can delete Link Categories in the Bulk Action pulldown, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '</p>';
+               $help .= '<p>' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '</p>';
        else
                $help .='<p>' . __( 'What&#8217;s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '</p>';
 
@@ -218,7 +218,7 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t
                        $help .= '<li>' . __( '<strong>Slug</strong> - The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '</li>';
 
                if ( 'category' == $taxonomy )
-                       $help .= '<li>' . __( '<strong>Parent</strong> - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '</li>';
+                       $help .= '<li>' . __( '<strong>Parent</strong> - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '</li>';
 
                $help .= '<li>' . __( '<strong>Description</strong> - The description is not prominent by default; however, some themes may display it.' ) . '</li>' .
                '</ul>' .
@@ -305,7 +305,7 @@ endif; ?>
 </div>
 <?php elseif ( 'post_tag' == $taxonomy && current_user_can( 'import' ) ) : ?>
 <div class="form-wrap">
-<p><?php printf(__('Tags can be selectively converted to categories using the <a href="%s">tag to category converter</a>'), 'import.php') ;?>.</p>
+<p><?php printf(__('Tags can be selectively converted to categories using the <a href="%s">tag to category converter</a>.'), 'import.php') ;?></p>
 </div>
 <?php endif;
 do_action('after-' . $taxonomy . '-table', $taxonomy);
@@ -388,7 +388,7 @@ if ( ! is_taxonomy_hierarchical($taxonomy) )
        do_action('add_tag_form_fields', $taxonomy);
 do_action($taxonomy . '_add_form_fields', $taxonomy);
 
-submit_button( $tax->labels->add_new_item, 'button' );
+submit_button( $tax->labels->add_new_item );
 
 // Back compat hooks. Deprecated in preference to {$taxonomy}_add_form
 if ( 'category' == $taxonomy )
@@ -408,7 +408,9 @@ do_action($taxonomy . '_add_form', $taxonomy);
 
 </div><!-- /col-container -->
 </div><!-- /wrap -->
-
+<script type="text/javascript">
+try{document.forms.addtag['tag-name'].focus();}catch(e){}
+</script>
 <?php $wp_list_table->inline_edit(); ?>
 
 <?php
index ab16be088faaba1330c4ca0a2bdd855559b4dcf3..9eae3cf395fd1158114c83aa9d6d12ba60b45c66 100644 (file)
@@ -103,7 +103,7 @@ if ( $doaction ) {
                case 'delete':
                        $deleted = 0;
                        foreach( (array) $post_ids as $post_id ) {
-                               $post_del = get_post($post_id);
+                               $post_del = get_post($post_id);
 
                                if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
                                        wp_die( __('You are not allowed to delete this item.') );
@@ -215,16 +215,19 @@ if ( 'post' == $post_type ) {
        );
 }
 
-add_screen_option( 'per_page', array('label' => $title, 'default' => 20) );
+add_screen_option( 'per_page', array( 'label' => $title, 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page' ) );
 
 require_once('./admin-header.php');
 ?>
 <div class="wrap">
 <?php screen_icon(); ?>
-<h2><?php echo esc_html( $post_type_object->labels->name ); ?> <a href="<?php echo $post_new_file ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a> <?php
+<h2><?php
+echo esc_html( $post_type_object->labels->name );
+if ( current_user_can( $post_type_object->cap->create_posts ) )
+       echo ' <a href="' . esc_url( $post_new_file ) . '" class="add-new-h2">' . esc_html( $post_type_object->labels->add_new ) . '</a>';
 if ( ! empty( $_REQUEST['s'] ) )
-       printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
-</h2>
+       printf( ' <span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() );
+?></h2>
 
 <?php if ( isset( $_REQUEST['locked'] ) || isset( $_REQUEST['updated'] ) || isset( $_REQUEST['deleted'] ) || isset( $_REQUEST['trashed'] ) || isset( $_REQUEST['untrashed'] ) ) {
        $messages = array();
index 8257b5187b78ccc0e3d4ff5d7cdc70beee55e554..fc491b3b3aa894a111c37f85de6651a30183bdba 100644 (file)
@@ -16,7 +16,12 @@ if ( !current_user_can('export') )
 require_once('./includes/export.php');
 $title = __('Export');
 
-function add_js() {
+/**
+ * Display JavaScript on the page.
+ *
+ * @since 3.5.0
+ */
+function export_add_js() {
 ?>
 <script type="text/javascript">
 //<![CDATA[
@@ -36,7 +41,7 @@ function add_js() {
 </script>
 <?php
 }
-add_action( 'admin_head', 'add_js' );
+add_action( 'admin_head', 'export_add_js' );
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
@@ -89,6 +94,8 @@ if ( isset( $_GET['download'] ) ) {
                $args['content'] = $_GET['content'];
        }
 
+       $args = apply_filters( 'export_args', $args );
+
        export_wp( $args );
        die();
 }
@@ -204,7 +211,9 @@ function export_date_options( $post_type = 'post' ) {
 <p><label><input type="radio" name="content" value="<?php echo esc_attr( $post_type->name ); ?>" /> <?php echo esc_html( $post_type->label ); ?></label></p>
 <?php endforeach; ?>
 
-<?php submit_button( __('Download Export File'), 'secondary' ); ?>
+<?php do_action( 'export_filters' ) ?>
+
+<?php submit_button( __('Download Export File') ); ?>
 </form>
 </div>
 
index 99251dcfe40face1c7763573d8979dddada8de3c..1b462adcfe23450bdd72e591d3821b8553d8985a 100644 (file)
@@ -19,7 +19,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
diff --git a/wp-admin/gears-manifest.php b/wp-admin/gears-manifest.php
deleted file mode 100644 (file)
index 8feb485..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Defines the Gears manifest file for Google Gears offline storage.
- *
- * @package WordPress
- * @subpackage Administration
- */
-
-/**
- * Disable error reporting
- *
- * Set this to error_reporting( E_ALL ) or error_reporting( E_ALL | E_STRICT ) for debugging
- */
-error_reporting(0);
-
-/** Set ABSPATH for execution */
-define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
-
-require(ABSPATH . '/wp-admin/includes/manifest.php');
-
-$files = get_manifest();
-
-header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
-header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
-header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
-header( 'Pragma: no-cache' );
-header( 'Content-Type: application/x-javascript; charset=UTF-8' );
-?>
-{
-"betaManifestVersion" : 1,
-"version" : "<?php echo $man_version; ?>",
-"entries" : [
-<?php
-$entries = '';
-
-foreach ( $files as $file ) {
-       // Set ignoreQuery, defaulting to true
-       $ignore_query = ( isset($file[2]) && !$file[2] ) ? '' : ', "ignoreQuery" : true ';
-
-       // If version is not set, just output the file
-       if ( !isset($file[1]) )
-               $entries .= '{ "url" : "' . $file[0] . '"' . $ignore_query . ' }' . "\n";
-       // Output url and src
-       else
-               $entries .= '{ "url" : "' . $file[0] . '", "src" : "' . $file[0] . '?' . $file[1] . '"' . $ignore_query . ' },' . "\n";
-}
-
-echo trim( trim($entries), ',' );
-?>
-
-]}
diff --git a/wp-admin/images/align-center-2x.png b/wp-admin/images/align-center-2x.png
new file mode 100644 (file)
index 0000000..0b62734
Binary files /dev/null and b/wp-admin/images/align-center-2x.png differ
index a41222687508d27e34408a55f758ee5a7c7e87b5..e7bc807880abfbe04ec7635e9e0931d2fda63799 100644 (file)
Binary files a/wp-admin/images/align-center.png and b/wp-admin/images/align-center.png differ
diff --git a/wp-admin/images/align-left-2x.png b/wp-admin/images/align-left-2x.png
new file mode 100644 (file)
index 0000000..1b2d428
Binary files /dev/null and b/wp-admin/images/align-left-2x.png differ
index 2e433fc3e3d227013516a83c51cfeb267f048d9d..b438f7e0036f48d99ba101769971d1f77f365ba1 100644 (file)
Binary files a/wp-admin/images/align-left.png and b/wp-admin/images/align-left.png differ
diff --git a/wp-admin/images/align-none-2x.png b/wp-admin/images/align-none-2x.png
new file mode 100644 (file)
index 0000000..a64a0be
Binary files /dev/null and b/wp-admin/images/align-none-2x.png differ
index 5fb9af2e0c6cc72482867a84a1c62c8f2e682ddc..b72df647167196e48c02f9990c9443373639b01b 100644 (file)
Binary files a/wp-admin/images/align-none.png and b/wp-admin/images/align-none.png differ
diff --git a/wp-admin/images/align-right-2x.png b/wp-admin/images/align-right-2x.png
new file mode 100644 (file)
index 0000000..0131505
Binary files /dev/null and b/wp-admin/images/align-right-2x.png differ
index 9b92578fb5867463d5a88a0d8a072a62e772749a..86a1b2e8764dea8899e847ebdcbd6cdf7570a909 100644 (file)
Binary files a/wp-admin/images/align-right.png and b/wp-admin/images/align-right.png differ
diff --git a/wp-admin/images/archive-link.png b/wp-admin/images/archive-link.png
deleted file mode 100644 (file)
index 4c70895..0000000
Binary files a/wp-admin/images/archive-link.png and /dev/null differ
diff --git a/wp-admin/images/arrows-2x.png b/wp-admin/images/arrows-2x.png
new file mode 100644 (file)
index 0000000..0b0c53d
Binary files /dev/null and b/wp-admin/images/arrows-2x.png differ
diff --git a/wp-admin/images/arrows-dark-2x.png b/wp-admin/images/arrows-dark-2x.png
new file mode 100644 (file)
index 0000000..86be981
Binary files /dev/null and b/wp-admin/images/arrows-dark-2x.png differ
diff --git a/wp-admin/images/arrows-dark-vs-2x.png b/wp-admin/images/arrows-dark-vs-2x.png
new file mode 100644 (file)
index 0000000..c509a4e
Binary files /dev/null and b/wp-admin/images/arrows-dark-vs-2x.png differ
index 0d1dc7adaddcae26915f927c0a6bd6a435ad9ad8..3c48995f352db9444a55febf5166238e68f12b9f 100644 (file)
Binary files a/wp-admin/images/arrows-dark-vs.png and b/wp-admin/images/arrows-dark-vs.png differ
index 29f814d2982a8925ab0ec46d171a2f95239f99f1..8ab73468aa14454d3b51ca104f75a98ef43e1e97 100644 (file)
Binary files a/wp-admin/images/arrows-dark.png and b/wp-admin/images/arrows-dark.png differ
diff --git a/wp-admin/images/arrows-vs-2x.png b/wp-admin/images/arrows-vs-2x.png
new file mode 100644 (file)
index 0000000..be55877
Binary files /dev/null and b/wp-admin/images/arrows-vs-2x.png differ
index d2536b9c7ee88be7d2b0eb26fb931a0b7512a6da..4f1421d51bbb870e33eeb942beaa3d611e1537b6 100644 (file)
Binary files a/wp-admin/images/arrows-vs.png and b/wp-admin/images/arrows-vs.png differ
index 775a7a0329ea8be6b070b9491f3b4acaaac653f8..9e4a96cd2812b40dfc03aec555202f27617db541 100644 (file)
Binary files a/wp-admin/images/arrows.png and b/wp-admin/images/arrows.png differ
diff --git a/wp-admin/images/blue-grad.png b/wp-admin/images/blue-grad.png
deleted file mode 100644 (file)
index 868a657..0000000
Binary files a/wp-admin/images/blue-grad.png and /dev/null differ
diff --git a/wp-admin/images/bubble_bg-2x.gif b/wp-admin/images/bubble_bg-2x.gif
new file mode 100644 (file)
index 0000000..ae29abb
Binary files /dev/null and b/wp-admin/images/bubble_bg-2x.gif differ
diff --git a/wp-admin/images/bubble_bg-rtl-2x.gif b/wp-admin/images/bubble_bg-rtl-2x.gif
new file mode 100644 (file)
index 0000000..38747a0
Binary files /dev/null and b/wp-admin/images/bubble_bg-rtl-2x.gif differ
diff --git a/wp-admin/images/button-grad-active.png b/wp-admin/images/button-grad-active.png
deleted file mode 100644 (file)
index 0177e5b..0000000
Binary files a/wp-admin/images/button-grad-active.png and /dev/null differ
diff --git a/wp-admin/images/button-grad.png b/wp-admin/images/button-grad.png
deleted file mode 100644 (file)
index 3f96366..0000000
Binary files a/wp-admin/images/button-grad.png and /dev/null differ
diff --git a/wp-admin/images/comment-grey-bubble-2x.png b/wp-admin/images/comment-grey-bubble-2x.png
new file mode 100644 (file)
index 0000000..fafc74d
Binary files /dev/null and b/wp-admin/images/comment-grey-bubble-2x.png differ
index 6f1e765f862317b0fef4dfe828acdf400d918a06..558ee8f32dce370bca7686ce2604099cc3eb7ccf 100644 (file)
Binary files a/wp-admin/images/comment-grey-bubble.png and b/wp-admin/images/comment-grey-bubble.png differ
diff --git a/wp-admin/images/date-button-2x.gif b/wp-admin/images/date-button-2x.gif
new file mode 100644 (file)
index 0000000..95839c9
Binary files /dev/null and b/wp-admin/images/date-button-2x.gif differ
index 7ee32cb5155cf713da9eaf58a701fddd0030777b..33ecd66e115a3aedb064ef102d4b23fba2f2cafb 100644 (file)
Binary files a/wp-admin/images/date-button.gif and b/wp-admin/images/date-button.gif differ
diff --git a/wp-admin/images/ed-bg-vs.gif b/wp-admin/images/ed-bg-vs.gif
deleted file mode 100644 (file)
index be41c6c..0000000
Binary files a/wp-admin/images/ed-bg-vs.gif and /dev/null differ
diff --git a/wp-admin/images/ed-bg.gif b/wp-admin/images/ed-bg.gif
deleted file mode 100644 (file)
index a00467c..0000000
Binary files a/wp-admin/images/ed-bg.gif and /dev/null differ
diff --git a/wp-admin/images/fade-butt.png b/wp-admin/images/fade-butt.png
deleted file mode 100644 (file)
index 42f08b7..0000000
Binary files a/wp-admin/images/fade-butt.png and /dev/null differ
diff --git a/wp-admin/images/fav-arrow-rtl.gif b/wp-admin/images/fav-arrow-rtl.gif
deleted file mode 100644 (file)
index e9aeba0..0000000
Binary files a/wp-admin/images/fav-arrow-rtl.gif and /dev/null differ
diff --git a/wp-admin/images/fav-arrow.gif b/wp-admin/images/fav-arrow.gif
deleted file mode 100644 (file)
index 28fc6bb..0000000
Binary files a/wp-admin/images/fav-arrow.gif and /dev/null differ
diff --git a/wp-admin/images/fav-vs.png b/wp-admin/images/fav-vs.png
deleted file mode 100644 (file)
index 51a2186..0000000
Binary files a/wp-admin/images/fav-vs.png and /dev/null differ
diff --git a/wp-admin/images/fav.png b/wp-admin/images/fav.png
deleted file mode 100644 (file)
index f3cbe54..0000000
Binary files a/wp-admin/images/fav.png and /dev/null differ
index 3bcbc04f6a8f5ab9d153bb721ed4c19cb1ed5221..00575a078f994dea08c3c3cd0a46d1c22366fca0 100644 (file)
Binary files a/wp-admin/images/generic.png and b/wp-admin/images/generic.png differ
diff --git a/wp-admin/images/gray-grad.png b/wp-admin/images/gray-grad.png
deleted file mode 100644 (file)
index 99c45ce..0000000
Binary files a/wp-admin/images/gray-grad.png and /dev/null differ
index 3cccb7b46759ecda9cbcf3bf4171a1ebb2a13b03..67893fed3eb0b33dda23302477c11b3235d46105 100644 (file)
Binary files a/wp-admin/images/icons32-2x.png and b/wp-admin/images/icons32-2x.png differ
index 8975737d5334ea1fbd47de67a5c15d27c3cf6d01..512aea86ed88d21fe0eb88ac3b31a93298ab15df 100644 (file)
Binary files a/wp-admin/images/icons32-vs-2x.png and b/wp-admin/images/icons32-vs-2x.png differ
index c99dff2206abeea0959179c0d13a1dec7912ed21..c96784465075038f059f0c6d83294147e5cef8b0 100644 (file)
Binary files a/wp-admin/images/icons32-vs.png and b/wp-admin/images/icons32-vs.png differ
index 4b26eb0f620c106090c855a8baa02c2764c57da0..af061c1abb78a28558d0c8ab5bffe75c758ff18b 100644 (file)
Binary files a/wp-admin/images/icons32.png and b/wp-admin/images/icons32.png differ
diff --git a/wp-admin/images/imgedit-icons-2x.png b/wp-admin/images/imgedit-icons-2x.png
new file mode 100644 (file)
index 0000000..814da5e
Binary files /dev/null and b/wp-admin/images/imgedit-icons-2x.png differ
index 5f1f5851199320cccc0f6187155706a84eeeeb76..ca0b88d339b33dc2e889f75adb707e4dfb771a75 100644 (file)
Binary files a/wp-admin/images/imgedit-icons.png and b/wp-admin/images/imgedit-icons.png differ
diff --git a/wp-admin/images/list-2x.png b/wp-admin/images/list-2x.png
new file mode 100644 (file)
index 0000000..05c6eb3
Binary files /dev/null and b/wp-admin/images/list-2x.png differ
index 827556ee3065c82a0bbb99409840a85fa26d755e..85d1295e8131f8f0f3a4c9bc53fa2b3f3d770abc 100644 (file)
Binary files a/wp-admin/images/list.png and b/wp-admin/images/list.png differ
diff --git a/wp-admin/images/loading-publish.gif b/wp-admin/images/loading-publish.gif
deleted file mode 100644 (file)
index 4282004..0000000
Binary files a/wp-admin/images/loading-publish.gif and /dev/null differ
diff --git a/wp-admin/images/logo-ghost.png b/wp-admin/images/logo-ghost.png
deleted file mode 100644 (file)
index 58335f7..0000000
Binary files a/wp-admin/images/logo-ghost.png and /dev/null differ
diff --git a/wp-admin/images/logo.gif b/wp-admin/images/logo.gif
deleted file mode 100644 (file)
index 8024d48..0000000
Binary files a/wp-admin/images/logo.gif and /dev/null differ
index 3929bbb51dd950802bb9bf12a397d1ac1e140610..fae4b6da39353de76320f9b4bb77852fc1313057 100644 (file)
Binary files a/wp-admin/images/marker.png and b/wp-admin/images/marker.png differ
index b0a4d406fb645fc8d7e6891ffd85d11b3e181030..0fc9cbe63094888432dba8f6cf7bac85b40c0eb9 100644 (file)
Binary files a/wp-admin/images/mask.png and b/wp-admin/images/mask.png differ
diff --git a/wp-admin/images/media-button-2x.png b/wp-admin/images/media-button-2x.png
new file mode 100644 (file)
index 0000000..b8f8ed4
Binary files /dev/null and b/wp-admin/images/media-button-2x.png differ
index 82550734ae4ce806657867e8827ff7c27a6c08b8..752ee452321a701ffd061a1a1c4c527a5f0f7667 100644 (file)
Binary files a/wp-admin/images/media-button.png and b/wp-admin/images/media-button.png differ
index c8f5da9b829fc3c61b91d1c947e38ea316f3f53c..0038190a546788ecdca7b909a42d0766e5dd6243 100644 (file)
Binary files a/wp-admin/images/menu-2x.png and b/wp-admin/images/menu-2x.png differ
diff --git a/wp-admin/images/menu-arrow-frame-rtl.png b/wp-admin/images/menu-arrow-frame-rtl.png
deleted file mode 100644 (file)
index b0e120b..0000000
Binary files a/wp-admin/images/menu-arrow-frame-rtl.png and /dev/null differ
diff --git a/wp-admin/images/menu-arrow-frame.png b/wp-admin/images/menu-arrow-frame.png
deleted file mode 100644 (file)
index 33d19d8..0000000
Binary files a/wp-admin/images/menu-arrow-frame.png and /dev/null differ
diff --git a/wp-admin/images/menu-arrows.gif b/wp-admin/images/menu-arrows.gif
deleted file mode 100644 (file)
index ec854c1..0000000
Binary files a/wp-admin/images/menu-arrows.gif and /dev/null differ
diff --git a/wp-admin/images/menu-bits-rtl-vs.gif b/wp-admin/images/menu-bits-rtl-vs.gif
deleted file mode 100644 (file)
index 422cc8d..0000000
Binary files a/wp-admin/images/menu-bits-rtl-vs.gif and /dev/null differ
diff --git a/wp-admin/images/menu-bits-rtl.gif b/wp-admin/images/menu-bits-rtl.gif
deleted file mode 100644 (file)
index b193af0..0000000
Binary files a/wp-admin/images/menu-bits-rtl.gif and /dev/null differ
diff --git a/wp-admin/images/menu-bits-vs.gif b/wp-admin/images/menu-bits-vs.gif
deleted file mode 100644 (file)
index 30f0bc8..0000000
Binary files a/wp-admin/images/menu-bits-vs.gif and /dev/null differ
diff --git a/wp-admin/images/menu-bits.gif b/wp-admin/images/menu-bits.gif
deleted file mode 100644 (file)
index 218e184..0000000
Binary files a/wp-admin/images/menu-bits.gif and /dev/null differ
diff --git a/wp-admin/images/menu-dark-rtl-vs.gif b/wp-admin/images/menu-dark-rtl-vs.gif
deleted file mode 100644 (file)
index 14ed2ab..0000000
Binary files a/wp-admin/images/menu-dark-rtl-vs.gif and /dev/null differ
diff --git a/wp-admin/images/menu-dark-rtl.gif b/wp-admin/images/menu-dark-rtl.gif
deleted file mode 100644 (file)
index 7bfd25d..0000000
Binary files a/wp-admin/images/menu-dark-rtl.gif and /dev/null differ
diff --git a/wp-admin/images/menu-dark-vs.gif b/wp-admin/images/menu-dark-vs.gif
deleted file mode 100644 (file)
index 0b448aa..0000000
Binary files a/wp-admin/images/menu-dark-vs.gif and /dev/null differ
diff --git a/wp-admin/images/menu-dark.gif b/wp-admin/images/menu-dark.gif
deleted file mode 100644 (file)
index 739b888..0000000
Binary files a/wp-admin/images/menu-dark.gif and /dev/null differ
index a7507719fc9580fdc7c4edf06eddd97ff471aa24..fa9830cfceecea43b069bdfeaf176e50e6bde5a4 100644 (file)
Binary files a/wp-admin/images/menu-shadow-rtl.png and b/wp-admin/images/menu-shadow-rtl.png differ
index b0883a8cb7309236dc8d403bf87618be8478c17b..b48c8c8520e43700c97978b22440b16d7e02e65f 100644 (file)
Binary files a/wp-admin/images/menu-shadow.png and b/wp-admin/images/menu-shadow.png differ
diff --git a/wp-admin/images/menu-vs-2x.png b/wp-admin/images/menu-vs-2x.png
new file mode 100644 (file)
index 0000000..17309fc
Binary files /dev/null and b/wp-admin/images/menu-vs-2x.png differ
index 60272eeb248c4d2eaf3d3a4c2c01f933bc71037b..afdb3d3f012e2eaddf2f9040d5e3955e0c322e29 100644 (file)
Binary files a/wp-admin/images/menu-vs.png and b/wp-admin/images/menu-vs.png differ
index bbb1c50ed0a66a3291088beb722f652fa39f6285..52189c2aff6e227264bb6eb4b51fa4651ff01d8f 100644 (file)
Binary files a/wp-admin/images/menu.png and b/wp-admin/images/menu.png differ
index e2db55f22d6752e10a57f07e286081ebebacfea5..59c35bdccc6d423e369eb9c947ae0f5ad04a5237 100644 (file)
Binary files a/wp-admin/images/no.png and b/wp-admin/images/no.png differ
diff --git a/wp-admin/images/press-this-2x.png b/wp-admin/images/press-this-2x.png
new file mode 100644 (file)
index 0000000..c6b948c
Binary files /dev/null and b/wp-admin/images/press-this-2x.png differ
index 124156206a0fc2c5c5e10ddb73b020a0e0e3908d..01e27a2c18dbfc949567cd4610992cbec8e57f96 100644 (file)
Binary files a/wp-admin/images/press-this.png and b/wp-admin/images/press-this.png differ
diff --git a/wp-admin/images/required.gif b/wp-admin/images/required.gif
deleted file mode 100644 (file)
index 119350f..0000000
Binary files a/wp-admin/images/required.gif and /dev/null differ
diff --git a/wp-admin/images/resize-2x.gif b/wp-admin/images/resize-2x.gif
new file mode 100644 (file)
index 0000000..9682579
Binary files /dev/null and b/wp-admin/images/resize-2x.gif differ
diff --git a/wp-admin/images/resize-rtl-2x.gif b/wp-admin/images/resize-rtl-2x.gif
new file mode 100644 (file)
index 0000000..1ca2a63
Binary files /dev/null and b/wp-admin/images/resize-rtl-2x.gif differ
diff --git a/wp-admin/images/screen-options-toggle-vs.gif b/wp-admin/images/screen-options-toggle-vs.gif
deleted file mode 100644 (file)
index 3b9b8af..0000000
Binary files a/wp-admin/images/screen-options-toggle-vs.gif and /dev/null differ
diff --git a/wp-admin/images/screen-options-toggle.gif b/wp-admin/images/screen-options-toggle.gif
deleted file mode 100644 (file)
index ed0a5fd..0000000
Binary files a/wp-admin/images/screen-options-toggle.gif and /dev/null differ
diff --git a/wp-admin/images/screenshots/about-color-picker.png b/wp-admin/images/screenshots/about-color-picker.png
new file mode 100644 (file)
index 0000000..86e8e95
Binary files /dev/null and b/wp-admin/images/screenshots/about-color-picker.png differ
diff --git a/wp-admin/images/screenshots/about-media.png b/wp-admin/images/screenshots/about-media.png
new file mode 100644 (file)
index 0000000..f147cce
Binary files /dev/null and b/wp-admin/images/screenshots/about-media.png differ
diff --git a/wp-admin/images/screenshots/about-retina.png b/wp-admin/images/screenshots/about-retina.png
new file mode 100644 (file)
index 0000000..9d634bb
Binary files /dev/null and b/wp-admin/images/screenshots/about-retina.png differ
diff --git a/wp-admin/images/screenshots/about-twenty-twelve.png b/wp-admin/images/screenshots/about-twenty-twelve.png
new file mode 100644 (file)
index 0000000..a950254
Binary files /dev/null and b/wp-admin/images/screenshots/about-twenty-twelve.png differ
diff --git a/wp-admin/images/screenshots/captions-1.png b/wp-admin/images/screenshots/captions-1.png
deleted file mode 100644 (file)
index 73dbb48..0000000
Binary files a/wp-admin/images/screenshots/captions-1.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/captions-2.png b/wp-admin/images/screenshots/captions-2.png
deleted file mode 100644 (file)
index 653ed54..0000000
Binary files a/wp-admin/images/screenshots/captions-2.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/flex-header-1.png b/wp-admin/images/screenshots/flex-header-1.png
deleted file mode 100644 (file)
index 371a284..0000000
Binary files a/wp-admin/images/screenshots/flex-header-1.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/flex-header-2.png b/wp-admin/images/screenshots/flex-header-2.png
deleted file mode 100644 (file)
index 5cee055..0000000
Binary files a/wp-admin/images/screenshots/flex-header-2.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/flex-header-3.png b/wp-admin/images/screenshots/flex-header-3.png
deleted file mode 100644 (file)
index a45f1c9..0000000
Binary files a/wp-admin/images/screenshots/flex-header-3.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/flex-header-media-library.png b/wp-admin/images/screenshots/flex-header-media-library.png
deleted file mode 100644 (file)
index d63012d..0000000
Binary files a/wp-admin/images/screenshots/flex-header-media-library.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/theme-customizer.png b/wp-admin/images/screenshots/theme-customizer.png
deleted file mode 100644 (file)
index fa62d88..0000000
Binary files a/wp-admin/images/screenshots/theme-customizer.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/twitter-embed-1.png b/wp-admin/images/screenshots/twitter-embed-1.png
deleted file mode 100644 (file)
index d79ee1d..0000000
Binary files a/wp-admin/images/screenshots/twitter-embed-1.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/twitter-embed-2.png b/wp-admin/images/screenshots/twitter-embed-2.png
deleted file mode 100644 (file)
index 14da4b8..0000000
Binary files a/wp-admin/images/screenshots/twitter-embed-2.png and /dev/null differ
index c9d8fdd0bb2734fbb717405a43fbab9c5a89ad46..eb487b4636adc76182cf5354745c275ccb8f4515 100644 (file)
Binary files a/wp-admin/images/se.png and b/wp-admin/images/se.png differ
diff --git a/wp-admin/images/sort-2x.gif b/wp-admin/images/sort-2x.gif
new file mode 100644 (file)
index 0000000..14bdf9d
Binary files /dev/null and b/wp-admin/images/sort-2x.gif differ
diff --git a/wp-admin/images/stars-2x.png b/wp-admin/images/stars-2x.png
new file mode 100644 (file)
index 0000000..15aa9de
Binary files /dev/null and b/wp-admin/images/stars-2x.png differ
diff --git a/wp-admin/images/stars-rtl-2x.png b/wp-admin/images/stars-rtl-2x.png
new file mode 100644 (file)
index 0000000..9790115
Binary files /dev/null and b/wp-admin/images/stars-rtl-2x.png differ
index c6330b620b678e8b54507f6968a6360685c98397..372b36b24d2aa95aa6ff2744831c444093ab3a97 100644 (file)
Binary files a/wp-admin/images/stars-rtl.png and b/wp-admin/images/stars-rtl.png differ
index 98e32a5937afac3673ee669d874f7c8a22f4cdb5..c01ada13ee9a58afc51489ea80a53dca6dbe7eaa 100644 (file)
Binary files a/wp-admin/images/stars.png and b/wp-admin/images/stars.png differ
diff --git a/wp-admin/images/toggle-arrow-rtl.gif b/wp-admin/images/toggle-arrow-rtl.gif
deleted file mode 100644 (file)
index c96b944..0000000
Binary files a/wp-admin/images/toggle-arrow-rtl.gif and /dev/null differ
diff --git a/wp-admin/images/toggle-arrow.gif b/wp-admin/images/toggle-arrow.gif
deleted file mode 100644 (file)
index 86cb448..0000000
Binary files a/wp-admin/images/toggle-arrow.gif and /dev/null differ
diff --git a/wp-admin/images/upload-classic.png b/wp-admin/images/upload-classic.png
deleted file mode 100644 (file)
index beda3e4..0000000
Binary files a/wp-admin/images/upload-classic.png and /dev/null differ
diff --git a/wp-admin/images/upload-fresh.png b/wp-admin/images/upload-fresh.png
deleted file mode 100644 (file)
index 92fd355..0000000
Binary files a/wp-admin/images/upload-fresh.png and /dev/null differ
diff --git a/wp-admin/images/welcome-icons-2x.png b/wp-admin/images/welcome-icons-2x.png
new file mode 100644 (file)
index 0000000..c095cf5
Binary files /dev/null and b/wp-admin/images/welcome-icons-2x.png differ
diff --git a/wp-admin/images/welcome-icons.png b/wp-admin/images/welcome-icons.png
new file mode 100644 (file)
index 0000000..571593e
Binary files /dev/null and b/wp-admin/images/welcome-icons.png differ
index 97b343d98c744561e1acb8f98d2b1a24a5bc0da2..7e53103ed98e2d19310ba868962fcfe3759fd1a3 100644 (file)
Binary files a/wp-admin/images/wheel.png and b/wp-admin/images/wheel.png differ
diff --git a/wp-admin/images/white-grad-active.png b/wp-admin/images/white-grad-active.png
deleted file mode 100644 (file)
index 0478015..0000000
Binary files a/wp-admin/images/white-grad-active.png and /dev/null differ
diff --git a/wp-admin/images/white-grad.png b/wp-admin/images/white-grad.png
deleted file mode 100644 (file)
index aaf57aa..0000000
Binary files a/wp-admin/images/white-grad.png and /dev/null differ
diff --git a/wp-admin/images/widgets-arrow-vs.gif b/wp-admin/images/widgets-arrow-vs.gif
deleted file mode 100644 (file)
index c6398e6..0000000
Binary files a/wp-admin/images/widgets-arrow-vs.gif and /dev/null differ
diff --git a/wp-admin/images/widgets-arrow.gif b/wp-admin/images/widgets-arrow.gif
deleted file mode 100644 (file)
index 69e0352..0000000
Binary files a/wp-admin/images/widgets-arrow.gif and /dev/null differ
index 849a2d0b574d92e20d7f0b5a09316765b4e9bf06..63b0379613dce1dd59a81a30cf98fc23275751dc 100644 (file)
Binary files a/wp-admin/images/wordpress-logo.png and b/wp-admin/images/wordpress-logo.png differ
index 79cc1e195c6188a20e99e42d41c56a41ad995fbf..ce675451ea48f763ebd2e55ec3ea8f435622b460 100644 (file)
Binary files a/wp-admin/images/wp-badge.png and b/wp-admin/images/wp-badge.png differ
diff --git a/wp-admin/images/wp-logo-2x.png b/wp-admin/images/wp-logo-2x.png
new file mode 100644 (file)
index 0000000..a8dad4f
Binary files /dev/null and b/wp-admin/images/wp-logo-2x.png differ
diff --git a/wp-admin/images/wp-logo-vs-2x.png b/wp-admin/images/wp-logo-vs-2x.png
new file mode 100644 (file)
index 0000000..3bfb20a
Binary files /dev/null and b/wp-admin/images/wp-logo-vs-2x.png differ
index 13f3fa64dd7aee3835861516bd4a5e51de297ac7..a6197620504050e8f8b8f3d8e48f401194085cee 100644 (file)
Binary files a/wp-admin/images/wp-logo-vs.png and b/wp-admin/images/wp-logo-vs.png differ
index 224f7c8da356a1eae25daea11a4d1a6db5778e3d..1324b6a89b27f99957d0470b0d59cbe99d795cd1 100644 (file)
Binary files a/wp-admin/images/wp-logo.png and b/wp-admin/images/wp-logo.png differ
diff --git a/wp-admin/images/wpspin_dark.gif b/wp-admin/images/wpspin_dark.gif
deleted file mode 100644 (file)
index daebe0d..0000000
Binary files a/wp-admin/images/wpspin_dark.gif and /dev/null differ
diff --git a/wp-admin/images/wpspin_light-2x.gif b/wp-admin/images/wpspin_light-2x.gif
new file mode 100644 (file)
index 0000000..fe2d5c0
Binary files /dev/null and b/wp-admin/images/wpspin_light-2x.gif differ
diff --git a/wp-admin/images/xit-2x.gif b/wp-admin/images/xit-2x.gif
new file mode 100644 (file)
index 0000000..64ab2ce
Binary files /dev/null and b/wp-admin/images/xit-2x.gif differ
index 2f86f0ae6bb797bf29700cb1d0d93e5e30a4e72b..fbb39836bbdf6c9931e9f846776d28c6c0157a87 100644 (file)
Binary files a/wp-admin/images/yes.png and b/wp-admin/images/yes.png differ
index a9de2654b96eff86eacacf05952eb8dd0ebf15b0..72b9142f45e382090c4a5d1255a0f3b051428390 100644 (file)
@@ -29,22 +29,19 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-$popular_importers = array();
-if ( current_user_can('install_plugins') )
-       $popular_importers = array(
-               'blogger' => array( __('Blogger'), __('Install the Blogger importer to import posts, comments, and users from a Blogger blog.'), 'install' ),
-               'wpcat2tag' => array(__('Categories and Tags Converter'), __('Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.'), 'install', 'wp-cat2tag' ),
-               'livejournal' => array( __( 'LiveJournal' ), __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ), 'install' ),
-               'movabletype' => array( __('Movable Type and TypePad'), __('Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.'), 'install', 'mt' ),
-               'opml' => array( __('Blogroll'), __('Install the blogroll importer to import links in OPML format.'), 'install' ),
-               'rss' => array( __('RSS'), __('Install the RSS importer to import posts from an RSS feed.'), 'install' ),
-               'tumblr' => array( __('Tumblr'), __('Install the Tumblr importer to import posts &amp; media from Tumblr using their API.'), 'install' ),
-               'wordpress' => array( 'WordPress', __('Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'), 'install' )
-       );
-
-if ( ! empty( $_GET['invalid'] ) && !empty($popular_importers[$_GET['invalid']][3]) ) {
-       wp_redirect( admin_url('import.php?import=' . $popular_importers[$_GET['invalid']][3]) );
-       exit;
+if ( current_user_can( 'install_plugins' ) )
+       $popular_importers = wp_get_popular_importers();
+else
+       $popular_importers = array();
+
+// Detect and redirect invalid importers like 'movabletype', which is registered as 'mt'
+if ( ! empty( $_GET['invalid'] ) && isset( $popular_importers[ $_GET['invalid'] ] ) ) {
+       $importer_id = $popular_importers[ $_GET['invalid'] ]['importer-id'];
+       if ( $importer_id != $_GET['invalid'] ) { // Prevent redirect loops.
+               wp_redirect( admin_url( 'admin.php?import=' . $importer_id ) );
+               exit;
+       }
+       unset( $importer_id );
 }
 
 add_thickbox();
@@ -68,28 +65,26 @@ $importers = get_importers();
 
 // If a popular importer is not registered, create a dummy registration that links to the plugin installer.
 foreach ( $popular_importers as $pop_importer => $pop_data ) {
-       if ( isset( $importers[$pop_importer] ) )
+       if ( isset( $importers[ $pop_importer ] ) )
                continue;
-       if ( isset( $pop_data[3] ) && isset( $importers[ $pop_data[3] ] ) )
+       if ( isset( $importers[ $pop_data['importer-id'] ] ) )
                continue;
-
-       $importers[$pop_importer] = $popular_importers[$pop_importer];
+       $importers[ $pop_data['importer-id'] ] = array( $pop_data['name'], $pop_data['description'], 'install' => $pop_data['plugin-slug'] );
 }
 
-if ( empty($importers) ) {
-       echo '<p>'.__('No importers are available.').'</p>'; // TODO: make more helpful
+if ( empty( $importers ) ) {
+       echo '<p>' . __('No importers are available.') . '</p>'; // TODO: make more helpful
 } else {
-       uasort($importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);'));
+       uasort($importers, create_function('$a, $b', 'return strnatcasecmp($a[0], $b[0]);'));
 ?>
 <table class="widefat importers" cellspacing="0">
 
 <?php
-       $style = '';
-       foreach ($importers as $id => $data) {
-               $style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate';
+       $alt = '';
+       foreach ($importers as $importer_id => $data) {
                $action = '';
-               if ( 'install' == $data[2] ) {
-                       $plugin_slug = $id . '-importer';
+               if ( isset( $data['install'] ) ) {
+                       $plugin_slug = $data['install'];
                        if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) {
                                // Looks like Importer is installed, But not active
                                $plugins = get_plugins( '/' . $plugin_slug );
@@ -111,13 +106,12 @@ if ( empty($importers) ) {
                                }
                        }
                } else {
-                       $action = "<a href='" . esc_url("admin.php?import=$id") . "' title='" . esc_attr( wptexturize(strip_tags($data[1])) ) ."'>{$data[0]}</a>";
+                       $action = "<a href='" . esc_url( "admin.php?import=$importer_id" ) . "' title='" . esc_attr( wptexturize( strip_tags( $data[1] ) ) ) ."'>{$data[0]}</a>";
                }
 
-               if ($style != '')
-                       $style = 'class="'.$style.'"';
+               $alt = $alt ? '' : ' class="alternate"';
                echo "
-                       <tr $style>
+                       <tr$alt>
                                <td class='import-system row-title'>$action</td>
                                <td class='desc'>{$data[1]}</td>
                        </tr>";
index 5ced90166f595bb433386a2214967fa258705b28..c39effe75ef42f4fb58b0bb94f5cc00d59630be9 100644 (file)
@@ -29,17 +29,12 @@ function wp_ajax_nopriv_autosave() {
  * GET-based Ajax handlers.
  */
 function wp_ajax_fetch_list() {
-       global $current_screen, $wp_list_table;
+       global $wp_list_table;
 
        $list_class = $_GET['list_args']['class'];
        check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' );
 
-       $current_screen = convert_to_screen( $_GET['list_args']['screen']['id'] );
-
-       define( 'WP_NETWORK_ADMIN', $current_screen->is_network );
-       define( 'WP_USER_ADMIN', $current_screen->is_user );
-
-       $wp_list_table = _get_list_table( $list_class );
+       $wp_list_table = _get_list_table( $list_class, array( 'screen' => $_GET['list_args']['screen']['id'] ) );
        if ( ! $wp_list_table )
                wp_die( 0 );
 
@@ -193,7 +188,7 @@ function wp_ajax_autocomplete_user() {
 }
 
 function wp_ajax_dashboard_widgets() {
-       require ABSPATH . 'wp-admin/includes/dashboard.php';
+       require_once ABSPATH . 'wp-admin/includes/dashboard.php';
 
        switch ( $_GET['widget'] ) {
                case 'dashboard_incoming_links' :
@@ -331,7 +326,7 @@ function _wp_ajax_add_hierarchical_term() {
                $term_id = $parent->term_id;
 
                while ( $parent->parent ) { // get the top parent
-                       $parent = &get_term( $parent->parent, $taxonomy->name );
+                       $parent = get_term( $parent->parent, $taxonomy->name );
                        if ( is_wp_error( $parent ) )
                                break;
                        $term_id = $parent->term_id;
@@ -512,7 +507,7 @@ function wp_ajax_delete_page( $action ) {
        if ( !current_user_can( 'delete_page', $id ) )
                wp_die( -1 );
 
-       if ( !get_page( $id ) )
+       if ( ! get_post( $id ) )
                wp_die( 1 );
 
        if ( wp_delete_post( $id ) )
@@ -615,9 +610,7 @@ function wp_ajax_add_tag() {
                $x->send();
        }
 
-       set_current_screen( $_POST['screen'] );
-
-       $wp_list_table = _get_list_table('WP_Terms_List_Table');
+       $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => $_POST['screen'] ) );
 
        $level = 0;
        if ( is_taxonomy_hierarchical($taxonomy) ) {
@@ -686,9 +679,7 @@ function wp_ajax_get_comments( $action ) {
 
        check_ajax_referer( $action );
 
-       set_current_screen( 'edit-comments' );
-
-       $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
+       $wp_list_table = _get_list_table( 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) );
 
        if ( !current_user_can( 'edit_post', $post_id ) )
                wp_die( -1 );
@@ -723,8 +714,6 @@ function wp_ajax_replyto_comment( $action ) {
 
        check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
 
-       set_current_screen( 'edit-comments' );
-
        $comment_post_ID = (int) $_POST['comment_post_ID'];
        if ( !current_user_can( 'edit_post', $comment_post_ID ) )
                wp_die( -1 );
@@ -760,12 +749,6 @@ function wp_ajax_replyto_comment( $action ) {
        $comment_auto_approved = false;
        $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
 
-       $comment_id = wp_new_comment( $commentdata );
-       $comment = get_comment($comment_id);
-       if ( ! $comment ) wp_die( 1 );
-
-       $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
-
        // automatically approve parent comment
        if ( !empty($_POST['approve_parent']) ) {
                $parent = get_comment( $comment_parent );
@@ -776,15 +759,21 @@ function wp_ajax_replyto_comment( $action ) {
                }
        }
 
+       $comment_id = wp_new_comment( $commentdata );
+       $comment = get_comment($comment_id);
+       if ( ! $comment ) wp_die( 1 );
+
+       $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
+
        ob_start();
                if ( 'dashboard' == $_REQUEST['mode'] ) {
                        require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
                        _wp_dashboard_recent_comments_row( $comment );
                } else {
                        if ( 'single' == $_REQUEST['mode'] ) {
-                               $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
+                               $wp_list_table = _get_list_table('WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) );
                        } else {
-                               $wp_list_table = _get_list_table('WP_Comments_List_Table');
+                               $wp_list_table = _get_list_table('WP_Comments_List_Table', array( 'screen' => 'edit-comments' ) );
                        }
                        $wp_list_table->single_row( $comment );
                }
@@ -811,8 +800,6 @@ function wp_ajax_edit_comment() {
 
        check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' );
 
-       set_current_screen( 'edit-comments' );
-
        $comment_id = (int) $_POST['comment_ID'];
        if ( ! current_user_can( 'edit_comment', $comment_id ) )
                wp_die( -1 );
@@ -827,7 +814,7 @@ function wp_ajax_edit_comment() {
        $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : '';
 
        $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
-       $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' );
+       $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table', array( 'screen' => 'edit-comments' ) );
 
        $comment = get_comment( $comment_id );
 
@@ -1018,17 +1005,19 @@ function wp_ajax_add_user( $action ) {
                ) );
                $x->send();
        }
-       $user_object = new WP_User( $user_id );
+       $user_object = get_userdata( $user_id );
 
        $wp_list_table = _get_list_table('WP_Users_List_Table');
 
+       $role = current( $user_object->roles );
+
        $x = new WP_Ajax_Response( array(
                'what' => 'user',
                'id' => $user_id,
-               'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ),
+               'data' => $wp_list_table->single_row( $user_object, '', $role ),
                'supplemental' => array(
                        'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
-                       'role' => $user_object->roles[0]
+                       'role' => $role,
                )
        ) );
        $x->send();
@@ -1328,8 +1317,6 @@ function wp_ajax_inline_save() {
                        wp_die( __( 'You are not allowed to edit this post.' ) );
        }
 
-       set_current_screen( $_POST['screen'] );
-
        if ( $last = wp_check_post_lock( $post_ID ) ) {
                $last_user = get_userdata( $last );
                $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
@@ -1365,10 +1352,21 @@ function wp_ajax_inline_save() {
        // update the post
        edit_post();
 
-       $wp_list_table = _get_list_table('WP_Posts_List_Table');
+       $wp_list_table = _get_list_table( 'WP_Posts_List_Table', array( 'screen' => $_POST['screen'] ) );
 
        $mode = $_POST['post_view'];
-       $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
+
+       $level = 0;
+       $request_post = array( get_post( $_POST['post_ID'] ) );
+       $parent = $request_post[0]->post_parent;
+
+       while ( $parent > 0 ) {
+               $parent_post = get_post( $parent );
+               $parent = $parent_post->post_parent;
+               $level++;
+       }
+
+       $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ), $level );
 
        wp_die();
 }
@@ -1386,9 +1384,7 @@ function wp_ajax_inline_save_tax() {
        if ( ! current_user_can( $tax->cap->edit_terms ) )
                wp_die( -1 );
 
-       set_current_screen( 'edit-' . $taxonomy );
-
-       $wp_list_table = _get_list_table('WP_Terms_List_Table');
+       $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => 'edit-' . $taxonomy ) );
 
        if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
                wp_die( -1 );
@@ -1404,14 +1400,19 @@ function wp_ajax_inline_save_tax() {
                                wp_die( $tag->get_error_message() );
                        wp_die( __( 'Item not updated.' ) );
                }
-
-               echo $wp_list_table->single_row( $tag );
        } else {
                if ( is_wp_error($updated) && $updated->get_error_message() )
                        wp_die( $updated->get_error_message() );
                wp_die( __( 'Item not updated.' ) );
        }
-
+       $level = 0;
+       $parent = $tag->parent;
+       while ( $parent > 0 ) {
+               $parent_tag = get_term( $parent, $taxonomy );
+               $parent = $parent_tag->parent;
+               $level++;
+       }
+       echo $wp_list_table->single_row( $tag, $level );
        wp_die();
 }
 
@@ -1420,37 +1421,27 @@ function wp_ajax_find_posts() {
 
        check_ajax_referer( 'find-posts' );
 
-       if ( empty($_POST['ps']) )
-               wp_die();
-
-       if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) )
-               $what = $_POST['post_type'];
-       else
-               $what = 'post';
-
-       $s = stripslashes($_POST['ps']);
-       preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
-       $search_terms = array_map('_search_terms_tidy', $matches[0]);
+       $post_types = get_post_types( array( 'public' => true ), 'objects' );
+       unset( $post_types['attachment'] );
 
+       $s = stripslashes( $_POST['ps'] );
        $searchand = $search = '';
-       foreach ( (array) $search_terms as $term ) {
-               $term = esc_sql( like_escape( $term ) );
-               $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))";
-               $searchand = ' AND ';
-       }
-       $term = esc_sql( like_escape( $s ) );
-       if ( count($search_terms) > 1 && $search_terms[0] != $s )
-               $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')";
+       $args = array(
+               'post_type' => array_keys( $post_types ),
+               'post_status' => 'any',
+               'posts_per_page' => 50,
+       );
+       if ( '' !== $s )
+               $args['s'] = $s;
 
-       $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" );
+       $posts = get_posts( $args );
 
-       if ( ! $posts ) {
-               $posttype = get_post_type_object($what);
-               wp_die( $posttype->labels->not_found );
-       }
+       if ( ! $posts )
+               wp_die( __('No items found.') );
 
-       $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Date').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
+       $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th class="no-break">'.__('Type').'</th><th class="no-break">'.__('Date').'</th><th class="no-break">'.__('Status').'</th></tr></thead><tbody>';
        foreach ( $posts as $post ) {
+               $title = trim( $post->post_title ) ? $post->post_title : __( '(no title)' );
 
                switch ( $post->post_status ) {
                        case 'publish' :
@@ -1476,17 +1467,16 @@ function wp_ajax_find_posts() {
                }
 
                $html .= '<tr class="found-posts"><td class="found-radio"><input type="radio" id="found-'.$post->ID.'" name="found_post_id" value="' . esc_attr($post->ID) . '"></td>';
-               $html .= '<td><label for="found-'.$post->ID.'">'.esc_html( $post->post_title ).'</label></td><td>'.esc_html( $time ).'</td><td>'.esc_html( $stat ).'</td></tr>'."\n\n";
+               $html .= '<td><label for="found-'.$post->ID.'">' . esc_html( $title ) . '</label></td><td class="no-break">' . esc_html( $post_types[$post->post_type]->labels->singular_name ) . '</td><td class="no-break">'.esc_html( $time ) . '</td><td class="no-break">' . esc_html( $stat ). ' </td></tr>' . "\n\n";
        }
+
        $html .= '</tbody></table>';
 
        $x = new WP_Ajax_Response();
        $x->add( array(
-               'what' => $what,
                'data' => $html
        ));
        $x->send();
-
 }
 
 function wp_ajax_widgets_order() {
@@ -1595,28 +1585,45 @@ function wp_ajax_upload_attachment() {
        check_ajax_referer( 'media-form' );
 
        if ( ! current_user_can( 'upload_files' ) )
-               wp_die( -1 );
+               wp_die();
 
        if ( isset( $_REQUEST['post_id'] ) ) {
                $post_id = $_REQUEST['post_id'];
                if ( ! current_user_can( 'edit_post', $post_id ) )
-                       wp_die( -1 );
+                       wp_die();
        } else {
                $post_id = null;
        }
 
        $post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array();
 
+       // If the context is custom header or background, make sure the uploaded file is an image.
+       if ( isset( $post_data['context'] ) && in_array( $post_data['context'], array( 'custom-header', 'custom-background' ) ) ) {
+               $wp_filetype = wp_check_filetype_and_ext( $_FILES['async-upload']['tmp_name'], $_FILES['async-upload']['name'], false );
+               if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) {
+                       echo json_encode( array(
+                               'success' => false,
+                               'data'    => array(
+                                       'message'  => __( 'The uploaded file is not a valid image. Please try again.' ),
+                                       'filename' => $_FILES['async-upload']['name'],
+                               )
+                       ) );
+
+                       wp_die();
+               }
+       }
+
        $attachment_id = media_handle_upload( 'async-upload', $post_id, $post_data );
 
        if ( is_wp_error( $attachment_id ) ) {
                echo json_encode( array(
-                       'type' => 'error',
-                       'data' => array(
+                       'success' => false,
+                       'data'    => array(
                                'message'  => $attachment_id->get_error_message(),
                                'filename' => $_FILES['async-upload']['name'],
-                       ),
+                       )
                ) );
+
                wp_die();
        }
 
@@ -1628,18 +1635,14 @@ function wp_ajax_upload_attachment() {
                        update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', $post_data['theme'] );
        }
 
-       $post = get_post( $attachment_id );
+       if ( ! $attachment = wp_prepare_attachment_for_js( $attachment_id ) )
+               wp_die();
 
        echo json_encode( array(
-               'type' => 'success',
-               'data' => array(
-                       'id'       => $attachment_id,
-                       'title'    => esc_attr( $post->post_title ),
-                       'filename' => esc_html( basename( $post->guid ) ),
-                       'url'      => wp_get_attachment_url( $attachment_id ),
-                       'meta'     => wp_get_attachment_metadata( $attachment_id ),
-               ),
+               'success' => true,
+               'data'    => $attachment,
        ) );
+
        wp_die();
 }
 
@@ -1671,22 +1674,33 @@ function wp_ajax_image_editor() {
 }
 
 function wp_ajax_set_post_thumbnail() {
+       $json = ! empty( $_REQUEST['json'] ); // New-style request
+
        $post_ID = intval( $_POST['post_id'] );
-       if ( !current_user_can( 'edit_post', $post_ID ) )
+       if ( ! current_user_can( 'edit_post', $post_ID ) )
                wp_die( -1 );
+
        $thumbnail_id = intval( $_POST['thumbnail_id'] );
 
-       check_ajax_referer( "set_post_thumbnail-$post_ID" );
+       if ( $json )
+               check_ajax_referer( "update-post_$post_ID" );
+       else
+               check_ajax_referer( "set_post_thumbnail-$post_ID" );
 
        if ( $thumbnail_id == '-1' ) {
-               if ( delete_post_thumbnail( $post_ID ) )
-                       wp_die( _wp_post_thumbnail_html( null, $post_ID ) );
-               else
+               if ( delete_post_thumbnail( $post_ID ) ) {
+                       $return = _wp_post_thumbnail_html( null, $post_ID );
+                       $json ? wp_send_json_success( $return ) : wp_die( $return );
+               } else {
                        wp_die( 0 );
+               }
+       }
+
+       if ( set_post_thumbnail( $post_ID, $thumbnail_id ) ) {
+               $return = _wp_post_thumbnail_html( $thumbnail_id, $post_ID );
+               $json ? wp_send_json_success( $return ) : wp_die( $return );
        }
 
-       if ( set_post_thumbnail( $post_ID, $thumbnail_id ) )
-               wp_die( _wp_post_thumbnail_html( $thumbnail_id, $post_ID ) );
        wp_die( 0 );
 }
 
@@ -1711,7 +1725,7 @@ function wp_ajax_wp_fullscreen_save_post() {
        elseif ( isset( $_POST['post_type'] ) && post_type_exists( $_POST['post_type'] ) )
                $post_type = $_POST['post_type'];
 
-       check_ajax_referer('update-' . $post_type . '_' . $post_id, '_wpnonce');
+       check_ajax_referer('update-post_' . $post_id, '_wpnonce');
 
        $post_id = edit_post();
 
@@ -1753,7 +1767,7 @@ function wp_ajax_wp_remove_post_lock() {
        if ( ! $post = get_post( $post_id ) )
                wp_die( 0 );
 
-       check_ajax_referer( 'update-' . $post->post_type . '_' . $post_id );
+       check_ajax_referer( 'update-post_' . $post_id );
 
        if ( ! current_user_can( 'edit_post', $post_id ) )
                wp_die( -1 );
@@ -1785,3 +1799,274 @@ function wp_ajax_dismiss_wp_pointer() {
        update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
        wp_die( 1 );
 }
+
+/**
+ * Get an attachment.
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_get_attachment() {
+       if ( ! isset( $_REQUEST['id'] ) )
+               wp_send_json_error();
+
+       if ( ! $id = absint( $_REQUEST['id'] ) )
+               wp_send_json_error();
+
+       if ( ! $post = get_post( $id ) )
+               wp_send_json_error();
+
+       if ( 'attachment' != $post->post_type )
+               wp_send_json_error();
+
+       if ( ! current_user_can( 'upload_files' ) )
+               wp_send_json_error();
+
+       if ( ! $attachment = wp_prepare_attachment_for_js( $id ) )
+               wp_send_json_error();
+
+       wp_send_json_success( $attachment );
+}
+
+/**
+ * Query for attachments.
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_query_attachments() {
+       if ( ! current_user_can( 'upload_files' ) )
+               wp_send_json_error();
+
+       $query = isset( $_REQUEST['query'] ) ? (array) $_REQUEST['query'] : array();
+       $query = array_intersect_key( $query, array_flip( array(
+               's', 'order', 'orderby', 'posts_per_page', 'paged', 'post_mime_type',
+               'post_parent', 'post__in', 'post__not_in',
+       ) ) );
+
+       $query['post_type'] = 'attachment';
+       $query['post_status'] = 'inherit';
+       if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) )
+               $query['post_status'] .= ',private';
+
+       $query = new WP_Query( $query );
+
+       $posts = array_map( 'wp_prepare_attachment_for_js', $query->posts );
+       $posts = array_filter( $posts );
+
+       wp_send_json_success( $posts );
+}
+
+/**
+ * Save attachment attributes.
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_save_attachment() {
+       if ( ! isset( $_REQUEST['id'] ) || ! isset( $_REQUEST['changes'] ) )
+               wp_send_json_error();
+
+       if ( ! $id = absint( $_REQUEST['id'] ) )
+               wp_send_json_error();
+
+       check_ajax_referer( 'update-post_' . $id, 'nonce' );
+
+       if ( ! current_user_can( 'edit_post', $id ) )
+               wp_send_json_error();
+
+       $changes = $_REQUEST['changes'];
+       $post    = get_post( $id, ARRAY_A );
+
+       if ( 'attachment' != $post['post_type'] )
+               wp_send_json_error();
+
+       if ( isset( $changes['title'] ) )
+               $post['post_title'] = $changes['title'];
+
+       if ( isset( $changes['caption'] ) )
+               $post['post_excerpt'] = $changes['caption'];
+
+       if ( isset( $changes['description'] ) )
+               $post['post_content'] = $changes['description'];
+
+       if ( isset( $changes['alt'] ) ) {
+               $alt = get_post_meta( $id, '_wp_attachment_image_alt', true );
+               $new_alt = stripslashes( $changes['alt'] );
+               if ( $alt != $new_alt ) {
+                       $new_alt = wp_strip_all_tags( $new_alt, true );
+                       update_post_meta( $id, '_wp_attachment_image_alt', addslashes( $new_alt ) );
+               }
+       }
+
+       wp_update_post( $post );
+       wp_send_json_success();
+}
+
+/**
+ * Save backwards compatible attachment attributes.
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_save_attachment_compat() {
+       if ( ! isset( $_REQUEST['id'] ) )
+               wp_send_json_error();
+
+       if ( ! $id = absint( $_REQUEST['id'] ) )
+               wp_send_json_error();
+
+       if ( empty( $_REQUEST['attachments'] ) || empty( $_REQUEST['attachments'][ $id ] ) )
+               wp_send_json_error();
+       $attachment_data = $_REQUEST['attachments'][ $id ];
+
+       check_ajax_referer( 'update-post_' . $id, 'nonce' );
+
+       if ( ! current_user_can( 'edit_post', $id ) )
+               wp_send_json_error();
+
+       $post = get_post( $id, ARRAY_A );
+
+       if ( 'attachment' != $post['post_type'] )
+               wp_send_json_error();
+
+       $post = apply_filters( 'attachment_fields_to_save', $post, $attachment_data );
+
+       if ( isset( $post['errors'] ) ) {
+               $errors = $post['errors']; // @todo return me and display me!
+               unset( $post['errors'] );
+       }
+
+       wp_update_post( $post );
+
+       foreach ( get_attachment_taxonomies( $post ) as $taxonomy ) {
+               if ( isset( $attachment_data[ $taxonomy ] ) )
+                       wp_set_object_terms( $id, array_map( 'trim', preg_split( '/,+/', $attachment_data[ $taxonomy ] ) ), $taxonomy, false );
+       }
+
+       if ( ! $attachment = wp_prepare_attachment_for_js( $id ) )
+               wp_send_json_error();
+
+       wp_send_json_success( $attachment );
+}
+
+function wp_ajax_save_attachment_order() {
+       if ( ! isset( $_REQUEST['post_id'] ) )
+               wp_send_json_error();
+
+       if ( ! $post_id = absint( $_REQUEST['post_id'] ) )
+               wp_send_json_error();
+
+       if ( empty( $_REQUEST['attachments'] ) )
+               wp_send_json_error();
+
+       check_ajax_referer( 'update-post_' . $post_id, 'nonce' );
+
+       $attachments = $_REQUEST['attachments'];
+
+       if ( ! current_user_can( 'edit_post', $post_id ) )
+               wp_send_json_error();
+
+       $post = get_post( $post_id, ARRAY_A );
+
+       foreach ( $attachments as $attachment_id => $menu_order ) {
+               if ( ! current_user_can( 'edit_post', $attachment_id ) )
+                       continue;
+               if ( ! $attachment = get_post( $attachment_id ) )
+                       continue;
+               if ( 'attachment' != $attachment->post_type )
+                       continue;
+
+               wp_update_post( array( 'ID' => $attachment_id, 'menu_order' => $menu_order ) );
+       }
+
+       wp_send_json_success();
+}
+
+/**
+ * Generates the HTML to send an attachment to the editor.
+ * Backwards compatible with the media_send_to_editor filter and the chain
+ * of filters that follow.
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_send_attachment_to_editor() {
+       check_ajax_referer( 'media-send-to-editor', 'nonce' );
+
+       $attachment = stripslashes_deep( $_POST['attachment'] );
+
+       $id = intval( $attachment['id'] );
+
+       if ( ! $post = get_post( $id ) )
+               wp_send_json_error();
+
+       if ( 'attachment' != $post->post_type )
+               wp_send_json_error();
+
+       if ( current_user_can( 'edit_post', $id ) ) {
+               // If this attachment is unattached, attach it. Primarily a back compat thing.
+               if ( 0 == $post->post_parent && $insert_into_post_id = intval( $_POST['post_id'] ) ) {
+                       wp_update_post( array( 'ID' => $id, 'post_parent' => $insert_into_post_id ) );
+               }
+       }
+
+       $rel = $url = '';
+       $html = $title = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
+       if ( ! empty( $attachment['url'] ) ) {
+               $url = $attachment['url'];
+               if ( strpos( $url, 'attachment_id') || get_attachment_link( $id ) == $url )
+                       $rel = ' rel="attachment wp-att-' . $id . '"';
+               $html = '<a href="' . esc_url( $url ) . '"' . $rel . '>' . $html . '</a>';
+       }
+
+       remove_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
+
+       if ( 'image' === substr( $post->post_mime_type, 0, 5 ) ) {
+               $align = isset( $attachment['align'] ) ? $attachment['align'] : 'none';
+               $size = isset( $attachment['image-size'] ) ? $attachment['image-size'] : 'medium';
+               $alt = isset( $attachment['image_alt'] ) ? $attachment['image_alt'] : '';
+               $caption = isset( $attachment['post_excerpt'] ) ? $attachment['post_excerpt'] : '';
+               $title = ''; // We no longer insert title tags into <img> tags, as they are redundant.
+               $html = get_image_send_to_editor( $id, $caption, $title, $align, $url, (bool) $rel, $size, $alt );
+       }
+
+       $html = apply_filters( 'media_send_to_editor', $html, $id, $attachment );
+
+       wp_send_json_success( $html );
+}
+
+/**
+ * Generates the HTML to send a non-image embed link to the editor.
+ *
+ * Backwards compatible with the following filters:
+ * - file_send_to_editor_url
+ * - audio_send_to_editor_url
+ * - video_send_to_editor_url
+ *
+ * @since 3.5.0
+ */
+function wp_ajax_send_link_to_editor() {
+       check_ajax_referer( 'media-send-to-editor', 'nonce' );
+
+       if ( ! $src = stripslashes( $_POST['src'] ) )
+               wp_send_json_error();
+
+       if ( ! strpos( $src, '://' ) )
+               $src = 'http://' . $src;
+
+       if ( ! $src = esc_url_raw( $src ) )
+               wp_send_json_error();
+
+       if ( ! $title = trim( stripslashes( $_POST['title'] ) ) )
+               $title = wp_basename( $src );
+
+       $html = '';
+       if ( $title )
+               $html = '<a href="' . esc_url( $src ) . '">' . $title . '</a>';
+
+       // Figure out what filter to run:
+       $type = 'file';
+       if ( ( $ext = preg_replace( '/^.+?\.([^.]+)$/', '$1', $src ) ) && ( $ext_type = wp_ext2type( $ext ) )
+               && ( 'audio' == $ext_type || 'video' == $ext_type ) )
+                       $type = $ext_type;
+
+       $html = apply_filters( $type . '_send_to_editor_url', $html, $src, $title );
+
+       wp_send_json_success( $html );
+}
index 17a8229aa65897086cca43c10a9dac5fb0384a00..4d240b775c13f791de2deff3ea6a052c9db0cc96 100644 (file)
@@ -266,3 +266,25 @@ function wp_update_link( $linkdata ) {
 
        return wp_insert_link( $linkdata );
 }
+
+/**
+ * @since 3.5.0
+ * @access private
+ */
+function wp_link_manager_disabled_message() {
+       global $pagenow;
+       if ( 'link-manager.php' != $pagenow && 'link-add.php' != $pagenow && 'link.php' != $pagenow )
+               return;
+
+       add_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );
+       $really_can_manage_links = current_user_can( 'manage_links' );
+       remove_filter( 'pre_option_link_manager_enabled', '__return_true', 100 );
+
+       if ( $really_can_manage_links && current_user_can( 'install_plugins' ) ) {
+               $link = network_admin_url( 'plugin-install.php?tab=search&amp;s=Link+Manager' );
+               wp_die( sprintf( __( 'If you are looking to use the link manager, please install the <a href="%s">Link Manager</a> plugin.' ), $link ) );
+       }
+
+       wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) );
+}
+add_action( 'admin_page_access_denied', 'wp_link_manager_disabled_message' );
index bb5a95e6a741ff71d40e57e3341ad9d47d1d6831..cf0ab88a82691d5c65af06313596ba770b0b234c 100644 (file)
@@ -21,7 +21,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 
        var $pending_count = array();
 
-       function __construct() {
+       function __construct( $args = array() ) {
                global $post_id;
 
                $post_id = isset( $_REQUEST['p'] ) ? absint( $_REQUEST['p'] ) : 0;
@@ -33,6 +33,7 @@ class WP_Comments_List_Table extends WP_List_Table {
                        'plural' => 'comments',
                        'singular' => 'comment',
                        'ajax' => true,
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
        }
 
@@ -81,7 +82,8 @@ class WP_Comments_List_Table extends WP_List_Table {
 
                $status_map = array(
                        'moderated' => 'hold',
-                       'approved' => 'approve'
+                       'approved' => 'approve',
+                       'all' => '',
                );
 
                $args = array(
@@ -224,13 +226,14 @@ class WP_Comments_List_Table extends WP_List_Table {
                        ?>
                        </select>
 <?php
-                       submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );
+                       do_action( 'restrict_manage_comments' );
+                       submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
                }
 
                if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) {
                        wp_nonce_field( 'bulk-destroy', '_destroy_nonce' );
                        $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' );
-                       submit_button( $title, 'button-secondary apply', 'delete_all', false );
+                       submit_button( $title, 'apply', 'delete_all', false );
                }
                do_action( 'manage_comments_nav', $comment_status );
                echo '</div>';
@@ -288,11 +291,11 @@ class WP_Comments_List_Table extends WP_List_Table {
        </tr>
        </tfoot>
 
-       <tbody id="the-comment-list" class="list:comment">
+       <tbody id="the-comment-list" data-wp-lists="list:comment">
                <?php $this->display_rows_or_placeholder(); ?>
        </tbody>
 
-       <tbody id="the-extra-comment-list" class="list:comment" style="display: none;">
+       <tbody id="the-extra-comment-list" data-wp-lists="list:comment" style="display: none;">
                <?php $this->items = $this->extra_items; $this->display_rows(); ?>
        </tbody>
 </table>
@@ -317,12 +320,16 @@ class WP_Comments_List_Table extends WP_List_Table {
        }
 
        function column_cb( $comment ) {
-               if ( $this->user_can )
-                       echo "<input type='checkbox' name='delete_comments[]' value='$comment->comment_ID' />";
+               if ( $this->user_can ) { ?>
+               <label class="screen-reader-text" for="cb-select-<?php echo $comment->comment_ID; ?>"><?php _e( 'Select comment' ); ?></label>
+               <input id="cb-select-<?php echo $comment->comment_ID; ?>" type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" />
+               <?php
+               }
        }
 
        function column_comment( $comment ) {
-               global $post, $comment_status;
+               global $comment_status;
+               $post = get_post();
 
                $user_can = $this->user_can;
 
@@ -330,7 +337,7 @@ class WP_Comments_List_Table extends WP_List_Table {
                $the_comment_status = wp_get_comment_status( $comment->comment_ID );
 
                $ptime = date( 'G', strtotime( $comment->comment_date ) );
-               if ( ( abs( time() - $ptime ) ) < 86400 )
+               if ( ( abs( time() - $ptime ) ) < DAY_IN_SECONDS )
                        $ptime = sprintf( __( '%s ago' ), human_time_diff( $ptime ) );
                else
                        $ptime = mysql2date( __( 'Y/m/d \a\t g:i A' ), $comment->comment_date );
@@ -389,26 +396,26 @@ class WP_Comments_List_Table extends WP_List_Table {
 
                        if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments
                                if ( 'approved' == $the_comment_status )
-                                       $actions['unapprove'] = "<a href='$unapprove_url' class='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=unapproved vim-u vim-destructive' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+                                       $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=unapproved' class='vim-u vim-destructive' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                                else if ( 'unapproved' == $the_comment_status )
-                                       $actions['approve'] = "<a href='$approve_url' class='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=approved vim-a vim-destructive' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+                                       $actions['approve'] = "<a href='$approve_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=approved' class='vim-a vim-destructive' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
                        } else {
-                               $actions['approve'] = "<a href='$approve_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
-                               $actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+                               $actions['approve'] = "<a href='$approve_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved' class='vim-a' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+                               $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved' class='vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                        }
 
                        if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) {
-                               $actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
+                               $actions['spam'] = "<a href='$spam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::spam=1' class='vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
                        } elseif ( 'spam' == $the_comment_status ) {
-                               $actions['unspam'] = "<a href='$unspam_url' class='delete:the-comment-list:comment-$comment->comment_ID:66cc66:unspam=1 vim-z vim-destructive'>" . _x( 'Not Spam', 'comment' ) . '</a>';
+                               $actions['unspam'] = "<a href='$unspam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:66cc66:unspam=1' class='vim-z vim-destructive'>" . _x( 'Not Spam', 'comment' ) . '</a>';
                        } elseif ( 'trash' == $the_comment_status ) {
-                               $actions['untrash'] = "<a href='$untrash_url' class='delete:the-comment-list:comment-$comment->comment_ID:66cc66:untrash=1 vim-z vim-destructive'>" . __( 'Restore' ) . '</a>';
+                               $actions['untrash'] = "<a href='$untrash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:66cc66:untrash=1' class='vim-z vim-destructive'>" . __( 'Restore' ) . '</a>';
                        }
 
                        if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) {
-                               $actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID::delete=1 delete vim-d vim-destructive'>" . __( 'Delete Permanently' ) . '</a>';
+                               $actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::delete=1' class='delete vim-d vim-destructive'>" . __( 'Delete Permanently' ) . '</a>';
                        } else {
-                               $actions['trash'] = "<a href='$trash_url' class='delete:the-comment-list:comment-$comment->comment_ID::trash=1 delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x( 'Trash', 'verb' ) . '</a>';
+                               $actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x( 'Trash', 'verb' ) . '</a>';
                        }
 
                        if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) {
@@ -476,7 +483,7 @@ class WP_Comments_List_Table extends WP_List_Table {
        }
 
        function column_response( $comment ) {
-               global $post;
+               $post = get_post();
 
                if ( isset( $this->pending_count[$post->ID] ) ) {
                        $pending_comments = $this->pending_count[$post->ID];
@@ -545,7 +552,7 @@ class WP_Post_Comments_List_Table extends WP_Comments_List_Table {
                wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
 ?>
 <table class="<?php echo implode( ' ', $this->get_table_classes() ); ?>" cellspacing="0" style="display:none;">
-       <tbody id="the-comment-list"<?php if ( $singular ) echo " class='list:$singular'"; ?>>
+       <tbody id="the-comment-list"<?php if ( $singular ) echo " data-wp-lists='list:$singular'"; ?>>
                <?php if ( ! $output_empty ) $this->display_rows_or_placeholder(); ?>
        </tbody>
 </table>
index 1f22f24182de3b0a3cc5696c594aa121197c39ce..75808df8a35c1029019b0ac42b0d824ed4933fd5 100644 (file)
@@ -193,12 +193,13 @@ class WP_Filesystem_Base {
                $folder = untrailingslashit($folder);
 
                $folder_parts = explode('/', $folder);
-               $last_path = $folder_parts[ count($folder_parts) - 1 ];
+               $last_index = array_pop( array_keys( $folder_parts ) );
+               $last_path = $folder_parts[ $last_index ];
 
                $files = $this->dirlist( $base );
 
-               foreach ( $folder_parts as $key ) {
-                       if ( $key == $last_path )
+               foreach ( $folder_parts as $index => $key ) {
+                       if ( $index == $last_index )
                                continue; //We want this to be caught by the next code block.
 
                        //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder,
@@ -210,7 +211,9 @@ class WP_Filesystem_Base {
                                $newdir = trailingslashit(path_join($base, $key));
                                if ( $this->verbose )
                                        printf( __('Changing to %s') . '<br/>', $newdir );
-                               if ( $ret = $this->search_for_folder( $folder, $newdir, $loop) )
+                               // only search for the remaining path tokens in the directory, not the full path again
+                               $newfolder = implode( '/', array_slice( $folder_parts, $index + 1 ) );
+                               if ( $ret = $this->search_for_folder( $newfolder, $newdir, $loop) )
                                        return $ret;
                        }
                }
@@ -304,14 +307,14 @@ class WP_Filesystem_Base {
                   if ($key = array_search($attarray[$i], $legal))
                           $realmode .= $legal[$key];
 
-               $mode = str_pad($realmode, 9, '-');
+               $mode = str_pad($realmode, 10, '-', STR_PAD_LEFT);
                $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1');
                $mode = strtr($mode,$trans);
 
-               $newmode = '';
-               $newmode .= $mode[0] + $mode[1] + $mode[2];
-               $newmode .= $mode[3] + $mode[4] + $mode[5];
-               $newmode .= $mode[6] + $mode[7] + $mode[8];
+               $newmode = $mode[0];
+               $newmode .= $mode[1] + $mode[2] + $mode[3];
+               $newmode .= $mode[4] + $mode[5] + $mode[6];
+               $newmode .= $mode[7] + $mode[8] + $mode[9];
                return $newmode;
        }
 
index 12280304721c792c4eb9888d981f2d21ccaf3437..d087189147ebe626040f01a3c9a14e977a1dd96e 100644 (file)
@@ -330,6 +330,10 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                        }
                }
 
+               // Replace symlinks formatted as "source -> target" with just the source name
+               if ( $b['islink'] )
+                       $b['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $b['name'] );
+
                return $b;
        }
 
index 2e9fbd69970f5f0ed1500ed7880b1a06477db887..1c931e19281c5a600c63e294d9b0cf524f3f9da7 100644 (file)
@@ -318,6 +318,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                                        $struc['files'] = array();
                        }
 
+                       // Replace symlinks formatted as "source -> target" with just the source name
+                       if ( $struc['islink'] )
+                               $struc['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $struc['name'] );
+
                        $ret[ $struc['name'] ] = $struc;
                }
                return $ret;
index 2b4774bcf34b401b97c5832cb3fc78fbf8a392cb..0cfc9fe8abb766969034196d3b32546163aa0e6c 100644 (file)
@@ -132,9 +132,6 @@ class WP_Importer {
                                exit();
                        }
                        $blog_id = (int) $blog->blog_id;
-                       // Restore global $current_blog
-                       global $current_blog;
-                       $current_blog = $blog;
                }
 
                if ( function_exists( 'is_multisite' ) ) {
@@ -212,8 +209,6 @@ class WP_Importer {
         * @return bool
         */
        function is_user_over_quota() {
-               global $current_blog;
-
                if ( function_exists( 'upload_is_user_over_quota' ) ) {
                        if ( upload_is_user_over_quota( 1 ) ) {
                                echo "Sorry, you have used your upload quota.\n";
index 4776a52f81bcb82c38db24fe23528655317f75cb..b5cbc5560954ab6c42ee094022d02d0fa5db6e4a 100644 (file)
@@ -9,9 +9,10 @@
  */
 class WP_Links_List_Table extends WP_List_Table {
 
-       function __construct() {
+       function __construct( $args = array() ) {
                parent::__construct( array(
                        'plural' => 'bookmarks',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
        }
 
@@ -68,7 +69,7 @@ class WP_Links_List_Table extends WP_List_Table {
                                'orderby' => 'name',
                        );
                        wp_dropdown_categories( $dropdown_options );
-                       submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );
+                       submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
 ?>
                </div>
 <?php
@@ -128,8 +129,12 @@ class WP_Links_List_Table extends WP_List_Table {
                                $attributes = $class . $style;
 
                                switch ( $column_name ) {
-                                       case 'cb':
-                                               echo '<th scope="row" class="check-column"><input type="checkbox" name="linkcheck[]" value="'. esc_attr( $link->link_id ) .'" /></th>';
+                                       case 'cb': ?>
+                                               <th scope="row" class="check-column">
+                                                       <label class="screen-reader-text" for="cb-select-<?php echo $link->link_id; ?>"><?php echo sprintf( __( 'Select %s' ), $link->link_name ); ?></label>
+                                                       <input type="checkbox" name="linkcheck[]" id="cb-select-<?php echo $link->link_id; ?>" value="<?php echo esc_attr( $link->link_id ); ?>" />
+                                               </th>
+                                               <?php
                                                break;
 
                                        case 'name':
index 6de7abf538c1c428671d40401bd3df6e0188a429..8a22bd4e0dd886b1b876db0f62d925d96851ac67 100644 (file)
@@ -81,15 +81,16 @@ class WP_List_Table {
                $args = wp_parse_args( $args, array(
                        'plural' => '',
                        'singular' => '',
-                       'ajax' => false
+                       'ajax' => false,
+                       'screen' => null,
                ) );
 
-               $screen = get_current_screen();
+               $this->screen = convert_to_screen( $args['screen'] );
 
-               add_filter( "manage_{$screen->id}_columns", array( &$this, 'get_columns' ), 0 );
+               add_filter( "manage_{$this->screen->id}_columns", array( &$this, 'get_columns' ), 0 );
 
                if ( !$args['plural'] )
-                       $args['plural'] = $screen->base;
+                       $args['plural'] = $this->screen->base;
 
                $args['plural'] = sanitize_key( $args['plural'] );
                $args['singular'] = sanitize_key( $args['singular'] );
@@ -209,6 +210,10 @@ class WP_List_Table {
                        echo '<input type="hidden" name="orderby" value="' . esc_attr( $_REQUEST['orderby'] ) . '" />';
                if ( ! empty( $_REQUEST['order'] ) )
                        echo '<input type="hidden" name="order" value="' . esc_attr( $_REQUEST['order'] ) . '" />';
+               if ( ! empty( $_REQUEST['post_mime_type'] ) )
+                       echo '<input type="hidden" name="post_mime_type" value="' . esc_attr( $_REQUEST['post_mime_type'] ) . '" />';
+               if ( ! empty( $_REQUEST['detached'] ) )
+                       echo '<input type="hidden" name="detached" value="' . esc_attr( $_REQUEST['detached'] ) . '" />';
 ?>
 <p class="search-box">
        <label class="screen-reader-text" for="<?php echo $input_id ?>"><?php echo $text; ?>:</label>
@@ -238,10 +243,8 @@ class WP_List_Table {
         * @access public
         */
        function views() {
-               $screen = get_current_screen();
-
                $views = $this->get_views();
-               $views = apply_filters( 'views_' . $screen->id, $views );
+               $views = apply_filters( 'views_' . $this->screen->id, $views );
 
                if ( empty( $views ) )
                        return;
@@ -274,12 +277,10 @@ class WP_List_Table {
         * @access public
         */
        function bulk_actions() {
-               $screen = get_current_screen();
-
                if ( is_null( $this->_actions ) ) {
                        $no_new_actions = $this->_actions = $this->get_bulk_actions();
                        // This filter can currently only be used to remove actions.
-                       $this->_actions = apply_filters( 'bulk_actions-' . $screen->id, $this->_actions );
+                       $this->_actions = apply_filters( 'bulk_actions-' . $this->screen->id, $this->_actions );
                        $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions );
                        $two = '';
                } else {
@@ -300,7 +301,7 @@ class WP_List_Table {
 
                echo "</select>\n";
 
-               submit_button( __( 'Apply' ), 'button-secondary action', false, false, array( 'id' => "doaction$two" ) );
+               submit_button( __( 'Apply' ), 'action', false, false, array( 'id' => "doaction$two" ) );
                echo "\n";
        }
 
@@ -490,7 +491,7 @@ class WP_List_Table {
 
                $current = $this->get_pagenum();
 
-               $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+               $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
 
                $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url );
 
@@ -600,12 +601,10 @@ class WP_List_Table {
                if ( isset( $this->_column_headers ) )
                        return $this->_column_headers;
 
-               $screen = get_current_screen();
+               $columns = get_column_headers( $this->screen );
+               $hidden = get_hidden_columns( $this->screen );
 
-               $columns = get_column_headers( $screen );
-               $hidden = get_hidden_columns( $screen );
-
-               $_sortable = apply_filters( "manage_{$screen->id}_sortable_columns", $this->get_sortable_columns() );
+               $_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $this->get_sortable_columns() );
 
                $sortable = array();
                foreach ( $_sortable as $id => $data ) {
@@ -647,11 +646,9 @@ class WP_List_Table {
         * @param bool $with_id Whether to set the id attribute or not
         */
        function print_column_headers( $with_id = true ) {
-               $screen = get_current_screen();
-
                list( $columns, $hidden, $sortable ) = $this->get_column_info();
 
-               $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+               $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
                $current_url = remove_query_arg( 'paged', $current_url );
 
                if ( isset( $_GET['orderby'] ) )
@@ -664,6 +661,13 @@ class WP_List_Table {
                else
                        $current_order = 'asc';
 
+               if ( ! empty( $columns['cb'] ) ) {
+                       static $cb_counter = 1;
+                       $columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __( 'Select All' ) . '</label>'
+                               . '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" />';
+                       $cb_counter++;
+               }
+
                foreach ( $columns as $column_key => $column_display_name ) {
                        $class = array( 'manage-column', "column-$column_key" );
 
@@ -728,7 +732,7 @@ class WP_List_Table {
        </tr>
        </tfoot>
 
-       <tbody id="the-list"<?php if ( $singular ) echo " class='list:$singular'"; ?>>
+       <tbody id="the-list"<?php if ( $singular ) echo " data-wp-lists='list:$singular'"; ?>>
                <?php $this->display_rows_or_placeholder(); ?>
        </tbody>
 </table>
@@ -761,7 +765,7 @@ class WP_List_Table {
        <div class="tablenav <?php echo esc_attr( $which ); ?>">
 
                <div class="alignleft actions">
-                       <?php $this->bulk_actions( $which ); ?>
+                       <?php $this->bulk_actions(); ?>
                </div>
 <?php
                $this->extra_tablenav( $which );
@@ -903,13 +907,11 @@ class WP_List_Table {
         * @access private
         */
        function _js_vars() {
-               $current_screen = get_current_screen();
-
                $args = array(
                        'class'  => get_class( $this ),
                        'screen' => array(
-                               'id'   => $current_screen->id,
-                               'base' => $current_screen->base,
+                               'id'   => $this->screen->id,
+                               'base' => $this->screen->base,
                        )
                );
 
index 5f9c165e861c8718e4f2d3537d05300452ee216d..2c2bf7c39b4b5186674414207fb70db74fc35a50 100644 (file)
@@ -9,11 +9,12 @@
  */
 class WP_Media_List_Table extends WP_List_Table {
 
-       function __construct() {
+       function __construct( $args = array() ) {
                $this->detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );
 
                parent::__construct( array(
-                       'plural' => 'media'
+                       'plural' => 'media',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
        }
 
@@ -91,13 +92,13 @@ class WP_Media_List_Table extends WP_List_Table {
                        $this->months_dropdown( 'attachment' );
 
                        do_action( 'restrict_manage_posts' );
-                       submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );
+                       submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
                }
 
                if ( $this->detached ) {
                        submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false );
                } elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) {
-                       submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false );
+                       submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false );
                } ?>
                </div>
 <?php
@@ -131,12 +132,31 @@ class WP_Media_List_Table extends WP_List_Table {
                /* translators: column name */
                $posts_columns['title'] = _x( 'File', 'column name' );
                $posts_columns['author'] = __( 'Author' );
-               //$posts_columns['tags'] = _x( 'Tags', 'column name' );
+
+               $taxonomies = array();
+
+               $taxonomies = get_taxonomies_for_attachments( 'objects' );
+               $taxonomies = wp_filter_object_list( $taxonomies, array( 'show_admin_column' => true ), 'and', 'name' );
+
+               $taxonomies = apply_filters( 'manage_taxonomies_for_attachment_columns', $taxonomies, 'attachment' );
+               $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' );
+
+               foreach ( $taxonomies as $taxonomy ) {
+                       if ( 'category' == $taxonomy )
+                               $column_key = 'categories';
+                       elseif ( 'post_tag' == $taxonomy )
+                               $column_key = 'tags';
+                       else
+                               $column_key = 'taxonomy-' . $taxonomy;
+
+                       $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name;
+               }
+
                /* translators: column name */
                if ( !$this->detached ) {
-                       $posts_columns['parent'] = _x( 'Attached to', 'column name' );
+                       $posts_columns['parent'] = _x( 'Uploaded to', 'column name' );
                        if ( post_type_supports( 'attachment', 'comments' ) )
-                               $posts_columns['comments'] = '<span class="vers"><img alt="' . esc_attr__( 'Comments' ) . '" src="' . esc_url( admin_url( 'images/comment-grey-bubble.png' ) ) . '" /></span>';
+                               $posts_columns['comments'] = '<span class="vers"><div title="' . esc_attr__( 'Comments' ) . '" class="comment-grey-bubble"></div></span>';
                }
                /* translators: column name */
                $posts_columns['date'] = _x( 'Date', 'column name' );
@@ -191,7 +211,8 @@ foreach ( $columns as $column_name => $column_display_name ) {
 ?>
                <th scope="row" class="check-column">
                        <?php if ( $user_can_edit ) { ?>
-                               <input type="checkbox" name="media[]" value="<?php the_ID(); ?>" />
+                               <label class="screen-reader-text" for="cb-select-<?php the_ID(); ?>"><?php echo sprintf( __( 'Select %s' ), $att_title );?></label>
+                               <input type="checkbox" name="media[]" id="cb-select-<?php the_ID(); ?>" value="<?php the_ID(); ?>" />
                        <?php } ?>
                </th>
 <?php
@@ -249,23 +270,6 @@ foreach ( $columns as $column_name => $column_display_name ) {
 <?php
                break;
 
-       case 'tags':
-?>
-               <td <?php echo $attributes ?>><?php
-               $tags = get_the_tags();
-               if ( !empty( $tags ) ) {
-                       $out = array();
-                       foreach ( $tags as $c )
-                               $out[] = "<a href='edit.php?tag=$c->slug'> " . esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'post_tag', 'display' ) ) . "</a>";
-                       echo join( ', ', $out );
-               } else {
-                       _e( 'No Tags' );
-               }
-?>
-               </td>
-<?php
-               break;
-
        case 'desc':
 ?>
                <td <?php echo $attributes ?>><?php echo has_excerpt() ? $post->post_excerpt : ''; ?></td>
@@ -273,13 +277,12 @@ foreach ( $columns as $column_name => $column_display_name ) {
                break;
 
        case 'date':
-               if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
-                       $t_time = $h_time = __( 'Unpublished' );
+               if ( '0000-00-00 00:00:00' == $post->post_date ) {
+                       $h_time = __( 'Unpublished' );
                } else {
-                       $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) );
                        $m_time = $post->post_date;
                        $time = get_post_time( 'G', true, $post, false );
-                       if ( ( abs( $t_diff = time() - $time ) ) < 86400 ) {
+                       if ( ( abs( $t_diff = time() - $time ) ) < DAY_IN_SECONDS ) {
                                if ( $t_diff < 0 )
                                        $h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) );
                                else
@@ -338,6 +341,38 @@ foreach ( $columns as $column_name => $column_display_name ) {
                break;
 
        default:
+               if ( 'categories' == $column_name )
+                       $taxonomy = 'category';
+               elseif ( 'tags' == $column_name )
+                       $taxonomy = 'post_tag';
+               elseif ( 0 === strpos( $column_name, 'taxonomy-' ) )
+                       $taxonomy = substr( $column_name, 9 );
+               else
+                       $taxonomy = false;
+
+               if ( $taxonomy ) {
+                       $taxonomy_object = get_taxonomy( $taxonomy );
+                       echo '<td ' . $attributes . '>';
+                       if ( $terms = get_the_terms( $post->ID, $taxonomy ) ) {
+                               $out = array();
+                               foreach ( $terms as $t ) {
+                                       $posts_in_term_qv = array();
+                                       $posts_in_term_qv['taxonomy'] = $taxonomy;
+                                       $posts_in_term_qv['term'] = $t->slug;
+
+                                       $out[] = sprintf( '<a href="%s">%s</a>',
+                                               esc_url( add_query_arg( $posts_in_term_qv, 'upload.php' ) ),
+                                               esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) )
+                                       );
+                               }
+                               /* translators: used between list items, there is a space after the comma */
+                               echo join( __( ', ' ), $out );
+                       } else {
+                               echo '&#8212;';
+                       }
+                       echo '</td>';
+                       break;
+               }
 ?>
                <td <?php echo $attributes ?>>
                        <?php do_action( 'manage_media_custom_column', $column_name, $id ); ?>
@@ -359,10 +394,10 @@ foreach ( $columns as $column_name => $column_display_name ) {
                                $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '">' . __( 'Edit' ) . '</a>';
                        if ( current_user_can( 'delete_post', $post->ID ) )
                                if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) {
-                                       $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-attachment_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
+                                       $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-post_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
                                } else {
                                        $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : '';
-                                       $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-attachment_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
+                                       $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
                                }
                        $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $att_title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
                        if ( current_user_can( 'edit_post', $post->ID ) )
@@ -373,12 +408,12 @@ foreach ( $columns as $column_name => $column_display_name ) {
                                $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '">' . __( 'Edit' ) . '</a>';
                        if ( current_user_can( 'delete_post', $post->ID ) ) {
                                if ( $this->is_trash )
-                                       $actions['untrash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$post->ID", 'untrash-attachment_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
+                                       $actions['untrash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$post->ID", 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
                                elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH )
-                                       $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-attachment_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
+                                       $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url( "post.php?action=trash&amp;post=$post->ID", 'trash-post_' . $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
                                if ( $this->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) {
                                        $delete_ays = ( !$this->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : '';
-                                       $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-attachment_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
+                                       $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url( "post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID ) . "'>" . __( 'Delete Permanently' ) . "</a>";
                                }
                        }
                        if ( !$this->is_trash ) {
index 3d72381c7d60024d3e2afa7d8460da25c96a4032..371901a63801a8ad331106a5a0127777f60db8ce 100644 (file)
@@ -9,9 +9,10 @@
  */
 class WP_MS_Sites_List_Table extends WP_List_Table {
 
-       function __construct() {
+       function __construct( $args = array() ) {
                parent::__construct( array(
                        'plural' => 'sites',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
        }
 
@@ -213,6 +214,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                                switch ( $column_name ) {
                                        case 'cb': ?>
                                                <th scope="row" class="check-column">
+                                                       <label class="screen-reader-text" for="blog_<?php echo $blog['blog_id']; ?>"><?php printf( __( 'Select %s' ), $blogname ); ?></label>
                                                        <input type="checkbox" id="blog_<?php echo $blog['blog_id'] ?>" name="allblogs[]" value="<?php echo esc_attr( $blog['blog_id'] ) ?>" />
                                                </th>
                                        <?php
@@ -229,8 +231,11 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                                                echo "<td class='column-$column_name $column_name'$style>"; ?>
                                                        <a href="<?php echo esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ); ?>" class="edit"><?php echo $blogname . $blog_state; ?></a>
                                                        <?php
-                                                       if ( 'list' != $mode )
-                                                               echo '<p>' . sprintf( _x( '%1$s &#8211; <em>%2$s</em>', '%1$s: site name. %2$s: site tagline.' ), get_blog_option( $blog['blog_id'], 'blogname' ), get_blog_option( $blog['blog_id'], 'blogdescription ' ) ) . '</p>';
+                                                       if ( 'list' != $mode ) {
+                                                               switch_to_blog( $blog['blog_id'] );
+                                                               echo '<p>' . sprintf( _x( '%1$s &#8211; <em>%2$s</em>', '%1$s: site name. %2$s: site tagline.' ), get_option( 'blogname' ), get_option( 'blogdescription ' ) ) . '</p>';
+                                                               restore_current_blog();
+                                                       }
 
                                                        // Preordered.
                                                        $actions = array(
@@ -264,7 +269,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                                                                        $actions['delete']      = '<span class="delete"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deleteblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to delete the site %s.' ), $blogname ) ) ), 'confirm') ) . '">' . __( 'Delete' ) . '</a></span>';
                                                        }
 
-                                                       $actions['visit']       = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'] ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
+                                                       $actions['visit']       = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'], '/' ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
 
                                                        $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname );
                                                        echo $this->row_actions( $actions );
index abbf6a025f007bbd5dd4832df8003ca0ad9cb6c7..2461b1d1db35b536cff466a74a9b3fb8e970a743 100644 (file)
@@ -12,24 +12,24 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        var $site_id;
        var $is_site_themes;
 
-       function __construct() {
+       function __construct( $args = array() ) {
                global $status, $page;
 
+               parent::__construct( array(
+                       'plural' => 'themes',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
+               ) );
+
                $status = isset( $_REQUEST['theme_status'] ) ? $_REQUEST['theme_status'] : 'all';
                if ( !in_array( $status, array( 'all', 'enabled', 'disabled', 'upgrade', 'search', 'broken' ) ) )
                        $status = 'all';
 
                $page = $this->get_pagenum();
 
-               $screen = get_current_screen();
-               $this->is_site_themes = ( 'site-themes-network' == $screen->id ) ? true : false;
+               $this->is_site_themes = ( 'site-themes-network' == $this->screen->id ) ? true : false;
 
                if ( $this->is_site_themes )
                        $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
-
-               parent::__construct( array(
-                       'plural' => 'themes'
-               ) );
        }
 
        function get_table_classes() {
@@ -37,16 +37,10 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        }
 
        function ajax_user_can() {
-               $menu_perms = get_site_option( 'menu_items', array() );
-
-               if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
-                       return false;
-
-               if ( $this->is_site_themes && !current_user_can('manage_sites') )
-                       return false;
-               elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') )
-                       return false;
-               return true;
+               if ( $this->is_site_themes )
+                       return current_user_can( 'manage_sites' );
+               else
+                       return current_user_can( 'manage_network_themes' );
        }
 
        function prepare_items() {
@@ -240,23 +234,14 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                if ( 'disabled' != $status )
                        $actions['disable-selected'] = $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' );
                if ( ! $this->is_site_themes ) {
-                       if ( current_user_can( 'delete_themes' ) )
-                               $actions['delete-selected'] = __( 'Delete' );
                        if ( current_user_can( 'update_themes' ) )
                                $actions['update-selected'] = __( 'Update' );
+                       if ( current_user_can( 'delete_themes' ) )
+                               $actions['delete-selected'] = __( 'Delete' );
                }
                return $actions;
        }
 
-       function bulk_actions( $which ) {
-               global $status;
-               parent::bulk_actions( $which );
-       }
-
-       function current_action() {
-               return parent::current_action();
-       }
-
        function display_rows() {
                foreach ( $this->items as $key => $theme )
                        $this->single_row( $key, $theme );
@@ -283,27 +268,28 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                        'delete' => ''
                );
 
-               $theme_key = $theme->get_stylesheet();
+               $stylesheet = $theme->get_stylesheet();
+               $theme_key = urlencode( $stylesheet );
 
                if ( ! $allowed ) {
                        if ( ! $theme->errors() )
-                               $actions['enable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=enable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'enable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Enable this theme') . '" class="edit">' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . '</a>';
+                               $actions['enable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=enable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'enable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__('Enable this theme') . '" class="edit">' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . '</a>';
                } else {
-                       $actions['disable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=disable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'disable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Disable this theme') . '">' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . '</a>';
+                       $actions['disable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=disable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'disable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__('Disable this theme') . '">' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . '</a>';
                }
 
                if ( current_user_can('edit_themes') )
-                       $actions['edit'] = '<a href="' . esc_url('theme-editor.php?theme=' . urlencode( $theme_key ) ) . '" title="' . esc_attr__('Open this theme in the Theme Editor') . '" class="edit">' . __('Edit') . '</a>';
+                       $actions['edit'] = '<a href="' . esc_url('theme-editor.php?theme=' . $theme_key ) . '" title="' . esc_attr__('Open this theme in the Theme Editor') . '" class="edit">' . __('Edit') . '</a>';
 
-               if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) )
+               if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $stylesheet != get_option( 'stylesheet' ) && $stylesheet != get_option( 'template' ) )
                        $actions['delete'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=delete-selected&amp;checked[]=' . $theme_key . '&amp;theme_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-themes' ) ) . '" title="' . esc_attr__( 'Delete this theme' ) . '" class="delete">' . __( 'Delete' ) . '</a>';
 
-               $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context );
-               $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context );
+               $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $stylesheet, $theme, $context );
+               $actions = apply_filters( "theme_action_links_$stylesheet", $actions, $stylesheet, $theme, $context );
 
                $class = ! $allowed ? 'inactive' : 'active';
                $checkbox_id = "checkbox_" . md5( $theme->get('Name') );
-               $checkbox = "<input type='checkbox' name='checked[]' value='" . esc_attr( $theme_key ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $theme->display('Name') . "</label>";
+               $checkbox = "<input type='checkbox' name='checked[]' value='" . esc_attr( $stylesheet ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $theme->display('Name') . "</label>";
 
                $id = sanitize_html_class( $theme->get_stylesheet() );
 
@@ -347,7 +333,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                                        if ( $theme->get('ThemeURI') )
                                                $theme_meta[] = '<a href="' . $theme->display('ThemeURI') . '" title="' . esc_attr__( 'Visit theme homepage' ) . '">' . __( 'Visit Theme Site' ) . '</a>';
 
-                                       $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status );
+                                       $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $stylesheet, $theme, $status );
                                        echo implode( ' | ', $theme_meta );
 
                                        echo "</div></td>";
@@ -355,7 +341,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
 
                                default:
                                        echo "<td class='$column_name column-$column_name'$style>";
-                                       do_action( 'manage_themes_custom_column', $column_name, $theme_key, $theme );
+                                       do_action( 'manage_themes_custom_column', $column_name, $stylesheet, $theme );
                                        echo "</td>";
                        }
                }
@@ -363,8 +349,8 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                echo "</tr>";
 
                if ( $this->is_site_themes )
-                       remove_action( "after_theme_row_$theme_key", 'wp_theme_update_row' );
-               do_action( 'after_theme_row', $theme_key, $theme, $status );
-               do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status );
+                       remove_action( "after_theme_row_$stylesheet", 'wp_theme_update_row' );
+               do_action( 'after_theme_row', $stylesheet, $theme, $status );
+               do_action( "after_theme_row_$stylesheet", $stylesheet, $theme, $status );
        }
 }
index 67564fd65000e65dd76aeeb19273743af0131975..6a4268f6ae80a8fe48a164c2e720a8b2dfbc4f85 100644 (file)
@@ -165,6 +165,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                                switch ( $column_name ) {
                                        case 'cb': ?>
                                                <th scope="row" class="check-column">
+                                                       <label class="screen-reader-text" for="blog_<?php echo $user->ID; ?>"><?php echo sprintf( __( 'Select %s' ), $user->user_login ); ?></label>
                                                        <input type="checkbox" id="blog_<?php echo $user->ID ?>" name="allusers[]" value="<?php echo esc_attr( $user->ID ) ?>" />
                                                </th>
                                        <?php
@@ -172,11 +173,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 
                                        case 'username':
                                                $avatar = get_avatar( $user->user_email, 32 );
-                                               if ( get_current_user_id() == $user->ID ) {
-                                                       $edit_link = esc_url( network_admin_url( 'profile.php' ) );
-                                               } else {
-                                                       $edit_link = esc_url( network_admin_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), 'user-edit.php?user_id=' . $user->ID ) ) );
-                                               }
+                                               $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
 
                                                echo "<td $attributes>"; ?>
                                                        <?php echo $avatar; ?><strong><a href="<?php echo $edit_link; ?>" class="edit"><?php echo stripslashes( $user->user_login ); ?></a><?php
index 3de77c1d802d937c53875adb3bcba32d53458e1d..ca06dbedf9f078890546a4113b5b7d953ac9a4b4 100644 (file)
@@ -29,10 +29,11 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                $tabs['dashboard'] = __( 'Search' );
                if ( 'search' == $tab )
                        $tabs['search'] = __( 'Search Results' );
-               $tabs['upload'] = __( 'Upload' );
-               $tabs['featured'] = _x( 'Featured','Plugin Installer' );
-               $tabs['popular']  = _x( 'Popular','Plugin Installer' );
-               $tabs['new']      = _x( 'Newest','Plugin Installer' );
+               $tabs['upload']    = __( 'Upload' );
+               $tabs['featured']  = _x( 'Featured', 'Plugin Installer' );
+               $tabs['popular']   = _x( 'Popular', 'Plugin Installer' );
+               $tabs['new']       = _x( 'Newest', 'Plugin Installer' );
+               $tabs['favorites'] = _x( 'Favorites', 'Plugin Installer' );
 
                $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item.
 
@@ -71,6 +72,17 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                                $args['browse'] = $tab;
                                break;
 
+                       case 'favorites':
+                               $user = isset( $_GET['user'] ) ? stripslashes( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
+                               update_user_meta( get_current_user_id(), 'wporg_favorites', $user );
+                               if ( $user )
+                                       $args['user'] = $user;
+                               else
+                                       $args = false;
+
+                               add_action( 'install_plugins_favorites', 'install_plugins_favorites_form', 9, 0 );
+                               break;
+
                        default:
                                $args = false;
                }
@@ -115,13 +127,11 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                                        <?php do_action( 'install_plugins_table_header' ); ?>
                                </div>
                                <?php $this->pagination( $which ); ?>
-                               <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading list-ajax-loading" alt="" />
                                <br class="clear" />
                        </div>
                <?php } else { ?>
                        <div class="tablenav bottom">
                                <?php $this->pagination( $which ); ?>
-                               <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading list-ajax-loading" alt="" />
                                <br class="clear" />
                        </div>
                <?php
index 101491ce1c8c1e589b74c92abedc3f21d08e2ab6..a1cbeec681fcfa0dff2fa7b66de391a3034756f4 100644 (file)
@@ -9,9 +9,14 @@
  */
 class WP_Plugins_List_Table extends WP_List_Table {
 
-       function __construct() {
+       function __construct( $args = array() ) {
                global $status, $page;
 
+               parent::__construct( array(
+                       'plural' => 'plugins',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
+               ) );
+
                $status = 'all';
                if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'active', 'inactive', 'recently_activated', 'upgrade', 'mustuse', 'dropins', 'search' ) ) )
                        $status = $_REQUEST['plugin_status'];
@@ -20,10 +25,6 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        $_SERVER['REQUEST_URI'] = add_query_arg('s', stripslashes($_REQUEST['s']) );
 
                $page = $this->get_pagenum();
-
-               parent::__construct( array(
-                       'plural' => 'plugins',
-               ) );
        }
 
        function get_table_classes() {
@@ -31,13 +32,6 @@ class WP_Plugins_List_Table extends WP_List_Table {
        }
 
        function ajax_user_can() {
-               if ( is_multisite() ) {
-                       $menu_perms = get_site_option( 'menu_items', array() );
-
-                       if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() )
-                               return false;
-               }
-
                return current_user_can('activate_plugins');
        }
 
@@ -57,7 +51,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        'dropins' => array()
                );
 
-               $screen = get_current_screen();
+               $screen = $this->screen;
 
                if ( ! is_multisite() || ( $screen->is_network && current_user_can('manage_network_plugins') ) ) {
                        if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) )
@@ -76,14 +70,13 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        }
                }
 
-               set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 );
+               set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), DAY_IN_SECONDS );
 
                if ( ! $screen->is_network ) {
                        $recently_activated = get_option( 'recently_activated', array() );
 
-                       $one_week = 7*24*60*60;
                        foreach ( $recently_activated as $key => $time )
-                               if ( $time + $one_week < time() )
+                               if ( $time + WEEK_IN_SECONDS < time() )
                                        unset( $recently_activated[$key] );
                        update_option( 'recently_activated', $recently_activated );
                }
@@ -98,7 +91,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
                                || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) {
                                $plugins['active'][ $plugin_file ] = $plugin_data;
                        } else {
-                               if ( !$screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated?
+                               if ( ! $screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated?
                                        $plugins['recently_activated'][ $plugin_file ] = $plugin_data;
                                $plugins['inactive'][ $plugin_file ] = $plugin_data;
                        }
@@ -243,15 +236,13 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                $actions = array();
 
-               $screen = get_current_screen();
-
                if ( 'active' != $status )
-                       $actions['activate-selected'] = $screen->is_network ? __( 'Network Activate' ) : __( 'Activate' );
+                       $actions['activate-selected'] = $this->screen->is_network ? __( 'Network Activate' ) : __( 'Activate' );
 
                if ( 'inactive' != $status && 'recent' != $status )
-                       $actions['deactivate-selected'] = $screen->is_network ? __( 'Network Deactivate' ) : __( 'Deactivate' );
+                       $actions['deactivate-selected'] = $this->screen->is_network ? __( 'Network Deactivate' ) : __( 'Deactivate' );
 
-               if ( !is_multisite() || $screen->is_network ) {
+               if ( !is_multisite() || $this->screen->is_network ) {
                        if ( current_user_can( 'update_plugins' ) )
                                $actions['update-selected'] = __( 'Update' );
                        if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) )
@@ -261,13 +252,13 @@ class WP_Plugins_List_Table extends WP_List_Table {
                return $actions;
        }
 
-       function bulk_actions( $which ) {
+       function bulk_actions() {
                global $status;
 
                if ( in_array( $status, array( 'mustuse', 'dropins' ) ) )
                        return;
 
-               parent::bulk_actions( $which );
+               parent::bulk_actions();
        }
 
        function extra_tablenav( $which ) {
@@ -278,10 +269,8 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                echo '<div class="alignleft actions">';
 
-               $screen = get_current_screen();
-
-               if ( ! $screen->is_network && 'recently_activated' == $status )
-                       submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false );
+               if ( ! $this->screen->is_network && 'recently_activated' == $status )
+                       submit_button( __( 'Clear List' ), 'button', 'clear-recent-list', false );
                elseif ( 'top' == $which && 'mustuse' == $status )
                        echo '<p>' . sprintf( __( 'Files in the <code>%s</code> directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '</p>';
                elseif ( 'top' == $which && 'dropins' == $status )
@@ -300,21 +289,19 @@ class WP_Plugins_List_Table extends WP_List_Table {
        function display_rows() {
                global $status;
 
-               $screen = get_current_screen();
-
-               if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) )
+               if ( is_multisite() && ! $this->screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) )
                        return;
 
                foreach ( $this->items as $plugin_file => $plugin_data )
-                       $this->single_row( $plugin_file, $plugin_data );
+                       $this->single_row( array( $plugin_file, $plugin_data ) );
        }
 
-       function single_row( $plugin_file, $plugin_data ) {
+       function single_row( $item ) {
                global $status, $page, $s, $totals;
 
+               list( $plugin_file, $plugin_data ) = $item;
                $context = $status;
-
-               $screen = get_current_screen();
+               $screen = $this->screen;
 
                // preorder
                $actions = array(
@@ -380,7 +367,12 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                $class = $is_active ? 'active' : 'inactive';
                $checkbox_id =  "checkbox_" . md5($plugin_data['Name']);
-               $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $plugin_data['Name'] . "</label>";
+               if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) {
+                       $checkbox = '';
+               } else {
+                       $checkbox = "<label class='screen-reader-text' for='" . $checkbox_id . "' >" . sprintf( __( 'Select %s' ), $plugin_data['Name'] ) . "</label>"
+                               . "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' />";
+               }
                if ( 'dropins' != $context ) {
                        $description = '<p>' . ( $plugin_data['Description'] ? $plugin_data['Description'] : '&nbsp;' ) . '</p>';
                        $plugin_name = $plugin_data['Name'];
index 613cff8236016fcd1c00c579356a3962e271e3dc..c772fa63c977a9c7d9866011c50193323e7802ef 100644 (file)
@@ -45,10 +45,15 @@ class WP_Posts_List_Table extends WP_List_Table {
         */
        var $sticky_posts_count = 0;
 
-       function __construct() {
+       function __construct( $args = array() ) {
                global $post_type_object, $wpdb;
 
-               $post_type = get_current_screen()->post_type;
+               parent::__construct( array(
+                       'plural' => 'posts',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
+               ) );
+
+               $post_type = $this->screen->post_type;
                $post_type_object = get_post_type_object( $post_type );
 
                if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) {
@@ -66,28 +71,22 @@ class WP_Posts_List_Table extends WP_List_Table {
                        $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) );
                        $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status != 'trash' AND ID IN ($sticky_posts)", $post_type ) );
                }
-
-               parent::__construct( array(
-                       'plural' => 'posts',
-               ) );
        }
 
        function ajax_user_can() {
-               global $post_type_object;
-
-               return current_user_can( $post_type_object->cap->edit_posts );
+               return current_user_can( get_post_type_object( $this->screen->post_type )->cap->edit_posts );
        }
 
        function prepare_items() {
-               global $post_type_object, $avail_post_stati, $wp_query, $per_page, $mode;
+               global $avail_post_stati, $wp_query, $per_page, $mode;
 
                $avail_post_stati = wp_edit_posts_query();
 
-               $this->hierarchical_display = ( $post_type_object->hierarchical && 'menu_order title' == $wp_query->query['orderby'] );
+               $this->hierarchical_display = ( is_post_type_hierarchical( $this->screen->post_type ) && 'menu_order title' == $wp_query->query['orderby'] );
 
                $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts;
 
-               $post_type = $post_type_object->name;
+               $post_type = $this->screen->post_type;
                $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' );
                $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type );
 
@@ -112,18 +111,16 @@ class WP_Posts_List_Table extends WP_List_Table {
        }
 
        function no_items() {
-               global $post_type_object;
-
                if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] )
-                       echo $post_type_object->labels->not_found_in_trash;
+                       echo get_post_type_object( $this->screen->post_type )->labels->not_found_in_trash;
                else
-                       echo $post_type_object->labels->not_found;
+                       echo get_post_type_object( $this->screen->post_type )->labels->not_found;
        }
 
        function get_views() {
-               global $post_type_object, $locked_post_status, $avail_post_stati;
+               global $locked_post_status, $avail_post_stati;
 
-               $post_type = $post_type_object->name;
+               $post_type = $this->screen->post_type;
 
                if ( !empty($locked_post_status) )
                        return array();
@@ -198,15 +195,15 @@ class WP_Posts_List_Table extends WP_List_Table {
        }
 
        function extra_tablenav( $which ) {
-               global $post_type_object, $cat;
+               global $cat;
 ?>
                <div class="alignleft actions">
 <?php
                if ( 'top' == $which && !is_singular() ) {
 
-                       $this->months_dropdown( $post_type_object->name );
+                       $this->months_dropdown( $this->screen->post_type );
 
-                       if ( is_object_in_taxonomy( $post_type_object->name, 'category' ) ) {
+                       if ( is_object_in_taxonomy( $this->screen->post_type, 'category' ) ) {
                                $dropdown_options = array(
                                        'show_option_all' => __( 'View all categories' ),
                                        'hide_empty' => 0,
@@ -218,11 +215,11 @@ class WP_Posts_List_Table extends WP_List_Table {
                                wp_dropdown_categories( $dropdown_options );
                        }
                        do_action( 'restrict_manage_posts' );
-                       submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );
+                       submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
                }
 
-               if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) {
-                       submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false );
+               if ( $this->is_trash && current_user_can( get_post_type_object( $this->screen->post_type )->cap->edit_others_posts ) ) {
+                       submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false );
                }
 ?>
                </div>
@@ -237,27 +234,20 @@ class WP_Posts_List_Table extends WP_List_Table {
        }
 
        function pagination( $which ) {
-               global $post_type_object, $mode;
+               global $mode;
 
                parent::pagination( $which );
 
-               if ( 'top' == $which && !$post_type_object->hierarchical )
+               if ( 'top' == $which && ! is_post_type_hierarchical( $this->screen->post_type ) )
                        $this->view_switcher( $mode );
        }
 
        function get_table_classes() {
-               global $post_type_object;
-
-               return array( 'widefat', 'fixed', $post_type_object->hierarchical ? 'pages' : 'posts' );
+               return array( 'widefat', 'fixed', is_post_type_hierarchical( $this->screen->post_type ) ? 'pages' : 'posts' );
        }
 
        function get_columns() {
-               $screen = get_current_screen();
-
-               if ( empty( $screen ) )
-                       $post_type = 'post';
-               else
-                       $post_type = $screen->post_type;
+               $post_type = $this->screen->post_type;
 
                $posts_columns = array();
 
@@ -269,15 +259,28 @@ class WP_Posts_List_Table extends WP_List_Table {
                if ( post_type_supports( $post_type, 'author' ) )
                        $posts_columns['author'] = __( 'Author' );
 
-               if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'category' ) )
-                       $posts_columns['categories'] = __( 'Categories' );
+               $taxonomies = array();
+
+               $taxonomies = get_object_taxonomies( $post_type, 'objects' );
+               $taxonomies = wp_filter_object_list( $taxonomies, array( 'show_admin_column' => true ), 'and', 'name' );
+
+               $taxonomies = apply_filters( "manage_taxonomies_for_{$post_type}_columns", $taxonomies, $post_type );
+               $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' );
+
+               foreach ( $taxonomies as $taxonomy ) {
+                       if ( 'category' == $taxonomy )
+                               $column_key = 'categories';
+                       elseif ( 'post_tag' == $taxonomy )
+                               $column_key = 'tags';
+                       else
+                               $column_key = 'taxonomy-' . $taxonomy;
 
-               if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'post_tag' ) )
-                       $posts_columns['tags'] = __( 'Tags' );
+                       $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name;
+               }
 
                $post_status = !empty( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : 'all';
                if ( post_type_supports( $post_type, 'comments' ) && !in_array( $post_status, array( 'pending', 'draft', 'future' ) ) )
-                       $posts_columns['comments'] = '<span class="vers"><img alt="' . esc_attr__( 'Comments' ) . '" src="' . esc_url( admin_url( 'images/comment-grey-bubble.png' ) ) . '" /></span>';
+                       $posts_columns['comments'] = '<span class="vers"><div title="' . esc_attr__( 'Comments' ) . '" class="comment-grey-bubble"></div></span>';
 
                $posts_columns['date'] = __( 'Date' );
 
@@ -293,15 +296,14 @@ class WP_Posts_List_Table extends WP_List_Table {
        function get_sortable_columns() {
                return array(
                        'title'    => 'title',
-                       'author'   => 'author',
                        'parent'   => 'parent',
                        'comments' => 'comment_count',
                        'date'     => array( 'date', true )
                );
        }
 
-       function display_rows( $posts = array() ) {
-               global $wp_query, $post_type_object, $per_page;
+       function display_rows( $posts = array(), $level = 0 ) {
+               global $wp_query, $per_page;
 
                if ( empty( $posts ) )
                        $posts = $wp_query->posts;
@@ -311,12 +313,12 @@ class WP_Posts_List_Table extends WP_List_Table {
                if ( $this->hierarchical_display ) {
                        $this->_display_rows_hierarchical( $posts, $this->get_pagenum(), $per_page );
                } else {
-                       $this->_display_rows( $posts );
+                       $this->_display_rows( $posts, $level );
                }
        }
 
-       function _display_rows( $posts ) {
-               global $post, $mode;
+       function _display_rows( $posts, $level = 0 ) {
+               global $mode;
 
                // Create array of post IDs.
                $post_ids = array();
@@ -327,7 +329,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                $this->comment_pending_count = get_pending_comments_num( $post_ids );
 
                foreach ( $posts as $post )
-                       $this->single_row( $post );
+                       $this->single_row( $post, $level );
        }
 
        function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) {
@@ -458,12 +460,12 @@ class WP_Posts_List_Table extends WP_List_Table {
                unset( $children_pages[$parent] ); //required in order to keep track of orphans
        }
 
-       function single_row( $a_post, $level = 0 ) {
-               global $post, $mode;
+       function single_row( $post, $level = 0 ) {
+               global $mode;
                static $alternate;
 
-               $global_post = $post;
-               $post = $a_post;
+               $global_post = get_post();
+               $GLOBALS['post'] = $post;
                setup_postdata( $post );
 
                $edit_link = get_edit_post_link( $post->ID );
@@ -492,7 +494,12 @@ class WP_Posts_List_Table extends WP_List_Table {
 
                        case 'cb':
                        ?>
-                       <th scope="row" class="check-column"><?php if ( $can_edit_post ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
+                       <th scope="row" class="check-column">
+                               <?php if ( $can_edit_post ) { ?>
+                               <label class="screen-reader-text" for="cb-select-<?php the_ID(); ?>"><?php printf( __( 'Select %s' ), $title ); ?></label>
+                               <input id="cb-select-<?php the_ID(); ?>" type="checkbox" name="post[]" value="<?php the_ID(); ?>" />
+                               <?php } ?>
+                       </th>
                        <?php
                        break;
 
@@ -504,7 +511,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                                //sent level 0 by accident, by default, or because we don't know the actual level
                                                $find_main_page = (int) $post->post_parent;
                                                while ( $find_main_page > 0 ) {
-                                                       $parent = get_page( $find_main_page );
+                                                       $parent = get_post( $find_main_page );
 
                                                        if ( is_null( $parent ) )
                                                                break;
@@ -524,8 +531,10 @@ class WP_Posts_List_Table extends WP_List_Table {
                                }
                                else {
                                        $attributes = 'class="post-title page-title column-title"' . $style;
+
+                                       $pad = str_repeat( '&#8212; ', $level );
 ?>
-                       <td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $title ?></a><?php } else { echo $title; }; _post_states( $post ); ?></strong>
+                       <td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states( $post ); ?></strong>
 <?php
                                        if ( 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
                                                the_excerpt();
@@ -538,7 +547,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                }
                                if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) {
                                        if ( 'trash' == $post->post_status )
-                                               $actions['untrash'] = "<a title='" . esc_attr( __( 'Restore this item from the Trash' ) ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
+                                               $actions['untrash'] = "<a title='" . esc_attr( __( 'Restore this item from the Trash' ) ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
                                        elseif ( EMPTY_TRASH_DAYS )
                                                $actions['trash'] = "<a class='submitdelete' title='" . esc_attr( __( 'Move this item to the Trash' ) ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
                                        if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
@@ -561,7 +570,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                        break;
 
                        case 'date':
-                               if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
+                               if ( '0000-00-00 00:00:00' == $post->post_date ) {
                                        $t_time = $h_time = __( 'Unpublished' );
                                        $time_diff = 0;
                                } else {
@@ -571,7 +580,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 
                                        $time_diff = time() - $time;
 
-                                       if ( $time_diff > 0 && $time_diff < 24*60*60 )
+                                       if ( $time_diff > 0 && $time_diff < DAY_IN_SECONDS )
                                                $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) );
                                        else
                                                $h_time = mysql2date( __( 'Y/m/d' ), $m_time );
@@ -596,48 +605,6 @@ class WP_Posts_List_Table extends WP_List_Table {
                                echo '</td>';
                        break;
 
-                       case 'categories':
-                       ?>
-                       <td <?php echo $attributes ?>><?php
-                               $categories = get_the_category();
-                               if ( !empty( $categories ) ) {
-                                       $out = array();
-                                       foreach ( $categories as $c ) {
-                                               $out[] = sprintf( '<a href="%s">%s</a>',
-                                                       esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'category_name' => $c->slug ), 'edit.php' ) ),
-                                                       esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) )
-                                               );
-                                       }
-                                       /* translators: used between list items, there is a space after the comma */
-                                       echo join( __( ', ' ), $out );
-                               } else {
-                                       _e( 'Uncategorized' );
-                               }
-                       ?></td>
-                       <?php
-                       break;
-
-                       case 'tags':
-                       ?>
-                       <td <?php echo $attributes ?>><?php
-                               $tags = get_the_tags( $post->ID );
-                               if ( !empty( $tags ) ) {
-                                       $out = array();
-                                       foreach ( $tags as $c ) {
-                                               $out[] = sprintf( '<a href="%s">%s</a>',
-                                                       esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'tag' => $c->slug ), 'edit.php' ) ),
-                                                       esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) )
-                                               );
-                                       }
-                                       /* translators: used between list items, there is a space after the comma */
-                                       echo join( __( ', ' ), $out );
-                               } else {
-                                       _e( 'No Tags' );
-                               }
-                       ?></td>
-                       <?php
-                       break;
-
                        case 'comments':
                        ?>
                        <td <?php echo $attributes ?>><div class="post-com-count-wrapper">
@@ -662,6 +629,44 @@ class WP_Posts_List_Table extends WP_List_Table {
                        break;
 
                        default:
+                               if ( 'categories' == $column_name )
+                                       $taxonomy = 'category';
+                               elseif ( 'tags' == $column_name )
+                                       $taxonomy = 'post_tag';
+                               elseif ( 0 === strpos( $column_name, 'taxonomy-' ) )
+                                       $taxonomy = substr( $column_name, 9 );
+                               else
+                                       $taxonomy = false;
+
+                               if ( $taxonomy ) {
+                                       $taxonomy_object = get_taxonomy( $taxonomy );
+                                       echo '<td ' . $attributes . '>';
+                                       if ( $terms = get_the_terms( $post->ID, $taxonomy ) ) {
+                                               $out = array();
+                                               foreach ( $terms as $t ) {
+                                                       $posts_in_term_qv = array();
+                                                       if ( 'post' != $post->post_type )
+                                                               $posts_in_term_qv['post_type'] = $post->post_type;
+                                                       if ( $taxonomy_object->query_var ) {
+                                                               $posts_in_term_qv[ $taxonomy_object->query_var ] = $t->slug;
+                                                       } else {
+                                                               $posts_in_term_qv['taxonomy'] = $taxonomy;
+                                                               $posts_in_term_qv['term'] = $t->slug;
+                                                       }
+
+                                                       $out[] = sprintf( '<a href="%s">%s</a>',
+                                                               esc_url( add_query_arg( $posts_in_term_qv, 'edit.php' ) ),
+                                                               esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) )
+                                                       );
+                                               }
+                                               /* translators: used between list items, there is a space after the comma */
+                                               echo join( __( ', ' ), $out );
+                                       } else {
+                                               echo '&#8212;';
+                                       }
+                                       echo '</td>';
+                                       break;
+                               }
                        ?>
                        <td <?php echo $attributes ?>><?php
                                if ( is_post_type_hierarchical( $post->post_type ) )
@@ -672,12 +677,12 @@ class WP_Posts_List_Table extends WP_List_Table {
                        ?></td>
                        <?php
                        break;
+                       }
                }
-       }
        ?>
                </tr>
        <?php
-               $post = $global_post;
+               $GLOBALS['post'] = $global_post;
        }
 
        /**
@@ -688,7 +693,7 @@ class WP_Posts_List_Table extends WP_List_Table {
        function inline_edit() {
                global $mode;
 
-               $screen = get_current_screen();
+               $screen = $this->screen;
 
                $post = get_default_post_to_edit( $screen->post_type );
                $post_type_object = get_post_type_object( $screen->post_type );
@@ -720,8 +725,8 @@ class WP_Posts_List_Table extends WP_List_Table {
                $bulk = 0;
                while ( $bulk < 2 ) { ?>
 
-               <tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-$screen->post_type ";
-                       echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type";
+               <tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-" . $screen->post_type;
+                       echo $bulk ? " bulk-edit-row bulk-edit-row-$hclass bulk-edit-{$screen->post_type}" : " quick-edit-row quick-edit-row-$hclass inline-edit-{$screen->post_type}";
                ?>" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
 
                <fieldset class="inline-edit-col-left"><div class="inline-edit-col">
@@ -752,7 +757,7 @@ class WP_Posts_List_Table extends WP_List_Table {
        <?php if ( !$bulk ) : ?>
                        <label><span class="title"><?php _e( 'Date' ); ?></span></label>
                        <div class="inline-edit-date">
-                               <?php touch_time( 1, 1, 4, 1 ); ?>
+                               <?php touch_time( 1, 1, 0, 1 ); ?>
                        </div>
                        <br class="clear" />
        <?php endif; // $bulk
@@ -1036,7 +1041,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                $update_text = __( 'Update' );
                                ?>
                                <a accesskey="s" href="#inline-edit" title="<?php esc_attr_e( 'Update' ); ?>" class="button-primary save alignright"><?php echo esc_attr( $update_text ); ?></a>
-                               <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+                               <span class="spinner"></span>
                        <?php } else {
                                submit_button( __( 'Update' ), 'button-primary alignright', 'bulk_edit', false, array( 'accesskey' => 's' ) );
                        } ?>
index b398a55c014a95f051ec514aa09a48c9107fd009..85010105cdcc83e256927b7e178997b5d03ced35 100644 (file)
@@ -11,43 +11,44 @@ class WP_Terms_List_Table extends WP_List_Table {
 
        var $callback_args;
 
-       function __construct() {
-               global $post_type, $taxonomy, $tax;
+       function __construct( $args = array() ) {
+               global $post_type, $taxonomy, $action, $tax;
 
-               wp_reset_vars( array( 'action', 'taxonomy', 'post_type' ) );
+               parent::__construct( array(
+                       'plural' => 'tags',
+                       'singular' => 'tag',
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
+               ) );
+
+               $action    = $this->screen->action;
+               $post_type = $this->screen->post_type;
+               $taxonomy  = $this->screen->taxonomy;
 
                if ( empty( $taxonomy ) )
                        $taxonomy = 'post_tag';
 
-               if ( !taxonomy_exists( $taxonomy ) )
+               if ( ! taxonomy_exists( $taxonomy ) )
                        wp_die( __( 'Invalid taxonomy' ) );
 
                $tax = get_taxonomy( $taxonomy );
 
+               // @todo Still needed? Maybe just the show_ui part.
                if ( empty( $post_type ) || !in_array( $post_type, get_post_types( array( 'show_ui' => true ) ) ) )
                        $post_type = 'post';
 
-               parent::__construct( array(
-                       'plural' => 'tags',
-                       'singular' => 'tag',
-               ) );
        }
 
        function ajax_user_can() {
-               global $tax;
-
-               return current_user_can( $tax->cap->manage_terms );
+               return current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->manage_terms );
        }
 
        function prepare_items() {
-               global $taxonomy;
+               $tags_per_page = $this->get_items_per_page( 'edit_' . $this->screen->taxonomy . '_per_page' );
 
-               $tags_per_page = $this->get_items_per_page( 'edit_' . $taxonomy . '_per_page' );
-
-               if ( 'post_tag' == $taxonomy ) {
+               if ( 'post_tag' == $this->screen->taxonomy ) {
                        $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page );
                        $tags_per_page = apply_filters( 'tagsperpage', $tags_per_page ); // Old filter
-               } elseif ( 'category' == $taxonomy ) {
+               } elseif ( 'category' == $this->screen->taxonomy ) {
                        $tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter
                }
 
@@ -68,7 +69,7 @@ class WP_Terms_List_Table extends WP_List_Table {
                $this->callback_args = $args;
 
                $this->set_pagination_args( array(
-                       'total_items' => wp_count_terms( $taxonomy, compact( 'search' ) ),
+                       'total_items' => wp_count_terms( $this->screen->taxonomy, compact( 'search' ) ),
                        'per_page' => $tags_per_page,
                ) );
        }
@@ -93,8 +94,6 @@ class WP_Terms_List_Table extends WP_List_Table {
        }
 
        function get_columns() {
-               global $taxonomy, $post_type;
-
                $columns = array(
                        'cb'          => '<input type="checkbox" />',
                        'name'        => _x( 'Name', 'term name' ),
@@ -102,10 +101,10 @@ class WP_Terms_List_Table extends WP_List_Table {
                        'slug'        => __( 'Slug' ),
                );
 
-               if ( 'link_category' == $taxonomy ) {
+               if ( 'link_category' == $this->screen->taxonomy ) {
                        $columns['links'] = __( 'Links' );
                } else {
-                       $post_type_object = get_post_type_object( $post_type );
+                       $post_type_object = get_post_type_object( $this->screen->post_type );
                        $columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' );
                }
 
@@ -123,7 +122,7 @@ class WP_Terms_List_Table extends WP_List_Table {
        }
 
        function display_rows_or_placeholder() {
-               global $taxonomy;
+               $taxonomy = $this->screen->taxonomy;
 
                $args = wp_parse_args( $this->callback_args, array(
                        'page' => 1,
@@ -231,25 +230,25 @@ class WP_Terms_List_Table extends WP_List_Table {
        }
 
        function column_cb( $tag ) {
-               global $taxonomy, $tax;
+               $default_term = get_option( 'default_' . $this->screen->taxonomy );
 
-               $default_term = get_option( 'default_' . $taxonomy );
+               if ( current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->delete_terms ) && $tag->term_id != $default_term )
+                       return '<label class="screen-reader-text" for="cb-select-' . $tag->term_id . '">' . sprintf( __( 'Select %s' ), $tag->name ) . '</label>'
+                               . '<input type="checkbox" name="delete_tags[]" value="' . $tag->term_id . '" id="cb-select-' . $tag->term_id . '" />';
 
-               if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term )
-                       return '<input type="checkbox" name="delete_tags[]" value="' . $tag->term_id . '" />';
-               else
-                       return '&nbsp;';
+               return '&nbsp;';
        }
 
        function column_name( $tag ) {
-               global $taxonomy, $tax, $post_type;
+               $taxonomy = $this->screen->taxonomy;
+               $tax = get_taxonomy( $taxonomy );
 
                $default_term = get_option( 'default_' . $taxonomy );
 
                $pad = str_repeat( '&#8212; ', max( 0, $this->level ) );
                $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag );
                $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' );
-               $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $post_type ) );
+               $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
 
                $out = '<strong><a class="row-title" href="' . $edit_link . '" title="' . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $name ) ) . '">' . $name . '</a></strong><br />';
 
@@ -283,13 +282,11 @@ class WP_Terms_List_Table extends WP_List_Table {
        }
 
        function column_posts( $tag ) {
-               global $taxonomy, $post_type;
-
                $count = number_format_i18n( $tag->count );
 
-               $tax = get_taxonomy( $taxonomy );
+               $tax = get_taxonomy( $this->screen->taxonomy );
 
-               $ptype_object = get_post_type_object( $post_type );
+               $ptype_object = get_post_type_object( $this->screen->post_type );
                if ( ! $ptype_object->show_ui )
                        return $count;
 
@@ -299,8 +296,11 @@ class WP_Terms_List_Table extends WP_List_Table {
                        $args = array( 'taxonomy' => $tax->name, 'term' => $tag->slug );
                }
 
-               if ( 'post' != $post_type )
-                       $args['post_type'] = $post_type;
+               if ( 'post' != $this->screen->post_type )
+                       $args['post_type'] = $this->screen->post_type;
+
+               if ( 'attachment' == $this->screen->post_type )
+                       return "<a href='" . esc_url ( add_query_arg( $args, 'upload.php' ) ) . "'>$count</a>";
 
                return "<a href='" . esc_url ( add_query_arg( $args, 'edit.php' ) ) . "'>$count</a>";
        }
@@ -313,9 +313,7 @@ class WP_Terms_List_Table extends WP_List_Table {
        }
 
        function column_default( $tag, $column_name ) {
-               $screen = get_current_screen();
-
-               return apply_filters( "manage_{$screen->taxonomy}_custom_column", '', $column_name, $tag->term_id );
+               return apply_filters( "manage_{$this->screen->taxonomy}_custom_column", '', $column_name, $tag->term_id );
        }
 
        /**
@@ -324,7 +322,7 @@ class WP_Terms_List_Table extends WP_List_Table {
         * @since 3.1.0
         */
        function inline_edit() {
-               global $post_type, $tax;
+               $tax = get_taxonomy( $this->screen->taxonomy );
 
                if ( ! current_user_can( $tax->cap->edit_terms ) )
                        return;
@@ -357,7 +355,7 @@ class WP_Terms_List_Table extends WP_List_Table {
                        if ( isset( $core_columns[$column_name] ) )
                                continue;
 
-                       do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $tax->name );
+                       do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $this->screen->taxonomy );
                }
 
        ?>
@@ -366,11 +364,11 @@ class WP_Terms_List_Table extends WP_List_Table {
                        <a accesskey="c" href="#inline-edit" title="<?php esc_attr_e( 'Cancel' ); ?>" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
                        <?php $update_text = $tax->labels->update_item; ?>
                        <a accesskey="s" href="#inline-edit" title="<?php echo esc_attr( $update_text ); ?>" class="save button-primary alignright"><?php echo $update_text; ?></a>
-                       <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+                       <span class="spinner"></span>
                        <span class="error" style="display:none;"></span>
                        <?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
-                       <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $tax->name ); ?>" />
-                       <input type="hidden" name="post_type" value="<?php echo esc_attr( $post_type ); ?>" />
+                       <input type="hidden" name="taxonomy" value="<?php echo esc_attr( $this->screen->taxonomy ); ?>" />
+                       <input type="hidden" name="post_type" value="<?php echo esc_attr( $this->screen->post_type ); ?>" />
                        <br class="clear" />
                </p>
                </td></tr>
index 47175243585e68a1e2df3bf737d50f7cf62b6490..319a9989f12d1142153f4cb9c0fbc3ad8ce06877 100644 (file)
@@ -134,7 +134,6 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
                                <?php do_action( 'install_themes_table_header' ); ?>
                        </div>
                        <?php $this->pagination( 'top' ); ?>
-                       <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading list-ajax-loading" alt="" />
                        <br class="clear" />
                </div>
 
@@ -237,7 +236,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
                                <?php foreach ( $actions as $action ): ?>
                                        <li><?php echo $action; ?></li>
                                <?php endforeach; ?>
-                               <li class="hide-if-no-js"><a href="#" class="theme-detail" tabindex='4'><?php _e('Details') ?></a></li>
+                               <li class="hide-if-no-js"><a href="#" class="theme-detail"><?php _e('Details') ?></a></li>
                        </ul>
                </div>
 
index f6ca8a5799e2f49a11a4c96680f246ef55f1a850..420495efe3fa5e7f3057ec66ec2c0c222cacc9cc 100644 (file)
@@ -12,9 +12,10 @@ class WP_Themes_List_Table extends WP_List_Table {
        protected $search_terms = array();
        var $features = array();
 
-       function __construct() {
+       function __construct( $args = array() ) {
                parent::__construct( array(
                        'ajax' => true,
+                       'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
        }
 
@@ -42,7 +43,7 @@ class WP_Themes_List_Table extends WP_List_Table {
                unset( $themes[ get_option( 'stylesheet' ) ] );
                WP_Theme::sort_by_name( $themes );
 
-               $per_page = 999;
+               $per_page = 36;
                $page = $this->get_pagenum();
 
                $start = ( $page - 1 ) * $per_page;
@@ -90,8 +91,8 @@ class WP_Themes_List_Table extends WP_List_Table {
                ?>
                <div class="tablenav themes <?php echo $which; ?>">
                        <?php $this->pagination( $which ); ?>
-                  <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading list-ajax-loading" alt="" />
-                 <br class="clear" />
+                       <span class="spinner"></span>
+                       <br class="clear" />
                </div>
                <?php
        }
@@ -143,7 +144,7 @@ class WP_Themes_List_Table extends WP_List_Table {
                                        . __( 'Live Preview' ) . '</a>';
 
                        if ( ! is_multisite() && current_user_can( 'delete_themes' ) )
-                               $actions['delete'] = '<a class="submitdelete deletion" href="' . wp_nonce_url( "themes.php?action=delete&amp;stylesheet=$stylesheet", 'delete-theme_' . $stylesheet )
+                               $actions['delete'] = '<a class="submitdelete deletion" href="' . wp_nonce_url( 'themes.php?action=delete&amp;stylesheet=' . urlencode( $stylesheet ), 'delete-theme_' . $stylesheet )
                                        . '" onclick="' . "return confirm( '" . esc_js( sprintf( __( "You are about to delete this theme '%s'\n  'Cancel' to stop, 'OK' to delete." ), $title ) )
                                        . "' );" . '">' . __( 'Delete' ) . '</a>';
 
@@ -171,7 +172,7 @@ class WP_Themes_List_Table extends WP_List_Table {
                                        <?php foreach ( $actions as $action ): ?>
                                                <li><?php echo $action; ?></li>
                                        <?php endforeach; ?>
-                                       <li class="hide-if-no-js"><a href="#" class="theme-detail" tabindex='4'><?php _e('Details') ?></a></li>
+                                       <li class="hide-if-no-js"><a href="#" class="theme-detail"><?php _e('Details') ?></a></li>
                                </ul>
                                <?php echo $delete_action; ?>
 
@@ -181,15 +182,11 @@ class WP_Themes_List_Table extends WP_List_Table {
                        <div class="themedetaildiv hide-if-js">
                                <p><strong><?php _e('Version: '); ?></strong><?php echo $version; ?></p>
                                <p><?php echo $theme->display('Description'); ?></p>
-                               <?php if ( current_user_can( 'edit_themes' ) && $theme->parent() ) :
-                                       /* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme */ ?>
-                                       <p><?php printf( __( 'The template files are located in <code>%2$s</code>. The stylesheet files are located in <code>%3$s</code>. <strong>%4$s</strong> uses templates from <strong>%5$s</strong>. Changes made to the templates will affect both themes.' ),
-                                               $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ), $title, $theme->parent()->display('Name') ); ?></p>
-                               <?php else :
-                                               /* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir */ ?>
-                                       <p><?php printf( __( 'All of this theme&#8217;s files are located in <code>%2$s</code>.' ),
-                                               $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ) ); ?></p>
-                               <?php endif; ?>
+                               <?php if ( $theme->parent() ) {
+                                       printf( ' <p class="howto">' . __( 'This <a href="%1$s">child theme</a> requires its parent theme, %2$s.' ) . '</p>',
+                                               __( 'http://codex.wordpress.org/Child_Themes' ),
+                                               $theme->parent()->display( 'Name' ) );
+                               } ?>
                        </div>
 
                        </div>
index 846cbe5f335eb2d5ef14fca8a0309037ff86a36b..ef8fb5f884f8fc14158f95dfad926d9b0f0efc5d 100644 (file)
@@ -496,11 +496,11 @@ class Plugin_Upgrader extends WP_Upgrader {
                        $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true);
 
                        if ( !isset( $current->response[ $plugin ] ) ) {
-                               $this->skin->set_result(false);
+                               $this->skin->set_result(true);
                                $this->skin->before();
-                               $this->skin->error('up_to_date');
+                               $this->skin->feedback('up_to_date');
                                $this->skin->after();
-                               $results[$plugin] = false;
+                               $results[$plugin] = true;
                                continue;
                        }
 
@@ -763,10 +763,7 @@ class Theme_Upgrader extends WP_Upgrader {
                        return $this->result;
 
                // Force refresh of theme update information
-               delete_site_transient('update_themes');
-               search_theme_directories( true );
-               foreach ( wp_get_themes() as $theme )
-                       $theme->cache_delete();
+               wp_clean_themes_cache();
 
                return true;
        }
@@ -812,10 +809,7 @@ class Theme_Upgrader extends WP_Upgrader {
                        return $this->result;
 
                // Force refresh of theme update information
-               delete_site_transient('update_themes');
-               search_theme_directories( true );
-               foreach ( wp_get_themes() as $theme )
-                       $theme->cache_delete();
+               wp_clean_themes_cache();
 
                return true;
        }
@@ -857,17 +851,17 @@ class Theme_Upgrader extends WP_Upgrader {
                foreach ( $themes as $theme ) {
                        $this->update_current++;
 
+                       $this->skin->theme_info = $this->theme_info($theme);
+
                        if ( !isset( $current->response[ $theme ] ) ) {
-                               $this->skin->set_result(false);
+                               $this->skin->set_result(true);
                                $this->skin->before();
-                               $this->skin->error('up_to_date');
+                               $this->skin->feedback('up_to_date');
                                $this->skin->after();
-                               $results[$theme] = false;
+                               $results[$theme] = true;
                                continue;
                        }
 
-                       $this->skin->theme_info = $this->theme_info($theme);
-
                        // Get the URL to the zip file
                        $r = $current->response[ $theme ];
 
@@ -902,10 +896,7 @@ class Theme_Upgrader extends WP_Upgrader {
                remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4);
 
                // Force refresh of theme update information
-               delete_site_transient('update_themes');
-               search_theme_directories( true );
-               foreach ( wp_get_themes() as $theme )
-                       $theme->cache_delete();
+               wp_clean_themes_cache();
 
                return $results;
        }
@@ -962,13 +953,11 @@ class Theme_Upgrader extends WP_Upgrader {
                if ( $theme != get_stylesheet() ) // If not current
                        return $return;
 
-               // Ensure stylesheet name hasnt changed after the upgrade:
-               // @TODO: Note, This doesn't handle the Template changing, or the Template name changing.
+               // Ensure stylesheet name hasn't changed after the upgrade:
                if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) {
-                       $theme_info = $this->theme_info();
+                       wp_clean_themes_cache();
                        $stylesheet = $this->result['destination_name'];
-                       $template = $theme_info->get_template();
-                       switch_theme($template, $stylesheet, true);
+                       switch_theme( $stylesheet );
                }
 
                //Time to remove maintenance mode
@@ -1206,9 +1195,7 @@ class Plugin_Upgrader_Skin extends WP_Upgrader_Skin {
                        'activate_plugin' => '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin') . '</a>',
                        'plugins_page' => '<a href="' . self_admin_url('plugins.php') . '" title="' . esc_attr__('Go to plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>'
                );
-               if ( $this->plugin_active )
-                       unset( $update_actions['activate_plugin'] );
-               if ( ! $this->result || is_wp_error($this->result) )
+               if ( $this->plugin_active || ! $this->result || is_wp_error( $this->result ) || ! current_user_can( 'activate_plugins' ) )
                        unset( $update_actions['activate_plugin'] );
 
                $update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin);
@@ -1301,8 +1288,8 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
 
        function before($title = '') {
                $this->in_loop = true;
-               printf( '<h4>' . $this->upgrader->strings['skin_before_update_header'] . ' <img alt="" src="' . admin_url( 'images/wpspin_light.gif' ) . '" class="hidden waiting-' . $this->upgrader->update_current . '" style="vertical-align:middle;" /></h4>',  $title, $this->upgrader->update_current, $this->upgrader->update_count);
-               echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').show();</script>';
+               printf( '<h4>' . $this->upgrader->strings['skin_before_update_header'] . ' <span class="spinner waiting-' . $this->upgrader->update_current . '"></span></h4>',  $title, $this->upgrader->update_current, $this->upgrader->update_count);
+               echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').css("display", "inline-block");</script>';
                echo '<div class="update-messages hide-if-js" id="progress-' . esc_attr($this->upgrader->update_current) . '"><p>';
                $this->flush_output();
        }
@@ -1362,6 +1349,8 @@ class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin {
                        'plugins_page' => '<a href="' . self_admin_url('plugins.php') . '" title="' . esc_attr__('Go to plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>',
                        'updates_page' => '<a href="' . self_admin_url('update-core.php') . '" title="' . esc_attr__('Go to WordPress Updates page') . '" target="_parent">' . __('Return to WordPress Updates') . '</a>'
                );
+               if ( ! current_user_can( 'activate_plugins' ) )
+                       unset( $update_actions['plugins_page'] );
 
                $update_actions = apply_filters('update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info);
                if ( ! empty($update_actions) )
@@ -1395,6 +1384,8 @@ class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin {
                        'themes_page' => '<a href="' . self_admin_url('themes.php') . '" title="' . esc_attr__('Go to themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>',
                        'updates_page' => '<a href="' . self_admin_url('update-core.php') . '" title="' . esc_attr__('Go to WordPress Updates page') . '" target="_parent">' . __('Return to WordPress Updates') . '</a>'
                );
+               if ( ! current_user_can( 'switch_themes' ) && ! current_user_can( 'edit_theme_options' ) )
+                       unset( $update_actions['themes_page'] );
 
                $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info );
                if ( ! empty($update_actions) )
@@ -1456,9 +1447,11 @@ class Plugin_Installer_Skin extends WP_Upgrader_Skin {
                        $install_actions['plugins_page'] = '<a href="' . self_admin_url('plugins.php') . '" title="' . esc_attr__('Return to Plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>';
 
                if ( ! $this->result || is_wp_error($this->result) ) {
+                       unset( $install_actions['activate_plugin'], $install_actions['network_activate'] );
+               } elseif ( ! current_user_can( 'activate_plugins' ) ) {
                        unset( $install_actions['activate_plugin'] );
-                       unset( $install_actions['network_activate'] );
                }
+
                $install_actions = apply_filters('install_plugin_complete_actions', $install_actions, $this->api, $plugin_file);
                if ( ! empty($install_actions) )
                        $this->feedback(implode(' | ', (array)$install_actions));
@@ -1509,7 +1502,7 @@ class Theme_Installer_Skin extends WP_Upgrader_Skin {
                        'preview'    => 1,
                        'template'   => urlencode( $template ),
                        'stylesheet' => urlencode( $stylesheet ),
-               ), trailingslashit( get_home_url() ) );
+               ), trailingslashit( home_url() ) );
 
                $activate_link = add_query_arg( array(
                        'action'     => 'activate',
@@ -1524,14 +1517,14 @@ class Theme_Installer_Skin extends WP_Upgrader_Skin {
                $install_actions['activate'] = '<a href="' . esc_url( $activate_link ) . '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>';
 
                if ( is_network_admin() && current_user_can( 'manage_network_themes' ) )
-                       $install_actions['network_enable'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=enable&amp;theme=' . $stylesheet, 'enable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__( 'Enable this theme for all sites in this network' ) . '" target="_parent">' . __( 'Network Enable' ) . '</a>';
+                       $install_actions['network_enable'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=enable&amp;theme=' . urlencode( $stylesheet ), 'enable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__( 'Enable this theme for all sites in this network' ) . '" target="_parent">' . __( 'Network Enable' ) . '</a>';
 
                if ( $this->type == 'web' )
                        $install_actions['themes_page'] = '<a href="' . self_admin_url('theme-install.php') . '" title="' . esc_attr__('Return to Theme Installer') . '" target="_parent">' . __('Return to Theme Installer') . '</a>';
-               else
+               elseif ( current_user_can( 'switch_themes' ) || current_user_can( 'edit_theme_options' ) )
                        $install_actions['themes_page'] = '<a href="' . self_admin_url('themes.php') . '" title="' . esc_attr__('Themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>';
 
-               if ( ! $this->result || is_wp_error($this->result) || is_network_admin() )
+               if ( ! $this->result || is_wp_error($this->result) || is_network_admin() || ! current_user_can( 'switch_themes' ) )
                        unset( $install_actions['activate'], $install_actions['preview'] );
 
                $install_actions = apply_filters('install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info);
@@ -1573,7 +1566,7 @@ class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
                                'preview'    => 1,
                                'template'   => urlencode( $template ),
                                'stylesheet' => urlencode( $stylesheet ),
-                       ), trailingslashit( get_home_url() ) );
+                       ), trailingslashit( home_url() ) );
 
                        $activate_link = add_query_arg( array(
                                'action'     => 'activate',
@@ -1583,8 +1576,9 @@ class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
                        $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet );
 
                        if ( get_stylesheet() == $stylesheet ) {
-                               $update_actions['preview']  = '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Customize &#8220;%s&#8221;'), $name ) ) . '">' . __('Customize') . '</a>';
-                       } else {
+                               if ( current_user_can( 'edit_theme_options' ) )
+                                       $update_actions['preview']  = '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Customize &#8220;%s&#8221;'), $name ) ) . '">' . __('Customize') . '</a>';
+                       } elseif ( current_user_can( 'switch_themes' ) ) {
                                $update_actions['preview']  = '<a href="' . esc_url( $preview_link ) . '" class="hide-if-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Preview') . '</a>';
                                $update_actions['preview'] .= '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Live Preview') . '</a>';
                                $update_actions['activate'] = '<a href="' . esc_url( $activate_link ) . '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>';
index adb8321475528961f8de6e483acd0322453217dc..9ad3c13aeda2481edb59e52c1ce1cfaade816d9f 100644 (file)
@@ -12,17 +12,17 @@ class WP_Users_List_Table extends WP_List_Table {
        var $site_id;
        var $is_site_users;
 
-       function __construct() {
-               $screen = get_current_screen();
-               $this->is_site_users = 'site-users-network' == $screen->id;
-
-               if ( $this->is_site_users )
-                       $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
-
+       function __construct( $args = array() ) {
                parent::__construct( array(
                        'singular' => 'user',
-                       'plural'   => 'users'
+                       'plural'   => 'users',
+                       'screen'   => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
+
+               $this->is_site_users = 'site-users-network' == $this->screen->id;
+
+               if ( $this->is_site_users )
+                       $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
        }
 
        function ajax_user_can() {
@@ -35,7 +35,7 @@ class WP_Users_List_Table extends WP_List_Table {
        function prepare_items() {
                global $role, $usersearch;
 
-               $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
+               $usersearch = isset( $_REQUEST['s'] ) ? trim( $_REQUEST['s'] ) : '';
 
                $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : '';
 
@@ -136,18 +136,20 @@ class WP_Users_List_Table extends WP_List_Table {
        function extra_tablenav( $which ) {
                if ( 'top' != $which )
                        return;
-               if ( ! current_user_can( 'promote_users' ) )
-                       return;
-?>
+       ?>
        <div class="alignleft actions">
+               <?php if ( current_user_can( 'promote_users' ) ) : ?>
                <label class="screen-reader-text" for="new_role"><?php _e( 'Change role to&hellip;' ) ?></label>
                <select name="new_role" id="new_role">
                        <option value=''><?php _e( 'Change role to&hellip;' ) ?></option>
                        <?php wp_dropdown_roles(); ?>
                </select>
-               <?php submit_button( __( 'Change' ), 'secondary', 'changeit', false ); ?>
-       </div>
-<?php
+       <?php
+                       submit_button( __( 'Change' ), 'button', 'changeit', false );
+               endif;
+
+               do_action( 'restrict_manage_users' );
+               echo '</div>';
        }
 
        function current_action() {
@@ -191,11 +193,19 @@ class WP_Users_List_Table extends WP_List_Table {
                if ( ! $this->is_site_users )
                        $post_counts = count_many_users_posts( array_keys( $this->items ) );
 
+               $editable_roles = array_keys( get_editable_roles() );
+
                $style = '';
                foreach ( $this->items as $userid => $user_object ) {
-                       $role = reset( $user_object->roles );
+                       if ( count( $user_object->roles ) <= 1 ) {
+                               $role = reset( $user_object->roles );
+                       } elseif ( $roles = array_intersect( array_values( $user_object->roles ), $editable_roles ) ) {
+                               $role = reset( $roles );
+                       } else {
+                               $role = reset( $user_object->roles );
+                       }
 
-                       if ( is_multisite() && empty( $role ) )
+                       if ( is_multisite() && empty( $user_object->allcaps ) )
                                continue;
 
                        $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
@@ -218,7 +228,7 @@ class WP_Users_List_Table extends WP_List_Table {
                global $wp_roles;
 
                if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) )
-                       $user_object = new WP_User( (int) $user_object );
+                       $user_object = get_userdata( (int) $user_object );
                $user_object->filter = 'display';
                $email = $user_object->user_email;
 
@@ -231,12 +241,7 @@ class WP_Users_List_Table extends WP_List_Table {
                // Check if the user for this row is editable
                if ( current_user_can( 'list_users' ) ) {
                        // Set up the user editing link
-                       // TODO: make profile/user-edit determination a separate function
-                       if ( get_current_user_id() == $user_object->ID ) {
-                               $edit_link = 'profile.php';
-                       } else {
-                               $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), "user-edit.php?user_id=$user_object->ID" ) );
-                       }
+                       $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) );
 
                        // Set up the hover actions for this user
                        $actions = array();
@@ -256,7 +261,8 @@ class WP_Users_List_Table extends WP_List_Table {
                        $edit .= $this->row_actions( $actions );
 
                        // Set up the checkbox ( because the user is editable, otherwise its empty )
-                       $checkbox = "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
+                       $checkbox = '<label class="screen-reader-text" for="cb-select-' . $user_object->ID . '">' . sprintf( __( 'Select %s' ), $user_object->user_login ) . '</label>'
+                                               . "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
 
                } else {
                        $edit = '<strong>' . $user_object->user_login . '</strong>';
index 6e7d5f0d0726e8ff692b902dccf85cb311030e63..0df8109f58b55415545c69a23804501b74b38627 100644 (file)
@@ -131,6 +131,7 @@ function wp_dashboard_setup() {
        }
 
        if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) {
+               check_admin_referer( 'edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce' );
                ob_start(); // hack - but the same hack wp-admin/widgets.php uses
                wp_dashboard_trigger_widget_control( $_POST['widget_id'] );
                ob_end_clean();
@@ -182,6 +183,7 @@ function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_
 function _wp_dashboard_control_callback( $dashboard, $meta_box ) {
        echo '<form action="" method="post" class="dashboard-widget-control-form">';
        wp_dashboard_trigger_widget_control( $meta_box['id'] );
+       wp_nonce_field( 'edit-dashboard-widget_' . $meta_box['id'], 'dashboard-widget-nonce' );
        echo '<input type="hidden" name="widget_id" value="' . esc_attr($meta_box['id']) . '" />';
        submit_button( __('Submit') );
        echo '</form>';
@@ -392,12 +394,12 @@ function wp_dashboard_right_now() {
        }
        echo '</p>';
 
-       // Check if search engines are blocked.
+       // Check if search engines are asked not to index this site.
        if ( !is_network_admin() && !is_user_admin() && current_user_can('manage_options') && '1' != get_option('blog_public') ) {
                $title = apply_filters('privacy_on_link_title', __('Your site is asking search engines not to index its content') );
-               $content = apply_filters('privacy_on_link_text', __('Search Engines Blocked') );
+               $content = apply_filters('privacy_on_link_text', __('Search Engines Discouraged') );
 
-               echo "<p><a href='options-privacy.php' title='$title'>$content</a></p>";
+               echo "<p><a href='options-reading.php' title='$title'>$content</a></p>";
        }
 
        update_right_now_message();
@@ -480,7 +482,7 @@ function wp_dashboard_quick_press() {
                        if ( $drafts_query->posts )
                                $drafts =& $drafts_query->posts;
                }
-               printf('<p class="textright">' . __('You can also try %s, easy blogging from anywhere on the Web.') . '</p>', '<a href="' . esc_url( admin_url( 'tools.php' ) ) . '">' . __('Press This') . '</a>' );
+               printf('<p class="easy-blogging">' . __('You can also try %s, easy blogging from anywhere on the Web.') . '</p>', '<a href="' . esc_url( admin_url( 'tools.php' ) ) . '">' . __('Press This') . '</a>' );
                $_REQUEST = array(); // hack for get_default_post_to_edit()
        }
 
@@ -490,22 +492,35 @@ function wp_dashboard_quick_press() {
                $post = get_post( $last_post_id );
                if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore
                        $post = get_default_post_to_edit('post', true);
-                       update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
+                       update_user_option( get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
                } else {
                        $post->post_title = ''; // Remove the auto draft title
                }
        } else {
-               $post = get_default_post_to_edit('post', true);
-               update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
+               $post = get_default_post_to_edit( 'post' , true);
+               $user_id = get_current_user_id();
+               // Don't create an option if this is a super admin who does not belong to this site.
+               if ( ! ( is_super_admin( $user_id ) && ! in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user_id ) ) ) ) )
+                       update_user_option( $user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
        }
 
        $post_ID = (int) $post->ID;
+
+       $media_settings = array(
+               'id' => $post->ID,
+               'nonce' => wp_create_nonce( 'update-post_' . $post->ID ),
+       );
+
+       if ( current_theme_supports( 'post-thumbnails', $post->post_type ) && post_type_supports( $post->post_type, 'thumbnail' ) ) {
+               $featured_image_id = get_post_meta( $post->ID, '_thumbnail_id', true );
+               $media_settings['featuredImageId'] = $featured_image_id ? $featured_image_id : -1;
+       }
 ?>
 
        <form name="post" action="<?php echo esc_url( admin_url( 'post.php' ) ); ?>" method="post" id="quick-press">
-               <h4 id="quick-post-title"><label for="title"><?php _e('Title') ?></label></h4>
-               <div class="input-text-wrap">
-                       <input type="text" name="post_title" id="title" tabindex="1" autocomplete="off" value="<?php echo esc_attr( $post->post_title ); ?>" />
+               <div class="input-text-wrap" id="title-wrap">
+                       <label class="screen-reader-text prompt" for="title" id="title-prompt-text"><?php _e( 'Enter title here' ); ?></label>
+                       <input type="text" name="post_title" id="title" autocomplete="off" value="<?php echo esc_attr( $post->post_title ); ?>" />
                </div>
 
                <?php if ( current_user_can( 'upload_files' ) ) : ?>
@@ -514,29 +529,37 @@ function wp_dashboard_quick_press() {
                </div>
                <?php endif; ?>
 
-               <h4 id="content-label"><label for="content"><?php _e('Content') ?></label></h4>
                <div class="textarea-wrap">
-                       <textarea name="content" id="content" class="mceEditor" rows="3" cols="15" tabindex="2"><?php echo esc_textarea( $post->post_content ); ?></textarea>
+                       <label class="screen-reader-text" for="content"><?php _e( 'Content' ); ?></label>
+                       <textarea name="content" id="content" class="mceEditor" rows="3" cols="15"><?php echo esc_textarea( $post->post_content ); ?></textarea>
                </div>
 
-               <script type="text/javascript">edCanvas = document.getElementById('content');edInsertContent = null;</script>
+               <script type="text/javascript">
+               edCanvas = document.getElementById('content');
+               edInsertContent = null;
+               <?php if ( $_POST ) : ?>
+               wp.media.editor.remove('content');
+               wp.media.view.settings.post = <?php echo json_encode( $media_settings ); // big juicy hack. ?>;
+               wp.media.editor.add('content');
+               <?php endif; ?>
+               </script>
 
-               <h4><label for="tags-input"><?php _e('Tags') ?></label></h4>
-               <div class="input-text-wrap">
-                       <input type="text" name="tags_input" id="tags-input" tabindex="3" value="<?php echo get_tags_to_edit( $post->ID ); ?>" />
+               <div class="input-text-wrap" id="tags-input-wrap">
+                       <label class="screen-reader-text prompt" for="tags-input" id="tags-input-prompt-text"><?php _e( 'Tags (separate with commas)' ); ?></label>
+                       <input type="text" name="tags_input" id="tags-input" value="<?php echo get_tags_to_edit( $post->ID ); ?>" />
                </div>
 
                <p class="submit">
+                       <span id="publishing-action">
+                               <input type="submit" name="publish" id="publish" accesskey="p" class="button-primary" value="<?php current_user_can('publish_posts') ? esc_attr_e('Publish') : esc_attr_e('Submit for Review'); ?>" />
+                               <span class="spinner"></span>
+                       </span>
                        <input type="hidden" name="action" id="quickpost-action" value="post-quickpress-save" />
                        <input type="hidden" name="post_ID" value="<?php echo $post_ID; ?>" />
                        <input type="hidden" name="post_type" value="post" />
                        <?php wp_nonce_field('add-post'); ?>
-                       <?php submit_button( __( 'Save Draft' ), 'button', 'save', false, array( 'id' => 'save-post', 'tabindex'=> 4 ) ); ?>
+                       <?php submit_button( __( 'Save Draft' ), 'button', 'save', false, array( 'id' => 'save-post' ) ); ?>
                        <input type="reset" value="<?php esc_attr_e( 'Reset' ); ?>" class="button" />
-                       <span id="publishing-action">
-                               <input type="submit" name="publish" id="publish" accesskey="p" tabindex="5" class="button-primary" value="<?php current_user_can('publish_posts') ? esc_attr_e('Publish') : esc_attr_e('Submit for Review'); ?>" />
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                       </span>
                        <br class="clear" />
                </p>
 
@@ -566,7 +589,7 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
                        $url = get_edit_post_link( $draft->ID );
                        $title = _draft_or_post_title( $draft->ID );
                        $item = "<h4><a href='$url' title='" . sprintf( __( 'Edit &#8220;%s&#8221;' ), esc_attr( $title ) ) . "'>" . esc_html($title) . "</a> <abbr title='" . get_the_time(__('Y/m/d g:i:s A'), $draft) . "'>" . get_the_time( get_option( 'date_format' ), $draft ) . '</abbr></h4>';
-                       if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) )
+                       if ( $the_content = preg_split( '#[\r\n\t ]#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) )
                                $item .= '<p>' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '&hellip;' : '' ) . '</p>';
                        $list[] = $item;
                }
@@ -614,7 +637,7 @@ function wp_dashboard_recent_comments() {
        }
 
        if ( $comments ) {
-               echo '<div id="the-comment-list" class="list:comment">';
+               echo '<div id="the-comment-list" data-wp-lists="list:comment">';
                foreach ( $comments as $comment )
                        _wp_dashboard_recent_comments_row( $comment );
                echo '</div>';
@@ -657,15 +680,15 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
                $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
 
-               $actions['approve'] = "<a href='$approve_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
-               $actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+               $actions['approve'] = "<a href='$approve_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved' class='vim-a' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+               $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved' class='vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . esc_attr__('Edit comment') . "'>". __('Edit') . '</a>';
                $actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r hide-if-no-js" title="'.esc_attr__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
-               $actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
+               $actions['spam'] = "<a href='$spam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::spam=1' class='vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
                if ( !EMPTY_TRASH_DAYS )
-                       $actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID::trash=1 delete vim-d vim-destructive'>" . __('Delete Permanently') . '</a>';
+                       $actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive'>" . __('Delete Permanently') . '</a>';
                else
-                       $actions['trash'] = "<a href='$trash_url' class='delete:the-comment-list:comment-$comment->comment_ID::trash=1 delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x('Trash', 'verb') . '</a>';
+                       $actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x('Trash', 'verb') . '</a>';
 
                $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment );
 
@@ -813,10 +836,13 @@ function wp_dashboard_incoming_links_output() {
                        /* translators: incoming links feed, %1$s is other person, %3$s is content */
                        $text = __( '%1$s linked here saying, "%3$s"' );
 
-               if ( !empty($show_date) ) {
-                       if ( !empty($show_author) || !empty($show_summary) )
-                               /* translators: incoming links feed, %4$s is the date */
-                               $text .= ' ' . __( 'on %4$s' );
+               if ( !empty( $show_date ) ) {
+                       if ( $link )
+                               /* translators: incoming links feed, %1$s is other person, %3$s is content, %4$s is the date */
+                               $text = __( '%1$s linked here <a href="%2$s">saying</a>, "%3$s" on %4$s' );
+                       else
+                               /* translators: incoming links feed, %1$s is other person, %3$s is content, %4$s is the date */
+                               $text = __( '%1$s linked here saying, "%3$s" on %4$s' );
                        $date = esc_html( strip_tags( $item->get_date() ) );
                        $date = strtotime( $date );
                        $date = gmdate( get_option( 'date_format' ), $date );
@@ -913,7 +939,7 @@ function wp_dashboard_plugins_output() {
 
        if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
                $plugin_slugs = array_keys( get_plugins() );
-               set_transient( 'plugin_slugs', $plugin_slugs, 86400 );
+               set_transient( 'plugin_slugs', $plugin_slugs, DAY_IN_SECONDS );
        }
 
        foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins') ) as $feed => $label ) {
@@ -961,12 +987,7 @@ function wp_dashboard_plugins_output() {
                if ( !isset($items[$item_key]) )
                        continue;
 
-               // current bbPress feed item titles are: user on "topic title"
-               if ( preg_match( '/&quot;(.*)&quot;/s', $item->get_title(), $matches ) )
-                       $title = $matches[1];
-               else // but let's make it forward compatible if things change
-                       $title = $item->get_title();
-               $title = esc_html( $title );
+               $title = esc_html( $item->get_title() );
 
                $description = esc_html( strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) );
 
@@ -1026,7 +1047,7 @@ function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = ar
                array_unshift( $args, $widget_id );
                ob_start();
                call_user_func_array( $callback, $args );
-               set_transient( $cache_key, ob_get_flush(), 43200); // Default lifetime in cache of 12 hours (same as the feeds)
+               set_transient( $cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS ); // Default lifetime in cache of 12 hours (same as the feeds)
        }
 
        return true;
@@ -1099,7 +1120,7 @@ function wp_dashboard_quota() {
                return true;
 
        $quota = get_space_allowed();
-       $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
+       $used = get_space_used();
 
        if ( $used > $quota )
                $percentused = '100';
@@ -1114,7 +1135,7 @@ function wp_dashboard_quota() {
        <div class="table table_content musubtable">
        <table>
                <tr class="first">
-                       <td class="first b b-posts"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB</a>' ), esc_url( admin_url( 'upload.php' ) ), $quota ); ?></td>
+                       <td class="first b b-posts"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB</a>' ), esc_url( admin_url( 'upload.php' ) ), number_format_i18n( $quota ) ); ?></td>
                        <td class="t posts"><?php _e( 'Space Allowed' ); ?></td>
                </tr>
        </table>
@@ -1122,7 +1143,7 @@ function wp_dashboard_quota() {
        <div class="table table_discussion musubtable">
        <table>
                <tr class="first">
-                       <td class="b b-comments"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB (%3$s%%)</a>' ), esc_url( admin_url( 'upload.php' ) ), $used, $percentused ); ?></td>
+                       <td class="b b-comments"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB (%3$s%%)</a>' ), esc_url( admin_url( 'upload.php' ) ), number_format_i18n( $used, 2 ), $percentused ); ?></td>
                        <td class="last t comments<?php echo $used_color;?>"><?php _e( 'Space Used' );?></td>
                </tr>
        </table>
@@ -1217,7 +1238,7 @@ function wp_check_browser_version() {
                if ( ! is_array( $response ) )
                        return false;
 
-               set_site_transient( 'browser_' . $key, $response, 604800 ); // cache for 1 week
+               set_site_transient( 'browser_' . $key, $response, WEEK_IN_SECONDS );
        }
 
        return $response;
@@ -1234,92 +1255,44 @@ function wp_dashboard_empty() {}
  * @since 3.3.0
  */
 function wp_welcome_panel() {
-       global $wp_version;
-
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               return;
-
-       $classes = 'welcome-panel';
-
-       $option = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
-       // 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
-       $hide = 0 == $option || ( 2 == $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) );
-       if ( $hide )
-               $classes .= ' hidden';
-
-       list( $display_version ) = explode( '-', $wp_version );
        ?>
-       <div id="welcome-panel" class="<?php echo esc_attr( $classes ); ?>">
-       <?php wp_nonce_field( 'welcome-panel-nonce', 'welcomepanelnonce', false ); ?>
-       <a class="welcome-panel-close" href="<?php echo esc_url( admin_url( '?welcome=0' ) ); ?>"><?php _e('Dismiss'); ?></a>
-       <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
-
        <div class="welcome-panel-content">
-       <h3><?php _e( 'Welcome to your new WordPress site!' ); ?></h3>
-       <p class="about-description"><?php _e( 'If you need help getting started, check out our documentation on <a href="http://codex.wordpress.org/First_Steps_With_WordPress">First Steps with WordPress</a>. If you&#8217;d rather dive right in, here are a few things most people do first when they set up a new WordPress site. If you need help, use the Help tabs in the upper right corner to get information on how to use your current screen and where to go for more assistance.' ); ?></p>
+       <h3><?php _e( 'Welcome to WordPress!' ); ?></h3>
+       <p class="about-description"><?php _e( 'We&#8217;ve assembled some links to get you started:' ); ?></p>
        <div class="welcome-panel-column-container">
        <div class="welcome-panel-column">
-               <h4><span class="icon16 icon-settings"></span> <?php _e( 'Basic Settings' ); ?></h4>
-               <p><?php _e( 'Here are a few easy things you can do to get your feet wet. Make sure to click Save on each Settings screen.' ); ?></p>
-               <ul>
-               <li><?php echo sprintf( __( '<a href="%s">Choose your privacy setting</a>' ), esc_url( admin_url('options-privacy.php') ) ); ?></li>
-               <li><?php echo sprintf( __( '<a href="%s">Select your tagline and time zone</a>' ), esc_url( admin_url('options-general.php') ) ); ?></li>
-               <li><?php echo sprintf( __( '<a href="%s">Turn comments on or off</a>' ), esc_url( admin_url('options-discussion.php') ) ); ?></li>
-               <li><?php echo sprintf( __( '<a href="%s">Fill in your profile</a>' ), esc_url( admin_url('profile.php') ) ); ?></li>
-               </ul>
+               <h4><?php _e( 'Get Started' ); ?></h4>
+               <a class="button button-primary button-hero load-customize hide-if-no-customize" href="<?php echo wp_customize_url(); ?>"><?php _e( 'Customize Your Site' ); ?></a>
+               <a class="button button-primary button-hero hide-if-customize" href="<?php echo admin_url( 'themes.php' ); ?>"><?php _e( 'Customize Your Site' ); ?></a>
+               <?php if ( current_user_can( 'install_themes' ) || ( current_user_can( 'switch_themes' ) && count( wp_get_themes( array( 'allowed' => true ) ) ) > 1 ) ) : ?>
+                       <p class="hide-if-no-customize"><?php printf( __( 'or, <a href="%s">change your theme completely</a>' ), admin_url( 'themes.php' ) ); ?></p>
+               <?php endif; ?>
        </div>
        <div class="welcome-panel-column">
-               <h4><span class="icon16 icon-page"></span> <?php _e( 'Add Real Content' ); ?></h4>
-               <p><?php _e( 'Check out the sample page & post editors to see how it all works, then delete the default content and write your own!' ); ?></p>
+               <h4><?php _e( 'Next Steps' ); ?></h4>
                <ul>
-               <li><?php echo sprintf( __( 'View the <a href="%1$s">sample page</a> and <a href="%2$s">post</a>' ), esc_url( get_permalink( 2 ) ), esc_url( get_permalink( 1 ) ) ); ?></li>
-               <li><?php echo sprintf( __( 'Delete the <a href="%1$s">sample page</a> and <a href="%2$s">post</a>' ), esc_url( admin_url('edit.php?post_type=page') ), esc_url( admin_url('edit.php') ) ); ?></li>
-               <li><?php echo sprintf( __( '<a href="%s">Create an About Me page</a>' ), esc_url( admin_url('edit.php?post_type=page') ) ); ?></li>
-               <li><?php echo sprintf( __( '<a href="%s">Write your first post</a>' ), esc_url( admin_url('post-new.php') ) ); ?></li>
+               <?php if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_for_posts' ) ) : ?>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Edit your front page' ) . '</a>', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add additional pages' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li>
+               <?php elseif ( 'page' == get_option( 'show_on_front' ) ) : ?>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Edit your front page' ) . '</a>', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add additional pages' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-write-blog">' . __( 'Add a blog post' ) . '</a>', admin_url( 'post-new.php' ) ); ?></li>
+               <?php else : ?>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-write-blog">' . __( 'Write your first blog post' ) . '</a>', admin_url( 'post-new.php' ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add an About page' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li>
+               <?php endif; ?>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-view-site">' . __( 'View your site' ) . '</a>', home_url( '/' ) ); ?></li>
                </ul>
        </div>
        <div class="welcome-panel-column welcome-panel-last">
-               <h4><span class="icon16 icon-appearance"></span> <?php _e( 'Customize Your Site' ); ?></h4>
-               <?php
-               $theme = wp_get_theme();
-               if ( $theme->errors() ) :
-                       echo '<p>';
-                       printf( __( '<a href="%s">Install a theme</a> to get started customizing your site.' ), esc_url( admin_url( 'themes.php' ) ) );
-                       echo '</p>';
-               else:
-                       $customize_links = array();
-                       if ( 'twentyeleven' == $theme->get_stylesheet() )
-                               $customize_links[] = sprintf( __( '<a href="%s">Choose light or dark</a>' ), esc_url( admin_url( 'themes.php?page=theme_options' ) ) );
-
-                       if ( current_theme_supports( 'custom-background' ) )
-                               $customize_links[] = sprintf( __( '<a href="%s">Set a background color</a>' ), esc_url( admin_url( 'themes.php?page=custom-background' ) ) );
-
-                       if ( current_theme_supports( 'custom-header' ) )
-                               $customize_links[] = sprintf( __( '<a href="%s">Select a new header image</a>' ), esc_url( admin_url( 'themes.php?page=custom-header' ) ) );
-
-                       if ( current_theme_supports( 'widgets' ) )
-                               $customize_links[] = sprintf( __( '<a href="%s">Add some widgets</a>' ), esc_url( admin_url( 'widgets.php' ) ) );
-
-                       if ( ! empty( $customize_links ) ) {
-                               echo '<p>';
-                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>. If you stick with %1$s, here are a few ways to make your site look unique.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) );
-                               echo '</p>';
-                       ?>
-                       <ul>
-                               <?php foreach ( $customize_links as $customize_link ) : ?>
-                               <li><?php echo $customize_link ?></li>
-                               <?php endforeach; ?>
-                       </ul>
-                       <?php
-                       } else {
-                               echo '<p>';
-                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) );
-                               echo '</p>';
-                       }
-               endif; ?>
-       </div>
+               <h4><?php _e( 'More Actions' ); ?></h4>
+               <ul>
+                       <li><?php printf( '<div class="welcome-icon welcome-widgets-menus">' . __( 'Manage <a href="%1$s">widgets</a> or <a href="%2$s">menus</a>' ) . '</div>', admin_url( 'widgets.php' ), admin_url( 'nav-menus.php' ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-comments">' . __( 'Turn comments on or off' ) . '</a>', admin_url( 'options-discussion.php' ) ); ?></li>
+                       <li><?php printf( '<a href="%s" class="welcome-icon welcome-learn-more">' . __( 'Learn more about getting started' ) . '</a>', __( 'http://codex.wordpress.org/First_Steps_With_WordPress' ) ); ?></li>
+               </ul>
        </div>
-       <p class="welcome-panel-dismiss"><?php printf( __( 'Already know what you&#8217;re doing? <a href="%s">Dismiss this message</a>.' ), esc_url( admin_url( '?welcome=0' ) ) ); ?></p>
        </div>
        </div>
        <?php
index 747b228d535897b2aa674c412f35371dbaddf966..5d88b3a1ec76012939c695c4295533e5eb526f06 100644 (file)
@@ -42,18 +42,36 @@ function documentation_link() {
  * @since 2.0.0
  * @deprecated 3.0.0
  * @deprecated Use wp_constrain_dimensions()
+ * @see wp_constrain_dimensions()
  *
  * @param int $width Current width of the image
  * @param int $height Current height of the image
  * @param int $wmax Maximum wanted width
  * @param int $hmax Maximum wanted height
- * @return mixed Array(height,width) of shrunk dimensions.
+ * @return array Shrunk dimensions (width, height).
  */
 function wp_shrink_dimensions( $width, $height, $wmax = 128, $hmax = 96 ) {
        _deprecated_function( __FUNCTION__, '3.0', 'wp_constrain_dimensions()' );
        return wp_constrain_dimensions( $width, $height, $wmax, $hmax );
 }
 
+/**
+ * Calculated the new dimensions for a downsampled image.
+ *
+ * @since 2.0.0
+ * @deprecated 3.5.0
+ * @deprecated Use wp_constrain_dimensions()
+ * @see wp_constrain_dimensions()
+ *
+ * @param int $width Current width of the image
+ * @param int $height Current height of the image
+ * @return array Shrunk dimensions (width, height).
+ */
+function get_udims( $width, $height ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'wp_constrain_dimensions()' );
+       return wp_constrain_dimensions( $width, $height, 128, 96 );
+}
+
 /**
  * {@internal Missing Short Description}}
  *
@@ -249,7 +267,8 @@ function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'p
 
        global $wpdb;
 
-       $user = new WP_User( $user_id );
+       if ( ! $user = get_userdata( $user_id ) )
+               return array();
        $post_type_obj = get_post_type_object($post_type);
 
        if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) {
@@ -938,4 +957,72 @@ function current_theme_info() {
        _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' );
 
        return wp_get_theme();
-}
\ No newline at end of file
+}
+
+/**
+ * This was once used to display an 'Insert into Post' button. Now it is deprecated and stubbed.
+ *
+ * @deprecated 3.5.0
+ */
+function _insert_into_post_button( $type ) {
+       _deprecated_function( __FUNCTION__, '3.5' );
+}
+
+/**
+ * This was once used to display a media button. Now it is deprecated and stubbed.
+ *
+ * @deprecated 3.5.0
+ */
+function _media_button($title, $icon, $type, $id) {
+       _deprecated_function( __FUNCTION__, '3.5' );
+}
+
+/**
+ * Get an existing post and format it for editing.
+ *
+ * @since 2.0.0
+ * @deprecated 3.5.0
+ *
+ * @param int $id
+ * @return object
+ */
+function get_post_to_edit( $id ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'get_post()' );
+
+       return get_post( $id, OBJECT, 'edit' );
+}
+
+/**
+ * Get the default page information to use.
+ *
+ * @since 2.5.0
+ * @deprecated 3.5.0
+ * @deprecated Use get_default_post_to_edit()
+ *
+ * @return WP_Post Post object containing all the default post data as attributes
+ */
+function get_default_page_to_edit() {
+       _deprecated_function( __FUNCTION__, '3.5', "get_default_post_to_edit( 'page' )" );
+
+       $page = get_default_post_to_edit();
+       $page->post_type = 'page';
+       return $page;
+}
+
+/**
+ * This was once used to create a thumbnail from an Image given a maximum side size.
+ *
+ * @since 1.2.0
+ * @deprecated 3.5.0
+ * @deprecated Use image_resize()
+ * @see  image_resize()
+ *
+ * @param mixed $file Filename of the original image, Or attachment id.
+ * @param int $max_side Maximum length of a single side for the thumbnail.
+ * @param mixed $deprecated Never used.
+ * @return string Thumbnail path on success, Error string on failure.
+ */
+function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'image_resize' );
+       return apply_filters( 'wp_create_thumbnail', image_resize( $file, $max_side, $max_side ) );
+}
index e9c909d621ea3bfa836292a0c3b3e3fb4f2786a8..c66b7f36309dea5b9114db8df1bf61afaa7df291 100644 (file)
@@ -238,7 +238,7 @@ function export_wp( $args = array() ) {
                global $wpdb;
 
                $authors = array();
-               $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" );
+               $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_status != 'auto-draft'" );
                foreach ( (array) $results as $result )
                        $authors[] = get_userdata( $result->post_author );
 
@@ -279,7 +279,7 @@ function export_wp( $args = array() ) {
         * @since 2.3.0
         */
        function wxr_post_taxonomy() {
-               global $post;
+               $post = get_post();
 
                $taxonomies = get_object_taxonomies( $post->post_type );
                if ( empty( $taxonomies ) )
index 9ff24384ccd5682c0361789d8819f373da65f56f..942f347f5925e4361d95dd00cdd64f02f80c9a41 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 /**
- * File contains all the administration image manipulation functions.
+ * Functions for reading, writing, modifying, and deleting files on the file system.
+ * Includes functionality for theme-specific files as well as operations for uploading,
+ * archiving, and rendering output when necessary.
  *
  * @package WordPress
  * @subpackage Administration
@@ -79,10 +81,10 @@ function get_file_description( $file ) {
 function get_home_path() {
        $home = get_option( 'home' );
        $siteurl = get_option( 'siteurl' );
-       if ( $home != '' && $home != $siteurl ) {
-               $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
-               $pos = strrpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
-               $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
+       if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) {
+               $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */
+               $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) );
+               $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos );
                $home_path = trailingslashit( $home_path );
        } else {
                $home_path = ABSPATH;
@@ -225,6 +227,7 @@ function validate_file_to_edit( $file, $allowed_files = '' ) {
  * @uses delete_transient
  * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file.
  * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ).
+ * @param string $time Optional. Time formatted in 'yyyy/mm'.
  * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ).
  */
 function wp_handle_upload( &$file, $overrides = false, $time = null ) {
@@ -357,9 +360,10 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) {
  * @uses wp_unique_filename
  * @param array $file an array similar to that of a PHP $_FILES POST array
  * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ).
+ * @param string $time Optional. Time formatted in 'yyyy/mm'.
  * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ).
  */
-function wp_handle_sideload( &$file, $overrides = false ) {
+function wp_handle_sideload( &$file, $overrides = false, $time = null ) {
        // The default error handler.
        if (! function_exists( 'wp_handle_upload_error' ) ) {
                function wp_handle_upload_error( &$file, $message ) {
@@ -436,7 +440,7 @@ function wp_handle_sideload( &$file, $overrides = false ) {
        }
 
        // A writable uploads dir will pass this test. Again, there's no point overriding this one.
-       if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+       if ( ! ( ( $uploads = wp_upload_dir( $time ) ) && false === $uploads['error'] ) )
                return $upload_error_handler( $file, $uploads['error'] );
 
        $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
index d2d6dc2cf30f411a6dd977fdf107fb6aa11b852a..3e3b180267c32f08ca85bf1c32af53687fc6ae35 100644 (file)
@@ -40,14 +40,14 @@ function wp_image_editor($post_id, $msg = false) {
                <div onclick="imageEdit.crop(<?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-crop disabled" title="<?php esc_attr_e( 'Crop' ); ?>"></div><?php
 
        // On some setups GD library does not provide imagerotate() - Ticket #11536
-       if ( function_exists('imagerotate') ) { ?>
+       if ( wp_image_editor_supports( array( 'mime_type' => get_post_mime_type( $post_id ), 'methods' => array( 'rotate' ) ) ) ) { ?>
                <div class="imgedit-rleft"  onclick="imageEdit.rotate( 90, <?php echo "$post_id, '$nonce'"; ?>, this)" title="<?php esc_attr_e( 'Rotate counter-clockwise' ); ?>"></div>
                <div class="imgedit-rright" onclick="imageEdit.rotate(-90, <?php echo "$post_id, '$nonce'"; ?>, this)" title="<?php esc_attr_e( 'Rotate clockwise' ); ?>"></div>
 <?php } else {
-               $note_gdlib = esc_attr__('Image rotation is not supported by your web host (function imagerotate() is missing)');
+               $note_no_rotate = esc_attr__('Image rotation is not supported by your web host.');
 ?>
-           <div class="imgedit-rleft disabled"  title="<?php echo $note_gdlib; ?>"></div>
-           <div class="imgedit-rright disabled" title="<?php echo $note_gdlib; ?>"></div>
+           <div class="imgedit-rleft disabled"  title="<?php echo $note_no_rotate; ?>"></div>
+           <div class="imgedit-rright disabled" title="<?php echo $note_no_rotate; ?>"></div>
 <?php } ?>
 
                <div onclick="imageEdit.flip(1, <?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-flipv" title="<?php esc_attr_e( 'Flip vertically' ); ?>"></div>
@@ -118,14 +118,6 @@ function wp_image_editor($post_id, $msg = false) {
                <a class="imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;" href="#"><?php _e('(help)'); ?></a>
                <div class="imgedit-help">
                <p><?php _e('The image can be cropped by clicking on it and dragging to select the desired part. While dragging the dimensions of the selection are displayed below.'); ?></p>
-               <strong><?php _e('Keyboard Shortcuts'); ?></strong>
-               <ul>
-               <li><?php _e('Arrow: move by 10px'); ?></li>
-               <li><?php _e('Shift + arrow: move by 1px'); ?></li>
-               <li><?php _e('Ctrl + arrow: resize by 10px'); ?></li>
-               <li><?php _e('Ctrl + Shift + arrow: resize by 1px'); ?></li>
-               <li><?php _e('Shift + drag: lock aspect ratio'); ?></li>
-               </ul>
 
                <p><strong><?php _e('Crop Aspect Ratio'); ?></strong><br />
                <?php _e('You can specify the crop selection aspect ratio then hold down the Shift key while dragging to lock it. The values can be 1:1 (square), 4:3, 16:9, etc. If there is a selection, specifying aspect ratio will set it immediately.'); ?></p>
@@ -191,45 +183,87 @@ function wp_image_editor($post_id, $msg = false) {
        </td></tr>
        </tbody></table>
        <div class="imgedit-wait" id="imgedit-wait-<?php echo $post_id; ?>"></div>
-       <script type="text/javascript">imageEdit.init(<?php echo $post_id; ?>);</script>
+       <script type="text/javascript">jQuery( function() { imageEdit.init(<?php echo $post_id; ?>); });</script>
        <div class="hidden" id="imgedit-leaving-<?php echo $post_id; ?>"><?php _e("There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor."); ?></div>
        </div>
 <?php
 }
 
-function wp_stream_image($image, $mime_type, $post_id) {
-       $image = apply_filters('image_save_pre', $image, $post_id);
-
-       switch ( $mime_type ) {
-               case 'image/jpeg':
-                       header('Content-Type: image/jpeg');
-                       return imagejpeg($image, null, 90);
-               case 'image/png':
-                       header('Content-Type: image/png');
-                       return imagepng($image);
-               case 'image/gif':
-                       header('Content-Type: image/gif');
-                       return imagegif($image);
-               default:
+/**
+ * Streams image in WP_Image_Editor to browser.
+ * Provided for backcompat reasons
+ *
+ * @param WP_Image_Editor $image
+ * @param string $mime_type
+ * @param int $post_id
+ * @return boolean
+ */
+function wp_stream_image( $image, $mime_type, $post_id ) {
+       if ( $image instanceof WP_Image_Editor ) {
+               $image = apply_filters('image_editor_save_pre', $image, $post_id);
+
+               if ( is_wp_error( $image->stream( $mime_type ) ) )
                        return false;
+
+               return true;
+       } else {
+               _deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) );
+
+               $image = apply_filters('image_save_pre', $image, $post_id);
+
+               switch ( $mime_type ) {
+                       case 'image/jpeg':
+                               header( 'Content-Type: image/jpeg' );
+                               return imagejpeg( $image, null, 90 );
+                       case 'image/png':
+                               header( 'Content-Type: image/png' );
+                               return imagepng( $image );
+                       case 'image/gif':
+                               header( 'Content-Type: image/gif' );
+                               return imagegif( $image );
+                       default:
+                               return false;
+               }
        }
 }
 
-function wp_save_image_file($filename, $image, $mime_type, $post_id) {
-       $image = apply_filters('image_save_pre', $image, $post_id);
-       $saved = apply_filters('wp_save_image_file', null, $filename, $image, $mime_type, $post_id);
-       if ( null !== $saved )
-               return $saved;
-
-       switch ( $mime_type ) {
-               case 'image/jpeg':
-                       return imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) );
-               case 'image/png':
-                       return imagepng($image, $filename);
-               case 'image/gif':
-                       return imagegif($image, $filename);
-               default:
-                       return false;
+/**
+ * Saves Image to File
+ *
+ * @param string $filename
+ * @param WP_Image_Editor $image
+ * @param string $mime_type
+ * @param int $post_id
+ * @return boolean
+ */
+function wp_save_image_file( $filename, $image, $mime_type, $post_id ) {
+       if ( $image instanceof WP_Image_Editor ) {
+               $image = apply_filters('image_editor_save_pre', $image, $post_id);
+               $saved = apply_filters('wp_save_image_editor_file', null, $filename, $image, $mime_type, $post_id);
+
+               if ( null !== $saved )
+                       return $saved;
+
+               return $image->save( $filename, $mime_type );
+       } else {
+               _deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) );
+
+               $image = apply_filters('image_save_pre', $image, $post_id);
+               $saved = apply_filters('wp_save_image_file', null, $filename, $image, $mime_type, $post_id);
+
+               if ( null !== $saved )
+                       return $saved;
+
+               switch ( $mime_type ) {
+                       case 'image/jpeg':
+                               return imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) );
+                       case 'image/png':
+                               return imagepng( $image, $filename );
+                       case 'image/gif':
+                               return imagegif( $image, $filename );
+                       default:
+                               return false;
+               }
        }
 }
 
@@ -238,7 +272,9 @@ function _image_get_preview_ratio($w, $h) {
        return $max > 400 ? (400 / $max) : 1;
 }
 
+// @TODO: Returns GD resource, but is NOT public
 function _rotate_image_resource($img, $angle) {
+       _deprecated_function( __FUNCTION__, '3.5', __( 'Use WP_Image_Editor::rotate' ) );
        if ( function_exists('imagerotate') ) {
                $rotated = imagerotate($img, $angle, 0);
                if ( is_resource($rotated) ) {
@@ -249,7 +285,18 @@ function _rotate_image_resource($img, $angle) {
        return $img;
 }
 
+/**
+ * @TODO: Only used within image_edit_apply_changes
+ *               and receives/returns GD Resource.
+ *               Consider removal.
+ *
+ * @param GD_Resource $img
+ * @param boolean $horz
+ * @param boolean $vert
+ * @return GD_Resource
+ */
 function _flip_image_resource($img, $horz, $vert) {
+       _deprecated_function( __FUNCTION__, '3.5', __( 'Use WP_Image_Editor::flip' ) );
        $w = imagesx($img);
        $h = imagesy($img);
        $dst = wp_imagecreatetruecolor($w, $h);
@@ -267,6 +314,18 @@ function _flip_image_resource($img, $horz, $vert) {
        return $img;
 }
 
+/**
+ * @TODO: Only used within image_edit_apply_changes
+ *               and receives/returns GD Resource.
+ *               Consider removal.
+ *
+ * @param GD_Resource $img
+ * @param float $x
+ * @param float $y
+ * @param float $w
+ * @param float $h
+ * @return GD_Resource
+ */
 function _crop_image_resource($img, $x, $y, $w, $h) {
        $dst = wp_imagecreatetruecolor($w, $h);
        if ( is_resource($dst) ) {
@@ -278,10 +337,19 @@ function _crop_image_resource($img, $x, $y, $w, $h) {
        return $img;
 }
 
-function image_edit_apply_changes($img, $changes) {
+/**
+ * Performs group of changes on Editor specified.
+ *
+ * @param WP_Image_Editor $image
+ * @param type $changes
+ * @return WP_Image_Editor
+ */
+function image_edit_apply_changes( $image, $changes ) {
+       if ( is_resource( $image ) )
+               _deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) );
 
        if ( !is_array($changes) )
-               return $img;
+               return $image;
 
        // expand change operations
        foreach ( $changes as $key => $obj ) {
@@ -326,55 +394,83 @@ function image_edit_apply_changes($img, $changes) {
        }
 
        // image resource before applying the changes
-       $img = apply_filters('image_edit_before_change', $img, $changes);
+       if ( $image instanceof WP_Image_Editor )
+               $image = apply_filters('wp_image_editor_before_change', $image, $changes);
+       elseif ( is_resource( $image ) )
+               $image = apply_filters('image_edit_before_change', $image, $changes);
 
        foreach ( $changes as $operation ) {
                switch ( $operation->type ) {
                        case 'rotate':
-                               if ( $operation->angle != 0 )
-                                       $img = _rotate_image_resource($img, $operation->angle);
+                               if ( $operation->angle != 0 ) {
+                                       if ( $image instanceof WP_Image_Editor )
+                                               $image->rotate( $operation->angle );
+                                       else
+                                               $image = _rotate_image_resource( $image, $operation->angle );
+                               }
                                break;
                        case 'flip':
                                if ( $operation->axis != 0 )
-                                       $img = _flip_image_resource($img, ($operation->axis & 1) != 0, ($operation->axis & 2) != 0);
+                                       if ( $image instanceof WP_Image_Editor )
+                                               $image->flip( ($operation->axis & 1) != 0, ($operation->axis & 2) != 0 );
+                                       else
+                                               $image = _flip_image_resource( $image, ( $operation->axis & 1 ) != 0, ( $operation->axis & 2 ) != 0 );
                                break;
                        case 'crop':
                                $sel = $operation->sel;
-                               $scale = 1 / _image_get_preview_ratio( imagesx($img), imagesy($img) ); // discard preview scaling
-                               $img = _crop_image_resource($img, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale);
+
+                               if ( $image instanceof WP_Image_Editor ) {
+                                       $size = $image->get_size();
+                                       $w = $size['width'];
+                                       $h = $size['height'];
+
+                                       $scale = 1 / _image_get_preview_ratio( $w, $h ); // discard preview scaling
+                                       $image->crop( $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale );
+                               } else {
+                                       $scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // discard preview scaling
+                                       $image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale );
+                               }
                                break;
                }
        }
 
-       return $img;
+       return $image;
 }
 
-function stream_preview_image($post_id) {
-       $post = get_post($post_id);
+
+/**
+ * Streams image in post to browser, along with enqueued changes
+ * in $_REQUEST['history']
+ *
+ * @param int $post_id
+ * @return boolean
+ */
+function stream_preview_image( $post_id ) {
+       $post = get_post( $post_id );
        @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
-       $img = load_image_to_edit( $post_id, $post->post_mime_type, array(400, 400) );
 
-       if ( !is_resource($img) )
-               return false;
+       $img = wp_get_image_editor( _load_image_to_edit_path( $post_id ) );
+
+    if ( is_wp_error( $img ) )
+        return false;
 
        $changes = !empty($_REQUEST['history']) ? json_decode( stripslashes($_REQUEST['history']) ) : null;
        if ( $changes )
-               $img = image_edit_apply_changes($img, $changes);
+               $img = image_edit_apply_changes( $img, $changes );
 
        // scale the image
-       $w = imagesx($img);
-       $h = imagesy($img);
-       $ratio = _image_get_preview_ratio($w, $h);
+       $size = $img->get_size();
+       $w = $size['width'];
+       $h = $size['height'];
+
+       $ratio = _image_get_preview_ratio( $w, $h );
        $w2 = $w * $ratio;
        $h2 = $h * $ratio;
 
-       $preview = wp_imagecreatetruecolor($w2, $h2);
-       imagecopyresampled( $preview, $img, 0, 0, 0, 0, $w2, $h2, $w, $h );
-       wp_stream_image($preview, $post->post_mime_type, $post_id);
+       if ( is_wp_error( $img->resize( $w2, $h2 ) ) )
+               return false;
 
-       imagedestroy($preview);
-       imagedestroy($img);
-       return true;
+       return wp_stream_image( $img, $post->post_mime_type, $post_id );
 }
 
 function wp_restore_image($post_id) {
@@ -414,8 +510,6 @@ function wp_restore_image($post_id) {
                $meta['file'] = _wp_relative_upload_path( $restored_file );
                $meta['width'] = $data['width'];
                $meta['height'] = $data['height'];
-               list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96);
-               $meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
        }
 
        foreach ( $default_sizes as $default_size ) {
@@ -452,14 +546,20 @@ function wp_restore_image($post_id) {
        return $msg;
 }
 
-function wp_save_image($post_id) {
+/**
+ * Saves image to post along with enqueued changes
+ * in $_REQUEST['history']
+ *
+ * @param int $post_id
+ * @return \stdClass
+ */
+function wp_save_image( $post_id ) {
        $return = new stdClass;
        $success = $delete = $scaled = $nocrop = false;
-       $post = get_post($post_id);
-       @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
-       $img = load_image_to_edit($post_id, $post->post_mime_type);
+       $post = get_post( $post_id );
 
-       if ( !is_resource($img) ) {
+       $img = wp_get_image_editor( _load_image_to_edit_path( $post_id, 'full' ) );
+       if ( is_wp_error( $img ) ) {
                $return->error = esc_js( __('Unable to create new image.') );
                return $return;
        }
@@ -470,19 +570,16 @@ function wp_save_image($post_id) {
        $scale = !empty($_REQUEST['do']) && 'scale' == $_REQUEST['do'];
 
        if ( $scale && $fwidth > 0 && $fheight > 0 ) {
-               $sX = imagesx($img);
-               $sY = imagesy($img);
+               $size = $img->get_size();
+               $sX = $size['width'];
+               $sY = $size['height'];
 
                // check if it has roughly the same w / h ratio
                $diff = round($sX / $sY, 2) - round($fwidth / $fheight, 2);
                if ( -0.1 < $diff && $diff < 0.1 ) {
                        // scale the full size image
-                       $dst = wp_imagecreatetruecolor($fwidth, $fheight);
-                       if ( imagecopyresampled( $dst, $img, 0, 0, 0, 0, $fwidth, $fheight, $sX, $sY ) ) {
-                               imagedestroy($img);
-                               $img = $dst;
+                       if ( $img->resize( $fwidth, $fheight ) )
                                $scaled = true;
-                       }
                }
 
                if ( !$scaled ) {
@@ -553,14 +650,13 @@ function wp_save_image($post_id) {
                if ( $tag )
                        $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']);
 
-               $success = update_attached_file($post_id, $new_path);
+               $success = update_attached_file( $post_id, $new_path );
 
-               $meta['file'] = _wp_relative_upload_path($new_path);
-               $meta['width'] = imagesx($img);
-               $meta['height'] = imagesy($img);
+               $meta['file'] = _wp_relative_upload_path( $new_path );
 
-               list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96);
-               $meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
+               $size = $img->get_size();
+               $meta['width'] = $size['width'];
+               $meta['height'] = $size['height'];
 
                if ( $success && ('nothumb' == $target || 'all' == $target) ) {
                        $sizes = get_intermediate_image_sizes();
@@ -575,10 +671,12 @@ function wp_save_image($post_id) {
                $success = $delete = $nocrop = true;
        }
 
-       if ( isset($sizes) ) {
+       if ( isset( $sizes ) ) {
+               $_sizes = array();
+
                foreach ( $sizes as $size ) {
                        $tag = false;
-                       if ( isset($meta['sizes'][$size]) ) {
+                       if ( isset( $meta['sizes'][$size] ) ) {
                                if ( isset($backup_sizes["$size-orig"]) ) {
                                        if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] )
                                                $tag = "$size-$suffix";
@@ -591,25 +689,30 @@ function wp_save_image($post_id) {
                        }
 
                        $crop = $nocrop ? false : get_option("{$size}_crop");
-                       $resized = image_make_intermediate_size($new_path, get_option("{$size}_size_w"), get_option("{$size}_size_h"), $crop );
-
-                       if ( $resized )
-                               $meta['sizes'][$size] = $resized;
-                       else
-                               unset($meta['sizes'][$size]);
+                       $_sizes[ $size ] = array( 'width' => get_option("{$size}_size_w"), 'height' => get_option("{$size}_size_h"), 'crop' => $crop );
                }
+
+               $meta['sizes'] = $img->multi_resize( $_sizes );
        }
 
+       unset( $img );
+
        if ( $success ) {
-               wp_update_attachment_metadata($post_id, $meta);
+               wp_update_attachment_metadata( $post_id, $meta );
                update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes);
 
                if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) {
-                       $file_url = wp_get_attachment_url($post_id);
-                       if ( $thumb = $meta['sizes']['thumbnail'] )
-                               $return->thumbnail = path_join( dirname($file_url), $thumb['file'] );
-                       else
-                               $return->thumbnail = "$file_url?w=128&h=128";
+                       // Check if it's an image edit from attachment edit screen
+                       if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) {
+                               $thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true );
+                               $return->thumbnail = $thumb_url[0];
+                       } else {
+                               $file_url = wp_get_attachment_url($post_id);
+                               if ( $thumb = $meta['sizes']['thumbnail'] )
+                                       $return->thumbnail = path_join( dirname($file_url), $thumb['file'] );
+                               else
+                                       $return->thumbnail = "$file_url?w=128&h=128";
+                       }
                }
        } else {
                $delete = true;
@@ -617,11 +720,9 @@ function wp_save_image($post_id) {
 
        if ( $delete ) {
                $delpath = apply_filters('wp_delete_file', $new_path);
-               @unlink($delpath);
+               @unlink( $delpath );
        }
 
-       imagedestroy($img);
-
        $return->msg = esc_js( __('Image saved') );
        return $return;
 }
index 80483876778125750c0136dedfadbfb0290c55c0..c0fdfd9c231af8ea6f136f199c8119356a4dd283 100644 (file)
@@ -6,27 +6,6 @@
  * @subpackage Administration
  */
 
-/**
- * Create a thumbnail from an Image given a maximum side size.
- *
- * This function can handle most image file formats which PHP supports. If PHP
- * does not have the functionality to save in a file of the same format, the
- * thumbnail will be created as a jpeg.
- *
- * @since 1.2.0
- *
- * @param mixed $file Filename of the original image, Or attachment id.
- * @param int $max_side Maximum length of a single side for the thumbnail.
- * @param mixed $deprecated Never used.
- * @return string Thumbnail path on success, Error string on failure.
- */
-function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
-       if ( !empty( $deprecated ) )
-               _deprecated_argument( __FUNCTION__, '1.2' );
-       $thumbpath = image_resize( $file, $max_side, $max_side );
-       return apply_filters( 'wp_create_thumbnail', $thumbpath );
-}
-
 /**
  * Crop an Image to a given size.
  *
@@ -44,60 +23,38 @@ function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
  * @return string|WP_Error|false New filepath on success, WP_Error or false on failure.
  */
 function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
+       $src_file = $src;
        if ( is_numeric( $src ) ) { // Handle int as attachment ID
                $src_file = get_attached_file( $src );
+
                if ( ! file_exists( $src_file ) ) {
                        // If the file doesn't exist, attempt a url fopen on the src link.
                        // This can occur with certain file replication plugins.
-                       $post = get_post( $src );
-                       $image_type = $post->post_mime_type;
-                       $src = load_image_to_edit( $src, $post->post_mime_type, 'full' );
+                       $src = _load_image_to_edit_path( $src, 'full' );
                } else {
-                       $size = @getimagesize( $src_file );
-                       $image_type = ( $size ) ? $size['mime'] : '';
-                       $src = wp_load_image( $src_file );
+                       $src = $src_file;
                }
-       } else {
-               $size = @getimagesize( $src );
-               $image_type = ( $size ) ? $size['mime'] : '';
-               $src = wp_load_image( $src );
        }
 
-       if ( ! is_resource( $src ) )
-               return new WP_Error( 'error_loading_image', $src, $src_file );
-
-       $dst = wp_imagecreatetruecolor( $dst_w, $dst_h );
-
-       if ( $src_abs ) {
-               $src_w -= $src_x;
-               $src_h -= $src_y;
-       }
-
-       if ( function_exists( 'imageantialias' ) )
-               imageantialias( $dst, true );
-
-       imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
+       $editor = wp_get_image_editor( $src );
+       if ( is_wp_error( $editor ) )
+               return $editor;
 
-       imagedestroy( $src ); // Free up memory
+       $src = $editor->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs );
+       if ( is_wp_error( $src ) )
+               return $src;
 
        if ( ! $dst_file )
                $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file );
 
-       if ( 'image/png' != $image_type )
-               $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file );
-
        // The directory containing the original file may no longer exist when
        // using a replication plugin.
        wp_mkdir_p( dirname( $dst_file ) );
 
        $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) );
 
-       if ( 'image/png' == $image_type && imagepng( $dst, $dst_file ) )
-               return $dst_file;
-       elseif ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) )
-               return $dst_file;
-       else
-               return false;
+       $result = $editor->save( $dst_file );
+       return $dst_file;
 }
 
 /**
@@ -117,8 +74,6 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
                $imagesize = getimagesize( $file );
                $metadata['width'] = $imagesize[0];
                $metadata['height'] = $imagesize[1];
-               list($uwidth, $uheight) = wp_constrain_dimensions($metadata['width'], $metadata['height'], 128, 96);
-               $metadata['hwstring_small'] = "height='$uheight' width='$uwidth'";
 
                // Make the file path relative to the upload dir
                $metadata['file'] = _wp_relative_upload_path($file);
@@ -144,10 +99,13 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
 
                $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes );
 
-               foreach ($sizes as $size => $size_data ) {
-                       $resized = image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'] );
-                       if ( $resized )
-                               $metadata['sizes'][$size] = $resized;
+               if ( $sizes ) {
+                       $editor = wp_get_image_editor( $file );
+
+                       if ( ! is_wp_error( $editor ) )
+                               $metadata['sizes'] = $editor->multi_resize( $sizes );
+               } else {
+                       $metadata['sizes'] = array();
                }
 
                // fetch additional metadata from exif/iptc
@@ -160,20 +118,6 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
        return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id );
 }
 
-/**
- * Calculated the new dimensions for a downsampled image.
- *
- * @since 2.0.0
- * @see wp_constrain_dimensions()
- *
- * @param int $width Current width of the image
- * @param int $height Current height of the image
- * @return mixed Array(height,width) of shrunk dimensions.
- */
-function get_udims( $width, $height) {
-       return wp_constrain_dimensions( $width, $height, 128, 96 );
-}
-
 /**
  * Convert a fraction string to a decimal.
  *
@@ -253,13 +197,13 @@ function wp_read_image_metadata( $file ) {
 
                        // headline, "A brief synopsis of the caption."
                        if ( ! empty( $iptc['2#105'][0] ) )
-                               $meta['title'] = utf8_encode( trim( $iptc['2#105'][0] ) );
+                               $meta['title'] = trim( $iptc['2#105'][0] );
                        // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways."
                        elseif ( ! empty( $iptc['2#005'][0] ) )
-                               $meta['title'] = utf8_encode( trim( $iptc['2#005'][0] ) );
+                               $meta['title'] = trim( $iptc['2#005'][0] );
 
                        if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption
-                               $caption = utf8_encode( trim( $iptc['2#120'][0] ) );
+                               $caption = trim( $iptc['2#120'][0] );
                                if ( empty( $meta['title'] ) ) {
                                        // Assume the title is stored in 2:120 if it's short.
                                        if ( strlen( $caption ) < 80 )
@@ -272,15 +216,15 @@ function wp_read_image_metadata( $file ) {
                        }
 
                        if ( ! empty( $iptc['2#110'][0] ) ) // credit
-                               $meta['credit'] = utf8_encode(trim($iptc['2#110'][0]));
+                               $meta['credit'] = trim( $iptc['2#110'][0] );
                        elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline
-                               $meta['credit'] = utf8_encode(trim($iptc['2#080'][0]));
+                               $meta['credit'] = trim( $iptc['2#080'][0] );
 
                        if ( ! empty( $iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time
                                $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] );
 
                        if ( ! empty( $iptc['2#116'][0] ) ) // copyright
-                               $meta['copyright'] = utf8_encode( trim( $iptc['2#116'][0] ) );
+                               $meta['copyright'] = trim( $iptc['2#116'][0] );
                 }
        }
 
@@ -289,42 +233,47 @@ function wp_read_image_metadata( $file ) {
                $exif = @exif_read_data( $file );
 
                if ( !empty( $exif['Title'] ) )
-                       $meta['title'] = utf8_encode( trim( $exif['Title'] ) );
+                       $meta['title'] = trim( $exif['Title'] );
 
                if ( ! empty( $exif['ImageDescription'] ) ) {
                        if ( empty( $meta['title'] ) && strlen( $exif['ImageDescription'] ) < 80 ) {
                                // Assume the title is stored in ImageDescription
-                               $meta['title'] = utf8_encode( trim( $exif['ImageDescription'] ) );
+                               $meta['title'] = trim( $exif['ImageDescription'] );
                                if ( ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] )
-                                       $meta['caption'] = utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) );
+                                       $meta['caption'] = trim( $exif['COMPUTED']['UserComment'] );
                        } elseif ( trim( $exif['ImageDescription'] ) != $meta['title'] ) {
-                               $meta['caption'] = utf8_encode( trim( $exif['ImageDescription'] ) );
+                               $meta['caption'] = trim( $exif['ImageDescription'] );
                        }
                } elseif ( ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) {
-                       $meta['caption'] = utf8_encode( trim( $exif['Comments'] ) );
+                       $meta['caption'] = trim( $exif['Comments'] );
                }
 
                if ( ! empty( $exif['Artist'] ) )
-                       $meta['credit'] = utf8_encode( trim( $exif['Artist'] ) );
+                       $meta['credit'] = trim( $exif['Artist'] );
                elseif ( ! empty($exif['Author'] ) )
-                       $meta['credit'] = utf8_encode( trim( $exif['Author'] ) );
+                       $meta['credit'] = trim( $exif['Author'] );
 
                if ( ! empty( $exif['Copyright'] ) )
-                       $meta['copyright'] = utf8_encode( trim( $exif['Copyright'] ) );
+                       $meta['copyright'] = trim( $exif['Copyright'] );
                if ( ! empty($exif['FNumber'] ) )
                        $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 );
                if ( ! empty($exif['Model'] ) )
-                       $meta['camera'] = utf8_encode( trim( $exif['Model'] ) );
+                       $meta['camera'] = trim( $exif['Model'] );
                if ( ! empty($exif['DateTimeDigitized'] ) )
                        $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] );
                if ( ! empty($exif['FocalLength'] ) )
-                       $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] );
+                       $meta['focal_length'] = (string) wp_exif_frac2dec( $exif['FocalLength'] );
                if ( ! empty($exif['ISOSpeedRatings'] ) ) {
                        $meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings'];
-                       $meta['iso'] = utf8_encode( trim( $meta['iso'] ) );
+                       $meta['iso'] = trim( $meta['iso'] );
                }
                if ( ! empty($exif['ExposureTime'] ) )
-                       $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] );
+                       $meta['shutter_speed'] = (string) wp_exif_frac2dec( $exif['ExposureTime'] );
+       }
+
+       foreach ( array( 'title', 'caption', 'credit', 'copyright', 'camera', 'iso' ) as $key ) {
+               if ( $meta[ $key ] && ! seems_utf8( $meta[ $key ] ) )
+                       $meta[ $key ] = utf8_encode( $meta[ $key ] );
        }
 
        return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType );
index 3713f18b401103b8307b5642d273897587787293..907bbb92fc7181672487043922f126fb294ed100 100644 (file)
@@ -89,7 +89,97 @@ function wp_import_handle_upload() {
        $id = wp_insert_attachment( $object, $file );
 
        // schedule a cleanup for one day from now in case of failed import or missing wp_import_cleanup() call
-       wp_schedule_single_event( time() + 86400, 'importer_scheduled_cleanup', array( $id ) );
+       wp_schedule_single_event( time() + DAY_IN_SECONDS, 'importer_scheduled_cleanup', array( $id ) );
 
        return array( 'file' => $file, 'id' => $id );
 }
+
+/**
+ * Returns a list from WordPress.org of popular importer plugins.
+ *
+ * @since 3.5.0
+ *
+ * @return array Importers with metadata for each.
+ */
+function wp_get_popular_importers() {
+       include ABSPATH . WPINC . '/version.php'; // include an unmodified $wp_version
+
+       $locale = get_locale();
+       $popular_importers = get_site_transient( 'popular_importers_' . $locale );
+
+       if ( ! $popular_importers ) {
+               $url = add_query_arg( 'locale', get_locale(), 'http://api.wordpress.org/core/importers/1.0/' );
+               $options = array( 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() );
+               $popular_importers = maybe_unserialize( wp_remote_retrieve_body( wp_remote_get( $url, $options ) ) );
+
+               if ( is_array( $popular_importers ) )
+                       set_site_transient( 'popular_importers_' . $locale, $popular_importers, 2 * DAY_IN_SECONDS );
+               else
+                       $popular_importers = false;
+       }
+
+       if ( is_array( $popular_importers ) ) {
+               // If the data was received as translated, return it as-is.
+               if ( $popular_importers['translated'] )
+                       return $popular_importers['importers'];
+
+               foreach ( $popular_importers['importers'] as &$importer ) {
+                       $importer['description'] = translate( $importer['description'] );
+                       if ( $importer['name'] != 'WordPress' )
+                               $importer['name'] = translate( $importer['name'] );
+               }
+               return $popular_importers['importers'];
+       }
+
+       return array(
+               // slug => name, description, plugin slug, and register_importer() slug
+               'blogger' => array(
+                       'name' => __( 'Blogger' ),
+                       'description' => __( 'Install the Blogger importer to import posts, comments, and users from a Blogger blog.' ),
+                       'plugin-slug' => 'blogger-importer',
+                       'importer-id' => 'blogger',
+               ),
+               'wpcat2tag' => array(
+                       'name' => __( 'Categories and Tags Converter' ),
+                       'description' => __( 'Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.' ),
+                       'plugin-slug' => 'wpcat2tag-importer',
+                       'importer-id' => 'wp-cat2tag',
+               ),
+               'livejournal' => array(
+                       'name' => __( 'LiveJournal' ),
+                       'description' => __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ),
+                       'plugin-slug' => 'livejournal-importer',
+                       'importer-id' => 'livejournal',
+               ),
+               'movabletype' => array(
+                       'name' => __( 'Movable Type and TypePad' ),
+                       'description' => __( 'Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.' ),
+                       'plugin-slug' => 'movabletype-importer',
+                       'importer-id' => 'mt',
+               ),
+               'opml' => array(
+                       'name' => __( 'Blogroll' ),
+                       'description' => __( 'Install the blogroll importer to import links in OPML format.' ),
+                       'plugin-slug' => 'opml-importer',
+                       'importer-id' => 'opml',
+               ),
+               'rss' => array(
+                       'name' => __( 'RSS' ),
+                       'description' => __( 'Install the RSS importer to import posts from an RSS feed.' ),
+                       'plugin-slug' => 'rss-importer',
+                       'importer-id' => 'rss',
+               ),
+               'tumblr' => array(
+                       'name' => __( 'Tumblr' ),
+                       'description' => __( 'Install the Tumblr importer to import posts &amp; media from Tumblr using their API.' ),
+                       'plugin-slug' => 'tumblr-importer',
+                       'importer-id' => 'tumblr',
+               ),
+               'wordpress' => array(
+                       'name' => 'WordPress',
+                       'description' => __( 'Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.' ),
+                       'plugin-slug' => 'wordpress-importer',
+                       'importer-id' => 'wordpress',
+               ),
+       );
+}
index 2dff578e0db2bf85a5cf67471d6102fe85721dc0..071df0dcc56038631e85d175499687155d37c34a 100644 (file)
  * @since 3.1.0
  *
  * @param string $class The type of the list table, which is the class name.
+ * @param array $args Optional. Arguments to pass to the class. Accepts 'screen'.
  * @return object|bool Object on success, false if the class does not exist.
  */
-function _get_list_table( $class ) {
+function _get_list_table( $class, $args = array() ) {
        $core_classes = array(
                //Site Admin
                'WP_Posts_List_Table' => 'posts',
@@ -39,7 +40,15 @@ function _get_list_table( $class ) {
        if ( isset( $core_classes[ $class ] ) ) {
                foreach ( (array) $core_classes[ $class ] as $required )
                        require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $required . '-list-table.php' );
-               return new $class;
+
+               if ( isset( $args['screen'] ) )
+                       $args['screen'] = convert_to_screen( $args['screen'] );
+               elseif ( isset( $GLOBALS['hook_suffix'] ) )
+                       $args['screen'] = get_current_screen();
+               else
+                       $args['screen'] = null;
+
+               return new $class( $args );
        }
 
        return false;
diff --git a/wp-admin/includes/manifest.php b/wp-admin/includes/manifest.php
deleted file mode 100644 (file)
index 99b4774..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-if ( !defined('ABSPATH') )
-       exit;
-
-require(ABSPATH . 'wp-includes/version.php');
-
-$man_version = md5( $tinymce_version . $manifest_version );
-$mce_ver = "ver=$tinymce_version";
-
-/**
- * Retrieve list of all cacheable WP files
- *
- * Array format: file, version (optional), bool (whether to use src and set ignoreQuery, defaults to true)
- */
-function &get_manifest() {
-       global $mce_ver;
-
-       $files = array(
-               array('images/align-center.png'),
-               array('images/align-left.png'),
-               array('images/align-none.png'),
-               array('images/align-right.png'),
-               array('images/archive-link.png'),
-               array('images/blue-grad.png'),
-               array('images/bubble_bg.gif'),
-               array('images/bubble_bg-rtl.gif'),
-               array('images/button-grad.png'),
-               array('images/button-grad-active.png'),
-               array('images/comment-grey-bubble.png'),
-               array('images/date-button.gif'),
-               array('images/ed-bg.gif'),
-               array('images/fade-butt.png'),
-               array('images/fav.png'),
-               array('images/fav-arrow.gif'),
-               array('images/fav-arrow-rtl.gif'),
-               array('images/generic.png'),
-               array('images/gray-grad.png'),
-               array('images/icons32.png'),
-               array('images/icons32-vs.png'),
-               array('images/list.png'),
-               array('images/wpspin_light.gif'),
-               array('images/wpspin_dark.gif'),
-               array('images/logo.gif'),
-               array('images/logo-ghost.png'),
-               array('images/media-button-image.gif'),
-               array('images/media-button-music.gif'),
-               array('images/media-button-other.gif'),
-               array('images/media-button-video.gif'),
-               array('images/menu.png'),
-               array('images/menu-vs.png'),
-               array('images/menu-arrows.gif'),
-               array('images/menu-bits.gif'),
-               array('images/menu-bits-rtl.gif'),
-               array('images/menu-dark.gif'),
-               array('images/menu-dark-rtl.gif'),
-               array('images/no.png'),
-               array('images/required.gif'),
-               array('images/resize.gif'),
-               array('images/screen-options-right.gif'),
-               array('images/screen-options-right-up.gif'),
-               array('images/se.png'),
-               array('images/star.gif'),
-               array('images/toggle-arrow.gif'),
-               array('images/toggle-arrow-rtl.gif'),
-               array('images/white-grad.png'),
-               array('images/white-grad-active.png'),
-               array('images/wordpress-logo.png'),
-               array('images/wp-logo.png'),
-               array('images/xit.gif'),
-               array('images/yes.png'),
-               array('../wp-includes/images/crystal/archive.png'),
-               array('../wp-includes/images/crystal/audio.png'),
-               array('../wp-includes/images/crystal/code.png'),
-               array('../wp-includes/images/crystal/default.png'),
-               array('../wp-includes/images/crystal/document.png'),
-               array('../wp-includes/images/crystal/interactive.png'),
-               array('../wp-includes/images/crystal/text.png'),
-               array('../wp-includes/images/crystal/video.png'),
-               array('../wp-includes/images/crystal/spreadsheet.png'),
-               array('../wp-includes/images/rss.png'),
-               array('../wp-includes/images/blank.gif'),
-               array('../wp-includes/images/upload.png'),
-               array('../wp-includes/js/thickbox/loadingAnimation.gif'),
-               array('../wp-includes/js/thickbox/tb-close.png'),
-       );
-
-       if ( @is_file('../wp-includes/js/tinymce/tiny_mce.js') ) :
-       $mce = array(
-               array('../wp-includes/js/tinymce/wp-tinymce.php', $mce_ver),
-
-               array('../wp-includes/js/tinymce/tiny_mce.js', $mce_ver),
-               array('../wp-includes/js/tinymce/langs/wp-langs-en.js', $mce_ver),
-               array('../wp-includes/js/tinymce/utils/mctabs.js', $mce_ver),
-               array('../wp-includes/js/tinymce/utils/validate.js', $mce_ver),
-               array('../wp-includes/js/tinymce/utils/form_utils.js', $mce_ver),
-               array('../wp-includes/js/tinymce/utils/editable_selects.js', $mce_ver),
-               array('../wp-includes/js/tinymce/tiny_mce_popup.js', $mce_ver),
-
-               array('../wp-includes/js/tinymce/themes/advanced/editor_template.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/source_editor.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/anchor.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/image.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/link.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/color_picker.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/charmap.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/color_picker.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/charmap.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/image.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/link.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/source_editor.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/js/anchor.js', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css', $mce_ver),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/template.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/media/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/media/js/media.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/media/media.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/media/css/content.css', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/media/css/media.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/paste/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/paste/js/pasteword.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/paste/js/pastetext.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/paste/pasteword.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/paste/blank.htm', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/paste/pastetext.htm', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/safari/editor_plugin.js', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/spellchecker/css/content.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/wordpress/css/content.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/editimage.html', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css', $mce_ver),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css', $mce_ver),
-
-               array('../wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js', $mce_ver),
-
-               array('../wp-includes/js/tinymce/themes/advanced/img/icons.gif'),
-               array('../wp-includes/js/tinymce/themes/advanced/img/colorpicker.jpg'),
-               array('../wp-includes/js/tinymce/themes/advanced/img/fm.gif'),
-               array('../wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png'),
-               array('../wp-includes/js/tinymce/themes/advanced/img/sflogo.png'),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png'),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif'),
-               array('../wp-includes/images/down_arrow.gif'),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/progress.gif'),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_check.gif'),
-               array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif'),
-               array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/flash.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/quicktime.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/realmedia.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/shockwave.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/windowsmedia.gif'),
-               array('../wp-includes/js/tinymce/plugins/media/img/trans.gif'),
-               array('../wp-includes/js/tinymce/plugins/spellchecker/img/wline.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/more.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/page.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/help.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/image.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/media.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/video.gif'),
-               array('../wp-includes/js/tinymce/plugins/wordpress/img/audio.gif'),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/img/image.png'),
-               array('../wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png'),
-               array('../wp-includes/js/tinymce/plugins/wpgallery/img/delete.png'),
-               array('../wp-includes/js/tinymce/plugins/wpgallery/img/edit.png'),
-               array('../wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png')
-       );
-       $files = array_merge($files, $mce);
-       endif;
-
-       return $files;
-}
index 179bfb8fc597cb1ff52b5466b017a36629ffe2b7..beb3dcc52a5f860dc9934c31be7ecb610c0d6c40 100644 (file)
@@ -7,11 +7,11 @@
  */
 
 /**
- * {@internal Missing Short Description}}
+ * Defines the default media upload tabs
  *
  * @since 2.5.0
  *
- * @return unknown
+ * @return array default tabs
  */
 function media_upload_tabs() {
        $_default_tabs = array(
@@ -25,12 +25,12 @@ function media_upload_tabs() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds the gallery tab back to the tabs array if post has image attachments
  *
  * @since 2.5.0
  *
- * @param unknown_type $tabs
- * @return unknown
+ * @param array $tabs
+ * @return array $tabs with gallery if post has image attachment
  */
 function update_gallery_tab($tabs) {
        global $wpdb;
@@ -94,18 +94,19 @@ function the_media_upload_tabs() {
  *
  * @since 2.5.0
  *
- * @param unknown_type $id
- * @param unknown_type $alt
- * @param unknown_type $title
- * @param unknown_type $align
- * @param unknown_type $url
- * @param unknown_type $rel
- * @param unknown_type $size
- * @return unknown
+ * @param integer $id image attachment id
+ * @param string $caption image caption
+ * @param string $alt image alt attribute
+ * @param string $title image title attribute
+ * @param string $align image css alignment property
+ * @param string $url image src url
+ * @param string|bool $rel image rel attribute
+ * @param string $size image size (thumbnail, medium, large, full or added  with add_image_size() )
+ * @return string the html to insert into editor
  */
 function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') {
 
-       $html = get_image_tag($id, $alt, $title, $align, $size);
+       $html = get_image_tag($id, $alt, '', $align, $size);
 
        $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : '';
 
@@ -118,18 +119,19 @@ function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel =
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds image shortcode with caption to editor
  *
  * @since 2.6.0
  *
- * @param unknown_type $html
- * @param unknown_type $id
- * @param unknown_type $alt
- * @param unknown_type $title
- * @param unknown_type $align
- * @param unknown_type $url
- * @param unknown_type $size
- * @return unknown
+ * @param string $html
+ * @param integer $id
+ * @param string $caption image caption
+ * @param string $alt image alt attribute
+ * @param string $title image title attribute
+ * @param string $align image css alignment property
+ * @param string $url image src url
+ * @param string $size image size (thumbnail, medium, large, full or added with add_image_size() )
+ * @return string
  */
 function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
 
@@ -170,11 +172,11 @@ function _cleanup_image_add_caption( $matches ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds image html to editor
  *
  * @since 2.5.0
  *
- * @param unknown_type $html
+ * @param string $html
  */
 function media_send_to_editor($html) {
 ?>
@@ -189,8 +191,6 @@ win.send_to_editor('<?php echo addslashes($html); ?>');
 }
 
 /**
- * {@internal Missing Short Description}}
- *
  * This handles the file upload POST itself, creating the attachment post.
  *
  * @since 2.5.0
@@ -269,7 +269,13 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
 function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) {
        $overrides = array('test_form'=>false);
 
-       $file = wp_handle_sideload($file_array, $overrides);
+       $time = current_time( 'mysql' );
+       if ( $post = get_post( $post_id ) ) {
+               if ( substr( $post->post_date, 0, 4 ) > 0 )
+                       $time = $post->post_date;
+       }
+
+       $file = wp_handle_sideload( $file_array, $overrides, $time );
        if ( isset($file['error']) )
                return new WP_Error( 'upload_error', $file['error'] );
 
@@ -312,14 +318,11 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data =
 }
 
 /**
- * {@internal Missing Short Description}}
- *
- * Wrap iframe content (produced by $content_func) in a doctype, html head/body
- * etc any additional function args will be passed to content_func.
+ * Adds the iframe to display content for the media upload page
  *
  * @since 2.5.0
  *
- * @param unknown_type $content_func
+ * @param array $content_func
  */
 function wp_iframe($content_func /* ... */) {
        _wp_admin_html_begin();
@@ -355,7 +358,7 @@ if ( is_string($content_func) )
        do_action( "admin_head_{$content_func}" );
 ?>
 </head>
-<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?> class="no-js">
+<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?> class="wp-core-ui no-js">
 <script type="text/javascript">
 document.body.className = document.body.className.replace('no-js', 'js');
 </script>
@@ -373,22 +376,36 @@ document.body.className = document.body.className.replace('no-js', 'js');
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds the media button to the editor
  *
  * @since 2.5.0
+ *
+ * @param string $editor_id
  */
 function media_buttons($editor_id = 'content') {
-       $context = apply_filters('media_buttons_context', __('Upload/Insert %s'));
+       $post = get_post();
+       if ( ! $post && ! empty( $GLOBALS['post_ID'] ) )
+               $post = $GLOBALS['post_ID'];
 
-       $img = '<img src="' . esc_url( admin_url( 'images/media-button.png?ver=20111005' ) ) . '" width="15" height="15" />';
+       wp_enqueue_media( array(
+               'post' => $post
+       ) );
 
-       echo '<a href="' . esc_url( get_upload_iframe_src() ) . '" class="thickbox add_media" id="' . esc_attr( $editor_id ) . '-add_media" title="' . esc_attr__( 'Add Media' ) . '" onclick="return false;">' . sprintf( $context, $img ) . '</a>';
-}
-add_action( 'media_buttons', 'media_buttons' );
+       $img = '<span class="wp-media-buttons-icon"></span> ';
+
+       echo '<a href="#" class="button insert-media add_media" data-editor="' . esc_attr( $editor_id ) . '" title="' . esc_attr__( 'Add Media' ) . '">' . $img . __( 'Add Media' ) . '</a>';
+
+       // Don't use this filter. Want to add a button? Use the media_buttons action.
+       $legacy_filter = apply_filters('media_buttons_context', ''); // deprecated
 
-function _media_button($title, $icon, $type, $id) {
-       return "<a href='" . esc_url( get_upload_iframe_src($type) ) . "' id='{$id}-add_{$type}' class='thickbox add_$type' title='" . esc_attr( $title ) . "'><img src='" . esc_url( admin_url( $icon ) ) . "' alt='$title' onclick='return false;' /></a>";
+       if ( $legacy_filter ) {
+               // #WP22559. Close <a> if a plugin started by closing <a> to open their own <a> tag.
+               if ( 0 === stripos( trim( $legacy_filter ), '</a>' ) )
+                       $legacy_filter .= '</a>';
+               echo $legacy_filter;
+       }
 }
+add_action( 'media_buttons', 'media_buttons' );
 
 function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
        global $post_ID;
@@ -414,7 +431,7 @@ function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
  *
  * @since 2.5.0
  *
- * @return unknown
+ * @return mixed void|object WP_Error on failure
  */
 function media_upload_form_handler() {
        check_admin_referer('media-form');
@@ -506,7 +523,7 @@ function media_upload_form_handler() {
  *
  * @since 2.5.0
  *
- * @return unknown
+ * @return mixed
  */
 function wp_media_upload_handler() {
        $errors = array();
@@ -599,7 +616,7 @@ function media_sideload_image($file, $post_id, $desc = null) {
 
                // Set variables for storage
                // fix file filename for query strings
-               preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches);
+               preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
                $file_array['name'] = basename($matches[0]);
                $file_array['tmp_name'] = $tmp;
 
@@ -677,9 +694,9 @@ function media_upload_library() {
  *
  * @since 2.7.0
  *
- * @param unknown_type $post
- * @param unknown_type $checked
- * @return unknown
+ * @param object $post
+ * @param string $checked
+ * @return string
  */
 function image_align_input_fields( $post, $checked = '' ) {
 
@@ -705,9 +722,9 @@ function image_align_input_fields( $post, $checked = '' ) {
  *
  * @since 2.7.0
  *
- * @param unknown_type $post
- * @param unknown_type $check
- * @return unknown
+ * @param object $post
+ * @param bool|string $check
+ * @return array
  */
 function image_size_input_fields( $post, $check = '' ) {
 
@@ -760,9 +777,9 @@ function image_size_input_fields( $post, $check = '' ) {
  *
  * @since 2.7.0
  *
- * @param unknown_type $post
- * @param unknown_type $url_type
- * @return unknown
+ * @param object $post
+ * @param string $url_type
+ * @return string
  */
 function image_link_input_fields($post, $url_type = '') {
 
@@ -798,48 +815,22 @@ function wp_caption_input_textarea($edit_post) {
  *
  * @since 2.5.0
  *
- * @param unknown_type $form_fields
- * @param unknown_type $post
- * @return unknown
+ * @param array $form_fields
+ * @param object $post
+ * @return array
  */
 function image_attachment_fields_to_edit($form_fields, $post) {
-       if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
-               $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
-               if ( empty($alt) )
-                       $alt = '';
-
-               $form_fields['post_title']['required'] = true;
-
-               $form_fields['image_alt'] = array(
-                       'value' => $alt,
-                       'label' => __('Alternate Text'),
-                       'helps' => __('Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;')
-               );
-
-               $form_fields['align'] = array(
-                       'label' => __('Alignment'),
-                       'input' => 'html',
-                       'html'  => image_align_input_fields($post, get_option('image_default_align')),
-               );
-
-               $form_fields['image-size'] = image_size_input_fields( $post, get_option('image_default_size', 'medium') );
-
-       } else {
-               unset( $form_fields['image_alt'] );
-       }
        return $form_fields;
 }
 
-add_filter('attachment_fields_to_edit', 'image_attachment_fields_to_edit', 10, 2);
-
 /**
  * {@internal Missing Short Description}}
  *
  * @since 2.5.0
  *
- * @param unknown_type $form_fields
- * @param unknown_type $post
- * @return unknown
+ * @param array $form_fields
+ * @param object $post {@internal $post not used}}
+ * @return array
  */
 function media_single_attachment_fields_to_edit( $form_fields, $post ) {
        unset($form_fields['url'], $form_fields['align'], $form_fields['image-size']);
@@ -851,9 +842,9 @@ function media_single_attachment_fields_to_edit( $form_fields, $post ) {
  *
  * @since 2.8.0
  *
- * @param unknown_type $form_fields
- * @param unknown_type $post
- * @return unknown
+ * @param array $form_fields
+ * @param object $post {@internal $post not used}}
+ * @return array
  */
 function media_post_single_attachment_fields_to_edit( $form_fields, $post ) {
        unset($form_fields['image_url']);
@@ -861,13 +852,17 @@ function media_post_single_attachment_fields_to_edit( $form_fields, $post ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Filters input from media_upload_form_handler() and assigns a default
+ * post_title from the file name if none supplied.
+ *
+ * Illustrates the use of the attachment_fields_to_save filter
+ * which can be used to add default values to any field before saving to DB.
  *
  * @since 2.5.0
  *
- * @param unknown_type $post
- * @param unknown_type $attachment
- * @return unknown
+ * @param object $post
+ * @param array $attachment {@internal $attachment not used}}
+ * @return array
  */
 function image_attachment_fields_to_save($post, $attachment) {
        if ( substr($post['post_mime_type'], 0, 5) == 'image' ) {
@@ -887,13 +882,13 @@ add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2
  *
  * @since 2.5.0
  *
- * @param unknown_type $html
- * @param unknown_type $attachment_id
- * @param unknown_type $attachment
- * @return unknown
+ * @param string $html
+ * @param integer $attachment_id
+ * @param array $attachment
+ * @return array
  */
 function image_media_send_to_editor($html, $attachment_id, $attachment) {
-       $post =& get_post($attachment_id);
+       $post = get_post($attachment_id);
        if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
                $url = $attachment['url'];
                $align = !empty($attachment['align']) ? $attachment['align'] : 'none';
@@ -914,15 +909,15 @@ add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3);
  *
  * @since 2.5.0
  *
- * @param unknown_type $post
- * @param unknown_type $errors
- * @return unknown
+ * @param object $post
+ * @param array $errors
+ * @return array
  */
 function get_attachment_fields_to_edit($post, $errors = null) {
        if ( is_int($post) )
-               $post =& get_post($post);
+               $post = get_post($post);
        if ( is_array($post) )
-               $post = (object) $post;
+               $post = new WP_Post( (object) $post );
 
        $image_url = wp_get_attachment_url($post->ID);
 
@@ -965,7 +960,7 @@ function get_attachment_fields_to_edit($post, $errors = null) {
 
        foreach ( get_attachment_taxonomies($post) as $taxonomy ) {
                $t = (array) get_taxonomy($taxonomy);
-               if ( ! $t['public'] )
+               if ( ! $t['public'] || ! $t['show_ui'] )
                        continue;
                if ( empty($t['label']) )
                        $t['label'] = $taxonomy;
@@ -973,13 +968,13 @@ function get_attachment_fields_to_edit($post, $errors = null) {
                        $t['args'] = array();
 
                $terms = get_object_term_cache($post->ID, $taxonomy);
-               if ( empty($terms) )
+               if ( false === $terms )
                        $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']);
 
                $values = array();
 
                foreach ( $terms as $term )
-                       $values[] = $term->name;
+                       $values[] = $term->slug;
                $t['value'] = join(', ', $values);
 
                $form_fields[$taxonomy] = $t;
@@ -989,6 +984,32 @@ function get_attachment_fields_to_edit($post, $errors = null) {
        // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
        $form_fields = array_merge_recursive($form_fields, (array) $errors);
 
+       // This was formerly in image_attachment_fields_to_edit().
+       if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
+               $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
+               if ( empty($alt) )
+                       $alt = '';
+
+               $form_fields['post_title']['required'] = true;
+
+               $form_fields['image_alt'] = array(
+                       'value' => $alt,
+                       'label' => __('Alternative Text'),
+                       'helps' => __('Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;')
+               );
+
+               $form_fields['align'] = array(
+                       'label' => __('Alignment'),
+                       'input' => 'html',
+                       'html'  => image_align_input_fields($post, get_option('image_default_align')),
+               );
+
+               $form_fields['image-size'] = image_size_input_fields( $post, get_option('image_default_size', 'medium') );
+
+       } else {
+               unset( $form_fields['image_alt'] );
+       }
+
        $form_fields = apply_filters('attachment_fields_to_edit', $form_fields, $post);
 
        return $form_fields;
@@ -1060,7 +1081,7 @@ function get_media_item( $attachment_id, $args = null ) {
        $toggle_on  = __( 'Show' );
        $toggle_off = __( 'Hide' );
 
-       $filename = esc_html( basename( $post->guid ) );
+       $filename = esc_html( wp_basename( $post->guid ) );
        $title = esc_attr( $post->post_title );
 
        if ( $_tags = get_the_tags( $attachment_id ) ) {
@@ -1111,9 +1132,9 @@ function get_media_item( $attachment_id, $args = null ) {
        $media_dims = apply_filters( 'media_meta', $media_dims, $post );
 
        $image_edit_button = '';
-       if ( gd_edit_image_support( $post->post_mime_type ) ) {
+       if ( wp_attachment_is_image( $post->ID ) && wp_image_editor_supports( array( 'mime_type' => $post->post_mime_type ) ) ) {
                $nonce = wp_create_nonce( "image_editor-$post->ID" );
-               $image_edit_button = "<input type='button' id='imgedit-open-btn-$post->ID' onclick='imageEdit.open( $post->ID, \"$nonce\" )' class='button' value='" . esc_attr__( 'Edit Image' ) . "' /> <img src='" . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . "' class='imgedit-wait-spin' alt='' />";
+               $image_edit_button = "<input type='button' id='imgedit-open-btn-$post->ID' onclick='imageEdit.open( $post->ID, \"$nonce\" )' class='button' value='" . esc_attr__( 'Edit Image' ) . "' /> <span class='spinner'></span>";
        }
 
        $attachment_url = get_permalink( $attachment_id );
@@ -1156,16 +1177,16 @@ function get_media_item( $attachment_id, $args = null ) {
                $send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false );
        if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) {
                if ( !EMPTY_TRASH_DAYS ) {
-                       $delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Delete Permanently' ) . '</a>';
+                       $delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-post_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete-permanently'>" . __( 'Delete Permanently' ) . '</a>';
                } elseif ( !MEDIA_TRASH ) {
                        $delete = "<a href='#' class='del-link' onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __( 'Delete' ) . "</a>
                         <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'><p>" . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . "</p>
-                        <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
+                        <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-post_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
                         <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a>
                         </div>";
                } else {
-                       $delete = "<a href='" . wp_nonce_url( "post.php?action=trash&amp;post=$attachment_id", 'trash-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Move to Trash' ) . "</a>
-                       <a href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$attachment_id", 'untrash-attachment_' . $attachment_id ) . "' id='undo[$attachment_id]' class='undo hidden'>" . __( 'Undo' ) . "</a>";
+                       $delete = "<a href='" . wp_nonce_url( "post.php?action=trash&amp;post=$attachment_id", 'trash-post_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Move to Trash' ) . "</a>
+                       <a href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$attachment_id", 'untrash-post_' . $attachment_id ) . "' id='undo[$attachment_id]' class='undo hidden'>" . __( 'Undo' ) . "</a>";
                }
        } else {
                $delete = '';
@@ -1260,18 +1281,161 @@ function get_media_item( $attachment_id, $args = null ) {
        return $item;
 }
 
+function get_compat_media_markup( $attachment_id, $args = null ) {
+       $post = get_post( $attachment_id );
+
+       $default_args = array(
+               'errors' => null,
+               'in_modal' => false,
+       );
+
+       $user_can_edit = current_user_can( 'edit_post', $attachment_id );
+
+       $args = wp_parse_args( $args, $default_args );
+       $args = apply_filters( 'get_media_item_args', $args );
+
+       $form_fields = array();
+
+       if ( $args['in_modal'] ) {
+               foreach ( get_attachment_taxonomies($post) as $taxonomy ) {
+                       $t = (array) get_taxonomy($taxonomy);
+                       if ( ! $t['public'] || ! $t['show_ui'] )
+                               continue;
+                       if ( empty($t['label']) )
+                               $t['label'] = $taxonomy;
+                       if ( empty($t['args']) )
+                               $t['args'] = array();
+
+                       $terms = get_object_term_cache($post->ID, $taxonomy);
+                       if ( false === $terms )
+                               $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']);
+
+                       $values = array();
+
+                       foreach ( $terms as $term )
+                               $values[] = $term->slug;
+                       $t['value'] = join(', ', $values);
+                       $t['taxonomy'] = true;
+
+                       $form_fields[$taxonomy] = $t;
+               }
+       }
+
+       // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
+       // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
+       $form_fields = array_merge_recursive($form_fields, (array) $args['errors'] );
+
+       $form_fields = apply_filters( 'attachment_fields_to_edit', $form_fields, $post );
+
+       unset( $form_fields['image-size'], $form_fields['align'], $form_fields['image_alt'],
+               $form_fields['post_title'], $form_fields['post_excerpt'], $form_fields['post_content'],
+               $form_fields['url'], $form_fields['menu_order'], $form_fields['image_url'] );
+
+       $media_meta = apply_filters( 'media_meta', '', $post );
+
+       $defaults = array(
+               'input'         => 'text',
+               'required'      => false,
+               'value'         => '',
+               'extra_rows'    => array(),
+               'show_in_edit'  => true,
+               'show_in_modal' => true,
+       );
+
+       $hidden_fields = array();
+
+       $item = '';
+       foreach ( $form_fields as $id => $field ) {
+               if ( $id[0] == '_' )
+                       continue;
+
+               $name = "attachments[$attachment_id][$id]";
+               $id_attr = "attachments-$attachment_id-$id";
+
+               if ( !empty( $field['tr'] ) ) {
+                       $item .= $field['tr'];
+                       continue;
+               }
+
+               $field = array_merge( $defaults, $field );
+
+               if ( ( ! $field['show_in_edit'] && ! $args['in_modal'] ) || ( ! $field['show_in_modal'] && $args['in_modal'] ) )
+                       continue;
+
+               if ( $field['input'] == 'hidden' ) {
+                       $hidden_fields[$name] = $field['value'];
+                       continue;
+               }
+
+               $readonly      = ! $user_can_edit && ! empty( $field['taxonomy'] ) ? " readonly='readonly' " : '';
+               $required      = $field['required'] ? '<span class="alignright"><abbr title="required" class="required">*</abbr></span>' : '';
+               $aria_required = $field['required'] ? " aria-required='true' " : '';
+               $class  = 'compat-field-' . $id;
+               $class .= $field['required'] ? ' form-required' : '';
+
+               $item .= "\t\t<tr class='$class'>";
+               $item .= "\t\t\t<th valign='top' scope='row' class='label'><label for='$id_attr'><span class='alignleft'>{$field['label']}</span>$required<br class='clear' /></label>";
+               $item .= "</th>\n\t\t\t<td class='field'>";
+
+               if ( !empty( $field[ $field['input'] ] ) )
+                       $item .= $field[ $field['input'] ];
+               elseif ( $field['input'] == 'textarea' ) {
+                       if ( 'post_content' == $id && user_can_richedit() ) {
+                               // sanitize_post() skips the post_content when user_can_richedit
+                               $field['value'] = htmlspecialchars( $field['value'], ENT_QUOTES );
+                       }
+                       $item .= "<textarea id='$id_attr' name='$name' $aria_required>" . $field['value'] . '</textarea>';
+               } else {
+                       $item .= "<input type='text' class='text' id='$id_attr' name='$name' value='" . esc_attr( $field['value'] ) . "' $readonly $aria_required />";
+               }
+               if ( !empty( $field['helps'] ) )
+                       $item .= "<p class='help'>" . join( "</p>\n<p class='help'>", array_unique( (array) $field['helps'] ) ) . '</p>';
+               $item .= "</td>\n\t\t</tr>\n";
+
+               $extra_rows = array();
+
+               if ( !empty( $field['errors'] ) )
+                       foreach ( array_unique( (array) $field['errors'] ) as $error )
+                               $extra_rows['error'][] = $error;
+
+               if ( !empty( $field['extra_rows'] ) )
+                       foreach ( $field['extra_rows'] as $class => $rows )
+                               foreach ( (array) $rows as $html )
+                                       $extra_rows[$class][] = $html;
+
+               foreach ( $extra_rows as $class => $rows )
+                       foreach ( $rows as $html )
+                               $item .= "\t\t<tr><td></td><td class='$class'>$html</td></tr>\n";
+       }
+
+       if ( !empty( $form_fields['_final'] ) )
+               $item .= "\t\t<tr class='final'><td colspan='2'>{$form_fields['_final']}</td></tr>\n";
+       if ( $item )
+               $item = '<table class="compat-attachment-fields">' . $item . '</table>';
+
+       foreach ( $hidden_fields as $hidden_field => $value ) {
+               $item .= '<input type="hidden" name="' . esc_attr( $hidden_field ) . '" value="' . esc_attr( $value ) . '" />' . "\n";
+       }
+
+       return array(
+               'item'   => $item,
+               'meta'   => $media_meta,
+       );
+}
+
 /**
  * {@internal Missing Short Description}}
  *
  * @since 2.5.0
  */
 function media_upload_header() {
-       ?>
-       <script type="text/javascript">post_id = <?php echo intval($_REQUEST['post_id']); ?>;</script>
-       <div id="media-upload-header">
-       <?php the_media_upload_tabs(); ?>
-       </div>
-       <?php
+       $post_id = isset( $_REQUEST['post_id'] ) ? intval( $_REQUEST['post_id'] ) : 0;
+       echo '<script type="text/javascript">post_id = ' . $post_id . ";</script>\n";
+       if ( empty( $_GET['chromeless'] ) ) {
+               echo '<div id="media-upload-header">';
+               the_media_upload_tabs();
+               echo '</div>';
+       }
 }
 
 /**
@@ -1322,9 +1486,8 @@ function media_upload_form( $errors = null ) {
 
 ?></div>
 <?php
-// Check quota for this blog if multisite
 if ( is_multisite() && !is_upload_space_available() ) {
-       echo '<p>' . sprintf( __( 'Sorry, you have filled your storage quota (%s MB).' ), get_space_allowed() ) . '</p>';
+       do_action( 'upload_ui_over_quota' );
        return;
 }
 
@@ -1357,6 +1520,11 @@ $plupload_init = array(
        'multipart_params' => $post_params
 );
 
+// Multi-file uploading doesn't currently work in iOS Safari,
+// single-file allows the built-in camera to be used as source for images
+if ( wp_is_mobile() )
+       $plupload_init['multi_selection'] = false;
+
 $plupload_init = apply_filters( 'plupload_init', $plupload_init );
 
 ?>
@@ -1413,9 +1581,9 @@ if ( ($is_IE || $is_opera) && $max_upload_size > 100 * 1024 * 1024 ) { ?>
  *
  * @since 2.5.0
  *
- * @param unknown_type $type
- * @param unknown_type $errors
- * @param unknown_type $id
+ * @param string $type
+ * @param object $errors
+ * @param integer $id
  */
 function media_upload_type_form($type = 'file', $errors = null, $id = null) {
 
@@ -1476,9 +1644,9 @@ if ( $id ) {
  *
  * @since 2.7.0
  *
- * @param unknown_type $type
- * @param unknown_type $errors
- * @param unknown_type $id
+ * @param string $type
+ * @param object $errors
+ * @param integer $id
  */
 function media_upload_type_url_form($type = null, $errors = null, $id = null) {
        if ( null === $type )
@@ -1486,7 +1654,7 @@ function media_upload_type_url_form($type = null, $errors = null, $id = null) {
 
        media_upload_header();
 
-       $post_id = intval($_REQUEST['post_id']);
+       $post_id = isset( $_REQUEST['post_id'] ) ? intval( $_REQUEST['post_id'] ) : 0;
 
        $form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id");
        $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
@@ -1516,11 +1684,6 @@ var addExtImage = {
                if ( '' == f.src.value || '' == t.width )
                        return false;
 
-               if ( f.title.value ) {
-                       title = f.title.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-                       title = ' title="'+title+'"';
-               }
-
                if ( f.alt.value )
                        alt = f.alt.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
 
@@ -1537,7 +1700,7 @@ var addExtImage = {
 
                cls = caption ? '' : ' class="'+t.align+'"';
 
-               html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
+               html = '<img alt="'+alt+'" src="'+f.src.value+'"'+cls+' width="'+t.width+'" height="'+t.height+'" />';
 
                if ( f.url.value ) {
                        url = f.url.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
@@ -1582,7 +1745,7 @@ var addExtImage = {
                        return false;
                }
 
-               document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />';
+               document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" width="16" />';
                t.preloadImg = new Image();
                t.preloadImg.onload = t.updateImageData;
                t.preloadImg.onerror = t.resetImageData;
@@ -1609,11 +1772,11 @@ jQuery(document).ready( function($) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds gallery form to upload iframe
  *
  * @since 2.5.0
  *
- * @param unknown_type $errors
+ * @param array $errors
  */
 function media_upload_gallery_form($errors) {
        global $redir_tab, $type;
@@ -1759,14 +1922,14 @@ jQuery(function($){
  *
  * @since 2.5.0
  *
- * @param unknown_type $errors
+ * @param array $errors
  */
 function media_upload_library_form($errors) {
        global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;
 
        media_upload_header();
 
-       $post_id = intval($_REQUEST['post_id']);
+       $post_id = isset( $_REQUEST['post_id'] ) ? intval( $_REQUEST['post_id'] ) : 0;
 
        $form_action_url = admin_url("media-upload.php?type=$type&tab=library&post_id=$post_id");
        $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
@@ -1884,7 +2047,7 @@ foreach ($arc_result as $arc_row) {
 </select>
 <?php } ?>
 
-<?php submit_button( __( 'Filter &#187;' ), 'secondary', 'post-query-submit', false ); ?>
+<?php submit_button( __( 'Filter &#187;' ), 'button', 'post-query-submit', false ); ?>
 
 </div>
 
@@ -1922,18 +2085,19 @@ jQuery(function($){
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Creates the form for external url
  *
  * @since 2.7.0
  *
- * @return unknown
+ * @param string $default_view
+ * @return string the form html
  */
 function wp_media_insert_url_form( $default_view = 'image' ) {
        if ( !apply_filters( 'disable_captions', '' ) ) {
                $caption = '
                <tr class="image-only">
                        <th valign="top" scope="row" class="label">
-                               <span class="alignleft"><label for="caption">' . __('Image Caption') . '</label></span>
+                               <label for="caption"><span class="alignleft">' . __('Image Caption') . '</span></label>
                        </th>
                        <td class="field"><textarea id="caption" name="caption"></textarea></td>
                </tr>
@@ -1958,7 +2122,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
        <table class="describe ' . $table_class . '"><tbody>
                <tr>
                        <th valign="top" scope="row" class="label" style="width:130px;">
-                               <span class="alignleft"><label for="src">' . __('URL') . '</label></span>
+                               <label for="src"><span class="alignleft">' . __('URL') . '</span></label>
                                <span class="alignright"><abbr id="status_img" title="required" class="required">*</abbr></span>
                        </th>
                        <td class="field"><input id="src" name="src" value="" type="text" aria-required="true" onblur="addExtImage.getImageData()" /></td>
@@ -1966,7 +2130,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
 
                <tr>
                        <th valign="top" scope="row" class="label">
-                               <span class="alignleft"><label for="title">' . __('Title') . '</label></span>
+                               <label for="title"><span class="alignleft">' . __('Title') . '</span></label>
                                <span class="alignright"><abbr title="required" class="required">*</abbr></span>
                        </th>
                        <td class="field"><input id="title" name="title" value="" type="text" aria-required="true" /></td>
@@ -1976,7 +2140,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
 
                <tr class="image-only">
                        <th valign="top" scope="row" class="label">
-                               <span class="alignleft"><label for="alt">' . __('Alternate Text') . '</label></span>
+                               <label for="alt"><span class="alignleft">' . __('Alternative Text') . '</span></label>
                        </th>
                        <td class="field"><input id="alt" name="alt" value="" type="text" aria-required="true" />
                        <p class="help">' . __('Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;') . '</p></td>
@@ -1998,7 +2162,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
 
                <tr class="image-only">
                        <th valign="top" scope="row" class="label">
-                               <span class="alignleft"><label for="url">' . __('Link Image To:') . '</label></span>
+                               <label for="url"><span class="alignleft">' . __('Link Image To:') . '</span></label>
                        </th>
                        <td class="field"><input id="url" name="url" value="" type="text" /><br />
 
@@ -2023,46 +2187,29 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
 
 }
 
-function _insert_into_post_button($type) {
-       if ( !post_type_supports(get_post_type($_GET['post_id']), 'editor') )
-               return '';
-
-       if ( 'image' == $type )
-       return '
-               <tr>
-                       <td></td>
-                       <td>
-                               <input type="button" class="button" id="go_button" style="color:#bbb;" onclick="addExtImage.insert()" value="' . esc_attr__('Insert into Post') . '" />
-                       </td>
-               </tr>
-       ';
-
-       return '
-               <tr>
-                       <td></td>
-                       <td>
-                               ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . '
-                       </td>
-               </tr>
-       ';
-}
-
 /**
- * {@internal Missing Short Description}}
+ * Displays the multi-file uploader message.
  *
  * @since 2.6.0
  */
 function media_upload_flash_bypass() {
+       $browser_uploader = admin_url( 'media-new.php?browser-uploader' );
+
+       if ( $post = get_post() )
+               $browser_uploader .= '&amp;post_id=' . intval( $post->ID );
+       elseif ( ! empty( $GLOBALS['post_ID'] ) )
+               $browser_uploader .= '&amp;post_id=' . intval( $GLOBALS['post_ID'] );
+
        ?>
        <p class="upload-flash-bypass">
-       <?php _e('You are using the multi-file uploader. Problems? Try the <a href="#">browser uploader</a> instead.'); ?>
+       <?php printf( __( 'You are using the multi-file uploader. Problems? Try the <a href="%1$s" target="%2$s">browser uploader</a> instead.' ), $browser_uploader, '_blank' ); ?>
        </p>
        <?php
 }
 add_action('post-plupload-upload-ui', 'media_upload_flash_bypass');
 
 /**
- * {@internal Missing Short Description}}
+ * Displays the browser's built-in uploader message.
  *
  * @since 2.6.0
  */
@@ -2075,17 +2222,17 @@ function media_upload_html_bypass() {
 }
 add_action('post-html-upload-ui', 'media_upload_html_bypass');
 
-function media_upload_text_after() {
-       ?>
-       <span class="after-file-upload"><?php _e('After a file has been uploaded, you can add titles and descriptions.'); ?></span>
-       <?php
-}
-add_action('post-upload-ui', 'media_upload_text_after', 5);
+/**
+ * Used to display a "After a file has been uploaded..." help message.
+ *
+ * @since 3.3.0
+ */
+function media_upload_text_after() {}
 
 /**
- * {@internal Missing Short Description}}
+ * Displays the checkbox to scale images.
  *
- * @since 2.6.0
+ * @since 3.3.0
  */
 function media_upload_max_image_resize() {
        $checked = get_user_setting('upload_resize') ? ' checked="true"' : '';
@@ -2106,6 +2253,133 @@ function media_upload_max_image_resize() {
 <?php
 }
 
+/**
+ * Displays the out of storage quota message in Multisite.
+ *
+ * @since 3.5.0
+ */
+function multisite_over_quota_message() {
+       echo '<p>' . sprintf( __( 'Sorry, you have used all of your storage quota of %s MB.' ), get_space_allowed() ) . '</p>';
+}
+
+/**
+ * Displays the image and editor in the post editor
+ *
+ * @since 3.5.0
+ */
+function edit_form_image_editor() {
+       $post = get_post();
+
+       $open = isset( $_GET['image-editor'] );
+       if ( $open )
+               require_once ABSPATH . 'wp-admin/includes/image-edit.php';
+
+       $thumb_url = false;
+       if ( $attachment_id = intval( $post->ID ) )
+               $thumb_url = wp_get_attachment_image_src( $attachment_id, array( 900, 450 ), true );
+
+       $filename = esc_html( basename( $post->guid ) );
+       $title = esc_attr( $post->post_title );
+       $alt_text = get_post_meta( $post->ID, '_wp_attachment_image_alt', true );
+
+       $att_url = wp_get_attachment_url( $post->ID );
+
+       if ( wp_attachment_is_image( $post->ID ) ) :
+               $image_edit_button = '';
+               if ( wp_image_editor_supports( array( 'mime_type' => $post->post_mime_type ) ) ) {
+                       $nonce = wp_create_nonce( "image_editor-$post->ID" );
+                       $image_edit_button = "<input type='button' id='imgedit-open-btn-$post->ID' onclick='imageEdit.open( $post->ID, \"$nonce\" )' class='button' value='" . esc_attr__( 'Edit Image' ) . "' /> <span class='spinner'></span>";
+               }
+       ?>
+       <div class="wp_attachment_holder">
+               <div class="imgedit-response" id="imgedit-response-<?php echo $attachment_id; ?>"></div>
+
+               <div<?php if ( $open ) echo ' style="display:none"'; ?> class="wp_attachment_image" id="media-head-<?php echo $attachment_id; ?>">
+                       <p id="thumbnail-head-<?php echo $attachment_id; ?>"><img class="thumbnail" src="<?php echo set_url_scheme( $thumb_url[0] ); ?>" style="max-width:100%" alt="" /></p>
+                       <p><?php echo $image_edit_button; ?></p>
+               </div>
+               <div<?php if ( ! $open ) echo ' style="display:none"'; ?> class="image-editor" id="image-editor-<?php echo $attachment_id; ?>">
+                       <?php if ( $open ) wp_image_editor( $attachment_id ); ?>
+               </div>
+       </div>
+       <?php endif; ?>
+
+       <div class="wp_attachment_details">
+               <p>
+                       <label for="attachment_caption"><strong><?php _e( 'Caption' ); ?></strong></label><br />
+                       <textarea class="widefat" name="excerpt" id="attachment_caption"><?php echo $post->post_excerpt; ?></textarea>
+               </p>
+
+       <?php if ( 'image' === substr( $post->post_mime_type, 0, 5 ) ) : ?>
+               <p>
+                       <label for="attachment_alt"><strong><?php _e( 'Alternative Text' ); ?></strong></label><br />
+                       <input type="text" class="widefat" name="_wp_attachment_image_alt" id="attachment_alt" value="<?php echo esc_attr( $alt_text ); ?>" />
+               </p>
+       <?php endif; ?>
+
+       <?php
+               $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
+               $editor_args = array(
+                       'textarea_name' => 'content',
+                       'textarea_rows' => 5,
+                       'media_buttons' => false,
+                       'tinymce' => false,
+                       'quicktags' => $quicktags_settings,
+               );
+       ?>
+
+       <label for="content"><strong><?php _e( 'Description' ); ?></strong></label>
+       <?php wp_editor( $post->post_content, 'attachment_content', $editor_args ); ?>
+
+       </div>
+       <?php
+       $extras = get_compat_media_markup( $post->ID );
+       echo $extras['item'];
+       echo '<input type="hidden" id="image-edit-context" value="edit-attachment" />' . "\n";
+}
+
+/**
+ * Displays non-editable attachment metadata in the publish metabox
+ *
+ * @since 3.5.0
+ */
+function attachment_submitbox_metadata() {
+       $post = get_post();
+
+       $filename = esc_html( basename( $post->guid ) );
+
+       $media_dims = '';
+       $meta = wp_get_attachment_metadata( $post->ID );
+       if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) )
+               $media_dims .= "<span id='media-dims-$post->ID'>{$meta['width']}&nbsp;&times;&nbsp;{$meta['height']}</span> ";
+       $media_dims = apply_filters( 'media_meta', $media_dims, $post );
+
+       $att_url = wp_get_attachment_url( $post->ID );
+?>
+       <div class="misc-pub-section">
+                       <label for="attachment_url"><?php _e( 'File URL:' ); ?></label>
+                       <input type="text" class="widefat urlfield" readonly="readonly" name="attachment_url" value="<?php echo esc_attr($att_url); ?>" />
+       </div>
+       <div class="misc-pub-section">
+               <?php _e( 'File name:' ); ?> <strong><?php echo $filename; ?></strong>
+       </div>
+       <div class="misc-pub-section">
+               <?php _e( 'File type:' ); ?> <strong><?php
+                       if ( preg_match( '/^.*?\.(\w+)$/', get_attached_file( $post->ID ), $matches ) )
+                               echo esc_html( strtoupper( $matches[1] ) );
+                       else
+                               echo strtoupper( str_replace( 'image/', '', $post->post_mime_type ) );
+               ?></strong>
+       </div>
+
+<?php if ( $media_dims ) : ?>
+       <div class="misc-pub-section">
+               <?php _e( 'Dimensions:' ); ?> <strong><?php echo $media_dims; ?></strong>
+       </div>
+<?php
+       endif;
+}
+
 add_filter( 'async_upload_image', 'get_media_item', 10, 2 );
 add_filter( 'async_upload_audio', 'get_media_item', 10, 2 );
 add_filter( 'async_upload_video', 'get_media_item', 10, 2 );
@@ -2118,3 +2392,5 @@ add_action( 'media_upload_file',  'wp_media_upload_handler' );
 
 add_filter( 'media_upload_gallery', 'media_upload_gallery' );
 add_filter( 'media_upload_library', 'media_upload_library' );
+
+add_action( 'attachment_submitbox_misc_actions', 'attachment_submitbox_metadata' );
index fde0af8c76b6b7b621dc0f25849ff31cf55bbc00..2b0b2864fcfd1d69679508b48e6ffc7272766749 100644 (file)
@@ -28,11 +28,11 @@ function post_submit_meta_box($post) {
 <div id="minor-publishing-actions">
 <div id="save-action">
 <?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?>
-<input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
+<input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" class="button" />
 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
-<input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
+<input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" class="button" />
 <?php } ?>
-<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading" id="draft-ajax-loading" alt="" />
+<span class="spinner"></span>
 </div>
 <?php if ( $post_type_object->public ) : ?>
 <div id="preview-action">
@@ -41,19 +41,17 @@ if ( 'publish' == $post->post_status ) {
        $preview_link = esc_url( get_permalink( $post->ID ) );
        $preview_button = __( 'Preview Changes' );
 } else {
-       $preview_link = get_permalink( $post->ID );
-       if ( is_ssl() )
-               $preview_link = str_replace( 'http://', 'https://', $preview_link );
+       $preview_link = set_url_scheme( get_permalink( $post->ID ) );
        $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) );
        $preview_button = __( 'Preview' );
 }
 ?>
-<a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
+<a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview"><?php echo $preview_button; ?></a>
 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
 </div>
 <?php endif; // public post type ?>
 <div class="clear"></div>
-</div><?php // /minor-publishing-actions ?>
+</div><!-- #minor-publishing-actions -->
 
 <div id="misc-publishing-actions">
 
@@ -81,11 +79,11 @@ switch ( $post->post_status ) {
 ?>
 </span>
 <?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
-<a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+<a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js"><?php _e('Edit') ?></a>
 
 <div id="post-status-select" class="hide-if-js">
 <input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo esc_attr( ('auto-draft' == $post->post_status ) ? 'draft' : $post->post_status); ?>" />
-<select name='post_status' id='post_status' tabindex='4'>
+<select name='post_status' id='post_status'>
 <?php if ( 'publish' == $post->post_status ) : ?>
 <option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
 <?php elseif ( 'private' == $post->post_status ) : ?>
@@ -105,7 +103,7 @@ switch ( $post->post_status ) {
 </div>
 
 <?php } ?>
-</div><?php // /misc-pub-section ?>
+</div><!-- .misc-pub-section -->
 
 <div class="misc-pub-section" id="visibility">
 <?php _e('Visibility:'); ?> <span id="post-visibility-display"><?php
@@ -137,7 +135,7 @@ echo esc_html( $visibility_trans ); ?></span>
 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
 <?php if ( $post_type == 'post' && current_user_can( 'edit_others_posts' ) ) : ?>
-<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky( $post->ID ) ); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e( 'Stick this post to the front page' ); ?></label><br /></span>
+<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky( $post->ID ) ); ?> /> <label for="sticky" class="selectit"><?php _e( 'Stick this post to the front page' ); ?></label><br /></span>
 <?php endif; ?>
 <input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
 <span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
@@ -150,7 +148,7 @@ echo esc_html( $visibility_trans ); ?></span>
 </div>
 <?php } ?>
 
-</div><?php // /misc-pub-section ?>
+</div><!-- .misc-pub-section -->
 
 <?php
 // translators: Publish box date format, see http://php.net/date
@@ -177,8 +175,8 @@ if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
 <div class="misc-pub-section curtime">
        <span id="timestamp">
        <?php printf($stamp, $date); ?></span>
-       <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
-       <div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
+       <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js"><?php _e('Edit') ?></a>
+       <div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'), 1); ?></div>
 </div><?php // /misc-pub-section ?>
 <?php endif; ?>
 
@@ -202,25 +200,25 @@ if ( current_user_can( "delete_post", $post->ID ) ) {
 </div>
 
 <div id="publishing-action">
-<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading" id="ajax-loading" alt="" />
+<span class="spinner"></span>
 <?php
 if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) {
        if ( $can_publish ) :
                if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
                <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Schedule') ?>" />
-               <?php submit_button( __( 'Schedule' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
+               <?php submit_button( __( 'Schedule' ), 'primary button-large', 'publish', false, array( 'accesskey' => 'p' ) ); ?>
 <?php  else : ?>
                <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Publish') ?>" />
-               <?php submit_button( __( 'Publish' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
+               <?php submit_button( __( 'Publish' ), 'primary button-large', 'publish', false, array( 'accesskey' => 'p' ) ); ?>
 <?php  endif;
        else : ?>
                <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Submit for Review') ?>" />
-               <?php submit_button( __( 'Submit for Review' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
+               <?php submit_button( __( 'Submit for Review' ), 'primary button-large', 'publish', false, array( 'accesskey' => 'p' ) ); ?>
 <?php
        endif;
 } else { ?>
                <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Update') ?>" />
-               <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Update') ?>" />
+               <input name="save" type="submit" class="button button-primary button-large" id="publish" accesskey="p" value="<?php esc_attr_e('Update') ?>" />
 <?php
 } ?>
 </div>
@@ -231,6 +229,72 @@ if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0
 <?php
 }
 
+/**
+ * Display attachment submit form fields.
+ *
+ * @since 3.5.0
+ *
+ * @param object $post
+ */
+function attachment_submit_meta_box( $post ) {
+       global $action;
+
+       $post_type = $post->post_type;
+       $post_type_object = get_post_type_object($post_type);
+       $can_publish = current_user_can($post_type_object->cap->publish_posts);
+?>
+<div class="submitbox" id="submitpost">
+
+<div id="minor-publishing">
+
+<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
+<div style="display:none;">
+<?php submit_button( __( 'Save' ), 'button', 'save' ); ?>
+</div>
+
+
+<div id="misc-publishing-actions">
+       <?php
+       // translators: Publish box date format, see http://php.net/date
+       $datef = __( 'M j, Y @ G:i' );
+       $stamp = __('Uploaded on: <b>%1$s</b>');
+       $date = date_i18n( $datef, strtotime( $post->post_date ) );
+       ?>
+       <div class="misc-pub-section curtime">
+               <span id="timestamp"><?php printf($stamp, $date); ?></span>
+       </div><!-- .misc-pub-section -->
+
+       <?php do_action('attachment_submitbox_misc_actions'); ?>
+</div><!-- #misc-publishing-actions -->
+<div class="clear"></div>
+</div><!-- #minor-publishing -->
+
+<div id="major-publishing-actions">
+       <div id="delete-action">
+       <?php
+       if ( current_user_can( 'delete_post', $post->ID ) )
+               if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) {
+                       echo "<a class='submitdelete deletion' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
+               } else {
+                       $delete_ays = ! MEDIA_TRASH ? " onclick='return showNotice.warn();'" : '';
+                       echo  "<a class='submitdelete deletion'$delete_ays href='" . get_delete_post_link( $post->ID, null, true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
+               }
+       ?>
+       </div>
+
+       <div id="publishing-action">
+               <span class="spinner"></span>
+               <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Update') ?>" />
+               <input name="save" type="submit" class="button-primary button-large" id="publish" accesskey="p" value="<?php esc_attr_e('Update') ?>" />
+       </div>
+       <div class="clear"></div>
+</div><!-- #major-publishing-actions -->
+
+</div>
+
+<?php
+}
+
 /**
  * Display post format form elements.
  *
@@ -288,7 +352,7 @@ function post_tags_meta_box($post, $box) {
                <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
                <div class="taghint"><?php echo $taxonomy->labels->add_new_item; ?></div>
                <p><input type="text" id="new-tag-<?php echo $tax_name; ?>" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
-               <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" /></p>
+               <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" /></p>
        </div>
        <p class="howto"><?php echo esc_attr( $taxonomy->labels->separate_items_with_commas ); ?></p>
        <?php endif; ?>
@@ -320,8 +384,8 @@ function post_categories_meta_box( $post, $box ) {
        ?>
        <div id="taxonomy-<?php echo $taxonomy; ?>" class="categorydiv">
                <ul id="<?php echo $taxonomy; ?>-tabs" class="category-tabs">
-                       <li class="tabs"><a href="#<?php echo $taxonomy; ?>-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li>
-                       <li class="hide-if-no-js"><a href="#<?php echo $taxonomy; ?>-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
+                       <li class="tabs"><a href="#<?php echo $taxonomy; ?>-all"><?php echo $tax->labels->all_items; ?></a></li>
+                       <li class="hide-if-no-js"><a href="#<?php echo $taxonomy; ?>-pop"><?php _e( 'Most Used' ); ?></a></li>
                </ul>
 
                <div id="<?php echo $taxonomy; ?>-pop" class="tabs-panel" style="display: none;">
@@ -335,14 +399,14 @@ function post_categories_meta_box( $post, $box ) {
             $name = ( $taxonomy == 'category' ) ? 'post_category' : 'tax_input[' . $taxonomy . ']';
             echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
             ?>
-                       <ul id="<?php echo $taxonomy; ?>checklist" class="list:<?php echo $taxonomy?> categorychecklist form-no-clear">
+                       <ul id="<?php echo $taxonomy; ?>checklist" data-wp-lists="list:<?php echo $taxonomy?>" class="categorychecklist form-no-clear">
                                <?php wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids ) ) ?>
                        </ul>
                </div>
        <?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
                        <div id="<?php echo $taxonomy; ?>-adder" class="wp-hidden-children">
                                <h4>
-                                       <a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js" tabindex="3">
+                                       <a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js">
                                                <?php
                                                        /* translators: %s: add new taxonomy label */
                                                        printf( __( '+ %s' ), $tax->labels->add_new_item );
@@ -351,12 +415,12 @@ function post_categories_meta_box( $post, $box ) {
                                </h4>
                                <p id="<?php echo $taxonomy; ?>-add" class="category-add wp-hidden-child">
                                        <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>"><?php echo $tax->labels->add_new_item; ?></label>
-                                       <input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/>
+                                       <input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
                                        <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>_parent">
                                                <?php echo $tax->labels->parent_item_colon; ?>
                                        </label>
-                                       <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
-                                       <input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
+                                       <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
+                                       <input type="button" id="<?php echo $taxonomy; ?>-add-submit" data-wp-lists="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
                                        <?php wp_nonce_field( 'add-'.$taxonomy, '_ajax_nonce-add-'.$taxonomy, false ); ?>
                                        <span id="<?php echo $taxonomy; ?>-ajax-response"></span>
                                </p>
@@ -375,7 +439,7 @@ function post_categories_meta_box( $post, $box ) {
  */
 function post_excerpt_meta_box($post) {
 ?>
-<label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt; // textarea_escaped ?></textarea>
+<label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" id="excerpt"><?php echo $post->post_excerpt; // textarea_escaped ?></textarea>
 <p><?php _e('Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>'); ?></p>
 <?php
 }
@@ -388,7 +452,7 @@ function post_excerpt_meta_box($post) {
  * @param object $post
  */
 function post_trackback_meta_box($post) {
-       $form_trackback = '<input type="text" name="trackback_url" id="trackback_url" class="code" tabindex="7" value="'. esc_attr( str_replace("\n", ' ', $post->to_ping) ) .'" />';
+       $form_trackback = '<input type="text" name="trackback_url" id="trackback_url" class="code" value="'. esc_attr( str_replace("\n", ' ', $post->to_ping) ) .'" />';
        if ('' != $post->pinged) {
                $pings = '<p>'. __('Already pinged:') . '</p><ul>';
                $already_pinged = explode("\n", trim($post->pinged));
@@ -468,15 +532,15 @@ function post_comment_meta_box_thead($result) {
  *
  * @param object $post
  */
-function post_comment_meta_box($post) {
-       global $wpdb, $post_ID;
+function post_comment_meta_box( $post ) {
+       global $wpdb;
 
        wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
        ?>
-       <p class="hide-if-no-js" id="add-new-comment"><a href="#commentstatusdiv" onclick="commentReply.addcomment(<?php echo $post_ID; ?>);return false;"><?php _e('Add comment'); ?></a></p>
+       <p class="hide-if-no-js" id="add-new-comment"><a href="#commentstatusdiv" onclick="commentReply.addcomment(<?php echo $post->ID; ?>);return false;"><?php _e('Add comment'); ?></a></p>
        <?php
 
-       $total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
+       $total = get_comments( array( 'post_id' => $post->ID, 'number' => 1, 'count' => true ) );
        $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
        $wp_list_table->display( true );
 
@@ -491,7 +555,7 @@ function post_comment_meta_box($post) {
                }
 
                ?>
-               <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /></p>
+               <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <span class="spinner"></span></p>
                <?php
        }
 
@@ -613,7 +677,7 @@ function link_submit_meta_box($link) {
 <div id="minor-publishing-actions">
 <div id="preview-action">
 <?php if ( !empty($link->link_id) ) { ?>
-       <a class="preview button" href="<?php echo $link->link_url; ?>" target="_blank" tabindex="4"><?php _e('Visit Link'); ?></a>
+       <a class="preview button" href="<?php echo $link->link_url; ?>" target="_blank"><?php _e('Visit Link'); ?></a>
 <?php } ?>
 </div>
 <div class="clear"></div>
@@ -638,9 +702,9 @@ if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('m
 
 <div id="publishing-action">
 <?php if ( !empty($link->link_id) ) { ?>
-       <input name="save" type="submit" class="button-primary" id="publish" tabindex="4" accesskey="p" value="<?php esc_attr_e('Update Link') ?>" />
+       <input name="save" type="submit" class="button-large button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Update Link') ?>" />
 <?php } else { ?>
-       <input name="save" type="submit" class="button-primary" id="publish" tabindex="4" accesskey="p" value="<?php esc_attr_e('Add Link') ?>" />
+       <input name="save" type="submit" class="button-large button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Add Link') ?>" />
 <?php } ?>
 </div>
 <div class="clear"></div>
@@ -667,7 +731,7 @@ function link_categories_meta_box($link) {
        </ul>
 
        <div id="categories-all" class="tabs-panel">
-               <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+               <ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
                        <?php
                        if ( isset($link->link_id) )
                                wp_link_category_checklist($link->link_id);
@@ -688,7 +752,7 @@ function link_categories_meta_box($link) {
                <p id="link-category-add" class="wp-hidden-child">
                        <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label>
                        <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" />
-                       <input type="button" id="link-category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" />
+                       <input type="button" id="link-category-add-submit" data-wp-lists="add:categorychecklist:link-category-add" class="button" value="<?php esc_attr_e( 'Add' ); ?>" />
                        <?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?>
                        <span id="category-ajax-response"></span>
                </p>
@@ -912,8 +976,7 @@ function link_advanced_meta_box($link) {
  *
  * @since 2.9.0
  */
-function post_thumbnail_meta_box() {
-       global $post;
+function post_thumbnail_meta_box( $post ) {
        $thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );
-       echo _wp_post_thumbnail_html( $thumbnail_id );
-}
+       echo _wp_post_thumbnail_html( $thumbnail_id, $post->ID );
+}
\ No newline at end of file
index 14f94fbed7c863d98df9c59e0ceec408607b917e..f09ef4528909908670ba644c3867afd7d7e9ee8c 100644 (file)
@@ -192,7 +192,7 @@ function update_recently_edited( $file ) {
 }
 
 /**
- * If siteurl or home changed, flush rewrite rules.
+ * If siteurl, home or page_on_front changed, flush rewrite rules.
  *
  * @since 2.1.0
  *
@@ -209,6 +209,7 @@ function update_home_siteurl( $old_value, $value ) {
 
 add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
 add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 );
+add_action( 'update_option_page_on_front', 'update_home_siteurl', 10, 2 );
 
 /**
  * Shorten an URL, to be used as link text
@@ -325,18 +326,18 @@ function set_screen_options() {
                $option = $_POST['wp_screen_options']['option'];
                $value = $_POST['wp_screen_options']['value'];
 
-               if ( !preg_match( '/^[a-z_-]+$/', $option ) )
+               if ( $option != sanitize_key( $option ) )
                        return;
 
-               $option = str_replace('-', '_', $option);
-
                $map_option = $option;
                $type = str_replace('edit_', '', $map_option);
                $type = str_replace('_per_page', '', $type);
-               if ( in_array($type, get_post_types()) )
-                       $map_option = 'edit_per_page';
-               if ( in_array( $type, get_taxonomies()) )
+               if ( in_array( $type, get_taxonomies() ) )
                        $map_option = 'edit_tags_per_page';
+               elseif ( in_array( $type, get_post_types() ) )
+                       $map_option = 'edit_per_page';
+               else
+                       $option = str_replace('-', '_', $option);
 
                switch ( $map_option ) {
                        case 'edit_per_page':
@@ -523,36 +524,6 @@ function saveDomDocument($doc, $filename) {
        fclose($fp);
 }
 
-/**
- * Workaround for Windows bug in is_writable() function
- *
- * @since 2.8.0
- *
- * @param string $path
- * @return bool
- */
-function win_is_writable( $path ) {
-       /* will work in despite of Windows ACLs bug
-        * NOTE: use a trailing slash for folders!!!
-        * see http://bugs.php.net/bug.php?id=27609
-        * see http://bugs.php.net/bug.php?id=30931
-        */
-
-       if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path
-               return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp');
-       else if ( is_dir( $path ) )
-               return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' );
-       // check tmp file for read/write capabilities
-       $should_delete_tmp_file = !file_exists( $path );
-       $f = @fopen( $path, 'a' );
-       if ( $f === false )
-               return false;
-       fclose( $f );
-       if ( $should_delete_tmp_file )
-               unlink( $path );
-       return true;
-}
-
 /**
  * Display the default admin color scheme picker (Used in user-edit.php)
  *
@@ -566,16 +537,16 @@ $current_color = get_user_option('admin_color', $user_id);
 if ( empty($current_color) )
        $current_color = 'fresh';
 foreach ( $_wp_admin_css_colors as $color => $color_info ): ?>
-<div class="color-option"><input name="admin_color" id="admin_color_<?php echo $color; ?>" type="radio" value="<?php echo esc_attr($color) ?>" class="tog" <?php checked($color, $current_color); ?> />
+<div class="color-option"><input name="admin_color" id="admin_color_<?php echo esc_attr( $color ); ?>" type="radio" value="<?php echo esc_attr( $color ); ?>" class="tog" <?php checked($color, $current_color); ?> />
        <table class="color-palette">
        <tr>
        <?php foreach ( $color_info->colors as $html_color ): ?>
-       <td style="background-color: <?php echo $html_color ?>" title="<?php echo $color ?>">&nbsp;</td>
+       <td style="background-color: <?php echo esc_attr( $html_color ); ?>" title="<?php echo esc_attr( $color ); ?>">&nbsp;</td>
        <?php endforeach; ?>
        </tr>
        </table>
 
-       <label for="admin_color_<?php echo $color; ?>"><?php echo $color_info->name ?></label>
+       <label for="admin_color_<?php echo esc_attr( $color ); ?>"><?php echo esc_html( $color_info->name ); ?></label>
 </div>
        <?php endforeach; ?>
 </fieldset>
index 7119018b1fe6e7d6881355ff48a34032367133e4..702e3e13cfc5f5aa57585695f13acdc8383d8194 100644 (file)
@@ -73,4 +73,6 @@ function get_site_allowed_themes() {
 function wpmu_get_blog_allowedthemes( $blog_id = 0 ) {
        _deprecated_function( __FUNCTION__, '3.4', 'WP_Theme::get_allowed_on_site()' );
        return array_map( 'intval', WP_Theme::get_allowed_on_site( $blog_id ) );
-}
\ No newline at end of file
+}
+
+function ms_deprecated_blogs_file() {}
\ No newline at end of file
index a6828b2dedfdcc35716b805314a970fad612080e..b62e1d0b2d86cbefe9dacaf908f779e0dde7e5f6 100644 (file)
@@ -25,9 +25,8 @@ function check_upload_size( $file ) {
        if ( defined( 'WP_IMPORTING' ) )
                return $file;
 
-       $space_allowed = 1048576 * get_space_allowed();
-       $space_used = get_dirsize( BLOGUPLOADDIR );
-       $space_left = $space_allowed - $space_used;
+       $space_left = get_upload_space_available();
+
        $file_size = filesize( $file['tmp_name'] );
        if ( $space_left < $file_size )
                $file['error'] = sprintf( __( 'Not enough space to upload. %1$s KB needed.' ), number_format( ($file_size - $space_left) /1024 ) );
@@ -56,14 +55,13 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
        global $wpdb, $current_site;
 
        $switch = false;
-       if ( $blog_id != $wpdb->blogid ) {
+       if ( get_current_blog_id() != $blog_id ) {
                $switch = true;
                switch_to_blog( $blog_id );
-               $blog = get_blog_details( $blog_id );
-       } else {
-               $blog = $GLOBALS['current_blog'];
        }
 
+       $blog = get_blog_details( $blog_id );
+
        do_action( 'delete_blog', $blog_id, $drop );
 
        $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) );
@@ -82,7 +80,6 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                $drop = false;
 
        if ( $drop ) {
-
                $drop_tables = apply_filters( 'wpmu_drop_tables', $wpdb->tables( 'blog' ) );
 
                foreach ( (array) $drop_tables as $table ) {
@@ -91,7 +88,8 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
 
                $wpdb->delete( $wpdb->blogs, array( 'blog_id' => $blog_id ) );
 
-               $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id );
+               $uploads = wp_upload_dir();
+               $dir = apply_filters( 'wpmu_delete_blog_upload_dir', $uploads['basedir'], $blog_id );
                $dir = rtrim( $dir, DIRECTORY_SEPARATOR );
                $top_dir = $dir;
                $stack = array($dir);
@@ -112,6 +110,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                                        else if ( @is_file( $dir . DIRECTORY_SEPARATOR . $file ) )
                                                @unlink( $dir . DIRECTORY_SEPARATOR . $file );
                                }
+                               @closedir( $dh );
                        }
                        $index++;
                }
@@ -121,6 +120,8 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                        if ( $dir != $top_dir)
                        @rmdir( $dir );
                }
+
+               clean_blog_cache( $blog );
        }
 
        if ( $switch )
@@ -223,12 +224,12 @@ function send_confirmation_on_profile_email() {
 
        if ( $current_user->user_email != $_POST['email'] ) {
                if ( !is_email( $_POST['email'] ) ) {
-                       $errors->add( 'user_email', __( "<strong>ERROR</strong>: The e-mail address isn't correct." ), array( 'form-field' => 'email' ) );
+                       $errors->add( 'user_email', __( "<strong>ERROR</strong>: The email address isn&#8217;t correct." ), array( 'form-field' => 'email' ) );
                        return;
                }
 
                if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM {$wpdb->users} WHERE user_email=%s", $_POST['email'] ) ) ) {
-                       $errors->add( 'user_email', __( "<strong>ERROR</strong>: The e-mail address is already used." ), array( 'form-field' => 'email' ) );
+                       $errors->add( 'user_email', __( "<strong>ERROR</strong>: The email address is already used." ), array( 'form-field' => 'email' ) );
                        delete_option( $current_user->ID . '_new_email' );
                        return;
                }
@@ -273,106 +274,82 @@ function new_user_email_admin_notice() {
 add_action( 'admin_notices', 'new_user_email_admin_notice' );
 
 /**
- * Determines if there is any upload space left in the current blog's quota.
+ * Check whether a blog has used its allotted upload space.
  *
- * @since 3.0.0
- * @return bool True if space is available, false otherwise.
- */
-function is_upload_space_available() {
-       if ( get_site_option( 'upload_space_check_disabled' ) )
-               return true;
-
-       if ( !( $space_allowed = get_upload_space_available() ) )
-               return false;
-
-       return true;
-}
-
-/**
- * @since 3.0.0
- *
- * @return int of upload size limit in bytes
- */
-function upload_size_limit_filter( $size ) {
-       $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 );
-       if ( get_site_option( 'upload_space_check_disabled' ) )
-               return min( $size, $fileupload_maxk );
-
-       return min( $size, $fileupload_maxk, get_upload_space_available() );
-}
-/**
- * Determines if there is any upload space left in the current blog's quota.
+ * @since MU
  *
- * @return int of upload space available in bytes
+ * @param bool $echo Optional. If $echo is set and the quota is exceeded, a warning message is echoed. Default is true.
+ * @return int
  */
-function get_upload_space_available() {
-       $space_allowed = get_space_allowed() * 1024 * 1024;
+function upload_is_user_over_quota( $echo = true ) {
        if ( get_site_option( 'upload_space_check_disabled' ) )
-               return $space_allowed;
+               return false;
 
-       $dir_name = trailingslashit( BLOGUPLOADDIR );
-       if ( !( is_dir( $dir_name) && is_readable( $dir_name ) ) )
-               return $space_allowed;
+       $space_allowed = get_space_allowed();
+       if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) )
+               $space_allowed = 10; // Default space allowed is 10 MB
 
-       $dir = dir( $dir_name );
-       $size = 0;
+       $space_used = get_space_used();
 
-       while ( $file = $dir->read() ) {
-               if ( $file != '.' && $file != '..' ) {
-                       if ( is_dir( $dir_name . $file) ) {
-                               $size += get_dirsize( $dir_name . $file );
-                       } else {
-                               $size += filesize( $dir_name . $file );
-                       }
-               }
+       if ( ( $space_allowed - $space_used ) < 0 ) {
+               if ( $echo )
+                       _e( 'Sorry, you have used your space allocation. Please delete some files to upload more files.' );
+               return true;
+       } else {
+               return false;
        }
-       $dir->close();
-
-       if ( ( $space_allowed - $size ) <= 0 )
-               return 0;
-
-       return $space_allowed - $size;
 }
 
 /**
- * Returns the upload quota for the current blog.
+ * Displays the amount of disk space used by the current blog. Not used in core.
  *
- * @return int Quota
+ * @since MU
  */
-function get_space_allowed() {
-       $space_allowed = get_option( 'blog_upload_space' );
-
-       if ( ! is_numeric( $space_allowed ) )
-               $space_allowed = get_site_option( 'blog_upload_space' );
-
-       if ( empty( $space_allowed ) || ! is_numeric( $space_allowed ) )
-               $space_allowed = 50;
-
-       return $space_allowed;
-}
-
 function display_space_usage() {
-       $space = get_space_allowed();
-       $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
+       $space_allowed = get_space_allowed();
+       $space_used = get_space_used();
 
-       $percentused = ( $used / $space ) * 100;
+       $percent_used = ( $space_used / $space_allowed ) * 100;
 
-       if ( $space > 1000 ) {
-               $space = number_format( $space / 1024 );
+       if ( $space_allowed > 1000 ) {
+               $space = number_format( $space_allowed / 1024 );
                /* translators: Gigabytes */
                $space .= __( 'GB' );
        } else {
+               $space = number_format( $space_allowed );
                /* translators: Megabytes */
                $space .= __( 'MB' );
        }
        ?>
-       <strong><?php printf( __( 'Used: %1s%% of %2s' ), number_format( $percentused ), $space ); ?></strong>
+       <strong><?php printf( __( 'Used: %1$s%% of %2$s' ), number_format( $percent_used ), $space ); ?></strong>
        <?php
 }
 
+/**
+ * Get the remaining upload space for this blog.
+ *
+ * @since MU
+ * @uses upload_is_user_over_quota()
+ * @uses get_space_allowed()
+ * @uses get_upload_space_available()
+ *
+ * @param int $size Current max size in bytes
+ * @return int Max size in bytes
+ */
+function fix_import_form_size( $size ) {
+       if ( upload_is_user_over_quota( false ) == true )
+               return 0;
+
+       $available = get_upload_space_available();
+       return min( $size, $available );
+}
+
 // Edit blog upload space setting on Edit Blog page
 function upload_space_setting( $id ) {
-       $quota = get_blog_option( $id, 'blog_upload_space' );
+       switch_to_blog( $id );
+       $quota = get_option( 'blog_upload_space' );
+       restore_current_blog();
+
        if ( !$quota )
                $quota = '';
 
@@ -615,7 +592,7 @@ function choose_primary_blog() {
        <?php if ( in_array( get_site_option( 'registration' ), array( 'all', 'blog' ) ) ) : ?>
                <tr>
                        <th scope="row" colspan="2" class="th-full">
-                               <a href="<?php echo apply_filters( 'wp_signup_location', network_home_url( 'wp-signup.php' ) ); ?>"><?php _e( 'Create a New Site' ); ?></a>
+                               <a href="<?php echo apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) ); ?>"><?php _e( 'Create a New Site' ); ?></a>
                        </th>
                </tr>
        <?php endif; ?>
@@ -623,15 +600,6 @@ function choose_primary_blog() {
        <?php
 }
 
-function ms_deprecated_blogs_file() {
-       if ( ! is_super_admin() )
-               return;
-       if ( ! file_exists( WP_CONTENT_DIR . '/blogs.php' ) )
-               return;
-       echo '<div class="update-nag">' . sprintf( __( 'The <code>%1$s</code> file is deprecated. Please remove it and update your server rewrite rules to use <code>%2$s</code> instead.' ), 'wp-content/blogs.php', 'wp-includes/ms-files.php' ) . '</div>';
-}
-add_action( 'network_admin_notices', 'ms_deprecated_blogs_file' );
-
 /**
  * Grants super admin privileges.
  *
@@ -650,8 +618,8 @@ function grant_super_admin( $user_id ) {
        // Directly fetch site_admins instead of using get_super_admins()
        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
 
-       $user = new WP_User( $user_id );
-       if ( ! in_array( $user->user_login, $super_admins ) ) {
+       $user = get_userdata( $user_id );
+       if ( $user && ! in_array( $user->user_login, $super_admins ) ) {
                $super_admins[] = $user->user_login;
                update_site_option( 'site_admins' , $super_admins );
                do_action( 'granted_super_admin', $user_id );
@@ -678,8 +646,8 @@ function revoke_super_admin( $user_id ) {
        // Directly fetch site_admins instead of using get_super_admins()
        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
 
-       $user = new WP_User( $user_id );
-       if ( $user->user_email != get_site_option( 'admin_email' ) ) {
+       $user = get_userdata( $user_id );
+       if ( $user && $user->user_email != get_site_option( 'admin_email' ) ) {
                if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) {
                        unset( $super_admins[$key] );
                        update_site_option( 'site_admins', $super_admins );
@@ -720,7 +688,6 @@ function _thickbox_path_admin_subfolder() {
 <script type="text/javascript">
 //<![CDATA[
 var tb_pathToImage = "../../wp-includes/js/thickbox/loadingAnimation.gif";
-var tb_closeImage = "../../wp-includes/js/thickbox/tb-close.png";
 //]]>
 </script>
 <?php
index 5fc73fcbbf8c65df2b8383f3d2e23aa57bcbffac..60644628d95a62765b8b130db1f259dc3e0a628f 100644 (file)
@@ -247,11 +247,12 @@ class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
                $output .= $indent . '<li>';
                $output .= '<label class="menu-item-title">';
                $output .= '<input type="checkbox" class="menu-item-checkbox';
-               if ( ! empty( $item->_add_to_top ) ) {
+               if ( property_exists( $item, 'front_or_home' ) && $item->front_or_home ) {
+                       $title = sprintf( _x( 'Home: %s', 'nav menu front page title' ), $item->post_title );
                        $output .= ' add-to-top';
                }
                $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
-               $output .= empty( $item->label ) ? esc_html( $item->title ) : esc_html( $item->label );
+               $output .= isset( $title ) ? esc_html( $title ) : esc_html( $item->title );
                $output .= '</label>';
 
                // Menu item hidden fields
@@ -511,8 +512,8 @@ function wp_nav_menu_locations_meta_box() {
        }
        ?>
        <p class="button-controls">
-               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-               <?php submit_button( __( 'Save' ), 'primary', 'nav-menu-locations', false, disabled( $nav_menu_selected_id, 0, false ) ); ?>
+               <?php submit_button( __( 'Save' ), 'primary right', 'nav-menu-locations', false, disabled( $nav_menu_selected_id, 0, false ) ); ?>
+               <span class="spinner"></span>
        </p>
        <?php
 }
@@ -560,8 +561,8 @@ function wp_nav_menu_item_link_meta_box() {
 
                <p class="button-controls">
                        <span class="add-to-menu">
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" />
+                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" />
+                               <span class="spinner"></span>
                        </span>
                </p>
 
@@ -692,11 +693,11 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                        ?>
                        <p class="quick-search-wrap">
                                <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" />
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                               <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?>
+                               <span class="spinner"></span>
+                               <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?>
                        </p>
 
-                       <ul id="<?php echo $post_type_name; ?>-search-checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
+                       <ul id="<?php echo $post_type_name; ?>-search-checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear">
                        <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?>
                                <?php
                                $args['walker'] = $walker;
@@ -718,7 +719,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                                        <?php echo $page_links; ?>
                                </div>
                        <?php endif; ?>
-                       <ul id="<?php echo $post_type_name; ?>checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
+                       <ul id="<?php echo $post_type_name; ?>checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear">
                                <?php
                                $args['walker'] = $walker;
 
@@ -727,13 +728,12 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                                        $front_page = 'page' == get_option('show_on_front') ? (int) get_option( 'page_on_front' ) : 0;
                                        if ( ! empty( $front_page ) ) {
                                                $front_page_obj = get_post( $front_page );
-                                               $front_page_obj->_add_to_top = true;
-                                               $front_page_obj->label = sprintf( _x('Home: %s', 'nav menu front page title'), $front_page_obj->post_title );
+                                               $front_page_obj->front_or_home = true;
                                                array_unshift( $posts, $front_page_obj );
                                        } else {
                                                $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
                                                array_unshift( $posts, (object) array(
-                                                       '_add_to_top' => true,
+                                                       'front_or_home' => true,
                                                        'ID' => 0,
                                                        'object_id' => $_nav_menu_placeholder,
                                                        'post_content' => '',
@@ -779,8 +779,8 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                        </span>
 
                        <span class="add-to-menu">
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo $post_type_name; ?>" />
+                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo $post_type_name; ?>" />
+                               <span class="spinner"></span>
                        </span>
                </p>
 
@@ -896,7 +896,7 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
                                        <?php echo $page_links; ?>
                                </div>
                        <?php endif; ?>
-                       <ul id="<?php echo $taxonomy_name; ?>checklist" class="list:<?php echo $taxonomy_name?> categorychecklist form-no-clear">
+                       <ul id="<?php echo $taxonomy_name; ?>checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear">
                                <?php
                                $args['walker'] = $walker;
                                echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $terms), 0, (object) $args );
@@ -923,11 +923,11 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
                        ?>
                        <p class="quick-search-wrap">
                                <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" />
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                               <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>
+                               <span class="spinner"></span>
+                               <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>
                        </p>
 
-                       <ul id="<?php echo $taxonomy_name; ?>-search-checklist" class="list:<?php echo $taxonomy_name?> categorychecklist form-no-clear">
+                       <ul id="<?php echo $taxonomy_name; ?>-search-checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear">
                        <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?>
                                <?php
                                $args['walker'] = $walker;
@@ -955,8 +955,8 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
                        </span>
 
                        <span class="add-to-menu">
-                               <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-taxonomy-menu-item" id="submit-taxonomy-<?php echo $taxonomy_name; ?>" />
+                               <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-taxonomy-menu-item" id="submit-taxonomy-<?php echo $taxonomy_name; ?>" />
+                               <span class="spinner"></span>
                        </span>
                </p>
 
@@ -1150,7 +1150,7 @@ function wp_nav_menu_manage_columns() {
  */
 function _wp_delete_orphaned_draft_menu_items() {
        global $wpdb;
-       $delete_timestamp = time() - (60*60*24*EMPTY_TRASH_DAYS);
+       $delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS );
 
        // delete orphaned draft menu items
        $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) );
index f0d7cbdebe379a7da89b8b51dbb56e659c12345e..63a5f711f2bae08ddea250cf1f588f757d9c16c3 100644 (file)
@@ -74,7 +74,7 @@ function install_popular_tags( $args = array() ) {
        if ( is_wp_error($tags) )
                return $tags;
 
-       set_site_transient('poptags_' . $key, $tags, 10800); // 3 * 60 * 60 = 10800
+       set_site_transient( 'poptags_' . $key, $tags, 3 * HOUR_IN_SECONDS );
 
        return $tags;
 }
@@ -128,7 +128,7 @@ function install_search_form( $type_selector = true ) {
                        <option value="tag"<?php selected('tag', $type) ?>><?php _ex('Tag', 'Plugin Installer'); ?></option>
                </select>
                <?php endif; ?>
-               <input type="search" name="s" value="<?php echo esc_attr($term) ?>" />
+               <input type="search" name="s" value="<?php echo esc_attr($term) ?>" autofocus="autofocus" />
                <label class="screen-reader-text" for="plugin-search-input"><?php _e('Search Plugins'); ?></label>
                <?php submit_button( __( 'Search Plugins' ), 'button', 'plugin-search-input', false ); ?>
        </form><?php
@@ -142,18 +142,38 @@ function install_search_form( $type_selector = true ) {
  */
 function install_plugins_upload( $page = 1 ) {
 ?>
-       <h4><?php _e('Install a plugin in .zip format') ?></h4>
-       <p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.') ?></p>
-       <form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-plugin') ?>">
-               <?php wp_nonce_field( 'plugin-upload') ?>
+       <h4><?php _e('Install a plugin in .zip format'); ?></h4>
+       <p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
+       <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
+               <?php wp_nonce_field( 'plugin-upload'); ?>
                <label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
                <input type="file" id="pluginzip" name="pluginzip" />
-               <input type="submit" class="button" value="<?php esc_attr_e('Install Now') ?>" />
+               <?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
        </form>
 <?php
 }
 add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
 
+/**
+ * Show a username form for the favorites page
+ * @since 3.5.0
+ *
+ */
+function install_plugins_favorites_form() {
+       $user = ! empty( $_GET['user'] ) ? stripslashes( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
+       ?>
+       <p class="install-help"><?php _e( 'If you have marked plugins as favorites on WordPress.org, you can browse them here.' ); ?></p>
+       <form method="get" action="">
+               <input type="hidden" name="tab" value="favorites" />
+               <p>
+                       <label for="user"><?php _e( 'Your WordPress.org username:' ); ?></label>
+                       <input type="search" id="user" name="user" value="<?php echo esc_attr( $user ); ?>" />
+                       <input type="submit" class="button" value="<?php esc_attr_e( 'Get Favorites' ); ?>" />
+               </p>
+       </form>
+       <?php
+}
+
 /**
  * Display plugin content based on plugin list.
  *
@@ -162,12 +182,16 @@ add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
 function display_plugins_table() {
        global $wp_list_table;
 
+       if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) )
+                       return;
+
        $wp_list_table->display();
 }
-add_action('install_plugins_search', 'display_plugins_table');
-add_action('install_plugins_featured', 'display_plugins_table');
-add_action('install_plugins_popular', 'display_plugins_table');
-add_action('install_plugins_new', 'display_plugins_table');
+add_action( 'install_plugins_search',    'display_plugins_table' );
+add_action( 'install_plugins_featured',  'display_plugins_table' );
+add_action( 'install_plugins_popular',   'display_plugins_table' );
+add_action( 'install_plugins_new',       'display_plugins_table' );
+add_action( 'install_plugins_favorites', 'display_plugins_table' );
 
 /**
  * Determine the status we can perform on a plugin.
index 083b5c429dfd2adf8dde292cd5f3a39003c9bfc6..f305ef9bc6111c7f2b4c9d82d7d84a8fbf8eaa13 100644 (file)
@@ -573,9 +573,9 @@ function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silen
  * @since 2.5.0
  *
  * @param string|array $plugins Single plugin or list of plugins to deactivate.
+ * @param bool $silent Prevent calling deactivation hooks. Default is false.
  * @param mixed $network_wide Whether to deactivate the plugin for all sites in the network.
  *     A value of null (the default) will deactivate plugins for both the site and the network.
- * @param bool $silent Prevent calling deactivation hooks. Default is false.
  */
 function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) {
        if ( is_multisite() )
@@ -606,7 +606,7 @@ function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) {
                        $key = array_search( $plugin, $current );
                        if ( false !== $key ) {
                                $do_blog = true;
-                               array_splice( $current, $key, 1 );
+                               unset( $current[ $key ] );
                        }
                }
 
@@ -884,7 +884,8 @@ function uninstall_plugin($plugin) {
  * @param string $capability The capability required for this menu to be displayed to the user.
  * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
  * @param callback $function The function to be called to output the content for this page.
- * @param string $icon_url The url to the icon to be used for this menu
+ * @param string $icon_url The url to the icon to be used for this menu. Using 'none' would leave div.wp-menu-image empty
+ *                         so an icon can be added as background with CSS.
  * @param int $position The position in the menu order this one should appear
  *
  * @return string The resulting page's hook_suffix
@@ -901,12 +902,15 @@ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $func
        if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) )
                add_action( $hookname, $function );
 
-       if ( empty($icon_url) )
-               $icon_url = esc_url( admin_url( 'images/generic.png' ) );
-       elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') )
-               $icon_url = 'https://' . substr($icon_url, 7);
+       if ( empty($icon_url) ) {
+               $icon_url = 'none';
+               $icon_class = 'menu-icon-generic ';
+       } else {
+               $icon_url = set_url_scheme( $icon_url );
+               $icon_class = '';
+       }
 
-       $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
+       $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url );
 
        if ( null === $position )
                $menu[] = $new_menu;
@@ -1624,10 +1628,15 @@ function register_setting( $option_group, $option_name, $sanitize_callback = ''
        global $new_whitelist_options;
 
        if ( 'misc' == $option_group ) {
-               _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) );
+               _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) );
                $option_group = 'general';
        }
 
+       if ( 'privacy' == $option_group ) {
+               _deprecated_argument( __FUNCTION__, '3.5', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) );
+               $option_group = 'reading';
+       }
+
        $new_whitelist_options[ $option_group ][] = $option_name;
        if ( $sanitize_callback != '' )
                add_filter( "sanitize_option_{$option_name}", $sanitize_callback );
@@ -1647,10 +1656,15 @@ function unregister_setting( $option_group, $option_name, $sanitize_callback = '
        global $new_whitelist_options;
 
        if ( 'misc' == $option_group ) {
-               _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) );
+               _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) );
                $option_group = 'general';
        }
 
+       if ( 'privacy' == $option_group ) {
+               _deprecated_argument( __FUNCTION__, '3.5', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) );
+               $option_group = 'reading';
+       }
+
        $pos = array_search( $option_name, (array) $new_whitelist_options );
        if ( $pos !== false )
                unset( $new_whitelist_options[ $option_group ][ $pos ] );
index 3bfea5741fa3a241707b3487e493c754870b0eed..e4866ad5164258b5a36219b62275f86f4f8f6416 100644 (file)
@@ -26,6 +26,20 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
        if ( $update )
                $post_data['ID'] = (int) $post_data['post_ID'];
 
+       $ptype = get_post_type_object( $post_data['post_type'] );
+
+       if ( $update && ! current_user_can( $ptype->cap->edit_post, $post_data['ID'] ) ) {
+               if ( 'page' == $post_data['post_type'] )
+                       return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) );
+               else
+                       return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ) );
+       } elseif ( ! $update && ! current_user_can( $ptype->cap->create_posts ) ) {
+               if ( 'page' == $post_data['post_type'] )
+                       return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) );
+               else
+                       return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) );
+       }
+
        if ( isset( $post_data['content'] ) )
                $post_data['post_content'] = $post_data['content'];
 
@@ -51,21 +65,13 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
                }
        }
 
-       $ptype = get_post_type_object( $post_data['post_type'] );
-       if ( isset($post_data['user_ID']) && ($post_data['post_author'] != $post_data['user_ID']) ) {
-               if ( !current_user_can( $ptype->cap->edit_others_posts ) ) {
-                       if ( 'page' == $post_data['post_type'] ) {
-                               return new WP_Error( 'edit_others_pages', $update ?
-                                       __( 'You are not allowed to edit pages as this user.' ) :
-                                       __( 'You are not allowed to create pages as this user.' )
-                               );
-                       } else {
-                               return new WP_Error( 'edit_others_posts', $update ?
-                                       __( 'You are not allowed to edit posts as this user.' ) :
-                                       __( 'You are not allowed to post as this user.' )
-                               );
-                       }
-               }
+       if ( ! $update && isset( $post_data['user_ID'] ) && ( $post_data['post_author'] != $post_data['user_ID'] )
+                && ! current_user_can( $ptype->cap->edit_others_posts ) ) {
+
+               if ( 'page' == $post_data['post_type'] )
+                       return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) );
+               else
+                       return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) );
        }
 
        // What to do based on which button they pressed
@@ -123,6 +129,10 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
                $mn = ($mn > 59 ) ? $mn -60 : $mn;
                $ss = ($ss > 59 ) ? $ss -60 : $ss;
                $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
+               $valid_date = wp_checkdate( $mm, $jj, $aa, $post_data['post_date'] );
+               if ( !$valid_date ) {
+                       return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
+               }
                $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
        }
 
@@ -158,21 +168,12 @@ function edit_post( $post_data = null ) {
                        wp_die( __('You are not allowed to edit this post.' ));
        }
 
-       // Autosave shouldn't save too soon after a real save
-       if ( 'autosave' == $post_data['action'] ) {
-               $post =& get_post( $post_ID );
-               $now = time();
-               $then = strtotime($post->post_date_gmt . ' +0000');
-               $delta = AUTOSAVE_INTERVAL / 2;
-               if ( ($now - $then) < $delta )
-                       return $post_ID;
-       }
-
        $post_data = _wp_translate_postdata( true, $post_data );
        if ( is_wp_error($post_data) )
                wp_die( $post_data->get_error_message() );
-       if ( 'autosave' != $post_data['action'] && 'auto-draft' == $post_data['post_status'] )
+       if ( ( empty( $post_data['action'] ) || 'autosave' != $post_data['action'] ) && 'auto-draft' == $post_data['post_status'] ) {
                $post_data['post_status'] = 'draft';
+       }
 
        if ( isset($post_data['visibility']) ) {
                switch ( $post_data['visibility'] ) {
@@ -223,6 +224,21 @@ function edit_post( $post_data = null ) {
                }
        }
 
+       // Attachment stuff
+       if ( 'attachment' == $post_data['post_type'] ) {
+               if ( isset( $post_data[ '_wp_attachment_image_alt' ] ) ) {
+                       $image_alt = get_post_meta( $post_ID, '_wp_attachment_image_alt', true );
+                       if ( $image_alt != stripslashes( $post_data['_wp_attachment_image_alt'] ) ) {
+                               $image_alt = wp_strip_all_tags( stripslashes( $post_data['_wp_attachment_image_alt'] ), true );
+                               // update_meta expects slashed
+                               update_post_meta( $post_ID, '_wp_attachment_image_alt', addslashes( $image_alt ) );
+                       }
+               }
+
+               $attachment_data = isset( $post_data['attachments'][ $post_ID ] ) ? $post_data['attachments'][ $post_ID ] : array();
+               $post_data = apply_filters( 'attachment_fields_to_save', $post_data, $attachment_data );
+       }
+
        add_meta( $post_ID );
 
        update_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID );
@@ -399,7 +415,7 @@ function bulk_edit_posts( $post_data = null ) {
  * @since 2.0.0
  *
  * @param string $post_type A post type string, defaults to 'post'.
- * @return object stdClass object containing all the default post data as attributes
+ * @return WP_Post Post object containing all the default post data as attributes
  */
 function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) {
        global $wpdb;
@@ -439,6 +455,7 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
                $post->page_template = 'default';
                $post->post_parent = 0;
                $post->menu_order = 0;
+               $post = new WP_Post( $post );
        }
 
        $post->post_content = apply_filters( 'default_content', $post_content, $post );
@@ -449,37 +466,6 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
        return $post;
 }
 
-/**
- * Get the default page information to use.
- *
- * @since 2.5.0
- *
- * @return object stdClass object containing all the default post data as attributes
- */
-function get_default_page_to_edit() {
-       $page = get_default_post_to_edit();
-       $page->post_type = 'page';
-       return $page;
-}
-
-/**
- * Get an existing post and format it for editing.
- *
- * @since 2.0.0
- *
- * @param unknown_type $id
- * @return unknown
- */
-function get_post_to_edit( $id ) {
-
-       $post = get_post( $id, OBJECT, 'edit' );
-
-       if ( $post->post_type == 'page' )
-               $post->page_template = get_post_meta( $id, '_wp_page_template', true );
-
-       return $post;
-}
-
 /**
  * Determine if a post exists based on title, content, and date
  *
@@ -516,7 +502,7 @@ function post_exists($title, $content = '', $date = '') {
        }
 
        if ( !empty ( $args ) )
-               return $wpdb->get_var( $wpdb->prepare($query, $args) );
+               return (int) $wpdb->get_var( $wpdb->prepare($query, $args) );
 
        return 0;
 }
@@ -745,7 +731,7 @@ function update_meta( $meta_id, $meta_key, $meta_value ) {
  * @return unknown
  */
 function _fix_attachment_links( $post_ID ) {
-       $post = get_post( $post_ID, ARRAY_A );
+       $post = get_post( $post_ID, ARRAY_A );
        $content = $post['post_content'];
 
        // quick sanity check, don't run if no pretty permalinks or post is not published
@@ -892,23 +878,6 @@ function wp_edit_posts_query( $q = false ) {
        return $avail_post_stati;
 }
 
-/**
- * Get default post mime types
- *
- * @since 2.9.0
- *
- * @return array
- */
-function get_post_mime_types() {
-       $post_mime_types = array(       //      array( adj, noun )
-               'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
-               'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
-               'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
-       );
-
-       return apply_filters('post_mime_types', $post_mime_types);
-}
-
 /**
  * {@internal Missing Short Description}}
  *
@@ -925,12 +894,14 @@ function get_available_post_mime_types($type = 'attachment') {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Executes a query for attachments. An array of WP_Query arguments
+ * can be passed in, which will override the arguments set by this function.
  *
  * @since 2.5.0
+ * @uses apply_filters() Calls 'upload_per_page' on posts_per_page argument
  *
- * @param unknown_type $q
- * @return unknown
+ * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal.
+ * @return array
  */
 function wp_edit_attachments_query( $q = false ) {
        if ( false === $q )
@@ -1010,7 +981,7 @@ function postbox_classes( $id, $page ) {
  * @return array With two entries of type string
  */
 function get_sample_permalink($id, $title = null, $name = null) {
-       $post = &get_post($id);
+       $post = get_post($id);
        if ( !$post->ID )
                return array('', '');
 
@@ -1063,24 +1034,22 @@ function get_sample_permalink($id, $title = null, $name = null) {
 }
 
 /**
- * sample permalink html
- *
- * intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor.
+ * Returns the HTML of the sample permalink slug editor.
  *
  * @since 2.5.0
  *
  * @param int|object $id Post ID or post object.
- * @param string $new_title (optional) New title
- * @param string $new_slug (optional) New slug
- * @return string intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor.
+ * @param string $new_title Optional. New title.
+ * @param string $new_slug Optional. New slug.
+ * @return string The HTML of the sample permalink slug editor.
  */
 function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
        global $wpdb;
-       $post = &get_post($id);
+       $post = get_post($id);
 
        list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug);
 
-       if ( 'publish' == $post->post_status ) {
+       if ( 'publish' == get_post_status( $post ) ) {
                $ptype = get_post_type_object($post->post_type);
                $view_post = $ptype->labels->view_item;
                $title = __('Click to edit this part of the permalink');
@@ -1089,11 +1058,11 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
        }
 
        if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) {
-               $return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink">' . $permalink . "</span>\n";
+               $return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . $permalink . "</span>\n";
                if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) )
-                       $return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
-               if ( isset($view_post) )
-                       $return .= "<span id='view-post-btn'><a href='$permalink' class='button' target='_blank'>$view_post</a></span>\n";
+                       $return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
+               if ( isset( $view_post ) )
+                       $return .= "<span id='view-post-btn'><a href='$permalink' class='button button-small'>$view_post</a></span>\n";
 
                $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug);
 
@@ -1118,12 +1087,12 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
        $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink);
        $view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink);
        $return =  '<strong>' . __('Permalink:') . "</strong>\n";
-       $return .= '<span id="sample-permalink">' . $display_link . "</span>\n";
+       $return .= '<span id="sample-permalink" tabindex="-1">' . $display_link . "</span>\n";
        $return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages.
-       $return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n";
+       $return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button button-small hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n";
        $return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n";
        if ( isset($view_post) )
-               $return .= "<span id='view-post-btn'><a href='$view_link' class='button' target='_blank'>$view_post</a></span>\n";
+               $return .= "<span id='view-post-btn'><a href='$view_link' class='button button-small'>$view_post</a></span>\n";
 
        $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug);
 
@@ -1136,16 +1105,15 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
  * @since 2.9.0
  *
  * @param int $thumbnail_id ID of the attachment used for thumbnail
- * @param int $post_id ID of the post associated with the thumbnail, defaults to global $post_ID
+ * @param mixed $post The post ID or object associated with the thumbnail, defaults to global $post.
  * @return string html
  */
-function _wp_post_thumbnail_html( $thumbnail_id = null, $post_id = null ) {
-       global $content_width, $_wp_additional_image_sizes, $post_ID;
+function _wp_post_thumbnail_html( $thumbnail_id = null, $post = null ) {
+       global $content_width, $_wp_additional_image_sizes;
 
-       if ( empty( $post_id ) )
-               $post_id = $post_ID;
+       $post = get_post( $post );
 
-       $upload_iframe_src = esc_url( get_upload_iframe_src('image', $post_id) );
+       $upload_iframe_src = esc_url( get_upload_iframe_src('image', $post->ID ) );
        $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="%s" id="set-post-thumbnail" class="thickbox">%s</a></p>';
        $content = sprintf( $set_thumbnail_link, $upload_iframe_src, esc_html__( 'Set featured image' ) );
 
@@ -1157,14 +1125,14 @@ function _wp_post_thumbnail_html( $thumbnail_id = null, $post_id = null ) {
                else
                        $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' );
                if ( !empty( $thumbnail_html ) ) {
-                       $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_id" );
+                       $ajax_nonce = wp_create_nonce( 'set_post_thumbnail-' . $post->ID );
                        $content = sprintf( $set_thumbnail_link, $upload_iframe_src, $thumbnail_html );
                        $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html__( 'Remove featured image' ) . '</a></p>';
                }
                $content_width = $old_content_width;
        }
 
-       return apply_filters( 'admin_post_thumbnail_html', $content );
+       return apply_filters( 'admin_post_thumbnail_html', $content, $post->ID );
 }
 
 /**
@@ -1222,8 +1190,7 @@ function wp_set_post_lock( $post_id ) {
  * @return none
  */
 function _admin_notice_post_locked() {
-       global $post;
-
+       $post = get_post();
        $lock = explode( ':', get_post_meta( $post->ID, '_edit_lock', true ) );
        $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true );
        $last_user = get_userdata( $user );
index bba0871d6353dc62f105c757978d224f8c224c03..5dfb41b952707010f01af136f15759737798feb8 100644 (file)
@@ -17,12 +17,7 @@ global $wpdb, $wp_queries, $charset_collate;
  * @global string
  * @name $charset_collate
  */
-$charset_collate = '';
-
-if ( ! empty( $wpdb->charset ) )
-       $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
-if ( ! empty( $wpdb->collate ) )
-       $charset_collate .= " COLLATE $wpdb->collate";
+$charset_collate = $wpdb->get_charset_collate();
 
 /**
  * Retrieve the SQL for creating database tables.
@@ -382,7 +377,6 @@ function populate_options() {
        'default_comment_status' => 'open',
        'default_ping_status' => 'open',
        'default_pingback_flag' => 1,
-       'default_post_edit_rows' => 20,
        'posts_per_page' => 10,
        /* translators: default date format, see http://php.net/date */
        'date_format' => __('F j, Y'),
@@ -449,8 +443,6 @@ function populate_options() {
 
        // 2.6
        'avatar_default' => 'mystery',
-       'enable_app' => 0,
-       'enable_xmlrpc' => 0,
 
        // 2.7
        'large_size_w' => 1024,
@@ -475,17 +467,15 @@ function populate_options() {
        // 2.8
        'timezone_string' => $timezone_string,
 
-       // 2.9
-       'embed_autourls' => 1,
-       'embed_size_w' => '',
-       'embed_size_h' => 600,
-
        // 3.0
        'page_for_posts' => 0,
        'page_on_front' => 0,
 
        // 3.1
        'default_post_format' => 0,
+
+       // 3.5
+       'link_manager_enabled' => 0,
        );
 
        // 3.3
@@ -531,7 +521,23 @@ function populate_options() {
        if ( !__get_option('home') ) update_option('home', $guessurl);
 
        // Delete unused options
-       $unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', 'wporg_popular_tags', 'what_to_show', 'rss_language');
+       $unusedoptions = array(
+               'blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory',
+               'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping',
+               'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers',
+               'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference',
+               'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char',
+               'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1',
+               'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5',
+               'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9',
+               'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat',
+               'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce',
+               '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins',
+               'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron',
+               'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page',
+               'wporg_popular_tags', 'what_to_show', 'rss_language', 'language', 'enable_xmlrpc', 'enable_app',
+               'autoembed_urls', 'default_post_edit_rows',
+       );
        foreach ( $unusedoptions as $option )
                delete_option($option);
 
@@ -786,7 +792,11 @@ function populate_roles_300() {
                $role->add_cap( 'update_core' );
                $role->add_cap( 'list_users' );
                $role->add_cap( 'remove_users' );
+
+               // Never used, will be removed. create_users or
+               // promote_users is the capability you're looking for.
                $role->add_cap( 'add_users' );
+
                $role->add_cap( 'promote_users' );
                $role->add_cap( 'edit_theme_options' );
                $role->add_cap( 'delete_themes' );
@@ -898,11 +908,13 @@ We hope you enjoy your new site. Thanks!
                // @todo - network admins should have a method of editing the network siteurl (used for cookie hash)
                'siteurl' => get_option( 'siteurl' ) . '/',
                'add_new_users' => '0',
-               'upload_space_check_disabled' => '0',
+               'upload_space_check_disabled' => is_multisite() ? get_site_option( 'upload_space_check_disabled' ) : '1',
                'subdomain_install' => intval( $subdomain_install ),
                'global_terms_enabled' => global_terms_enabled() ? '1' : '0',
+               'ms_files_rewriting' => is_multisite() ? get_site_option( 'ms_files_rewriting' ) : '0',
                'initial_db_version' => get_option( 'initial_db_version' ),
                'active_sitewide_plugins' => array(),
+               'WPLANG' => get_locale(),
        );
        if ( ! $subdomain_install )
                $sitemeta['illegal_names'][] = 'blog';
@@ -919,28 +931,26 @@ We hope you enjoy your new site. Thanks!
        }
        $wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert );
 
-       $current_site->domain = $domain;
-       $current_site->path = $path;
-       $current_site->site_name = ucfirst( $domain );
-
-       if ( !is_multisite() ) {
+       // When upgrading from single to multisite, assume the current site will become the main site of the network.
+       // When using populate_network() to create another network in an existing multisite environment,
+       // skip these steps since the main site of the new network has not yet been created.
+       if ( ! is_multisite() ) {
+               $current_site = new stdClass;
+               $current_site->domain = $domain;
+               $current_site->path = $path;
+               $current_site->site_name = ucfirst( $domain );
                $wpdb->insert( $wpdb->blogs, array( 'site_id' => $network_id, 'domain' => $domain, 'path' => $path, 'registered' => current_time( 'mysql' ) ) );
-               $blog_id = $wpdb->insert_id;
+               $current_site->blog_id = $blog_id = $wpdb->insert_id;
                update_user_meta( $site_user->ID, 'source_domain', $domain );
                update_user_meta( $site_user->ID, 'primary_blog', $blog_id );
-               if ( !$upload_path = get_option( 'upload_path' ) ) {
-                       $upload_path = substr( WP_CONTENT_DIR, strlen( ABSPATH ) ) . '/uploads';
-                       update_option( 'upload_path', $upload_path );
-               }
-               update_option( 'fileupload_url', get_option( 'siteurl' ) . '/' . $upload_path );
-       }
 
-       if ( $subdomain_install )
-               $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
-       else
-               $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' );
+               if ( $subdomain_install )
+                       $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
+               else
+                       $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' );
 
-       flush_rewrite_rules();
+               flush_rewrite_rules();
+       }
 
        if ( $subdomain_install ) {
                $vhost_ok = false;
index 2fe318d9a6305702a7555859acedcec549371534..4a409e8c68b4297b831469ccf2c43801708cd0a4 100644 (file)
@@ -96,7 +96,7 @@ function get_hidden_meta_boxes( $screen ) {
        if ( $use_defaults ) {
                $hidden = array();
                if ( 'post' == $screen->base ) {
-                       if ( 'post' == $screen->post_type || 'page' == $screen->post_type )
+                       if ( 'post' == $screen->post_type || 'page' == $screen->post_type || 'attachment' == $screen->post_type )
                                $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv');
                        else
                                $hidden = array( 'slugdiv' );
@@ -243,10 +243,22 @@ final class WP_Screen {
         */
        public $id;
 
+       /**
+        * Which admin the screen is in. network | user | site | false
+        *
+        * @since 3.5.0
+        * @var string
+        * @access protected
+        */
+       protected $in_admin;
+
        /**
         * Whether the screen is in the network admin.
         *
+        * Deprecated. Use in_admin() instead.
+        *
         * @since 3.3.0
+        * @deprecated 3.5.0
         * @var bool
         * @access public
         */
@@ -255,7 +267,10 @@ final class WP_Screen {
        /**
         * Whether the screen is in the user admin.
         *
+        * Deprecated. Use in_admin() instead.
+        *
         * @since 3.3.0
+        * @deprecated 3.5.0
         * @var bool
         * @access public
         */
@@ -377,7 +392,7 @@ final class WP_Screen {
                        return $hook_name;
 
                $post_type = $taxonomy = null;
-               $is_network = $is_user = false;
+               $in_admin = false;
                $action = '';
 
                if ( $hook_name )
@@ -402,10 +417,10 @@ final class WP_Screen {
                if ( ! $post_type && $hook_name ) {
                        if ( '-network' == substr( $id, -8 ) ) {
                                $id = substr( $id, 0, -8 );
-                               $is_network = true;
+                               $in_admin = 'network';
                        } elseif ( '-user' == substr( $id, -5 ) ) {
                                $id = substr( $id, 0, -5 );
-                               $is_user = true;
+                               $in_admin = 'user';
                        }
 
                        $id = sanitize_key( $id );
@@ -419,13 +434,22 @@ final class WP_Screen {
                                        $post_type = $maybe;
                                }
                        }
+
+                       if ( ! $in_admin )
+                               $in_admin = 'site';
                } else {
-                       $is_network = is_network_admin();
-                       $is_user = is_user_admin();
+                       if ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN )
+                               $in_admin = 'network';
+                       elseif ( defined( 'WP_USER_ADMIN' ) && WP_USER_ADMIN )
+                               $in_admin = 'user';
+                       else
+                               $in_admin = 'site';
                }
 
                if ( 'index' == $id )
                        $id = 'dashboard';
+               elseif ( 'front' == $id )
+                       $in_admin = false;
 
                $base = $id;
 
@@ -472,14 +496,21 @@ final class WP_Screen {
                        case 'edit-tags' :
                                if ( null === $taxonomy )
                                        $taxonomy = 'post_tag';
+                               // The edit-tags ID does not contain the post type. Look for it in the request.
+                               if ( null === $post_type ) {
+                                       $post_type = 'post';
+                                       if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) )
+                                               $post_type = $_REQUEST['post_type'];
+                               }
+
                                $id = 'edit-' . $taxonomy;
                                break;
                }
 
-               if ( $is_network ) {
+               if ( 'network' == $in_admin ) {
                        $id   .= '-network';
                        $base .= '-network';
-               } elseif ( $is_user ) {
+               } elseif ( 'user' == $in_admin ) {
                        $id   .= '-user';
                        $base .= '-user';
                }
@@ -497,8 +528,9 @@ final class WP_Screen {
                $screen->action     = $action;
                $screen->post_type  = (string) $post_type;
                $screen->taxonomy   = (string) $taxonomy;
-               $screen->is_user    = $is_user;
-               $screen->is_network = $is_network;
+               $screen->is_user    = ( 'user' == $in_admin );
+               $screen->is_network = ( 'network' == $in_admin );
+               $screen->in_admin   = $in_admin;
 
                self::$_registry[ $id ] = $screen;
 
@@ -527,6 +559,23 @@ final class WP_Screen {
         */
        private function __construct() {}
 
+       /**
+        * Indicates whether the screen is in a particular admin
+        *
+        * @since 3.5.0
+        *
+        * @param string $admin The admin to check against (network | user | site).
+        * If empty any of the three admins will result in true.
+        * @return boolean True if the screen is in the indicated admin, false otherwise.
+        *
+        */
+       public function in_admin( $admin = null ) {
+               if ( empty( $admin ) )
+                       return (bool) $this->in_admin;
+
+               return ( $admin == $this->in_admin );
+       }
+
        /**
         * Sets the old string-based contextual help for the screen.
         *
@@ -744,7 +793,7 @@ final class WP_Screen {
                ?>
                <div id="screen-meta" class="metabox-prefs">
 
-                       <div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>">
+                       <div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>" tabindex="-1" aria-label="<?php esc_attr_e('Contextual Help Tab'); ?>">
                                <div id="contextual-help-back"></div>
                                <div id="contextual-help-columns">
                                        <div class="contextual-help-tabs">
@@ -757,7 +806,7 @@ final class WP_Screen {
                                                        ?>
 
                                                        <li id="<?php echo esc_attr( $link_id ); ?>"<?php echo $class; ?>>
-                                                               <a href="<?php echo esc_url( "#$panel_id" ); ?>">
+                                                               <a href="<?php echo esc_url( "#$panel_id" ); ?>" aria-controls="<?php echo esc_attr( $panel_id ); ?>">
                                                                        <?php echo esc_html( $tab['title'] ); ?>
                                                                </a>
                                                        </li>
@@ -827,12 +876,12 @@ final class WP_Screen {
                <div id="screen-meta-links">
                <?php if ( $this->get_help_tabs() ) : ?>
                        <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
-                       <a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings"><?php _e( 'Help' ); ?></a>
+                       <a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings" aria-controls="contextual-help-wrap" aria-expanded="false"><?php _e( 'Help' ); ?></a>
                        </div>
                <?php endif;
                if ( $this->show_screen_options() ) : ?>
                        <div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle">
-                       <a href="#screen-options-wrap" id="show-settings-link" class="show-settings"><?php _e( 'Screen Options' ); ?></a>
+                       <a href="#screen-options-wrap" id="show-settings-link" class="show-settings" aria-controls="screen-options-wrap" aria-expanded="false"><?php _e( 'Screen Options' ); ?></a>
                        </div>
                <?php endif; ?>
                </div>
@@ -876,7 +925,7 @@ final class WP_Screen {
                $hidden  = get_hidden_columns( $this );
 
                ?>
-               <div id="screen-options-wrap" class="hidden">
+               <div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="<?php esc_attr_e('Screen Options Tab'); ?>">
                <form id="adv-settings" action="" method="post">
                <?php if ( isset( $wp_meta_boxes[ $this->id ] ) || $this->get_option( 'per_page' ) || ( $columns && empty( $columns['_title'] ) ) ) : ?>
                        <h5><?php _e( 'Show on screen' ); ?></h5>
@@ -888,7 +937,7 @@ final class WP_Screen {
                                <?php
                                        meta_box_prefs( $this );
 
-                                       if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
+                                       if ( 'dashboard' === $this->id && has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) {
                                                if ( isset( $_GET['welcome'] ) ) {
                                                        $welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
                                                        update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
index 383487458a9bd63b0f10fe323967f87fb50546fd..788a4bd55f3c22a67e7ec99defb6948481b02c89 100644 (file)
@@ -166,10 +166,10 @@ function wp_terms_checklist($post_id = 0, $args = array()) {
  * @return array List of popular term IDs.
  */
 function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) {
-       global $post_ID;
+       $post = get_post();
 
-       if ( $post_ID )
-               $checked_terms = wp_get_object_terms($post_ID, $taxonomy, array('fields'=>'ids'));
+       if ( $post && $post->ID )
+               $checked_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields'=>'ids'));
        else
                $checked_terms = array();
 
@@ -332,17 +332,17 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
        <div id="edithead" style="display:none;">
                <div class="inside">
                <label for="author"><?php _e('Name') ?></label>
-               <input type="text" name="newcomment_author" size="50" value="" tabindex="101" id="author" />
+               <input type="text" name="newcomment_author" size="50" value="" id="author" />
                </div>
 
                <div class="inside">
                <label for="author-email"><?php _e('E-mail') ?></label>
-               <input type="text" name="newcomment_author_email" size="50" value="" tabindex="102" id="author-email" />
+               <input type="text" name="newcomment_author_email" size="50" value="" id="author-email" />
                </div>
 
                <div class="inside">
                <label for="author-url"><?php _e('URL') ?></label>
-               <input type="text" id="author-url" name="newcomment_author_url" size="103" value="" tabindex="103" />
+               <input type="text" id="author-url" name="newcomment_author_url" size="103" value="" />
                </div>
                <div style="clear:both;"></div>
        </div>
@@ -350,17 +350,17 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
        <div id="replycontainer">
        <?php
        $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
-       wp_editor( '', 'replycontent', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings, 'tabindex' => 104 ) );
+       wp_editor( '', 'replycontent', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
        ?>
        </div>
 
        <p id="replysubmit" class="submit">
-       <a href="#comments-form" class="cancel button-secondary alignleft" tabindex="106"><?php _e('Cancel'); ?></a>
-       <a href="#comments-form" class="save button-primary alignright" tabindex="104">
+       <a href="#comments-form" class="save button-primary alignright">
        <span id="addbtn" style="display:none;"><?php _e('Add Comment'); ?></span>
        <span id="savebtn" style="display:none;"><?php _e('Update Comment'); ?></span>
        <span id="replybtn" style="display:none;"><?php _e('Submit Reply'); ?></span></a>
-       <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+       <a href="#comments-form" class="cancel button-secondary alignleft"><?php _e('Cancel'); ?></a>
+       <span class="waiting spinner"></span>
        <span class="error" style="display:none;"></span>
        <br class="clear" />
        </p>
@@ -421,7 +421,7 @@ function list_meta( $meta ) {
                <th>' . __( 'Value' ) . '</th>
        </tr>
        </thead>
-       <tbody id="the-list" class="list:meta">
+       <tbody id="the-list" data-wp-lists="list:meta">
        <tr><td></td></tr>
        </tbody>
 </table>'; //TBODY needed for list-manipulation JS
@@ -436,7 +436,7 @@ function list_meta( $meta ) {
                <th><?php _e( 'Value' ) ?></th>
        </tr>
        </thead>
-       <tbody id='the-list' class='list:meta'>
+       <tbody id='the-list' data-wp-lists='list:meta'>
 <?php
        foreach ( $meta as $entry )
                echo _list_meta_row( $entry, $count );
@@ -489,17 +489,17 @@ function _list_meta_row( $entry, &$count ) {
        $delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] );
 
        $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>";
-       $r .= "\n\t\t<td class='left'><label class='screen-reader-text' for='meta[{$entry['meta_id']}][key]'>" . __( 'Key' ) . "</label><input name='meta[{$entry['meta_id']}][key]' id='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' />";
+       $r .= "\n\t\t<td class='left'><label class='screen-reader-text' for='meta[{$entry['meta_id']}][key]'>" . __( 'Key' ) . "</label><input name='meta[{$entry['meta_id']}][key]' id='meta[{$entry['meta_id']}][key]' type='text' size='20' value='{$entry['meta_key']}' />";
 
        $r .= "\n\t\t<div class='submit'>";
-       $r .= get_submit_button( __( 'Delete' ), "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta", "deletemeta[{$entry['meta_id']}]", false, array( 'tabindex' => '6' ) );
+       $r .= get_submit_button( __( 'Delete' ), 'deletemeta small', "deletemeta[{$entry['meta_id']}]", false, array( 'data-wp-lists' => "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce" ) );
        $r .= "\n\t\t";
-       $r .= get_submit_button( __( 'Update' ), "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta" , 'updatemeta', false, array( 'tabindex' => '6' ) );
+       $r .= get_submit_button( __( 'Update' ), 'updatemeta small', "meta-{$entry['meta_id']}-submit", false, array( 'data-wp-lists' => "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce" ) );
        $r .= "</div>";
        $r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false );
        $r .= "</td>";
 
-       $r .= "\n\t\t<td><label class='screen-reader-text' for='meta[{$entry['meta_id']}][value]'>" . __( 'Value' ) . "</label><textarea name='meta[{$entry['meta_id']}][value]' id='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>\n\t</tr>";
+       $r .= "\n\t\t<td><label class='screen-reader-text' for='meta[{$entry['meta_id']}][value]'>" . __( 'Value' ) . "</label><textarea name='meta[{$entry['meta_id']}][value]' id='meta[{$entry['meta_id']}][value]' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>\n\t</tr>";
        return $r;
 }
 
@@ -534,7 +534,7 @@ function meta_form() {
 <tr>
 <td id="newmetaleft" class="left">
 <?php if ( $keys ) { ?>
-<select id="metakeyselect" name="metakeyselect" tabindex="7">
+<select id="metakeyselect" name="metakeyselect">
 <option value="#NONE#"><?php _e( '&mdash; Select &mdash;' ); ?></option>
 <?php
 
@@ -543,19 +543,21 @@ function meta_form() {
        }
 ?>
 </select>
-<input class="hide-if-js" type="text" id="metakeyinput" name="metakeyinput" tabindex="7" value="" />
+<input class="hide-if-js" type="text" id="metakeyinput" name="metakeyinput" value="" />
 <a href="#postcustomstuff" class="hide-if-no-js" onclick="jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggle();return false;">
 <span id="enternew"><?php _e('Enter new'); ?></span>
 <span id="cancelnew" class="hidden"><?php _e('Cancel'); ?></span></a>
 <?php } else { ?>
-<input type="text" id="metakeyinput" name="metakeyinput" tabindex="7" value="" />
+<input type="text" id="metakeyinput" name="metakeyinput" value="" />
 <?php } ?>
 </td>
-<td><textarea id="metavalue" name="metavalue" rows="2" cols="25" tabindex="8"></textarea></td>
+<td><textarea id="metavalue" name="metavalue" rows="2" cols="25"></textarea></td>
 </tr>
 
-<tr><td colspan="2" class="submit">
-<?php submit_button( __( 'Add Custom Field' ), 'add:the-list:newmeta', 'addmeta', false, array( 'id' => 'addmetasub', 'tabindex' => '9' ) ); ?>
+<tr><td colspan="2">
+<div class="submit">
+<?php submit_button( __( 'Add Custom Field' ), 'secondary', 'addmeta', false, array( 'id' => 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?>
+</div>
 <?php wp_nonce_field( 'add-meta', '_ajax_nonce-add-meta', false ); ?>
 </td></tr>
 </tbody>
@@ -575,7 +577,8 @@ function meta_form() {
  * @param unknown_type $multi
  */
 function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
-       global $wp_locale, $post, $comment;
+       global $wp_locale, $comment;
+       $post = get_post();
 
        if ( $for_post )
                $edit = ! ( in_array($post->post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) );
@@ -670,17 +673,16 @@ function page_template_dropdown( $default = '' ) {
  * @return unknown
  */
 function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
-       global $wpdb, $post_ID;
+       global $wpdb;
+       $post = get_post();
        $items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) );
 
        if ( $items ) {
                foreach ( $items as $item ) {
                        // A page cannot be its own parent.
-                       if (!empty ( $post_ID ) ) {
-                               if ( $item->ID == $post_ID ) {
-                                       continue;
-                               }
-                       }
+                       if ( $post->ID && $item->ID == $post->ID )
+                               continue;
+
                        $pad = str_repeat( '&nbsp;', $level * 3 );
                        if ( $item->ID == $default)
                                $current = ' selected="selected"';
@@ -705,7 +707,7 @@ function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
  */
 function the_attachment_links( $id = false ) {
        $id = (int) $id;
-       $post = get_post( $id );
+       $post = get_post( $id );
 
        if ( $post->post_type != 'attachment' )
                return false;
@@ -769,56 +771,6 @@ function wp_dropdown_roles( $selected = false ) {
        echo $p . $r;
 }
 
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.3.0
- *
- * @param unknown_type $size
- * @return unknown
- */
-function wp_convert_hr_to_bytes( $size ) {
-       $size = strtolower($size);
-       $bytes = (int) $size;
-       if ( strpos($size, 'k') !== false )
-               $bytes = intval($size) * 1024;
-       elseif ( strpos($size, 'm') !== false )
-               $bytes = intval($size) * 1024 * 1024;
-       elseif ( strpos($size, 'g') !== false )
-               $bytes = intval($size) * 1024 * 1024 * 1024;
-       return $bytes;
-}
-
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.3.0
- *
- * @param unknown_type $bytes
- * @return unknown
- */
-function wp_convert_bytes_to_hr( $bytes ) {
-       $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' );
-       $log = log( $bytes, 1024 );
-       $power = (int) $log;
-       $size = pow(1024, $log - $power);
-       return $size . $units[$power];
-}
-
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.5.0
- *
- * @return unknown
- */
-function wp_max_upload_size() {
-       $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
-       $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) );
-       $bytes = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes );
-       return $bytes;
-}
-
 /**
  * Outputs the form used by the importers to accept the data to be imported
  *
@@ -835,7 +787,7 @@ function wp_import_upload_form( $action ) {
                <p><strong><?php echo $upload_dir['error']; ?></strong></p></div><?php
        else :
 ?>
-<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo esc_attr(wp_nonce_url($action, 'import-upload')); ?>">
+<form enctype="multipart/form-data" id="import-upload-form" method="post" class="wp-upload-form" action="<?php echo esc_attr(wp_nonce_url($action, 'import-upload')); ?>">
 <p>
 <label for="upload"><?php _e( 'Choose a file from your computer:' ); ?></label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
 <input type="file" id="upload" name="import" size="25" />
@@ -1040,10 +992,15 @@ function add_settings_section($id, $title, $callback, $page) {
        global $wp_settings_sections;
 
        if ( 'misc' == $page ) {
-               _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) );
+               _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'misc' ) );
                $page = 'general';
        }
 
+       if ( 'privacy' == $page ) {
+               _deprecated_argument( __FUNCTION__, '3.5', sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ), 'privacy' ) );
+               $page = 'reading';
+       }
+
        if ( !isset($wp_settings_sections) )
                $wp_settings_sections = array();
        if ( !isset($wp_settings_sections[$page]) )
@@ -1084,6 +1041,11 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
                $page = 'general';
        }
 
+       if ( 'privacy' == $page ) {
+               _deprecated_argument( __FUNCTION__, '3.5', __( 'The privacy options group has been removed. Use another settings group.' ) );
+               $page = 'reading';
+       }
+
        if ( !isset($wp_settings_fields) )
                $wp_settings_fields = array();
        if ( !isset($wp_settings_fields[$page]) )
@@ -1107,20 +1069,23 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
  *
  * @param string $page The slug name of the page whos settings sections you want to output
  */
-function do_settings_sections($page) {
+function do_settings_sections( $page ) {
        global $wp_settings_sections, $wp_settings_fields;
 
-       if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) )
+       if ( ! isset( $wp_settings_sections ) || !isset( $wp_settings_sections[$page] ) )
                return;
 
        foreach ( (array) $wp_settings_sections[$page] as $section ) {
                if ( $section['title'] )
                        echo "<h3>{$section['title']}</h3>\n";
-               call_user_func($section['callback'], $section);
-               if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section['id']]) )
+
+               if ( $section['callback'] )
+                       call_user_func( $section['callback'], $section );
+
+               if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
                        continue;
                echo '<table class="form-table">';
-               do_settings_fields($page, $section['id']);
+               do_settings_fields( $page, $section['id'] );
                echo '</table>';
        }
 }
@@ -1148,7 +1113,7 @@ function do_settings_fields($page, $section) {
        foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
                echo '<tr valign="top">';
                if ( !empty($field['args']['label_for']) )
-                       echo '<th scope="row"><label for="' . $field['args']['label_for'] . '">' . $field['title'] . '</label></th>';
+                       echo '<th scope="row"><label for="' . esc_attr( $field['args']['label_for'] ) . '">' . $field['title'] . '</label></th>';
                else
                        echo '<th scope="row">' . $field['title'] . '</th>';
                echo '<td>';
@@ -1224,27 +1189,29 @@ function get_settings_errors( $setting = '', $sanitize = false ) {
        // This allows the $sanitize_callback from register_setting() to run, adding
        // any settings errors you want to show by default.
        if ( $sanitize )
-               sanitize_option( $setting, get_option($setting));
+               sanitize_option( $setting, get_option( $setting ) );
 
        // If settings were passed back from options.php then use them
-       // Ignore transients if $sanitize is true, we don't want the old values anyway
-       if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] && get_transient('settings_errors') ) {
-               $settings_errors = get_transient('settings_errors');
-               delete_transient('settings_errors');
-       // Otherwise check global in case validation has been run on this pageload
-       } elseif ( count( $wp_settings_errors ) ) {
-               $settings_errors = $wp_settings_errors;
-       } else {
-               return;
+       if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] && get_transient( 'settings_errors' ) ) {
+               $wp_settings_errors = array_merge( (array) $wp_settings_errors, get_transient( 'settings_errors' ) );
+               delete_transient( 'settings_errors' );
        }
 
+       // Check global in case errors have been added on this pageload
+       if ( ! count( $wp_settings_errors ) )
+               return array();
+
        // Filter the results to those of a specific setting if one was set
        if ( $setting ) {
-               foreach ( (array) $settings_errors as $key => $details )
-                       if ( $setting != $details['setting'] )
-                               unset( $settings_errors[$key] );
+               $setting_errors = array();
+               foreach ( (array) $wp_settings_errors as $key => $details ) {
+                       if ( $setting == $details['setting'] )
+                               $setting_errors[] = $wp_settings_errors[$key];
+               }
+               return $setting_errors;
        }
-       return $settings_errors;
+
+       return $wp_settings_errors;
 }
 
 /**
@@ -1276,7 +1243,7 @@ function settings_errors( $setting = '', $sanitize = false, $hide_on_update = fa
 
        $settings_errors = get_settings_errors( $setting, $sanitize );
 
-       if ( ! is_array( $settings_errors ) )
+       if ( empty( $settings_errors ) )
                return;
 
        $output = '';
@@ -1311,18 +1278,8 @@ function find_posts_div($found_action = '') {
                                <?php wp_nonce_field( 'find-posts', '_ajax_nonce', false ); ?>
                                <label class="screen-reader-text" for="find-posts-input"><?php _e( 'Search' ); ?></label>
                                <input type="text" id="find-posts-input" name="ps" value="" />
-                               <input type="button" id="find-posts-search" value="<?php esc_attr_e( 'Search' ); ?>" class="button" /><br />
-
-                               <?php
-                               $post_types = get_post_types( array('public' => true), 'objects' );
-                               foreach ( $post_types as $post ) {
-                                       if ( 'attachment' == $post->name )
-                                               continue;
-                               ?>
-                               <input type="radio" name="find-posts-what" id="find-posts-<?php echo esc_attr($post->name); ?>" value="<?php echo esc_attr($post->name); ?>" <?php checked($post->name, 'post'); ?> />
-                               <label for="find-posts-<?php echo esc_attr($post->name); ?>"><?php echo $post->label; ?></label>
-                               <?php
-                               } ?>
+                               <span class="spinner"></span>
+                               <input type="button" id="find-posts-search" value="<?php esc_attr_e( 'Search' ); ?>" class="button" />
                        </div>
                        <div id="find-posts-response"></div>
                </div>
@@ -1344,8 +1301,9 @@ function find_posts_div($found_action = '') {
  * @since 2.7.0
  */
 function the_post_password() {
-       global $post;
-       if ( isset( $post->post_password ) ) echo esc_attr( $post->post_password );
+       $post = get_post();
+       if ( isset( $post->post_password ) )
+               echo esc_attr( $post->post_password );
 }
 
 /**
@@ -1355,13 +1313,13 @@ function the_post_password() {
  * returned.
  *
  * @since 2.7.0
- * @param int $post_id The post id. If not supplied the global $post is used.
+ * @param mixed $post Post id or object. If not supplied the global $post is used.
  * @return string The post title if set
  */
-function _draft_or_post_title( $post_id = 0 ) {
-       $title = get_the_title($post_id);
-       if ( empty($title) )
-               $title = __('(no title)');
+function _draft_or_post_title( $post = 0 ) {
+       $title = get_the_title( $post );
+       if ( empty( $title ) )
+               $title = __( '(no title)' );
        return $title;
 }
 
@@ -1394,6 +1352,7 @@ function iframe_header( $title = '', $limit_styles = false ) {
 
        $current_screen = get_current_screen();
 
+       @header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
        _wp_admin_html_begin();
 ?>
 <title><?php bloginfo('name') ?> &rsaquo; <?php echo $title ?> &#8212; <?php _e('WordPress'); ?></title>
@@ -1430,7 +1389,7 @@ do_action('admin_head');
 $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
 ?>
 </head>
-<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?> class="wp-admin no-js iframe <?php echo apply_filters( 'admin_body_class', '' ) . ' ' . $admin_body_class; ?>">
+<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?> class="wp-admin wp-core-ui no-js iframe <?php echo apply_filters( 'admin_body_class', '' ) . ' ' . $admin_body_class; ?>">
 <script type="text/javascript">
 //<![CDATA[
 (function(){
@@ -1631,19 +1590,23 @@ function submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap
  *                     Defaults to no other attributes. Other attributes can also be provided as a
  *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
-function get_submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) {
-       switch ( $type ) :
-               case 'primary' :
-               case 'secondary' :
-                       $class = 'button-' . $type;
-                       break;
-               case 'delete' :
-                       $class = 'button-secondary delete';
-                       break;
-               default :
-                       $class = $type; // Custom cases can just pass in the classes they want to be used
-       endswitch;
-       $text = ( null == $text ) ? __( 'Save Changes' ) : $text;
+function get_submit_button( $text = null, $type = 'primary large', $name = 'submit', $wrap = true, $other_attributes = null ) {
+       if ( ! is_array( $type ) )
+               $type = explode( ' ', $type );
+
+       $button_shorthand = array( 'primary', 'small', 'large' );
+       $classes = array( 'button' );
+       foreach ( $type as $t ) {
+               if ( 'secondary' === $t || 'button-secondary' === $t )
+                       continue;
+               $classes[] = in_array( $t, $button_shorthand ) ? 'button-' . $t : $t;
+       }
+       $class = implode( ' ', array_unique( $classes ) );
+
+       if ( 'delete' === $type )
+               $class = 'button-secondary delete';
+
+       $text = $text ? $text : __( 'Save Changes' );
 
        // Default the id attribute to $name unless an id was specifically provided in $other_attributes
        $id = $name;
@@ -1706,8 +1669,8 @@ final class WP_Internal_Pointers {
 
                $registered_pointers = array(
                        'index.php'    => 'wp330_toolbar',
-                       'post-new.php' => 'wp330_media_uploader',
-                       'post.php'     => 'wp330_media_uploader',
+                       'post-new.php' => 'wp350_media',
+                       'post.php'     => 'wp350_media',
                        'themes.php'   => array( 'wp330_saving_widgets', 'wp340_customize_current_theme_link' ),
                        'appearance_page_custom-header' => 'wp340_choose_image_from_library',
                        'appearance_page_custom-background' => 'wp340_choose_image_from_library',
@@ -1720,10 +1683,10 @@ final class WP_Internal_Pointers {
                $pointers = (array) $registered_pointers[ $hook_suffix ];
 
                $caps_required = array(
-                       'wp330_media_uploader' => array( 'upload_files' ),
                        'wp330_saving_widgets' => array( 'edit_theme_options', 'switch_themes' ),
                        'wp340_customize_current_theme_link' => array( 'edit_theme_options' ),
                        'wp340_choose_image_from_library' => array( 'edit_theme_options' ),
+                       'wp350_media' => array( 'upload_files' ),
                );
 
                // Get dismissed pointers
@@ -1758,7 +1721,7 @@ final class WP_Internal_Pointers {
         *
         * @param string $pointer_id The pointer ID.
         * @param string $selector The HTML elements, on which the pointer should be attached.
-        * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.dev.js).
+        * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.js).
         */
        private static function print_js( $pointer_id, $selector, $args ) {
                if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
@@ -1815,15 +1778,7 @@ final class WP_Internal_Pointers {
         *
         * @since 3.3.0
         */
-       public static function pointer_wp330_media_uploader() {
-               $content  = '<h3>' . __( 'Updated Media Uploader' ) . '</h3>';
-               $content .= '<p>' . __( 'The single media icon now launches the uploader for all file types, and the new drag and drop interface makes uploading a breeze.' ) . '</p>';
-
-               WP_Internal_Pointers::print_js( 'wp330_media_uploader', '#content-add_media', array(
-                       'content'  => $content,
-                       'position' => array( 'edge' => is_rtl() ? 'right' : 'left', 'align' => 'center' ),
-               ) );
-       }
+       public static function pointer_wp330_media_uploader() {}
 
        /**
         * Print 'New Feature: Saving Widgets' for 3.3.0.
@@ -1871,13 +1826,23 @@ final class WP_Internal_Pointers {
                ) );
        }
 
+       public static function pointer_wp350_media() {
+               $content  = '<h3>' . __( 'New Media Manager' ) . '</h3>';
+               $content .= '<p>' . __( 'Uploading files and creating image galleries has a whole new look. Check it out!' ) . '</p>';
+
+               self::print_js( 'wp350_media', '.insert-media', array(
+                       'content'  => $content,
+                       'position' => array( 'edge' => is_rtl() ? 'right' : 'left', 'align' => 'center' ),
+               ) );
+       }
+
        /**
         * Prevents new users from seeing existing 'new feature' pointers.
         *
         * @since 3.3.0
         */
        public static function dismiss_pointers_for_new_users( $user_id ) {
-               add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_media_uploader,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link' );
+               add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media' );
        }
 }
 
index 1fdafec831cf01c33d65edbf70c58dd54d4a3ff2..5c135aa10aa826b64f43b4c31da4aa245f7b8161 100644 (file)
@@ -58,13 +58,29 @@ function install_theme_search_form( $type_selector = true ) {
 <form id="search-themes" method="get" action="">
        <input type="hidden" name="tab" value="search" />
        <?php if ( $type_selector ) : ?>
+       <label class="screen-reader-text" for="typeselector"><?php _e('Type of search'); ?></label>
        <select name="type" id="typeselector">
        <option value="term" <?php selected('term', $type) ?>><?php _e('Keyword'); ?></option>
        <option value="author" <?php selected('author', $type) ?>><?php _e('Author'); ?></option>
        <option value="tag" <?php selected('tag', $type) ?>><?php _ex('Tag', 'Theme Installer'); ?></option>
        </select>
+       <label class="screen-reader-text" for="s"><?php
+       switch ( $type ) {
+               case 'term':
+                       _e( 'Search by keyword' );
+                       break;
+               case 'author':
+                       _e( 'Search by author' );
+                       break;
+               case 'tag':
+                       _e( 'Search by tag' );
+                       break;
+       }
+       ?></label>
+       <?php else : ?>
+       <label class="screen-reader-text" for="s"><?php _e('Search by keyword'); ?></label>
        <?php endif; ?>
-       <input type="search" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
+       <input type="search" name="s" id="s" size="30" value="<?php echo esc_attr($term) ?>" autofocus="autofocus" />
        <?php submit_button( __( 'Search' ), 'button', 'search', false ); ?>
 </form>
 <?php
@@ -118,10 +134,10 @@ add_action('install_themes_dashboard', 'install_themes_dashboard');
 
 function install_themes_upload($page = 1) {
 ?>
-<h4><?php _e('Install a theme in .zip format') ?></h4>
-<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.') ?></p>
-<form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-theme') ?>">
-       <?php wp_nonce_field( 'theme-upload') ?>
+<h4><?php _e('Install a theme in .zip format'); ?></h4>
+<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.'); ?></p>
+<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-theme'); ?>">
+       <?php wp_nonce_field( 'theme-upload'); ?>
        <input type="file" name="themezip" />
        <?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
 </form>
index af1960e478d2e05cddd8c8dbfc399257c04ea925..1e26c0bac9b90cdfe8ced08497998908f3d1cd85 100644 (file)
@@ -23,7 +23,7 @@ function delete_theme($stylesheet, $redirect = '') {
 
        ob_start();
        if ( empty( $redirect ) )
-               $redirect = wp_nonce_url('themes.php?action=delete&stylesheet=' . $stylesheet, 'delete-theme_' . $stylesheet);
+               $redirect = wp_nonce_url('themes.php?action=delete&stylesheet=' . urlencode( $stylesheet ), 'delete-theme_' . $stylesheet);
        if ( false === ($credentials = request_filesystem_credentials($redirect)) ) {
                $data = ob_get_contents();
                ob_end_clean();
@@ -151,7 +151,7 @@ function theme_update_available( $theme ) {
 function get_theme_feature_list( $api = true ) {
        // Hard-coded list is used if api not accessible.
        $features = array(
-                       __('Colors') => array(
+                       __( 'Colors' ) => array(
                                'black'   => __( 'Black' ),
                                'blue'    => __( 'Blue' ),
                                'brown'   => __( 'Brown' ),
@@ -169,7 +169,7 @@ function get_theme_feature_list( $api = true ) {
                                'light'   => __( 'Light' ),
                        ),
 
-               __('Columns') => array(
+               __( 'Columns' ) => array(
                        'one-column'    => __( 'One Column' ),
                        'two-columns'   => __( 'Two Columns' ),
                        'three-columns' => __( 'Three Columns' ),
@@ -178,7 +178,7 @@ function get_theme_feature_list( $api = true ) {
                        'right-sidebar' => __( 'Right Sidebar' ),
                ),
 
-               __('Width') => array(
+               __( 'Width' ) => array(
                        'fixed-width'    => __( 'Fixed Width' ),
                        'flexible-width' => __( 'Flexible Width' ),
                ),
@@ -193,6 +193,7 @@ function get_theme_feature_list( $api = true ) {
                        'editor-style'          => __( 'Editor Style' ),
                        'featured-image-header' => __( 'Featured Image Header' ),
                        'featured-images'       => __( 'Featured Images' ),
+                       'flexible-header'       => __( 'Flexible Header' ),
                        'front-page-post-form'  => __( 'Front Page Posting' ),
                        'full-width-template'   => __( 'Full Width Template' ),
                        'microformats'          => __( 'Microformats' ),
index 392bb571d830c07cddb9aafb6b0b43b0f2f2ad62..1aeaffee657ff79bc76a0c34bd27779356c93e0b 100644 (file)
@@ -395,6 +395,146 @@ $_old_files = array(
 'wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js',
 // Don't delete, yet: 'wp-pass.php',
 // Don't delete, yet: 'wp-register.php',
+// 3.5
+'wp-admin/gears-manifest.php',
+'wp-admin/includes/manifest.php',
+'wp-admin/images/archive-link.png',
+'wp-admin/images/blue-grad.png',
+'wp-admin/images/button-grad-active.png',
+'wp-admin/images/button-grad.png',
+'wp-admin/images/ed-bg-vs.gif',
+'wp-admin/images/ed-bg.gif',
+'wp-admin/images/fade-butt.png',
+'wp-admin/images/fav-arrow-rtl.gif',
+'wp-admin/images/fav-arrow.gif',
+'wp-admin/images/fav-vs.png',
+'wp-admin/images/fav.png',
+'wp-admin/images/gray-grad.png',
+'wp-admin/images/loading-publish.gif',
+'wp-admin/images/logo-ghost.png',
+'wp-admin/images/logo.gif',
+'wp-admin/images/menu-arrow-frame-rtl.png',
+'wp-admin/images/menu-arrow-frame.png',
+'wp-admin/images/menu-arrows.gif',
+'wp-admin/images/menu-bits-rtl-vs.gif',
+'wp-admin/images/menu-bits-rtl.gif',
+'wp-admin/images/menu-bits-vs.gif',
+'wp-admin/images/menu-bits.gif',
+'wp-admin/images/menu-dark-rtl-vs.gif',
+'wp-admin/images/menu-dark-rtl.gif',
+'wp-admin/images/menu-dark-vs.gif',
+'wp-admin/images/menu-dark.gif',
+'wp-admin/images/required.gif',
+'wp-admin/images/screen-options-toggle-vs.gif',
+'wp-admin/images/screen-options-toggle.gif',
+'wp-admin/images/toggle-arrow-rtl.gif',
+'wp-admin/images/toggle-arrow.gif',
+'wp-admin/images/upload-classic.png',
+'wp-admin/images/upload-fresh.png',
+'wp-admin/images/white-grad-active.png',
+'wp-admin/images/white-grad.png',
+'wp-admin/images/widgets-arrow-vs.gif',
+'wp-admin/images/widgets-arrow.gif',
+'wp-admin/images/wpspin_dark.gif',
+'wp-includes/images/upload.png',
+'wp-includes/js/prototype.js',
+'wp-includes/js/scriptaculous',
+'wp-admin/css/wp-admin-rtl.dev.css',
+'wp-admin/css/wp-admin.dev.css',
+'wp-admin/css/media-rtl.dev.css',
+'wp-admin/css/media.dev.css',
+'wp-admin/css/colors-classic.dev.css',
+'wp-admin/css/customize-controls-rtl.dev.css',
+'wp-admin/css/customize-controls.dev.css',
+'wp-admin/css/ie-rtl.dev.css',
+'wp-admin/css/ie.dev.css',
+'wp-admin/css/install.dev.css',
+'wp-admin/css/colors-fresh.dev.css',
+'wp-includes/js/customize-base.dev.js',
+'wp-includes/js/json2.dev.js',
+'wp-includes/js/comment-reply.dev.js',
+'wp-includes/js/customize-preview.dev.js',
+'wp-includes/js/wplink.dev.js',
+'wp-includes/js/tw-sack.dev.js',
+'wp-includes/js/wp-list-revisions.dev.js',
+'wp-includes/js/autosave.dev.js',
+'wp-includes/js/admin-bar.dev.js',
+'wp-includes/js/quicktags.dev.js',
+'wp-includes/js/wp-ajax-response.dev.js',
+'wp-includes/js/wp-pointer.dev.js',
+'wp-includes/js/hoverIntent.dev.js',
+'wp-includes/js/colorpicker.dev.js',
+'wp-includes/js/wp-lists.dev.js',
+'wp-includes/js/customize-loader.dev.js',
+'wp-includes/js/jquery/jquery.table-hotkeys.dev.js',
+'wp-includes/js/jquery/jquery.color.dev.js',
+'wp-includes/js/jquery/jquery.color.js',
+'wp-includes/js/jquery/jquery.hotkeys.dev.js',
+'wp-includes/js/jquery/jquery.form.dev.js',
+'wp-includes/js/jquery/suggest.dev.js',
+'wp-admin/js/xfn.dev.js',
+'wp-admin/js/set-post-thumbnail.dev.js',
+'wp-admin/js/comment.dev.js',
+'wp-admin/js/theme.dev.js',
+'wp-admin/js/cat.dev.js',
+'wp-admin/js/password-strength-meter.dev.js',
+'wp-admin/js/user-profile.dev.js',
+'wp-admin/js/theme-preview.dev.js',
+'wp-admin/js/post.dev.js',
+'wp-admin/js/media-upload.dev.js',
+'wp-admin/js/word-count.dev.js',
+'wp-admin/js/plugin-install.dev.js',
+'wp-admin/js/edit-comments.dev.js',
+'wp-admin/js/media-gallery.dev.js',
+'wp-admin/js/custom-fields.dev.js',
+'wp-admin/js/custom-background.dev.js',
+'wp-admin/js/common.dev.js',
+'wp-admin/js/inline-edit-tax.dev.js',
+'wp-admin/js/gallery.dev.js',
+'wp-admin/js/utils.dev.js',
+'wp-admin/js/widgets.dev.js',
+'wp-admin/js/wp-fullscreen.dev.js',
+'wp-admin/js/nav-menu.dev.js',
+'wp-admin/js/dashboard.dev.js',
+'wp-admin/js/link.dev.js',
+'wp-admin/js/user-suggest.dev.js',
+'wp-admin/js/postbox.dev.js',
+'wp-admin/js/tags.dev.js',
+'wp-admin/js/image-edit.dev.js',
+'wp-admin/js/media.dev.js',
+'wp-admin/js/customize-controls.dev.js',
+'wp-admin/js/inline-edit-post.dev.js',
+'wp-admin/js/categories.dev.js',
+'wp-admin/js/editor.dev.js',
+'wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js',
+'wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js',
+'wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js',
+'wp-includes/js/plupload/handlers.dev.js',
+'wp-includes/js/plupload/wp-plupload.dev.js',
+'wp-includes/js/swfupload/handlers.dev.js',
+'wp-includes/js/jcrop/jquery.Jcrop.dev.js',
+'wp-includes/js/jcrop/jquery.Jcrop.js',
+'wp-includes/js/jcrop/jquery.Jcrop.css',
+'wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js',
+'wp-includes/css/wp-pointer.dev.css',
+'wp-includes/css/editor.dev.css',
+'wp-includes/css/jquery-ui-dialog.dev.css',
+'wp-includes/css/admin-bar-rtl.dev.css',
+'wp-includes/css/admin-bar.dev.css',
+'wp-includes/js/jquery/ui/jquery.effects.clip.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.scale.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.blind.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.core.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.shake.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.fade.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.explode.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.slide.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.drop.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.highlight.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.bounce.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.transfer.min.js',
+'wp-includes/js/jquery/ui/jquery.effects.fold.min.js',
 );
 
 /**
@@ -419,7 +559,8 @@ global $_new_bundled_files;
 $_new_bundled_files = array(
 'plugins/akismet/' => '2.0',
 'themes/twentyten/' => '3.0',
-'themes/twentyeleven/' => '3.2'
+'themes/twentyeleven/' => '3.2',
+'themes/twentytwelve/' => '3.5',
 );
 
 /**
@@ -473,11 +614,36 @@ function update_core($from, $to) {
 
        @set_time_limit( 300 );
 
+       // Sanity check the unzipped distribution
+       apply_filters( 'update_feedback', __('Verifying the unpacked files&#8230;') );
+       $distro = '';
+       $roots = array( '/wordpress/', '/wordpress-mu/' );
+       foreach ( $roots as $root ) {
+               if ( $wp_filesystem->exists( $from . $root . 'readme.html' ) && $wp_filesystem->exists( $from . $root . 'wp-includes/version.php' ) ) {
+                       $distro = $root;
+                       break;
+               }
+       }
+       if ( ! $distro ) {
+               $wp_filesystem->delete( $from, true );
+               return new WP_Error( 'insane_distro', __('The update could not be unpacked') );
+       }
+
+       // Import $wp_version, $required_php_version, and $required_mysql_version from the new version
+       $versions_file = $wp_filesystem->wp_content_dir() . 'upgrade/version-current.php';
+       if ( ! $wp_filesystem->copy( $from . $distro . 'wp-includes/version.php', $versions_file ) ) {
+                $wp_filesystem->delete( $from, true );
+                return new WP_Error( 'copy_failed', __('Could not copy file.') );
+       }
+
+       $wp_filesystem->chmod( $versions_file, FS_CHMOD_FILE );
+       require_once( WP_CONTENT_DIR . '/upgrade/version-current.php' );
+       $wp_filesystem->delete( $versions_file );
+
        $php_version    = phpversion();
        $mysql_version  = $wpdb->db_version();
-       $required_php_version = '5.2.4';
-       $required_mysql_version = '5.0';
-       $wp_version = '3.4.2';
+       $old_wp_version = $GLOBALS['wp_version']; // The version of WordPress we're updating from
+       $development_build = ( false !== strpos( $old_wp_version . $wp_version, '-' )  ); // a dash in the version indicates a Development release
        $php_compat     = version_compare( $php_version, $required_php_version, '>=' );
        if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) )
                $mysql_compat = true;
@@ -494,21 +660,6 @@ function update_core($from, $to) {
        elseif ( !$mysql_compat )
                return new WP_Error( 'mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ) );
 
-       // Sanity check the unzipped distribution
-       apply_filters('update_feedback', __('Verifying the unpacked files&#8230;'));
-       $distro = '';
-       $roots = array( '/wordpress/', '/wordpress-mu/' );
-       foreach( $roots as $root ) {
-               if ( $wp_filesystem->exists($from . $root . 'readme.html') && $wp_filesystem->exists($from . $root . 'wp-includes/version.php') ) {
-                       $distro = $root;
-                       break;
-               }
-       }
-       if ( !$distro ) {
-               $wp_filesystem->delete($from, true);
-               return new WP_Error('insane_distro', __('The update could not be unpacked') );
-       }
-
        apply_filters('update_feedback', __('Installing the latest version&#8230;'));
 
        // Create maintenance file to signal that we are upgrading
@@ -542,11 +693,11 @@ function update_core($from, $to) {
 
        // Copy New bundled plugins & themes
        // This gives us the ability to install new plugins & themes bundled with future versions of WordPress whilst avoiding the re-install upon upgrade issue.
+       // $development_build controls us overwriting bundled themes and plugins when a non-stable release is being updated
        if ( !is_wp_error($result) && ( ! defined('CORE_UPGRADE_SKIP_NEW_BUNDLED') || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) {
-               $old_version = $GLOBALS['wp_version']; // $wp_version in local scope == new version
                foreach ( (array) $_new_bundled_files as $file => $introduced_version ) {
-                       // If $introduced version is greater than what the site was previously running
-                       if ( version_compare($introduced_version, $old_version, '>') ) {
+                       // If a $development_build or if $introduced version is greater than what the site was previously running
+                       if ( $development_build || version_compare( $introduced_version, $old_wp_version, '>' ) ) {
                                $directory = ('/' == $file[ strlen($file)-1 ]);
                                list($type, $filename) = explode('/', $file, 2);
 
@@ -558,13 +709,13 @@ function update_core($from, $to) {
                                        continue;
 
                                if ( ! $directory ) {
-                                       if ( $wp_filesystem->exists($dest . $filename) )
+                                       if ( ! $development_build && $wp_filesystem->exists( $dest . $filename ) )
                                                continue;
 
                                        if ( ! $wp_filesystem->copy($from . $distro . 'wp-content/' . $file, $dest . $filename, FS_CHMOD_FILE) )
                                                $result = new WP_Error('copy_failed', __('Could not copy file.'), $dest . $filename);
                                } else {
-                                       if ( $wp_filesystem->is_dir($dest . $filename) )
+                                       if ( ! $development_build && $wp_filesystem->is_dir( $dest . $filename ) )
                                                continue;
 
                                        $wp_filesystem->mkdir($dest . $filename, FS_CHMOD_DIR);
@@ -680,7 +831,7 @@ function _copy_dir($from, $to, $skip_list = array() ) {
 function _redirect_to_about_wordpress( $new_version ) {
        global $wp_version, $pagenow, $action;
 
-       if ( version_compare( $wp_version, '3.5-alpha', '>=' ) )
+       if ( version_compare( $wp_version, '3.4-RC1', '>=' ) )
                return;
 
        // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts.
@@ -696,11 +847,8 @@ function _redirect_to_about_wordpress( $new_version ) {
        // See do_core_upgrade()
        show_message( __('WordPress updated successfully') );
 
-       $js_message = __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' );
-       $js_message = str_replace( '"%s"', '"%2$s"', $js_message ); // in lieu of breaking the string.
-
        // self_admin_url() won't exist when upgrading from <= 3.0, so relative URLs are intentional.
-       show_message( '<span class="hide-if-no-js">' . sprintf( $js_message, $new_version, 'about.php?updated' ) . '</span>' );
+       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%2$s">here</a>.' ), $new_version, 'about.php?updated' ) . '</span>' );
        show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $new_version, 'about.php?updated' ) . '</span>' );
        echo '</div>';
        ?>
index e02d4de2e72691def537224deb35ebd6d8a2fa66..5cca9dca6bac01ca4a01715a0b4364da1272e9f3 100644 (file)
@@ -83,9 +83,12 @@ function find_core_update( $version, $locale ) {
 
 function core_update_footer( $msg = '' ) {
        if ( !current_user_can('update_core') )
-               return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] );
+               return sprintf( __( 'Version %s' ), get_bloginfo( 'version', 'display' ) );
 
        $cur = get_preferred_from_update_core();
+       if ( ! is_object( $cur ) )
+               $cur = new stdClass;
+
        if ( ! isset( $cur->current ) )
                $cur->current = '';
 
@@ -97,7 +100,7 @@ function core_update_footer( $msg = '' ) {
 
        switch ( $cur->response ) {
        case 'development' :
-               return sprintf( __( 'You are using a development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.' ), $GLOBALS['wp_version'], network_admin_url( 'update-core.php' ) );
+               return sprintf( __( 'You are using a development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.' ), get_bloginfo( 'version', 'display' ), network_admin_url( 'update-core.php' ) );
        break;
 
        case 'upgrade' :
@@ -106,7 +109,7 @@ function core_update_footer( $msg = '' ) {
 
        case 'latest' :
        default :
-               return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] );
+               return sprintf( __( 'Version %s' ), get_bloginfo( 'version', 'display' ) );
        break;
        }
 }
@@ -134,10 +137,11 @@ function update_nag() {
        echo "<div class='update-nag'>$msg</div>";
 }
 add_action( 'admin_notices', 'update_nag', 3 );
+add_action( 'network_admin_notices', 'update_nag', 3 );
 
 // Called directly from dashboard
 function update_right_now_message() {
-       $msg = sprintf( __('You are using <span class="b">WordPress %s</span>.'), $GLOBALS['wp_version'] );
+       $msg = sprintf( __( 'You are using <span class="b">WordPress %s</span>.' ), get_bloginfo( 'version', 'display' ) );
 
        if ( current_user_can('update_core') ) {
                $cur = get_preferred_from_update_core();
index bb69d9a0778058e7a5c6f872846659189e998f25..c192cf3aae1077427e80982b88feadfbca93c8be 100644 (file)
@@ -123,68 +123,6 @@ function wp_install_defaults($user_id) {
        $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1));
        $cat_tt_id = $wpdb->insert_id;
 
-       // Default link category
-       $cat_name = __('Blogroll');
-       /* translators: Default link category slug */
-       $cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug'));
-
-       if ( global_terms_enabled() ) {
-               $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) );
-               if ( $blogroll_id == null ) {
-                       $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) );
-                       $blogroll_id = $wpdb->insert_id;
-               }
-               update_option('default_link_category', $blogroll_id);
-       } else {
-               $blogroll_id = 2;
-       }
-
-       $wpdb->insert( $wpdb->terms, array('term_id' => $blogroll_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) );
-       $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7));
-       $blogroll_tt_id = $wpdb->insert_id;
-
-       // Now drop in some default links
-       $default_links = array();
-       $default_links[] = array(       'link_url' => __( 'http://codex.wordpress.org/' ),
-                                                               'link_name' => __( 'Documentation' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' => '');
-
-       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/news/' ),
-                                                               'link_name' => __( 'WordPress Blog' ),
-                                                               'link_rss' => __( 'http://wordpress.org/news/feed/' ),
-                                                               'link_notes' => '');
-
-       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/' ),
-                                                               'link_name' => _x( 'Support Forums', 'default link' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' =>'');
-
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/',
-                                                               'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' =>'');
-
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/',
-                                                               'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' =>'');
-
-       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/forum/requests-and-feedback' ),
-                                                               'link_name' => __( 'Feedback' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' =>'');
-
-       $default_links[] = array(       'link_url' => __( 'http://planet.wordpress.org/' ),
-                                                               'link_name' => __( 'WordPress Planet' ),
-                                                               'link_rss' => '',
-                                                               'link_notes' =>'');
-
-       foreach ( $default_links as $link ) {
-               $wpdb->insert( $wpdb->links, $link);
-               $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id) );
-       }
-
        // First post
        $now = date('Y-m-d H:i:s');
        $now_gmt = gmdate('Y-m-d H:i:s');
@@ -224,7 +162,8 @@ function wp_install_defaults($user_id) {
        // Default comment
        $first_comment_author = __('Mr WordPress');
        $first_comment_url = 'http://wordpress.org/';
-       $first_comment = __('Hi, this is a comment.<br />To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them.');
+       $first_comment = __('Hi, this is a comment.
+To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them.');
        if ( is_multisite() ) {
                $first_comment_author = get_site_option( 'first_comment_author', $first_comment_author );
                $first_comment_url = get_site_option( 'first_comment_url', network_home_url() );
@@ -247,7 +186,7 @@ function wp_install_defaults($user_id) {
 
 ...or something like this:
 
-<blockquote>The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickies to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.</blockquote>
+<blockquote>The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.</blockquote>
 
 As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to delete this page and create new pages for your content. Have fun!" ), admin_url() );
        if ( is_multisite() )
@@ -279,7 +218,7 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
        update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
        update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
        update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) );
-       update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'sidebar-4' => array ( ), 'sidebar-5' => array ( ), 'array_version' => 3 ) );
+       update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'array_version' => 3 ) );
 
        if ( ! is_multisite() )
                update_user_meta( $user_id, 'show_welcome_panel', 1 );
@@ -319,7 +258,7 @@ if ( !function_exists('wp_new_blog_notification') ) :
  * @param string $password User's Password.
  */
 function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) {
-       $user = new WP_User($user_id);
+       $user = new WP_User( $user_id );
        $email = $user->user_email;
        $name = $user->user_login;
        $message = sprintf(__("Your new WordPress site has been successfully set up at:
@@ -460,6 +399,11 @@ function upgrade_all() {
        if ( $wp_current_db_version < 20080 )
                upgrade_340();
 
+       if ( $wp_current_db_version < 22422 )
+               upgrade_350();
+
+       maybe_disable_link_manager();
+
        maybe_disable_automattic_widgets();
 
        update_option( 'db_version', $wp_db_version );
@@ -567,11 +511,11 @@ function upgrade_110() {
        $time_difference = $all_options->time_difference;
 
                $server_time = time()+date('Z');
-       $weblogger_time = $server_time + $time_difference*3600;
+       $weblogger_time = $server_time + $time_difference * HOUR_IN_SECONDS;
        $gmt_time = time();
 
-       $diff_gmt_server = ($gmt_time - $server_time) / 3600;
-       $diff_weblogger_server = ($weblogger_time - $server_time) / 3600;
+       $diff_gmt_server = ($gmt_time - $server_time) / HOUR_IN_SECONDS;
+       $diff_weblogger_server = ($weblogger_time - $server_time) / HOUR_IN_SECONDS;
        $diff_gmt_weblogger = $diff_gmt_server - $diff_weblogger_server;
        $gmt_offset = -$diff_gmt_weblogger;
 
@@ -1050,11 +994,6 @@ function upgrade_260() {
 
        if ( $wp_current_db_version < 8000 )
                populate_roles_260();
-
-       if ( $wp_current_db_version < 8201 ) {
-               update_option('enable_app', 1);
-               update_option('enable_xmlrpc', 1);
-       }
 }
 
 /**
@@ -1242,6 +1181,33 @@ function upgrade_340() {
        }
 }
 
+/**
+ * Execute changes made in WordPress 3.5.
+ *
+ * @since 3.5.0
+ */
+function upgrade_350() {
+       global $wp_current_db_version, $wpdb;
+
+       if ( $wp_current_db_version < 22006 && $wpdb->get_var( "SELECT link_id FROM $wpdb->links LIMIT 1" ) )
+               update_option( 'link_manager_enabled', 1 ); // Previously set to 0 by populate_options()
+
+       if ( $wp_current_db_version < 21811 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+               $meta_keys = array();
+               foreach ( array_merge( get_post_types(), get_taxonomies() ) as $name ) {
+                       if ( false !== strpos( $name, '-' ) )
+                       $meta_keys[] = 'edit_' . str_replace( '-', '_', $name ) . '_per_page';
+               }
+               if ( $meta_keys ) {
+                       $meta_keys = implode( "', '", $meta_keys );
+                       $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('$meta_keys')" );
+               }
+       }
+
+       if ( $wp_current_db_version < 22422 && $term = get_term_by( 'slug', 'post-format-standard', 'post_format' ) )
+               wp_delete_term( $term->term_id, 'post_format' );
+}
+
 /**
  * Execute network level changes
  *
@@ -1307,6 +1273,10 @@ function upgrade_network() {
                        delete_site_option( 'allowed_themes' );
                }
        }
+
+       // 3.5
+       if ( $wp_current_db_version < 21823 )
+               update_site_option( 'ms_files_rewriting', '1' );
 }
 
 // The functions we use to actually do stuff
@@ -1954,9 +1924,7 @@ function wp_check_mysql_version() {
 }
 
 /**
- * {@internal Missing Short Description}}
- *
- * {@internal Missing Long Description}}
+ * Disables the Automattic widgets plugin, which was merged into core.
  *
  * @since 2.2.0
  */
@@ -1972,6 +1940,18 @@ function maybe_disable_automattic_widgets() {
        }
 }
 
+/**
+ * Disables the Link Manager on upgrade, if at the time of upgrade, no links exist in the DB.
+ *
+ * @since 3.5.0
+ */
+function maybe_disable_link_manager() {
+       global $wp_current_db_version, $wpdb;
+
+       if ( $wp_current_db_version >= 22006 && get_option( 'link_manager_enabled' ) && ! $wpdb->get_var( "SELECT link_id FROM $wpdb->links LIMIT 1" ) )
+               update_option( 'link_manager_enabled', 0 );
+}
+
 /**
  * Runs before the schema is upgraded.
  *
index ff1e91dcebda385b51d6974ae2cea95201c93d80..1d60aa57e3da90f1965ce345dc50b2d3134113be 100644 (file)
@@ -69,7 +69,8 @@ function edit_user( $user_id = 0 ) {
                        $user->user_url = '';
                } else {
                        $user->user_url = esc_url_raw( $_POST['url'] );
-                       $user->user_url = preg_match('/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url;
+                       $protocols = implode( '|', array_map( 'preg_quote', wp_allowed_protocols() ) );
+                       $user->user_url = preg_match('/^(' . $protocols . '):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url;
                }
        }
        if ( isset( $_POST['first_name'] ) )
@@ -143,7 +144,7 @@ function edit_user( $user_id = 0 ) {
        if ( empty( $user->user_email ) ) {
                $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please enter an e-mail address.' ), array( 'form-field' => 'email' ) );
        } elseif ( !is_email( $user->user_email ) ) {
-               $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The e-mail address isn&#8217;t correct.' ), array( 'form-field' => 'email' ) );
+               $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn&#8217;t correct.' ), array( 'form-field' => 'email' ) );
        } elseif ( ( $owner_id = email_exists($user->user_email) ) && ( !$update || ( $owner_id != $user->ID ) ) ) {
                $errors->add( 'email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'), array( 'form-field' => 'email' ) );
        }
@@ -155,9 +156,9 @@ function edit_user( $user_id = 0 ) {
                return $errors;
 
        if ( $update ) {
-               $user_id = wp_update_user( get_object_vars( $user ) );
+               $user_id = wp_update_user( $user );
        } else {
-               $user_id = wp_insert_user( get_object_vars( $user ) );
+               $user_id = wp_insert_user( $user );
                wp_new_user_notification( $user_id, isset($_POST['send_password']) ? $pass1 : '' );
        }
        return $user_id;
@@ -197,7 +198,7 @@ function get_editable_roles() {
  * @return object WP_User object with user data.
  */
 function get_user_to_edit( $user_id ) {
-       $user = new WP_User( $user_id );
+       $user = get_userdata( $user_id );
 
        $user->filter = 'edit';
 
@@ -269,8 +270,18 @@ function wp_delete_user( $id, $reassign = 'novalue' ) {
                }
        } else {
                $reassign = (int) $reassign;
+               $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) );
                $wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) );
+               if ( ! empty( $post_ids ) ) {
+                       foreach ( $post_ids as $post_id )
+                               clean_post_cache( $post_id );
+               }
+               $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) );
                $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) );
+               if ( ! empty( $link_ids ) ) {
+                       foreach ( $link_ids as $link_id )
+                               clean_bookmark_cache( $link_id );
+               }
        }
 
        // FINALLY, delete user
@@ -352,7 +363,7 @@ function default_password_nag() {
        echo '<strong>' . __('Notice:') . '</strong> ';
        _e('You&rsquo;re using the auto-generated password for your account. Would you like to change it to something easier to remember?');
        echo '</p><p>';
-       printf( '<a href="%s">' . __('Yes, take me to my profile page') . '</a> | ', admin_url('profile.php') . '#password' );
+       printf( '<a href="%s">' . __('Yes, take me to my profile page') . '</a> | ', get_edit_profile_url( get_current_user_id() ) . '#password' );
        printf( '<a href="%s" id="default-password-nag-no">' . __('No thanks, do not remind me again') . '</a>', '?default_password_nag=0' );
        echo '</p></div>';
 }
index 318cf3f64df46ae8b366c601d880c7226d1533ec..e0c58a7277d784d04364b58b278236c62844468c 100644 (file)
@@ -179,7 +179,11 @@ function wp_widget_control( $sidebar_args ) {
        <div class="widget-top">
        <div class="widget-title-action">
                <a class="widget-action hide-if-no-js" href="#available-widgets"></a>
-               <a class="widget-control-edit hide-if-js" href="<?php echo esc_url( add_query_arg( $query_arg ) ); ?>"><span class="edit"><?php _e('Edit'); ?></span><span class="add"><?php _e('Add'); ?></span></a>
+               <a class="widget-control-edit hide-if-js" href="<?php echo esc_url( add_query_arg( $query_arg ) ); ?>">
+                       <span class="edit"><?php _ex( 'Edit', 'widget' ); ?></span>
+                       <span class="add"><?php _ex( 'Add', 'widget' ); ?></span>
+                       <span class="screen-reader-text"><?php echo $widget_title; ?></span>
+               </a>
        </div>
        <div class="widget-title"><h4><?php echo $widget_title ?><span class="in-widget-title"></span></h4></div>
        </div>
@@ -207,8 +211,8 @@ function wp_widget_control( $sidebar_args ) {
                <a class="widget-control-close" href="#close"><?php _e('Close'); ?></a>
                </div>
                <div class="alignright<?php if ( 'noform' === $has_form ) echo ' widget-control-noform'; ?>">
-               <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback" title="" alt="" />
-               <?php submit_button( __( 'Save' ), 'button-primary widget-control-save', 'savewidget', false, array( 'id' => 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?>
+                       <?php submit_button( __( 'Save' ), 'button-primary widget-control-save right', 'savewidget', false, array( 'id' => 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?>
+                       <span class="spinner"></span>
                </div>
                <br class="clear" />
        </div>
index c5853bafe917ece6b6a72c01bb5c03c90d1be025..dd429e7fa7e9c5dae930531cb6944ec5deee1702 100644 (file)
@@ -17,8 +17,12 @@ require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
 wp_dashboard_setup();
 
 wp_enqueue_script( 'dashboard' );
-wp_enqueue_script( 'plugin-install' );
-wp_enqueue_script( 'media-upload' );
+if ( current_user_can( 'edit_theme_options' ) )
+       wp_enqueue_script( 'customize-loader' );
+if ( current_user_can( 'install_plugins' ) )
+       wp_enqueue_script( 'plugin-install' );
+if ( current_user_can( 'upload_files' ) )
+       wp_enqueue_script( 'media-upload' );
 add_thickbox();
 
 if ( wp_is_mobile() )
@@ -57,7 +61,7 @@ $screen->add_help_tab( array(
 $help  = '<p>' . __('You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.') . '</p>';
 $help .= '<p>' . __('<strong>Screen Options</strong> - Use the Screen Options tab to choose which Dashboard boxes to show, and how many columns to display.') . '</p>';
 $help .= '<p>' . __('<strong>Drag and Drop</strong> - To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.') . '</p>';
-$help .= '<p>' . __('<strong>Box Controls</strong> - Click the title bar of the box to expand or collapse it. In addition, some box have configurable content, and will show a &#8220;Configure&#8221; link in the title bar if you hover over it.') . '</p>';
+$help .= '<p>' . __('<strong>Box Controls</strong> - Click the title bar of the box to expand or collapse it. In addition, some boxes have configurable content, and will show a &#8220;Configure&#8221; link in the title bar if you hover over it.') . '</p>';
 
 $screen->add_help_tab( array(
        'id'      => 'help-layout',
@@ -72,7 +76,7 @@ if ( current_user_can( 'moderate_comments' ) )
        $help .= '<p>' . __('<strong>Recent Comments</strong> - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them.') . '</p>';
 if ( current_user_can( 'publish_posts' ) )
        $help .= '<p>' . __('<strong>Incoming Links</strong> - Shows links to your site found by Google Blog Search.') . '</p>';
-if ( current_user_can( 'edit_posts' ) ) {
+if ( current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
        $help .= '<p>' . __('<strong>QuickPress</strong> - Allows you to create a new post and either publish it or save it as a draft.') . '</p>';
        $help .= '<p>' . __('<strong>Recent Drafts</strong> - Displays links to the 5 most recent draft posts you&#8217;ve started.') . '</p>';
 }
@@ -106,7 +110,21 @@ $today = current_time('mysql', 1);
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?></h2>
 
-<?php wp_welcome_panel(); ?>
+<?php if ( has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) :
+       $classes = 'welcome-panel';
+
+       $option = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+       // 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
+       $hide = 0 == $option || ( 2 == $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) );
+       if ( $hide )
+               $classes .= ' hidden'; ?>
+
+       <div id="welcome-panel" class="<?php echo esc_attr( $classes ); ?>">
+               <?php wp_nonce_field( 'welcome-panel-nonce', 'welcomepanelnonce', false ); ?>
+               <a class="welcome-panel-close" href="<?php echo esc_url( admin_url( '?welcome=0' ) ); ?>"><?php _e( 'Dismiss' ); ?></a>
+               <?php do_action( 'welcome_panel' ); ?>
+       </div>
+<?php endif; ?>
 
 <div id="dashboard-widgets-wrap">
 
index e39d1f4fc56079707561814f24a4c3686f44cb68..2ff4f172c07153d6f19d9ea488463684c95a1948 100644 (file)
@@ -15,8 +15,8 @@ if ( false ) {
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Error: PHP is not running</title>
 </head>
-<body>
-       <h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
+<body class="wp-core-ui">
+       <h1 id="logo"><a href="http://wordpress.org/">WordPress</a></h1>
        <h2>Error: PHP is not running</h2>
        <p>WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.</p>
 </body>
@@ -58,10 +58,12 @@ function display_header() {
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php _e( 'WordPress &rsaquo; Installation' ); ?></title>
-       <?php wp_admin_css( 'install', true ); ?>
+       <?php
+       wp_admin_css( 'install', true );
+       ?>
 </head>
-<body<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
+<body class="wp-core-ui<?php if ( is_rtl() ) echo ' rtl'; ?>">
+<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php
 } // end display_header()
@@ -134,7 +136,7 @@ function display_setup_form( $error = null ) {
                        <td colspan="2"><label><input type="checkbox" name="blog_public" value="1" <?php checked( $blog_public ); ?> /> <?php _e( 'Allow search engines to index this site.' ); ?></label></td>
                </tr>
        </table>
-       <p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e( 'Install WordPress' ); ?>" class="button" /></p>
+       <p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e( 'Install WordPress' ); ?>" class="button button-large" /></p>
 </form>
 <?php
 } // end display_setup_form()
@@ -142,7 +144,7 @@ function display_setup_form( $error = null ) {
 // Let's check to make sure WP isn't already installed.
 if ( is_blog_installed() ) {
        display_header();
-       die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="../wp-login.php" class="button">' . __('Log In') . '</a></p></body></html>' );
+       die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="../wp-login.php" class="button button-large">' . __( 'Log In' ) . '</a></p></body></html>' );
 }
 
 $php_version    = phpversion();
@@ -241,7 +243,7 @@ switch($step) {
        </tr>
 </table>
 
-<p class="step"><a href="../wp-login.php" class="button"><?php _e( 'Log In' ); ?></a></p>
+<p class="step"><a href="../wp-login.php" class="button button-large"><?php _e( 'Log In' ); ?></a></p>
 
 <?php
                }
diff --git a/wp-admin/js/cat.dev.js b/wp-admin/js/cat.dev.js
deleted file mode 100644 (file)
index cbc2900..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-jQuery(document).ready( function($) {
-       var myConfirm = function() { return '' !== $('#newcat').val(); };
-       $('#jaxcat').prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" class="add:categorychecklist:jaxcat" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span><span id="cat-ajax-response"></span>');
-       $('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response', confirm: myConfirm } );
-} );
index deee8c47e36f0758b6bbb784b489bd65702f33e9..772ab5a28cca75fc64da8914efc7e0ad112612e6 100644 (file)
@@ -1 +1,5 @@
-jQuery(document).ready(function(b){var a=function(){return""!==b("#newcat").val()};b("#jaxcat").prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" class="add:categorychecklist:jaxcat" id="catadd" value="'+catL10n.add+'"/><input type="hidden"/><input type="hidden"/><span id="howto">'+catL10n.how+'</span></span><span id="cat-ajax-response"></span>');b("#categorychecklist").wpList({alt:"",response:"cat-ajax-response",confirm:a})});
\ No newline at end of file
+jQuery(document).ready( function($) {
+       var myConfirm = function() { return '' !== $('#newcat').val(); };
+       $('#jaxcat').prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" data-wp-lists="add:categorychecklist:jaxcat" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span><span id="cat-ajax-response"></span>');
+       $('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response', confirm: myConfirm } );
+} );
diff --git a/wp-admin/js/cat.min.js b/wp-admin/js/cat.min.js
new file mode 100644 (file)
index 0000000..f286d61
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(b){var a=function(){return""!==b("#newcat").val()};b("#jaxcat").prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" data-wp-lists="add:categorychecklist:jaxcat" id="catadd" value="'+catL10n.add+'"/><input type="hidden"/><input type="hidden"/><span id="howto">'+catL10n.how+'</span></span><span id="cat-ajax-response"></span>');b("#categorychecklist").wpList({alt:"",response:"cat-ajax-response",confirm:a})});
\ No newline at end of file
diff --git a/wp-admin/js/categories.dev.js b/wp-admin/js/categories.dev.js
deleted file mode 100644 (file)
index cc58eb4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-jQuery(document).ready(function($) {
-       var options = false, addAfter, delBefore, delAfter;
-       if ( document.forms['addcat'].category_parent )
-               options = document.forms['addcat'].category_parent.options;
-
-       addAfter = function( r, settings ) {
-               var name, id;
-
-               name = $("<span>" + $('name', r).text() + "</span>").text();
-               id = $('cat', r).attr('id');
-               options[options.length] = new Option(name, id);
-       }
-
-       delAfter = function( r, settings ) {
-               var id = $('cat', r).attr('id'), o;
-               for ( o = 0; o < options.length; o++ )
-                       if ( id == options[o].value )
-                               options[o] = null;
-       }
-
-       delBefore = function(s) {
-               if ( 'undefined' != showNotice )
-                       return showNotice.warn() ? s : false;
-
-               return s;
-       }
-
-       if ( options )
-               $('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } );
-       else
-               $('#the-list').wpList({ delBefore: delBefore });
-
-       $('.delete a[class^="delete"]').live('click', function(){return false;});
-});
index 45c2358a48141603c27d77992228f0b68f1ed807..cc58eb4a307437a0e994b677c5620360ddbf8ede 100644 (file)
@@ -1 +1,34 @@
-jQuery(document).ready(function(d){var b=false,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}e=function(h,g){var f,i;f=d("<span>"+d("name",h).text()+"</span>").text();i=d("cat",h).attr("id");b[b.length]=new Option(f,i)};a=function(g,f){var i=d("cat",g).attr("id"),h;for(h=0;h<b.length;h++){if(i==b[h].value){b[h]=null}}};c=function(f){if("undefined"!=showNotice){return showNotice.warn()?f:false}return f};if(b){d("#the-list").wpList({addAfter:e,delBefore:c,delAfter:a})}else{d("#the-list").wpList({delBefore:c})}d('.delete a[class^="delete"]').live("click",function(){return false})});
\ No newline at end of file
+jQuery(document).ready(function($) {
+       var options = false, addAfter, delBefore, delAfter;
+       if ( document.forms['addcat'].category_parent )
+               options = document.forms['addcat'].category_parent.options;
+
+       addAfter = function( r, settings ) {
+               var name, id;
+
+               name = $("<span>" + $('name', r).text() + "</span>").text();
+               id = $('cat', r).attr('id');
+               options[options.length] = new Option(name, id);
+       }
+
+       delAfter = function( r, settings ) {
+               var id = $('cat', r).attr('id'), o;
+               for ( o = 0; o < options.length; o++ )
+                       if ( id == options[o].value )
+                               options[o] = null;
+       }
+
+       delBefore = function(s) {
+               if ( 'undefined' != showNotice )
+                       return showNotice.warn() ? s : false;
+
+               return s;
+       }
+
+       if ( options )
+               $('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } );
+       else
+               $('#the-list').wpList({ delBefore: delBefore });
+
+       $('.delete a[class^="delete"]').live('click', function(){return false;});
+});
diff --git a/wp-admin/js/categories.min.js b/wp-admin/js/categories.min.js
new file mode 100644 (file)
index 0000000..45c2358
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(d){var b=false,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}e=function(h,g){var f,i;f=d("<span>"+d("name",h).text()+"</span>").text();i=d("cat",h).attr("id");b[b.length]=new Option(f,i)};a=function(g,f){var i=d("cat",g).attr("id"),h;for(h=0;h<b.length;h++){if(i==b[h].value){b[h]=null}}};c=function(f){if("undefined"!=showNotice){return showNotice.warn()?f:false}return f};if(b){d("#the-list").wpList({addAfter:e,delBefore:c,delAfter:a})}else{d("#the-list").wpList({delBefore:c})}d('.delete a[class^="delete"]').live("click",function(){return false})});
\ No newline at end of file
diff --git a/wp-admin/js/color-picker.js b/wp-admin/js/color-picker.js
new file mode 100644 (file)
index 0000000..393f2ff
--- /dev/null
@@ -0,0 +1,131 @@
+( function( $, undef ){
+
+       // html stuff
+       var _before = '<a tabindex="0" class="wp-color-result" />',
+               _after = '<div class="wp-picker-holder" />',
+               _wrap = '<div class="wp-picker-container" />',
+               _button = '<input type="button" class="button button-small hidden" />';
+
+       // jQuery UI Widget constructor
+       var ColorPicker = {
+               options: {
+                       defaultColor: false,
+                       change: false,
+                       clear: false,
+                       hide: true,
+                       palettes: true
+               },
+               _create: function() {
+                       // bail early for IE < 8
+                       if ( $.browser.msie && parseInt( $.browser.version, 10 ) < 8 )
+                               return;
+                       var self = this;
+                       var el = self.element;
+                       $.extend( self.options, el.data() );
+
+                       self.initialValue = el.val();
+
+                       // Set up HTML structure, hide things
+                       el.addClass( 'wp-color-picker' ).hide().wrap( _wrap );
+                       self.wrap = el.parent();
+                       self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( "title", wpColorPickerL10n.pick ).attr( "data-current", wpColorPickerL10n.current );
+                       self.pickerContainer = $( _after ).insertAfter( el );
+                       self.button = $( _button );
+
+                       if ( self.options.defaultColor )
+                               self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
+                       else
+                               self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
+
+                       el.wrap('<span class="wp-picker-input-wrap" />').after(self.button);
+
+                       el.iris( {
+                               target: self.pickerContainer,
+                               hide: true,
+                               width: 255,
+                               mode: 'hsv',
+                               palettes: self.options.palettes,
+                               change: function( event, ui ) {
+                                       self.toggler.css( { backgroundColor: ui.color.toString() } );
+                                       // check for a custom cb
+                                       if ( $.isFunction( self.options.change ) )
+                                               self.options.change.call( this, event, ui );
+                               }
+                       } );
+                       el.val( self.initialValue );
+                       self._addListeners();
+                       if ( ! self.options.hide )
+                               self.toggler.click();
+               },
+               _addListeners: function() {
+                       var self = this;
+
+                       self.toggler.click( function( event ){
+                               event.stopPropagation();
+                               self.element.toggle().iris( 'toggle' );
+                               self.button.toggleClass('hidden');
+                               self.toggler.toggleClass( 'wp-picker-open' );
+
+                               // close picker when you click outside it
+                               if ( self.toggler.hasClass( 'wp-picker-open' ) )
+                                       $( "body" ).on( 'click', { wrap: self.wrap, toggler: self.toggler }, self._bodyListener );
+                               else
+                                       $( "body" ).off( 'click', self._bodyListener );
+                       });
+
+                       self.element.change(function( event ) {
+                               var me = $(this),
+                                       val = me.val();
+                               // Empty = clear
+                               if ( val === '' || val === '#' ) {
+                                       self.toggler.css('backgroundColor', '');
+                                       // fire clear callback if we have one
+                                       if ( $.isFunction( self.options.clear ) )
+                                               self.options.clear.call( this, event );
+                               }
+                       });
+
+                       // open a keyboard-focused closed picker with space or enter
+                       self.toggler.on('keyup', function( e ) {
+                               if ( e.keyCode === 13 || e.keyCode === 32 ) {
+                                       e.preventDefault();
+                                       self.toggler.trigger('click').next().focus();
+                               }
+                       });
+
+                       self.button.click( function( event ) {
+                               var me = $(this);
+                               if ( me.hasClass( 'wp-picker-clear' ) ) {
+                                       self.element.val( '' );
+                                       self.toggler.css('backgroundColor', '');
+                                       if ( $.isFunction( self.options.clear ) )
+                                               self.options.clear.call( this, event );
+                               } else if ( me.hasClass( 'wp-picker-default' ) ) {
+                                       self.element.val( self.options.defaultColor ).change();
+                               }
+                       });
+               },
+               _bodyListener: function( event ) {
+                       if ( ! event.data.wrap.find( event.target ).length )
+                                       event.data.toggler.click();
+               },
+               // $("#input").wpColorPicker('color') returns the current color
+               // $("#input").wpColorPicker('color', '#bada55') to set
+               color: function( newColor ) {
+                       if ( newColor === undef )
+                               return this.element.iris( "option", "color" );
+
+                       this.element.iris( "option", "color", newColor );
+               },
+               //$("#input").wpColorPicker('defaultColor') returns the current default color
+               //$("#input").wpColorPicker('defaultColor', newDefaultColor) to set
+               defaultColor: function( newDefaultColor ) {
+                       if ( newDefaultColor === undef )
+                               return this.options.defaultColor;
+
+                       this.options.defaultColor = newDefaultColor;
+               }
+       }
+
+       $.widget( 'wp.wpColorPicker', ColorPicker );
+}( jQuery ) );
\ No newline at end of file
diff --git a/wp-admin/js/color-picker.min.js b/wp-admin/js/color-picker.min.js
new file mode 100644 (file)
index 0000000..75b6ede
--- /dev/null
@@ -0,0 +1 @@
+(function(f,e){var a='<a tabindex="0" class="wp-color-result" />',c='<div class="wp-picker-holder" />',b='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';var d={options:{defaultColor:false,change:false,clear:false,hide:true,palettes:true},_create:function(){if(f.browser.msie&&parseInt(f.browser.version,10)<8){return}var h=this;var i=h.element;f.extend(h.options,i.data());h.initialValue=i.val();i.addClass("wp-color-picker").hide().wrap(b);h.wrap=i.parent();h.toggler=f(a).insertBefore(i).css({backgroundColor:h.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current);h.pickerContainer=f(c).insertAfter(i);h.button=f(g);if(h.options.defaultColor){h.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString)}else{h.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear)}i.wrap('<span class="wp-picker-input-wrap" />').after(h.button);i.iris({target:h.pickerContainer,hide:true,width:255,mode:"hsv",palettes:h.options.palettes,change:function(j,k){h.toggler.css({backgroundColor:k.color.toString()});if(f.isFunction(h.options.change)){h.options.change.call(this,j,k)}}});i.val(h.initialValue);h._addListeners();if(!h.options.hide){h.toggler.click()}},_addListeners:function(){var h=this;h.toggler.click(function(i){i.stopPropagation();h.element.toggle().iris("toggle");h.button.toggleClass("hidden");h.toggler.toggleClass("wp-picker-open");if(h.toggler.hasClass("wp-picker-open")){f("body").on("click",{wrap:h.wrap,toggler:h.toggler},h._bodyListener)}else{f("body").off("click",h._bodyListener)}});h.element.change(function(j){var i=f(this),k=i.val();if(k===""||k==="#"){h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}});h.toggler.on("keyup",function(i){if(i.keyCode===13||i.keyCode===32){i.preventDefault();h.toggler.trigger("click").next().focus()}});h.button.click(function(j){var i=f(this);if(i.hasClass("wp-picker-clear")){h.element.val("");h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}else{if(i.hasClass("wp-picker-default")){h.element.val(h.options.defaultColor).change()}}})},_bodyListener:function(h){if(!h.data.wrap.find(h.target).length){h.data.toggler.click()}},color:function(h){if(h===e){return this.element.iris("option","color")}this.element.iris("option","color",h)},defaultColor:function(h){if(h===e){return this.options.defaultColor}this.options.defaultColor=h}};f.widget("wp.wpColorPicker",d)}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/comment.dev.js b/wp-admin/js/comment.dev.js
deleted file mode 100644 (file)
index a014a51..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-jQuery(document).ready( function($) {
-
-       var stamp = $('#timestamp').html();
-       $('.edit-timestamp').click(function () {
-               if ($('#timestampdiv').is(":hidden")) {
-                       $('#timestampdiv').slideDown("normal");
-                       $('.edit-timestamp').hide();
-               }
-               return false;
-       });
-
-       $('.cancel-timestamp').click(function() {
-               $('#timestampdiv').slideUp("normal");
-               $('#mm').val($('#hidden_mm').val());
-               $('#jj').val($('#hidden_jj').val());
-               $('#aa').val($('#hidden_aa').val());
-               $('#hh').val($('#hidden_hh').val());
-               $('#mn').val($('#hidden_mn').val());
-               $('#timestamp').html(stamp);
-               $('.edit-timestamp').show();
-               return false;
-       });
-
-       $('.save-timestamp').click(function () { // crazyhorse - multiple ok cancels
-               var aa = $('#aa').val(), mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val(),
-                       newD = new Date( aa, mm - 1, jj, hh, mn );
-
-               if ( newD.getFullYear() != aa || (1 + newD.getMonth()) != mm || newD.getDate() != jj || newD.getMinutes() != mn ) {
-                       $('.timestamp-wrap', '#timestampdiv').addClass('form-invalid');
-                       return false;
-               } else {
-                       $('.timestamp-wrap', '#timestampdiv').removeClass('form-invalid');
-               }
-
-               $('#timestampdiv').slideUp("normal");
-               $('.edit-timestamp').show();
-               $('#timestamp').html(
-                       commentL10n.submittedOn + ' <b>' +
-                       $( '#mm option[value="' + mm + '"]' ).text() + ' ' +
-                       jj + ', ' +
-                       aa + ' @ ' +
-                       hh + ':' +
-                       mn + '</b> '
-               );
-               return false;
-       });
-});
index 5816ebb16f14eb6a3115a80fb6458cfc692f422e..f9d93bfaba5a8d096ba08e4a80bf99836990d070 100644 (file)
@@ -1 +1,49 @@
-jQuery(document).ready(function(b){var a=b("#timestamp").html();b(".edit-timestamp").click(function(){if(b("#timestampdiv").is(":hidden")){b("#timestampdiv").slideDown("normal");b(".edit-timestamp").hide()}return false});b(".cancel-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b("#mm").val(b("#hidden_mm").val());b("#jj").val(b("#hidden_jj").val());b("#aa").val(b("#hidden_aa").val());b("#hh").val(b("#hidden_hh").val());b("#mn").val(b("#hidden_mn").val());b("#timestamp").html(a);b(".edit-timestamp").show();return false});b(".save-timestamp").click(function(){var g=b("#aa").val(),h=b("#mm").val(),d=b("#jj").val(),c=b("#hh").val(),f=b("#mn").val(),e=new Date(g,h-1,d,c,f);if(e.getFullYear()!=g||(1+e.getMonth())!=h||e.getDate()!=d||e.getMinutes()!=f){b(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{b(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}b("#timestampdiv").slideUp("normal");b(".edit-timestamp").show();b("#timestamp").html(commentL10n.submittedOn+" <b>"+b('#mm option[value="'+h+'"]').text()+" "+d+", "+g+" @ "+c+":"+f+"</b> ");return false})});
\ No newline at end of file
+jQuery(document).ready( function($) {
+
+       postboxes.add_postbox_toggles('comment');
+
+       var stamp = $('#timestamp').html();
+       $('.edit-timestamp').click(function () {
+               if ($('#timestampdiv').is(":hidden")) {
+                       $('#timestampdiv').slideDown("normal");
+                       $('.edit-timestamp').hide();
+               }
+               return false;
+       });
+
+       $('.cancel-timestamp').click(function() {
+               $('#timestampdiv').slideUp("normal");
+               $('#mm').val($('#hidden_mm').val());
+               $('#jj').val($('#hidden_jj').val());
+               $('#aa').val($('#hidden_aa').val());
+               $('#hh').val($('#hidden_hh').val());
+               $('#mn').val($('#hidden_mn').val());
+               $('#timestamp').html(stamp);
+               $('.edit-timestamp').show();
+               return false;
+       });
+
+       $('.save-timestamp').click(function () { // crazyhorse - multiple ok cancels
+               var aa = $('#aa').val(), mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val(),
+                       newD = new Date( aa, mm - 1, jj, hh, mn );
+
+               if ( newD.getFullYear() != aa || (1 + newD.getMonth()) != mm || newD.getDate() != jj || newD.getMinutes() != mn ) {
+                       $('.timestamp-wrap', '#timestampdiv').addClass('form-invalid');
+                       return false;
+               } else {
+                       $('.timestamp-wrap', '#timestampdiv').removeClass('form-invalid');
+               }
+
+               $('#timestampdiv').slideUp("normal");
+               $('.edit-timestamp').show();
+               $('#timestamp').html(
+                       commentL10n.submittedOn + ' <b>' +
+                       $( '#mm option[value="' + mm + '"]' ).text() + ' ' +
+                       jj + ', ' +
+                       aa + ' @ ' +
+                       hh + ':' +
+                       mn + '</b> '
+               );
+               return false;
+       });
+});
diff --git a/wp-admin/js/comment.min.js b/wp-admin/js/comment.min.js
new file mode 100644 (file)
index 0000000..e5a48a5
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(b){postboxes.add_postbox_toggles("comment");var a=b("#timestamp").html();b(".edit-timestamp").click(function(){if(b("#timestampdiv").is(":hidden")){b("#timestampdiv").slideDown("normal");b(".edit-timestamp").hide()}return false});b(".cancel-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b("#mm").val(b("#hidden_mm").val());b("#jj").val(b("#hidden_jj").val());b("#aa").val(b("#hidden_aa").val());b("#hh").val(b("#hidden_hh").val());b("#mn").val(b("#hidden_mn").val());b("#timestamp").html(a);b(".edit-timestamp").show();return false});b(".save-timestamp").click(function(){var g=b("#aa").val(),h=b("#mm").val(),d=b("#jj").val(),c=b("#hh").val(),f=b("#mn").val(),e=new Date(g,h-1,d,c,f);if(e.getFullYear()!=g||(1+e.getMonth())!=h||e.getDate()!=d||e.getMinutes()!=f){b(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{b(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}b("#timestampdiv").slideUp("normal");b(".edit-timestamp").show();b("#timestamp").html(commentL10n.submittedOn+" <b>"+b('#mm option[value="'+h+'"]').text()+" "+d+", "+g+" @ "+c+":"+f+"</b> ");return false})});
\ No newline at end of file
diff --git a/wp-admin/js/common.dev.js b/wp-admin/js/common.dev.js
deleted file mode 100644 (file)
index e839327..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-var showNotice, adminMenu, columns, validateForm, screenMeta;
-(function($){
-// Removed in 3.3.
-// (perhaps) needed for back-compat
-adminMenu = {
-       init : function() {},
-       fold : function() {},
-       restoreMenuState : function() {},
-       toggle : function() {},
-       favorites : function() {}
-};
-
-// show/hide/save table columns
-columns = {
-       init : function() {
-               var that = this;
-               $('.hide-column-tog', '#adv-settings').click( function() {
-                       var $t = $(this), column = $t.val();
-                       if ( $t.prop('checked') )
-                               that.checked(column);
-                       else
-                               that.unchecked(column);
-
-                       columns.saveManageColumnsState();
-               });
-       },
-
-       saveManageColumnsState : function() {
-               var hidden = this.hidden();
-               $.post(ajaxurl, {
-                       action: 'hidden-columns',
-                       hidden: hidden,
-                       screenoptionnonce: $('#screenoptionnonce').val(),
-                       page: pagenow
-               });
-       },
-
-       checked : function(column) {
-               $('.column-' + column).show();
-               this.colSpanChange(+1);
-       },
-
-       unchecked : function(column) {
-               $('.column-' + column).hide();
-               this.colSpanChange(-1);
-       },
-
-       hidden : function() {
-               return $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(',');
-       },
-
-       useCheckboxesForHidden : function() {
-               this.hidden = function(){
-                       return $('.hide-column-tog').not(':checked').map(function() {
-                               var id = this.id;
-                               return id.substring( id, id.length - 5 );
-                       }).get().join(',');
-               };
-       },
-
-       colSpanChange : function(diff) {
-               var $t = $('table').find('.colspanchange'), n;
-               if ( !$t.length )
-                       return;
-               n = parseInt( $t.attr('colspan'), 10 ) + diff;
-               $t.attr('colspan', n.toString());
-       }
-}
-
-$(document).ready(function(){columns.init();});
-
-validateForm = function( form ) {
-       return !$( form ).find('.form-required').filter( function() { return $('input:visible', this).val() == ''; } ).addClass( 'form-invalid' ).find('input:visible').change( function() { $(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ).size();
-}
-
-// stub for doing better warnings
-showNotice = {
-       warn : function() {
-               var msg = commonL10n.warnDelete || '';
-               if ( confirm(msg) ) {
-                       return true;
-               }
-
-               return false;
-       },
-
-       note : function(text) {
-               alert(text);
-       }
-};
-
-screenMeta = {
-       element: null, // #screen-meta
-       toggles: null, // .screen-meta-toggle
-       page:    null, // #wpcontent
-
-       init: function() {
-               this.element = $('#screen-meta');
-               this.toggles = $('.screen-meta-toggle a');
-               this.page    = $('#wpcontent');
-
-               this.toggles.click( this.toggleEvent );
-       },
-
-       toggleEvent: function( e ) {
-               var panel = $( this.href.replace(/.+#/, '#') );
-               e.preventDefault();
-
-               if ( !panel.length )
-                       return;
-
-               if ( panel.is(':visible') )
-                       screenMeta.close( panel, $(this) );
-               else
-                       screenMeta.open( panel, $(this) );
-       },
-
-       open: function( panel, link ) {
-
-               $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden');
-
-               panel.parent().show();
-               panel.slideDown( 'fast', function() {
-                       link.addClass('screen-meta-active');
-               });
-       },
-
-       close: function( panel, link ) {
-               panel.slideUp( 'fast', function() {
-                       link.removeClass('screen-meta-active');
-                       $('.screen-meta-toggle').css('visibility', '');
-                       panel.parent().hide();
-               });
-       }
-};
-
-/**
- * Help tabs.
- */
-$('.contextual-help-tabs').delegate('a', 'click focus', function(e) {
-       var link = $(this),
-               panel;
-
-       e.preventDefault();
-
-       // Don't do anything if the click is for the tab already showing.
-       if ( link.is('.active a') )
-               return false;
-
-       // Links
-       $('.contextual-help-tabs .active').removeClass('active');
-       link.parent('li').addClass('active');
-
-       panel = $( link.attr('href') );
-
-       // Panels
-       $('.help-tab-content').not( panel ).removeClass('active').hide();
-       panel.addClass('active').show();
-});
-
-$(document).ready( function() {
-       var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'),
-               pageInput = $('input.current-page'), currentPage = pageInput.val(), refresh;
-
-       // admin menu
-       refresh = function(i, el){ // force the browser to refresh the tabbing index
-               var node = $(el), tab = node.attr('tabindex');
-               if ( tab )
-                       node.attr('tabindex', '0').attr('tabindex', tab);
-       };
-
-       $('#collapse-menu', menu).click(function(){
-               var body = $(document.body);
-
-               // reset any compensation for submenus near the bottom of the screen
-               $('#adminmenu div.wp-submenu').css('margin-top', '');
-
-               if ( body.hasClass('folded') ) {
-                       body.removeClass('folded');
-                       setUserSetting('mfold', 'o');
-               } else {
-                       body.addClass('folded');
-                       setUserSetting('mfold', 'f');
-               }
-               return false;
-       });
-
-       $('li.wp-has-submenu', menu).hoverIntent({
-               over: function(e){
-                       var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop;
-
-                       if ( m.is(':visible') )
-                               return;
-
-                       menutop = $(this).offset().top;
-                       wintop = $(window).scrollTop();
-                       maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar
-
-                       b = menutop + m.height() + 1; // Bottom offset of the menu
-                       h = $('#wpwrap').height(); // Height of the entire page
-                       o = 60 + b - h;
-                       f = $(window).height() + wintop - 15; // The fold
-
-                       if ( f < (b - o) )
-                               o = b - f;
-
-                       if ( o > maxtop )
-                               o = maxtop;
-
-                       if ( o > 1 )
-                               m.css('margin-top', '-'+o+'px');
-                       else
-                               m.css('margin-top', '');
-
-                       menu.find('.wp-submenu').removeClass('sub-open');
-                       m.addClass('sub-open');
-               },
-               out: function(){
-                       $(this).find('.wp-submenu').removeClass('sub-open').css('margin-top', '');
-               },
-               timeout: 200,
-               sensitivity: 7,
-               interval: 90
-       });
-
-       // Tab to select, Enter to open sub, Esc to close sub and focus the top menu
-       $('li.wp-has-submenu > a.wp-not-current-submenu', menu).bind('keydown.adminmenu', function(e){
-               if ( e.which != 13 )
-                       return;
-
-               var target = $(e.target);
-
-               e.stopPropagation();
-               e.preventDefault();
-
-               menu.find('.wp-submenu').removeClass('sub-open');
-               target.siblings('.wp-submenu').toggleClass('sub-open').find('a[role="menuitem"]').each(refresh);
-       }).each(refresh);
-
-       $('a[role="menuitem"]', menu).bind('keydown.adminmenu', function(e){
-               if ( e.which != 27 )
-                       return;
-
-               var target = $(e.target);
-
-               e.stopPropagation();
-               e.preventDefault();
-
-               target.add( target.siblings() ).closest('.sub-open').removeClass('sub-open').siblings('a.wp-not-current-submenu').focus();
-       });
-
-       // Move .updated and .error alert boxes. Don't move boxes designed to be inline.
-       $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2');
-       $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') );
-
-       // Init screen meta
-       screenMeta.init();
-
-       // check all checkboxes
-       $('tbody').children().children('.check-column').find(':checkbox').click( function(e) {
-               if ( 'undefined' == e.shiftKey ) { return true; }
-               if ( e.shiftKey ) {
-                       if ( !lastClicked ) { return true; }
-                       checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' );
-                       first = checks.index( lastClicked );
-                       last = checks.index( this );
-                       checked = $(this).prop('checked');
-                       if ( 0 < first && 0 < last && first != last ) {
-                               checks.slice( first, last ).prop( 'checked', function(){
-                                       if ( $(this).closest('tr').is(':visible') )
-                                               return checked;
-
-                                       return false;
-                               });
-                       }
-               }
-               lastClicked = this;
-               return true;
-       });
-
-       $('thead, tfoot').find('.check-column :checkbox').click( function(e) {
-               var c = $(this).prop('checked'),
-                       kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard,
-                       toggle = e.shiftKey || kbtoggle;
-
-               $(this).closest( 'table' ).children( 'tbody' ).filter(':visible')
-               .children().children('.check-column').find(':checkbox')
-               .prop('checked', function() {
-                       if ( $(this).closest('tr').is(':hidden') )
-                               return false;
-                       if ( toggle )
-                               return $(this).prop( 'checked' );
-                       else if (c)
-                               return true;
-                       return false;
-               });
-
-               $(this).closest('table').children('thead,  tfoot').filter(':visible')
-               .children().children('.check-column').find(':checkbox')
-               .prop('checked', function() {
-                       if ( toggle )
-                               return false;
-                       else if (c)
-                               return true;
-                       return false;
-               });
-       });
-
-       $('#default-password-nag-no').click( function() {
-               setUserSetting('default_password_nag', 'hide');
-               $('div.default-password-nag').hide();
-               return false;
-       });
-
-       // tab in textareas
-       $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) {
-               if ( e.keyCode != 9 )
-                       return true;
-
-               var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel;
-
-               try {
-                       this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below.
-               } catch(err) {}
-
-               if ( document.selection ) {
-                       el.focus();
-                       sel = document.selection.createRange();
-                       sel.text = '\t';
-               } else if ( selStart >= 0 ) {
-                       scroll = this.scrollTop;
-                       el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) );
-                       el.selectionStart = el.selectionEnd = selStart + 1;
-                       this.scrollTop = scroll;
-               }
-
-               if ( e.stopPropagation )
-                       e.stopPropagation();
-               if ( e.preventDefault )
-                       e.preventDefault();
-       });
-
-       $('#newcontent').bind('blur.wpevent_InsertTab', function(e) {
-               if ( this.lastKey && 9 == this.lastKey )
-                       this.focus();
-       });
-
-       if ( pageInput.length ) {
-               pageInput.closest('form').submit( function(e){
-
-                       // Reset paging var for new filters/searches but not for bulk actions. See #17685.
-                       if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage )
-                               pageInput.val('1');
-               });
-       }
-
-});
-
-// internal use
-$(document).bind( 'wp_CloseOnEscape', function( e, data ) {
-       if ( typeof(data.cb) != 'function' )
-               return;
-
-       if ( typeof(data.condition) != 'function' || data.condition() )
-               data.cb();
-
-       return true;
-});
-
-})(jQuery);
index dbbcb1dc3570c07fcc14113d0f99be5e487cbb97..0f6b84d08a4b82cf6658d566943e0125dda6d403 100644 (file)
@@ -1 +1,427 @@
-var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}};columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c.parent()).css("visibility","hidden");b.parent().show();b.slideDown("fast",function(){c.addClass("screen-meta-active")})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active");a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,c,e,j,h,b=a("#adminmenu"),d=a("input.current-page"),f=d.val(),g;g=function(k,m){var n=a(m),l=n.attr("tabindex");if(l){n.attr("tabindex","0").attr("tabindex",l)}};a("#collapse-menu",b).click(function(){var k=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top","");if(k.hasClass("folded")){k.removeClass("folded");setUserSetting("mfold","o")}else{k.addClass("folded");setUserSetting("mfold","f")}return false});a("li.wp-has-submenu",b).hoverIntent({over:function(s){var t,q,k,r,l=a(this).find(".wp-submenu"),u,n,p;if(l.is(":visible")){return}u=a(this).offset().top;n=a(window).scrollTop();p=u-n-30;t=u+l.height()+1;q=a("#wpwrap").height();k=60+t-q;r=a(window).height()+n-15;if(r<(t-k)){k=t-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}b.find(".wp-submenu").removeClass("sub-open");l.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open").css("margin-top","")},timeout:200,sensitivity:7,interval:90});a("li.wp-has-submenu > a.wp-not-current-submenu",b).bind("keydown.adminmenu",function(l){if(l.which!=13){return}var k=a(l.target);l.stopPropagation();l.preventDefault();b.find(".wp-submenu").removeClass("sub-open");k.siblings(".wp-submenu").toggleClass("sub-open").find('a[role="menuitem"]').each(g)}).each(g);a('a[role="menuitem"]',b).bind("keydown.adminmenu",function(l){if(l.which!=27){return}var k=a(l.target);l.stopPropagation();l.preventDefault();k.add(k.siblings()).closest(".sub-open").removeClass("sub-open").siblings("a.wp-not-current-submenu").focus()});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(k){if("undefined"==k.shiftKey){return true}if(k.shiftKey){if(!i){return true}c=a(i).closest("form").find(":checkbox");e=c.index(i);j=c.index(this);h=a(this).prop("checked");if(0<e&&0<j&&e!=j){c.slice(e,j).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return h}return false})}}i=this;return true});a("thead, tfoot").find(".check-column :checkbox").click(function(m){var n=a(this).prop("checked"),l="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,k=m.shiftKey||l;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).closest("tr").is(":hidden")){return false}if(k){return a(this).prop("checked")}else{if(n){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(k){return false}else{if(n){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(p){if(p.keyCode!=9){return true}var m=p.target,r=m.selectionStart,l=m.selectionEnd,q=m.value,k,o;try{this.lastKey=9}catch(n){}if(document.selection){m.focus();o=document.selection.createRange();o.text="\t"}else{if(r>=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(d.length){d.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&d.val()==f){d.val("1")}})}});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
+var showNotice, adminMenu, columns, validateForm, screenMeta;
+(function($){
+// Removed in 3.3.
+// (perhaps) needed for back-compat
+adminMenu = {
+       init : function() {},
+       fold : function() {},
+       restoreMenuState : function() {},
+       toggle : function() {},
+       favorites : function() {}
+};
+
+// show/hide/save table columns
+columns = {
+       init : function() {
+               var that = this;
+               $('.hide-column-tog', '#adv-settings').click( function() {
+                       var $t = $(this), column = $t.val();
+                       if ( $t.prop('checked') )
+                               that.checked(column);
+                       else
+                               that.unchecked(column);
+
+                       columns.saveManageColumnsState();
+               });
+       },
+
+       saveManageColumnsState : function() {
+               var hidden = this.hidden();
+               $.post(ajaxurl, {
+                       action: 'hidden-columns',
+                       hidden: hidden,
+                       screenoptionnonce: $('#screenoptionnonce').val(),
+                       page: pagenow
+               });
+       },
+
+       checked : function(column) {
+               $('.column-' + column).show();
+               this.colSpanChange(+1);
+       },
+
+       unchecked : function(column) {
+               $('.column-' + column).hide();
+               this.colSpanChange(-1);
+       },
+
+       hidden : function() {
+               return $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(',');
+       },
+
+       useCheckboxesForHidden : function() {
+               this.hidden = function(){
+                       return $('.hide-column-tog').not(':checked').map(function() {
+                               var id = this.id;
+                               return id.substring( id, id.length - 5 );
+                       }).get().join(',');
+               };
+       },
+
+       colSpanChange : function(diff) {
+               var $t = $('table').find('.colspanchange'), n;
+               if ( !$t.length )
+                       return;
+               n = parseInt( $t.attr('colspan'), 10 ) + diff;
+               $t.attr('colspan', n.toString());
+       }
+}
+
+$(document).ready(function(){columns.init();});
+
+validateForm = function( form ) {
+       return !$( form ).find('.form-required').filter( function() { return $('input:visible', this).val() == ''; } ).addClass( 'form-invalid' ).find('input:visible').change( function() { $(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ).size();
+}
+
+// stub for doing better warnings
+showNotice = {
+       warn : function() {
+               var msg = commonL10n.warnDelete || '';
+               if ( confirm(msg) ) {
+                       return true;
+               }
+
+               return false;
+       },
+
+       note : function(text) {
+               alert(text);
+       }
+};
+
+screenMeta = {
+       element: null, // #screen-meta
+       toggles: null, // .screen-meta-toggle
+       page:    null, // #wpcontent
+
+       init: function() {
+               this.element = $('#screen-meta');
+               this.toggles = $('.screen-meta-toggle a');
+               this.page    = $('#wpcontent');
+
+               this.toggles.click( this.toggleEvent );
+       },
+
+       toggleEvent: function( e ) {
+               var panel = $( this.href.replace(/.+#/, '#') );
+               e.preventDefault();
+
+               if ( !panel.length )
+                       return;
+
+               if ( panel.is(':visible') )
+                       screenMeta.close( panel, $(this) );
+               else
+                       screenMeta.open( panel, $(this) );
+       },
+
+       open: function( panel, link ) {
+
+               $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden');
+
+               panel.parent().show();
+               panel.slideDown( 'fast', function() {
+                       panel.focus();
+                       link.addClass('screen-meta-active').attr('aria-expanded', true);
+               });
+       },
+
+       close: function( panel, link ) {
+               panel.slideUp( 'fast', function() {
+                       link.removeClass('screen-meta-active').attr('aria-expanded', false);
+                       $('.screen-meta-toggle').css('visibility', '');
+                       panel.parent().hide();
+               });
+       }
+};
+
+/**
+ * Help tabs.
+ */
+$('.contextual-help-tabs').delegate('a', 'click focus', function(e) {
+       var link = $(this),
+               panel;
+
+       e.preventDefault();
+
+       // Don't do anything if the click is for the tab already showing.
+       if ( link.is('.active a') )
+               return false;
+
+       // Links
+       $('.contextual-help-tabs .active').removeClass('active');
+       link.parent('li').addClass('active');
+
+       panel = $( link.attr('href') );
+
+       // Panels
+       $('.help-tab-content').not( panel ).removeClass('active').hide();
+       panel.addClass('active').show();
+});
+
+$(document).ready( function() {
+       var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'), mobileEvent,
+               pageInput = $('input.current-page'), currentPage = pageInput.val();
+
+       // when the menu is folded, make the fly-out submenu header clickable
+       menu.on('click.wp-submenu-head', '.wp-submenu-head', function(e){
+               $(e.target).parent().siblings('a').get(0).click();
+       });
+
+       $('#collapse-menu').on('click.collapse-menu', function(e){
+               var body = $(document.body);
+
+               // reset any compensation for submenus near the bottom of the screen
+               $('#adminmenu div.wp-submenu').css('margin-top', '');
+
+               if ( $(window).width() < 900 ) {
+                       if ( body.hasClass('auto-fold') ) {
+                               body.removeClass('auto-fold');
+                               setUserSetting('unfold', 1);
+                               body.removeClass('folded');
+                               deleteUserSetting('mfold');
+                       } else {
+                               body.addClass('auto-fold');
+                               deleteUserSetting('unfold');
+                       }
+               } else {
+                       if ( body.hasClass('folded') ) {
+                               body.removeClass('folded');
+                               deleteUserSetting('mfold');
+                       } else {
+                               body.addClass('folded');
+                               setUserSetting('mfold', 'f');
+                       }
+               }
+       });
+
+       if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device
+               // iOS Safari works with touchstart, the rest work with click
+               mobileEvent = /Mobile\/.+Safari/.test(navigator.userAgent) ? 'touchstart' : 'click';
+
+               // close any open submenus when touch/click is not on the menu
+               $(document.body).on( mobileEvent+'.wp-mobile-hover', function(e) {
+                       if ( !$(e.target).closest('#adminmenu').length )
+                               menu.find('li.wp-has-submenu.opensub').removeClass('opensub');
+               });
+
+               menu.find('a.wp-has-submenu').on( mobileEvent+'.wp-mobile-hover', function(e) {
+                       var el = $(this), parent = el.parent();
+
+                       // Show the sub instead of following the link if:
+                       //      - the submenu is not open
+                       //      - the submenu is not shown inline or the menu is not folded
+                       if ( !parent.hasClass('opensub') && ( !parent.hasClass('wp-menu-open') || parent.width() < 40 ) ) {
+                               e.preventDefault();
+                               menu.find('li.opensub').removeClass('opensub');
+                               parent.addClass('opensub');
+                       }
+               });
+       }
+
+       menu.find('li.wp-has-submenu').hoverIntent({
+               over: function(e){
+                       var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop, top = parseInt( m.css('top'), 10 );
+
+                       if ( isNaN(top) || top > -5 ) // meaning the submenu is visible
+                               return;
+
+                       menutop = $(this).offset().top;
+                       wintop = $(window).scrollTop();
+                       maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar
+
+                       b = menutop + m.height() + 1; // Bottom offset of the menu
+                       h = $('#wpwrap').height(); // Height of the entire page
+                       o = 60 + b - h;
+                       f = $(window).height() + wintop - 15; // The fold
+
+                       if ( f < (b - o) )
+                               o = b - f;
+
+                       if ( o > maxtop )
+                               o = maxtop;
+
+                       if ( o > 1 )
+                               m.css('margin-top', '-'+o+'px');
+                       else
+                               m.css('margin-top', '');
+
+                       menu.find('li.menu-top').removeClass('opensub');
+                       $(this).addClass('opensub');
+               },
+               out: function(){
+                       $(this).removeClass('opensub').find('.wp-submenu').css('margin-top', '');
+               },
+               timeout: 200,
+               sensitivity: 7,
+               interval: 90
+       });
+
+       menu.on('focus.adminmenu', '.wp-submenu a', function(e){
+               $(e.target).closest('li.menu-top').addClass('opensub');
+       }).on('blur.adminmenu', '.wp-submenu a', function(e){
+               $(e.target).closest('li.menu-top').removeClass('opensub');
+       });
+
+       // Move .updated and .error alert boxes. Don't move boxes designed to be inline.
+       $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2');
+       $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') );
+
+       // Init screen meta
+       screenMeta.init();
+
+       // check all checkboxes
+       $('tbody').children().children('.check-column').find(':checkbox').click( function(e) {
+               if ( 'undefined' == e.shiftKey ) { return true; }
+               if ( e.shiftKey ) {
+                       if ( !lastClicked ) { return true; }
+                       checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' );
+                       first = checks.index( lastClicked );
+                       last = checks.index( this );
+                       checked = $(this).prop('checked');
+                       if ( 0 < first && 0 < last && first != last ) {
+                               checks.slice( first, last ).prop( 'checked', function(){
+                                       if ( $(this).closest('tr').is(':visible') )
+                                               return checked;
+
+                                       return false;
+                               });
+                       }
+               }
+               lastClicked = this;
+
+               // toggle "check all" checkboxes
+               var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible').not(':checked');
+               $(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function() {
+                       return ( 0 == unchecked.length );
+               });
+
+               return true;
+       });
+
+       $('thead, tfoot').find('.check-column :checkbox').click( function(e) {
+               var c = $(this).prop('checked'),
+                       kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard,
+                       toggle = e.shiftKey || kbtoggle;
+
+               $(this).closest( 'table' ).children( 'tbody' ).filter(':visible')
+               .children().children('.check-column').find(':checkbox')
+               .prop('checked', function() {
+                       if ( $(this).closest('tr').is(':hidden') )
+                               return false;
+                       if ( toggle )
+                               return $(this).prop( 'checked' );
+                       else if (c)
+                               return true;
+                       return false;
+               });
+
+               $(this).closest('table').children('thead,  tfoot').filter(':visible')
+               .children().children('.check-column').find(':checkbox')
+               .prop('checked', function() {
+                       if ( toggle )
+                               return false;
+                       else if (c)
+                               return true;
+                       return false;
+               });
+       });
+
+       $('#default-password-nag-no').click( function() {
+               setUserSetting('default_password_nag', 'hide');
+               $('div.default-password-nag').hide();
+               return false;
+       });
+
+       // tab in textareas
+       $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) {
+               var el = e.target, selStart, selEnd, val, scroll, sel;
+
+               if ( e.keyCode == 27 ) { // escape key
+                       $(el).data('tab-out', true);
+                       return;
+               }
+
+               if ( e.keyCode != 9 || e.ctrlKey || e.altKey || e.shiftKey ) // tab key
+                       return;
+
+               if ( $(el).data('tab-out') ) {
+                       $(el).data('tab-out', false);
+                       return;
+               }
+
+               selStart = el.selectionStart;
+               selEnd = el.selectionEnd;
+               val = el.value;
+
+               try {
+                       this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below.
+               } catch(err) {}
+
+               if ( document.selection ) {
+                       el.focus();
+                       sel = document.selection.createRange();
+                       sel.text = '\t';
+               } else if ( selStart >= 0 ) {
+                       scroll = this.scrollTop;
+                       el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) );
+                       el.selectionStart = el.selectionEnd = selStart + 1;
+                       this.scrollTop = scroll;
+               }
+
+               if ( e.stopPropagation )
+                       e.stopPropagation();
+               if ( e.preventDefault )
+                       e.preventDefault();
+       });
+
+       $('#newcontent').bind('blur.wpevent_InsertTab', function(e) {
+               if ( this.lastKey && 9 == this.lastKey )
+                       this.focus();
+       });
+
+       if ( pageInput.length ) {
+               pageInput.closest('form').submit( function(e){
+
+                       // Reset paging var for new filters/searches but not for bulk actions. See #17685.
+                       if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage )
+                               pageInput.val('1');
+               });
+       }
+
+       // Scroll into view when focused
+       $('#contextual-help-link, #show-settings-link').on( 'focus.scroll-into-view', function(e){
+               if ( e.target.scrollIntoView )
+                       e.target.scrollIntoView(false);
+       });
+
+       // Disable upload buttons until files are selected
+       (function(){
+               var button, input, form = $('form.wp-upload-form');
+               if ( ! form.length )
+                       return;
+               button = form.find('input[type="submit"]');
+               input = form.find('input[type="file"]');
+
+               function toggleUploadButton() {
+                       button.prop('disabled', '' === input.map( function() {
+                               return $(this).val();
+                       }).get().join(''));
+               }
+               toggleUploadButton();
+               input.on('change', toggleUploadButton);
+       })();
+});
+
+// internal use
+$(document).bind( 'wp_CloseOnEscape', function( e, data ) {
+       if ( typeof(data.cb) != 'function' )
+               return;
+
+       if ( typeof(data.condition) != 'function' || data.condition() )
+               data.cb();
+
+       return true;
+});
+
+})(jQuery);
diff --git a/wp-admin/js/common.min.js b/wp-admin/js/common.min.js
new file mode 100644 (file)
index 0000000..df6ada9
--- /dev/null
@@ -0,0 +1 @@
+var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}};columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c.parent()).css("visibility","hidden");b.parent().show();b.slideDown("fast",function(){b.focus();c.addClass("screen-meta-active").attr("aria-expanded",true)})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",false);a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,d,f,j,h,c=a("#adminmenu"),b,e=a("input.current-page"),g=e.val();c.on("click.wp-submenu-head",".wp-submenu-head",function(k){a(k.target).parent().siblings("a").get(0).click()});a("#collapse-menu").on("click.collapse-menu",function(l){var k=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top","");if(a(window).width()<900){if(k.hasClass("auto-fold")){k.removeClass("auto-fold");setUserSetting("unfold",1);k.removeClass("folded");deleteUserSetting("mfold")}else{k.addClass("auto-fold");deleteUserSetting("unfold")}}else{if(k.hasClass("folded")){k.removeClass("folded");deleteUserSetting("mfold")}else{k.addClass("folded");setUserSetting("mfold","f")}}});if("ontouchstart" in window||/IEMobile\/[1-9]/.test(navigator.userAgent)){b=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";a(document.body).on(b+".wp-mobile-hover",function(k){if(!a(k.target).closest("#adminmenu").length){c.find("li.wp-has-submenu.opensub").removeClass("opensub")}});c.find("a.wp-has-submenu").on(b+".wp-mobile-hover",function(m){var l=a(this),k=l.parent();if(!k.hasClass("opensub")&&(!k.hasClass("wp-menu-open")||k.width()<40)){m.preventDefault();c.find("li.opensub").removeClass("opensub");k.addClass("opensub")}})}c.find("li.wp-has-submenu").hoverIntent({over:function(s){var u,q,k,r,l=a(this).find(".wp-submenu"),v,n,p,t=parseInt(l.css("top"),10);if(isNaN(t)||t>-5){return}v=a(this).offset().top;n=a(window).scrollTop();p=v-n-30;u=v+l.height()+1;q=a("#wpwrap").height();k=60+u-q;r=a(window).height()+n-15;if(r<(u-k)){k=u-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}c.find("li.menu-top").removeClass("opensub");a(this).addClass("opensub")},out:function(){a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90});c.on("focus.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").removeClass("opensub")});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(l){if("undefined"==l.shiftKey){return true}if(l.shiftKey){if(!i){return true}d=a(i).closest("form").find(":checkbox");f=d.index(i);j=d.index(this);h=a(this).prop("checked");if(0<f&&0<j&&f!=j){d.slice(f,j).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return h}return false})}}i=this;var k=a(this).closest("tbody").find(":checkbox").filter(":visible").not(":checked");a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return(0==k.length)});return true});a("thead, tfoot").find(".check-column :checkbox").click(function(m){var n=a(this).prop("checked"),l="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,k=m.shiftKey||l;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).closest("tr").is(":hidden")){return false}if(k){return a(this).prop("checked")}else{if(n){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(k){return false}else{if(n){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(p){var m=p.target,r,l,q,k,o;if(p.keyCode==27){a(m).data("tab-out",true);return}if(p.keyCode!=9||p.ctrlKey||p.altKey||p.shiftKey){return}if(a(m).data("tab-out")){a(m).data("tab-out",false);return}r=m.selectionStart;l=m.selectionEnd;q=m.value;try{this.lastKey=9}catch(n){}if(document.selection){m.focus();o=document.selection.createRange();o.text="\t"}else{if(r>=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(e.length){e.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&e.val()==g){e.val("1")}})}a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(k){if(k.target.scrollIntoView){k.target.scrollIntoView(false)}});(function(){var l,k,m=a("form.wp-upload-form");if(!m.length){return}l=m.find('input[type="submit"]');k=m.find('input[type="file"]');function n(){l.prop("disabled",""===k.map(function(){return a(this).val()}).get().join(""))}n();k.on("change",n)})()});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/custom-background.dev.js b/wp-admin/js/custom-background.dev.js
deleted file mode 100644 (file)
index 5bf085d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-var farbtastic, pickColor;
-
-(function($) {
-
-       var defaultColor = '';
-
-       pickColor = function(color) {
-               farbtastic.setColor(color);
-               $('#background-color').val(color);
-               $('#custom-background-image').css('background-color', color);
-               // If we have a default color, and they match, then we need to hide the 'Default' link.
-               // Otherwise, we hide the 'Clear' link when it is empty.
-               if ( ( defaultColor && color === defaultColor ) || ( ! defaultColor && ( '' === color || '#' === color ) ) )
-                       $('#clearcolor').hide();
-               else
-                       $('#clearcolor').show();
-       }
-
-       $(document).ready(function() {
-
-               defaultColor = $('#defaultcolor').val();
-
-               $('#pickcolor').click(function() {
-                       $('#colorPickerDiv').show();
-                       return false;
-               });
-
-               $('#clearcolor a').click( function(e) {
-                       pickColor( defaultColor );
-                       e.preventDefault();
-               });
-
-               $('#background-color').keyup(function() {
-                       var _hex = $('#background-color').val(), hex = _hex;
-                       if ( hex.charAt(0) != '#' )
-                               hex = '#' + hex;
-                       hex = hex.replace(/[^#a-fA-F0-9]+/, '');
-                       if ( hex != _hex )
-                               $('#background-color').val(hex);
-                       if ( hex.length == 4 || hex.length == 7 )
-                               pickColor( hex );
-               });
-
-               $('input[name="background-position-x"]').change(function() {
-                       $('#custom-background-image').css('background-position', $(this).val() + ' top');
-               });
-
-               $('input[name="background-repeat"]').change(function() {
-                       $('#custom-background-image').css('background-repeat', $(this).val());
-               });
-
-               farbtastic = $.farbtastic('#colorPickerDiv', function(color) {
-                       pickColor(color);
-               });
-               pickColor($('#background-color').val());
-
-               $(document).mousedown(function(){
-                       $('#colorPickerDiv').each(function(){
-                               var display = $(this).css('display');
-                               if ( display == 'block' )
-                                       $(this).fadeOut(2);
-                       });
-               });
-       });
-
-})(jQuery);
\ No newline at end of file
index 66b8bbfd406c33e7c038fb61d8b6f6527a962c85..c41ca6b00b211068e825e9d8a720b1e8fa6ce590 100644 (file)
@@ -1 +1,74 @@
-var farbtastic,pickColor;(function(b){var a="";pickColor=function(c){farbtastic.setColor(c);b("#background-color").val(c);b("#custom-background-image").css("background-color",c);if((a&&c===a)||(!a&&(""===c||"#"===c))){b("#clearcolor").hide()}else{b("#clearcolor").show()}};b(document).ready(function(){a=b("#defaultcolor").val();b("#pickcolor").click(function(){b("#colorPickerDiv").show();return false});b("#clearcolor a").click(function(c){pickColor(a);c.preventDefault()});b("#background-color").keyup(function(){var d=b("#background-color").val(),c=d;if(c.charAt(0)!="#"){c="#"+c}c=c.replace(/[^#a-fA-F0-9]+/,"");if(c!=d){b("#background-color").val(c)}if(c.length==4||c.length==7){pickColor(c)}});b('input[name="background-position-x"]').change(function(){b("#custom-background-image").css("background-position",b(this).val()+" top")});b('input[name="background-repeat"]').change(function(){b("#custom-background-image").css("background-repeat",b(this).val())});farbtastic=b.farbtastic("#colorPickerDiv",function(c){pickColor(c)});pickColor(b("#background-color").val());b(document).mousedown(function(){b("#colorPickerDiv").each(function(){var c=b(this).css("display");if(c=="block"){b(this).fadeOut(2)}})})})})(jQuery);
\ No newline at end of file
+(function($) {
+       $(document).ready(function() {
+               var bgImage = $("#custom-background-image"),
+                       frame;
+
+               $('#background-color').wpColorPicker({
+                       change: function( event, ui ) {
+                               bgImage.css('background-color', ui.color.toString());
+                       },
+                       clear: function() {
+                               bgImage.css('background-color', '');
+                       }
+               });
+
+               $('input[name="background-position-x"]').change(function() {
+                       bgImage.css('background-position', $(this).val() + ' top');
+               });
+
+               $('input[name="background-repeat"]').change(function() {
+                       bgImage.css('background-repeat', $(this).val());
+               });
+
+               $('#choose-from-library-link').click( function( event ) {
+                       var $el = $(this);
+
+                       event.preventDefault();
+
+                       // If the media frame already exists, reopen it.
+                       if ( frame ) {
+                               frame.open();
+                               return;
+                       }
+
+                       // Create the media frame.
+                       frame = wp.media.frames.customBackground = wp.media({
+                               // Set the title of the modal.
+                               title: $el.data('choose'),
+
+                               // Tell the modal to show only images.
+                               library: {
+                                       type: 'image'
+                               },
+
+                               // Customize the submit button.
+                               button: {
+                                       // Set the text of the button.
+                                       text: $el.data('update'),
+                                       // Tell the button not to close the modal, since we're
+                                       // going to refresh the page when the image is selected.
+                                       close: false
+                               }
+                       });
+
+                       // When an image is selected, run a callback.
+                       frame.on( 'select', function() {
+                               // Grab the selected attachment.
+                               var attachment = frame.state().get('selection').first();
+
+                               // Run an AJAX request to set the background image.
+                               $.post( ajaxurl, {
+                                       action: 'set-background-image',
+                                       attachment_id: attachment.id,
+                                       size: 'full'
+                               }).done( function() {
+                                       // When the request completes, reload the window.
+                                       window.location.reload();
+                               });
+                       });
+
+                       // Finally, open the modal.
+                       frame.open();
+               });
+       });
+})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/custom-background.min.js b/wp-admin/js/custom-background.min.js
new file mode 100644 (file)
index 0000000..4ada9f8
--- /dev/null
@@ -0,0 +1 @@
+(function(a){a(document).ready(function(){var b=a("#custom-background-image"),c;a("#background-color").wpColorPicker({change:function(d,e){b.css("background-color",e.color.toString())},clear:function(){b.css("background-color","")}});a('input[name="background-position-x"]').change(function(){b.css("background-position",a(this).val()+" top")});a('input[name="background-repeat"]').change(function(){b.css("background-repeat",a(this).val())});a("#choose-from-library-link").click(function(e){var d=a(this);e.preventDefault();if(c){c.open();return}c=wp.media.frames.customBackground=wp.media({title:d.data("choose"),library:{type:"image"},button:{text:d.data("update"),close:false}});c.on("select",function(){var f=c.state().get("selection").first();a.post(ajaxurl,{action:"set-background-image",attachment_id:f.id,size:"full"}).done(function(){window.location.reload()})});c.open()})})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/custom-fields.dev.js b/wp-admin/js/custom-fields.dev.js
deleted file mode 100644 (file)
index 9eab214..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-jQuery(document).ready( function($) {
-       var before, addBefore, addAfter, delBefore;
-
-       before = function() {
-               var nonce = $('#newmeta [name="_ajax_nonce"]').val(), postId = $('#post_ID').val();
-               if ( !nonce || !postId ) { return false; }
-               return [nonce,postId];
-       }
-
-       addBefore = function( s ) {
-               var b = before();
-               if ( !b ) { return false; }
-               s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1];
-               return s;
-       };
-
-       addAfter = function( r, s ) {
-               var postId = $('postid', r).text(), h;
-               if ( !postId ) { return; }
-               $('#post_ID').attr( 'name', 'post_ID' ).val( postId );
-               h = $('#hiddenaction');
-               if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); }
-       };
-
-       delBefore = function( s ) {
-               var b = before(); if ( !b ) return false;
-               s.data._ajax_nonce = b[0]; s.data.post_id = b[1];
-               return s;
-       }
-
-       $('#the-list')
-               .wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } )
-               .find('.updatemeta, .deletemeta').attr( 'type', 'button' );
-} );
index dbe2f4816e0f8c60ac87a4b45876435c719fc661..9eab214553ddacb770d4465c02a4273b19810da9 100644 (file)
@@ -1 +1,34 @@
-jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d('#newmeta [name="_ajax_nonce"]').val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")});
\ No newline at end of file
+jQuery(document).ready( function($) {
+       var before, addBefore, addAfter, delBefore;
+
+       before = function() {
+               var nonce = $('#newmeta [name="_ajax_nonce"]').val(), postId = $('#post_ID').val();
+               if ( !nonce || !postId ) { return false; }
+               return [nonce,postId];
+       }
+
+       addBefore = function( s ) {
+               var b = before();
+               if ( !b ) { return false; }
+               s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1];
+               return s;
+       };
+
+       addAfter = function( r, s ) {
+               var postId = $('postid', r).text(), h;
+               if ( !postId ) { return; }
+               $('#post_ID').attr( 'name', 'post_ID' ).val( postId );
+               h = $('#hiddenaction');
+               if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); }
+       };
+
+       delBefore = function( s ) {
+               var b = before(); if ( !b ) return false;
+               s.data._ajax_nonce = b[0]; s.data.post_id = b[1];
+               return s;
+       }
+
+       $('#the-list')
+               .wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } )
+               .find('.updatemeta, .deletemeta').attr( 'type', 'button' );
+} );
diff --git a/wp-admin/js/custom-fields.min.js b/wp-admin/js/custom-fields.min.js
new file mode 100644 (file)
index 0000000..dbe2f48
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d('#newmeta [name="_ajax_nonce"]').val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")});
\ No newline at end of file
diff --git a/wp-admin/js/custom-header.js b/wp-admin/js/custom-header.js
new file mode 100644 (file)
index 0000000..d93ac38
--- /dev/null
@@ -0,0 +1,60 @@
+(function($) {
+       var frame;
+
+       $( function() {
+               // Fetch available headers and apply jQuery.masonry
+               // once the images have loaded.
+               var $headers = $('.available-headers');
+
+               $headers.imagesLoaded( function() {
+                       $headers.masonry({
+                               itemSelector: '.default-header',
+                               isRTL: !! ( 'undefined' != typeof isRtl && isRtl )
+                       });
+               });
+
+               // Build the choose from library frame.
+               $('#choose-from-library-link').click( function( event ) {
+                       var $el = $(this);
+                       event.preventDefault();
+
+                       // If the media frame already exists, reopen it.
+                       if ( frame ) {
+                               frame.open();
+                               return;
+                       }
+
+                       // Create the media frame.
+                       frame = wp.media.frames.customHeader = wp.media({
+                               // Set the title of the modal.
+                               title: $el.data('choose'),
+
+                               // Tell the modal to show only images.
+                               library: {
+                                       type: 'image'
+                               },
+
+                               // Customize the submit button.
+                               button: {
+                                       // Set the text of the button.
+                                       text: $el.data('update'),
+                                       // Tell the button not to close the modal, since we're
+                                       // going to refresh the page when the image is selected.
+                                       close: false
+                               }
+                       });
+
+                       // When an image is selected, run a callback.
+                       frame.on( 'select', function() {
+                               // Grab the selected attachment.
+                               var attachment = frame.state().get('selection').first(),
+                                       link = $el.data('updateLink');
+
+                               // Tell the browser to navigate to the crop step.
+                               window.location = link + '&file=' + attachment.id;
+                       });
+
+                       frame.open();
+               });
+       });
+}(jQuery));
diff --git a/wp-admin/js/customize-controls.dev.js b/wp-admin/js/customize-controls.dev.js
deleted file mode 100644 (file)
index 900ab13..0000000
+++ /dev/null
@@ -1,963 +0,0 @@
-(function( exports, $ ){
-       var api = wp.customize;
-
-       /*
-        * @param options
-        * - previewer - The Previewer instance to sync with.
-        * - transport - The transport to use for previewing. Supports 'refresh' and 'postMessage'.
-        */
-       api.Setting = api.Value.extend({
-               initialize: function( id, value, options ) {
-                       var element;
-
-                       api.Value.prototype.initialize.call( this, value, options );
-
-                       this.id = id;
-                       this.transport = this.transport || 'refresh';
-
-                       this.bind( this.preview );
-               },
-               preview: function() {
-                       switch ( this.transport ) {
-                               case 'refresh':
-                                       return this.previewer.refresh();
-                               case 'postMessage':
-                                       return this.previewer.send( 'setting', [ this.id, this() ] );
-                       }
-               }
-       });
-
-       api.Control = api.Class.extend({
-               initialize: function( id, options ) {
-                       var control = this,
-                               nodes, radios, settings;
-
-                       this.params = {};
-                       $.extend( this, options || {} );
-
-                       this.id = id;
-                       this.selector = '#customize-control-' + id.replace( ']', '' ).replace( '[', '-' );
-                       this.container = $( this.selector );
-
-                       settings = $.map( this.params.settings, function( value ) {
-                               return value;
-                       });
-
-                       api.apply( api, settings.concat( function() {
-                               var key;
-
-                               control.settings = {};
-                               for ( key in control.params.settings ) {
-                                       control.settings[ key ] = api( control.params.settings[ key ] );
-                               }
-
-                               control.setting = control.settings['default'] || null;
-                               control.ready();
-                       }) );
-
-                       control.elements = [];
-
-                       nodes  = this.container.find('[data-customize-setting-link]');
-                       radios = {};
-
-                       nodes.each( function() {
-                               var node = $(this),
-                                       name;
-
-                               if ( node.is(':radio') ) {
-                                       name = node.prop('name');
-                                       if ( radios[ name ] )
-                                               return;
-
-                                       radios[ name ] = true;
-                                       node = nodes.filter( '[name="' + name + '"]' );
-                               }
-
-                               api( node.data('customizeSettingLink'), function( setting ) {
-                                       var element = new api.Element( node );
-                                       control.elements.push( element );
-                                       element.sync( setting );
-                                       element.set( setting() );
-                               });
-                       });
-               },
-
-               ready: function() {},
-
-               dropdownInit: function() {
-                       var control  = this,
-                               statuses = this.container.find('.dropdown-status'),
-                               params   = this.params,
-                               update   = function( to ) {
-                                       if ( typeof     to === 'string' && params.statuses && params.statuses[ to ] )
-                                               statuses.html( params.statuses[ to ] ).show();
-                                       else
-                                               statuses.hide();
-                               };
-
-                       // Support the .dropdown class to open/close complex elements
-                       this.container.on( 'click', '.dropdown', function( event ) {
-                               event.preventDefault();
-                               control.container.toggleClass('open');
-                       });
-
-                       this.setting.bind( update );
-                       update( this.setting() );
-               }
-       });
-
-       api.ColorControl = api.Control.extend({
-               ready: function() {
-                       var control = this,
-                               rhex, spot, input, text, update;
-
-                       rhex   = /^#([A-Fa-f0-9]{3}){0,2}$/;
-                       spot   = this.container.find('.dropdown-content');
-                       input  = new api.Element( this.container.find('.color-picker-hex') );
-                       update = function( color ) {
-                               spot.css( 'background', color );
-                               control.farbtastic.setColor( color );
-                       };
-
-                       this.farbtastic = $.farbtastic( this.container.find('.farbtastic-placeholder'), control.setting.set );
-
-                       // Only pass through values that are valid hexes/empty.
-                       input.sync( this.setting ).validate = function( to ) {
-                               return rhex.test( to ) ? to : null;
-                       };
-
-                       this.setting.bind( update );
-                       update( this.setting() );
-
-                       this.dropdownInit();
-               }
-       });
-
-       api.UploadControl = api.Control.extend({
-               ready: function() {
-                       var control = this;
-
-                       this.params.removed = this.params.removed || '';
-
-                       this.success = $.proxy( this.success, this );
-
-                       this.uploader = $.extend({
-                               container: this.container,
-                               browser:   this.container.find('.upload'),
-                               dropzone:  this.container.find('.upload-dropzone'),
-                               success:   this.success
-                       }, this.uploader || {} );
-
-                       if ( this.uploader.supported ) {
-                               if ( control.params.context )
-                                       control.uploader.param( 'post_data[context]', this.params.context );
-
-                               control.uploader.param( 'post_data[theme]', api.settings.theme.stylesheet );
-                       }
-
-                       this.uploader = new wp.Uploader( this.uploader );
-
-                       this.remover = this.container.find('.remove');
-                       this.remover.click( function( event ) {
-                               control.setting.set( control.params.removed );
-                               event.preventDefault();
-                       });
-
-                       this.removerVisibility = $.proxy( this.removerVisibility, this );
-                       this.setting.bind( this.removerVisibility );
-                       this.removerVisibility( this.setting.get() );
-               },
-               success: function( attachment ) {
-                       this.setting.set( attachment.url );
-               },
-               removerVisibility: function( to ) {
-                       this.remover.toggle( to != this.params.removed );
-               }
-       });
-
-       api.ImageControl = api.UploadControl.extend({
-               ready: function() {
-                       var control = this,
-                               panels;
-
-                       this.uploader = {
-                               init: function( up ) {
-                                       var fallback, button;
-
-                                       if ( this.supports.dragdrop )
-                                               return;
-
-                                       // Maintain references while wrapping the fallback button.
-                                       fallback = control.container.find( '.upload-fallback' );
-                                       button   = fallback.children().detach();
-
-                                       this.browser.detach().empty().append( button );
-                                       fallback.append( this.browser ).show();
-                               }
-                       };
-
-                       api.UploadControl.prototype.ready.call( this );
-
-                       this.thumbnail    = this.container.find('.preview-thumbnail img');
-                       this.thumbnailSrc = $.proxy( this.thumbnailSrc, this );
-                       this.setting.bind( this.thumbnailSrc );
-
-                       this.library = this.container.find('.library');
-
-                       // Generate tab objects
-                       this.tabs = {};
-                       panels    = this.library.find('.library-content');
-
-                       this.library.children('ul').children('li').each( function() {
-                               var link  = $(this),
-                                       id    = link.data('customizeTab'),
-                                       panel = panels.filter('[data-customize-tab="' + id + '"]');
-
-                               control.tabs[ id ] = {
-                                       both:  link.add( panel ),
-                                       link:  link,
-                                       panel: panel
-                               };
-                       });
-
-                       // Bind tab switch events
-                       this.library.children('ul').on( 'click', 'li', function( event ) {
-                               var id  = $(this).data('customizeTab'),
-                                       tab = control.tabs[ id ];
-
-                               event.preventDefault();
-
-                               if ( tab.link.hasClass('library-selected') )
-                                       return;
-
-                               control.selected.both.removeClass('library-selected');
-                               control.selected = tab;
-                               control.selected.both.addClass('library-selected');
-                       });
-
-                       // Bind events to switch image urls.
-                       this.library.on( 'click', 'a', function( event ) {
-                               var value = $(this).data('customizeImageValue');
-
-                               if ( value ) {
-                                       control.setting.set( value );
-                                       event.preventDefault();
-                               }
-                       });
-
-                       if ( this.tabs.uploaded ) {
-                               this.tabs.uploaded.target = this.library.find('.uploaded-target');
-                               if ( ! this.tabs.uploaded.panel.find('.thumbnail').length )
-                                       this.tabs.uploaded.both.addClass('hidden');
-                       }
-
-                       // Select a tab
-                       panels.each( function() {
-                               var tab = control.tabs[ $(this).data('customizeTab') ];
-
-                               // Select the first visible tab.
-                               if ( ! tab.link.hasClass('hidden') ) {
-                                       control.selected = tab;
-                                       tab.both.addClass('library-selected');
-                                       return false;
-                               }
-                       });
-
-                       this.dropdownInit();
-               },
-               success: function( attachment ) {
-                       api.UploadControl.prototype.success.call( this, attachment );
-
-                       // Add the uploaded image to the uploaded tab.
-                       if ( this.tabs.uploaded && this.tabs.uploaded.target.length ) {
-                               this.tabs.uploaded.both.removeClass('hidden');
-
-                               attachment.element = $( '<a href="#" class="thumbnail"></a>' )
-                                       .data( 'customizeImageValue', attachment.url )
-                                       .append( '<img src="' +  attachment.url+ '" />' )
-                                       .appendTo( this.tabs.uploaded.target );
-                       }
-               },
-               thumbnailSrc: function( to ) {
-                       if ( /^(https?:)?\/\//.test( to ) )
-                               this.thumbnail.prop( 'src', to ).show();
-                       else
-                               this.thumbnail.hide();
-               }
-       });
-
-       // Change objects contained within the main customize object to Settings.
-       api.defaultConstructor = api.Setting;
-
-       // Create the collection of Control objects.
-       api.control = new api.Values({ defaultConstructor: api.Control });
-
-       api.PreviewFrame = api.Messenger.extend({
-               sensitivity: 2000,
-
-               initialize: function( params, options ) {
-                       var deferred = $.Deferred(),
-                               self     = this;
-
-                       // This is the promise object.
-                       deferred.promise( this );
-
-                       this.container = params.container;
-                       this.signature = params.signature;
-
-                       $.extend( params, { channel: api.PreviewFrame.uuid() });
-
-                       api.Messenger.prototype.initialize.call( this, params, options );
-
-                       this.add( 'previewUrl', params.previewUrl );
-
-                       this.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() });
-
-                       this.run( deferred );
-               },
-
-               run: function( deferred ) {
-                       var self   = this,
-                               loaded = false,
-                               ready  = false;
-
-                       if ( this._ready )
-                               this.unbind( 'ready', this._ready );
-
-                       this._ready = function() {
-                               ready = true;
-
-                               if ( loaded )
-                                       deferred.resolveWith( self );
-                       };
-
-                       this.bind( 'ready', this._ready );
-
-                       this.request = $.ajax( this.previewUrl(), {
-                               type: 'POST',
-                               data: this.query,
-                               xhrFields: {
-                                       withCredentials: true
-                               }
-                       } );
-
-                       this.request.fail( function() {
-                               deferred.rejectWith( self, [ 'request failure' ] );
-                       });
-
-                       this.request.done( function( response ) {
-                               var location = self.request.getResponseHeader('Location'),
-                                       signature = self.signature,
-                                       index;
-
-                               // Check if the location response header differs from the current URL.
-                               // If so, the request was redirected; try loading the requested page.
-                               if ( location && location != self.previewUrl() ) {
-                                       deferred.rejectWith( self, [ 'redirect', location ] );
-                                       return;
-                               }
-
-                               // Check if the user is not logged in.
-                               if ( '0' === response ) {
-                                       self.login( deferred );
-                                       return;
-                               }
-
-                               // Check for cheaters.
-                               if ( '-1' === response ) {
-                                       deferred.rejectWith( self, [ 'cheatin' ] );
-                                       return;
-                               }
-
-                               // Check for a signature in the request.
-                               index = response.lastIndexOf( signature );
-                               if ( -1 === index || index < response.lastIndexOf('</html>') ) {
-                                       deferred.rejectWith( self, [ 'unsigned' ] );
-                                       return;
-                               }
-
-                               // Strip the signature from the request.
-                               response = response.slice( 0, index ) + response.slice( index + signature.length );
-
-                               // Create the iframe and inject the html content.
-                               self.iframe = $('<iframe />').appendTo( self.container );
-
-                               // Bind load event after the iframe has been added to the page;
-                               // otherwise it will fire when injected into the DOM.
-                               self.iframe.one( 'load', function() {
-                                       loaded = true;
-
-                                       if ( ready ) {
-                                               deferred.resolveWith( self );
-                                       } else {
-                                               setTimeout( function() {
-                                                       deferred.rejectWith( self, [ 'ready timeout' ] );
-                                               }, self.sensitivity );
-                                       }
-                               });
-
-                               self.targetWindow( self.iframe[0].contentWindow );
-
-                               self.targetWindow().document.open();
-                               self.targetWindow().document.write( response );
-                               self.targetWindow().document.close();
-                       });
-               },
-
-               login: function( deferred ) {
-                       var self = this,
-                               reject;
-
-                       reject = function() {
-                               deferred.rejectWith( self, [ 'logged out' ] );
-                       };
-
-                       if ( this.triedLogin )
-                               return reject();
-
-                       // Check if we have an admin cookie.
-                       $.get( api.settings.url.ajax, {
-                               action: 'logged-in'
-                       }).fail( reject ).done( function( response ) {
-                               var iframe;
-
-                               if ( '1' !== response )
-                                       reject();
-
-                               iframe = $('<iframe src="' + self.previewUrl() + '" />').hide();
-                               iframe.appendTo( self.container );
-                               iframe.load( function() {
-                                       self.triedLogin = true;
-
-                                       iframe.remove();
-                                       self.run( deferred );
-                               });
-                       });
-               },
-
-               destroy: function() {
-                       api.Messenger.prototype.destroy.call( this );
-                       this.request.abort();
-
-                       if ( this.iframe )
-                               this.iframe.remove();
-
-                       delete this.request;
-                       delete this.iframe;
-                       delete this.targetWindow;
-               }
-       });
-
-       (function(){
-               var uuid = 0;
-               api.PreviewFrame.uuid = function() {
-                       return 'preview-' + uuid++;
-               };
-       }());
-
-       api.Previewer = api.Messenger.extend({
-               refreshBuffer: 250,
-
-               /**
-                * Requires params:
-                *  - container  - a selector or jQuery element
-                *  - previewUrl - the URL of preview frame
-                */
-               initialize: function( params, options ) {
-                       var self = this,
-                               rscheme = /^https?/,
-                               url;
-
-                       $.extend( this, options || {} );
-
-                       /*
-                        * Wrap this.refresh to prevent it from hammering the servers:
-                        *
-                        * If refresh is called once and no other refresh requests are
-                        * loading, trigger the request immediately.
-                        *
-                        * If refresh is called while another refresh request is loading,
-                        * debounce the refresh requests:
-                        * 1. Stop the loading request (as it is instantly outdated).
-                        * 2. Trigger the new request once refresh hasn't been called for
-                        *    self.refreshBuffer milliseconds.
-                        */
-                       this.refresh = (function( self ) {
-                               var refresh  = self.refresh,
-                                       callback = function() {
-                                               timeout = null;
-                                               refresh.call( self );
-                                       },
-                                       timeout;
-
-                               return function() {
-                                       if ( typeof timeout !== 'number' ) {
-                                               if ( self.loading ) {
-                                                       self.abort();
-                                               } else {
-                                                       return callback();
-                                               }
-                                       }
-
-                                       clearTimeout( timeout );
-                                       timeout = setTimeout( callback, self.refreshBuffer );
-                               };
-                       })( this );
-
-                       this.container   = api.ensure( params.container );
-                       this.allowedUrls = params.allowedUrls;
-                       this.signature   = params.signature;
-
-                       params.url = window.location.href;
-
-                       api.Messenger.prototype.initialize.call( this, params );
-
-                       this.add( 'scheme', this.origin() ).link( this.origin ).setter( function( to ) {
-                               var match = to.match( rscheme );
-                               return match ? match[0] : '';
-                       });
-
-                       // Limit the URL to internal, front-end links.
-                       //
-                       // If the frontend and the admin are served from the same domain, load the
-                       // preview over ssl if the customizer is being loaded over ssl. This avoids
-                       // insecure content warnings. This is not attempted if the admin and frontend
-                       // are on different domains to avoid the case where the frontend doesn't have
-                       // ssl certs.
-
-                       this.add( 'previewUrl', params.previewUrl ).setter( function( to ) {
-                               var result;
-
-                               // Check for URLs that include "/wp-admin/" or end in "/wp-admin".
-                               // Strip hashes and query strings before testing.
-                               if ( /\/wp-admin(\/|$)/.test( to.replace(/[#?].*$/, '') ) )
-                                       return null;
-
-                               // Attempt to match the URL to the control frame's scheme
-                               // and check if it's allowed. If not, try the original URL.
-                               $.each([ to.replace( rscheme, self.scheme() ), to ], function( i, url ) {
-                                       $.each( self.allowedUrls, function( i, allowed ) {
-                                               if ( 0 === url.indexOf( allowed ) ) {
-                                                       result = url;
-                                                       return false;
-                                               }
-                                       });
-                                       if ( result )
-                                               return false;
-                               });
-
-                               // If we found a matching result, return it. If not, bail.
-                               return result ? result : null;
-                       });
-
-                       // Refresh the preview when the URL is changed (but not yet).
-                       this.previewUrl.bind( this.refresh );
-
-                       this.scroll = 0;
-                       this.bind( 'scroll', function( distance ) {
-                               this.scroll = distance;
-                       });
-
-                       // Update the URL when the iframe sends a URL message.
-                       this.bind( 'url', this.previewUrl );
-               },
-
-               query: function() {},
-
-               abort: function() {
-                       if ( this.loading ) {
-                               this.loading.destroy();
-                               delete this.loading;
-                       }
-               },
-
-               refresh: function() {
-                       var self = this;
-
-                       this.abort();
-
-                       this.loading = new api.PreviewFrame({
-                               url:        this.url(),
-                               previewUrl: this.previewUrl(),
-                               query:      this.query() || {},
-                               container:  this.container,
-                               signature:  this.signature
-                       });
-
-                       this.loading.done( function() {
-                               // 'this' is the loading frame
-                               this.bind( 'synced', function() {
-                                       if ( self.preview )
-                                               self.preview.destroy();
-                                       self.preview = this;
-                                       delete self.loading;
-
-                                       self.targetWindow( this.targetWindow() );
-                                       self.channel( this.channel() );
-
-                                       self.send( 'active' );
-                               });
-
-                               this.send( 'sync', {
-                                       scroll:   self.scroll,
-                                       settings: api.get()
-                               });
-                       });
-
-                       this.loading.fail( function( reason, location ) {
-                               if ( 'redirect' === reason && location )
-                                       self.previewUrl( location );
-
-                               if ( 'logged out' === reason ) {
-                                       if ( self.preview ) {
-                                               self.preview.destroy();
-                                               delete self.preview;
-                                       }
-
-                                       self.login().done( self.refresh );
-                               }
-
-                               if ( 'cheatin' === reason )
-                                       self.cheatin();
-                       });
-               },
-
-               login: function() {
-                       var previewer = this,
-                               deferred, messenger, iframe;
-
-                       if ( this._login )
-                               return this._login;
-
-                       deferred = $.Deferred();
-                       this._login = deferred.promise();
-
-                       messenger = new api.Messenger({
-                               channel: 'login',
-                               url:     api.settings.url.login
-                       });
-
-                       iframe = $('<iframe src="' + api.settings.url.login + '" />').appendTo( this.container );
-
-                       messenger.targetWindow( iframe[0].contentWindow );
-
-                       messenger.bind( 'login', function() {
-                               iframe.remove();
-                               messenger.destroy();
-                               delete previewer._login;
-                               deferred.resolve();
-                       });
-
-                       return this._login;
-               },
-
-               cheatin: function() {
-                       $( document.body ).empty().addClass('cheatin').append( '<p>' + api.l10n.cheatin + '</p>' );
-               }
-       });
-
-       /* =====================================================================
-        * Ready.
-        * ===================================================================== */
-
-       api.controlConstructor = {
-               color:  api.ColorControl,
-               upload: api.UploadControl,
-               image:  api.ImageControl
-       };
-
-       $( function() {
-               api.settings = window._wpCustomizeSettings;
-               api.l10n = window._wpCustomizeControlsL10n;
-
-               // Check if we can run the customizer.
-               if ( ! api.settings )
-                       return;
-
-               // Redirect to the fallback preview if any incompatibilities are found.
-               if ( ! $.support.postMessage || ( ! $.support.cors && api.settings.isCrossDomain ) )
-                       return window.location = api.settings.url.fallback;
-
-               var body = $( document.body ),
-                       overlay = body.children('.wp-full-overlay'),
-                       query, previewer, parent;
-
-               // Prevent the form from saving when enter is pressed.
-               $('#customize-controls').on( 'keydown', function( e ) {
-                       if ( $( e.target ).is('textarea') )
-                               return;
-
-                       if ( 13 === e.which ) // Enter
-                               e.preventDefault();
-               });
-
-               // Initialize Previewer
-               previewer = new api.Previewer({
-                       container:   '#customize-preview',
-                       form:        '#customize-controls',
-                       previewUrl:  api.settings.url.preview,
-                       allowedUrls: api.settings.url.allowed,
-                       signature:   'WP_CUSTOMIZER_SIGNATURE'
-               }, {
-
-                       nonce: api.settings.nonce,
-
-                       query: function() {
-                               return {
-                                       wp_customize: 'on',
-                                       theme:        api.settings.theme.stylesheet,
-                                       customized:   JSON.stringify( api.get() ),
-                                       nonce:        this.nonce.preview
-                               };
-                       },
-
-                       save: function() {
-                               var self  = this,
-                                       query = $.extend( this.query(), {
-                                               action: 'customize_save',
-                                               nonce:  this.nonce.save
-                                       }),
-                                       request = $.post( api.settings.url.ajax, query );
-
-                               api.trigger( 'save', request );
-
-                               body.addClass('saving');
-
-                               request.always( function() {
-                                       body.removeClass('saving');
-                               });
-
-                               request.done( function( response ) {
-                                       // Check if the user is logged out.
-                                       if ( '0' === response ) {
-                                               self.preview.iframe.hide();
-                                               self.login().done( function() {
-                                                       self.save();
-                                                       self.preview.iframe.show();
-                                               });
-                                               return;
-                                       }
-
-                                       // Check for cheaters.
-                                       if ( '-1' === response ) {
-                                               self.cheatin();
-                                               return;
-                                       }
-
-                                       api.trigger( 'saved' );
-                               });
-                       }
-               });
-
-               // Refresh the nonces if the preview sends updated nonces over.
-               previewer.bind( 'nonce', function( nonce ) {
-                       $.extend( this.nonce, nonce );
-               });
-
-               $.each( api.settings.settings, function( id, data ) {
-                       api.create( id, id, data.value, {
-                               transport: data.transport,
-                               previewer: previewer
-                       } );
-               });
-
-               $.each( api.settings.controls, function( id, data ) {
-                       var constructor = api.controlConstructor[ data.type ] || api.Control,
-                               control;
-
-                       control = api.control.add( id, new constructor( id, {
-                               params: data,
-                               previewer: previewer
-                       } ) );
-               });
-
-               // Check if preview url is valid and load the preview frame.
-               if ( previewer.previewUrl() )
-                       previewer.refresh();
-               else
-                       previewer.previewUrl( api.settings.url.home );
-
-               // Save and activated states
-               (function() {
-                       var state = new api.Values(),
-                               saved = state.create('saved'),
-                               activated = state.create('activated');
-
-                       state.bind( 'change', function() {
-                               var save = $('#save'),
-                                       back = $('.back');
-
-                               if ( ! activated() ) {
-                                       save.val( api.l10n.activate ).prop( 'disabled', false );
-                                       back.text( api.l10n.cancel );
-
-                               } else if ( saved() ) {
-                                       save.val( api.l10n.saved ).prop( 'disabled', true );
-                                       back.text( api.l10n.close );
-
-                               } else {
-                                       save.val( api.l10n.save ).prop( 'disabled', false );
-                                       back.text( api.l10n.cancel );
-                               }
-                       });
-
-                       // Set default states.
-                       saved( true );
-                       activated( api.settings.theme.active );
-
-                       api.bind( 'change', function() {
-                               state('saved').set( false );
-                       });
-
-                       api.bind( 'saved', function() {
-                               state('saved').set( true );
-                               state('activated').set( true );
-                       });
-
-                       activated.bind( function( to ) {
-                               if ( to )
-                                       api.trigger( 'activated' );
-                       });
-
-                       // Expose states to the API.
-                       api.state = state;
-               }());
-
-               // Temporary accordion code.
-               $('.customize-section-title').click( function( event ) {
-                       var clicked = $( this ).parents( '.customize-section' );
-
-                       if ( clicked.hasClass('cannot-expand') )
-                               return;
-
-                       $( '.customize-section' ).not( clicked ).removeClass( 'open' );
-                       clicked.toggleClass( 'open' );
-                       event.preventDefault();
-               });
-
-               // Button bindings.
-               $('#save').click( function( event ) {
-                       previewer.save();
-                       event.preventDefault();
-               });
-
-               $('.collapse-sidebar').click( function( event ) {
-                       overlay.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
-                       event.preventDefault();
-               });
-
-               // Create a potential postMessage connection with the parent frame.
-               parent = new api.Messenger({
-                       url: api.settings.url.parent,
-                       channel: 'loader'
-               });
-
-               // If we receive a 'back' event, we're inside an iframe.
-               // Send any clicks to the 'Return' link to the parent page.
-               parent.bind( 'back', function() {
-                       $('.back').on( 'click.back', function( event ) {
-                               event.preventDefault();
-                               parent.send( 'close' );
-                       });
-               });
-
-               // Pass events through to the parent.
-               api.bind( 'saved', function() {
-                       parent.send( 'saved' );
-               });
-
-               // When activated, let the loader handle redirecting the page.
-               // If no loader exists, redirect the page ourselves (if a url exists).
-               api.bind( 'activated', function() {
-                       if ( parent.targetWindow() )
-                               parent.send( 'activated', api.settings.url.activated );
-                       else if ( api.settings.url.activated )
-                               window.location = api.settings.url.activated;
-               });
-
-               // Initialize the connection with the parent frame.
-               parent.send( 'ready' );
-
-               // Control visibility for default controls
-               $.each({
-                       'background_image': {
-                               controls: [ 'background_repeat', 'background_position_x', 'background_attachment' ],
-                               callback: function( to ) { return !! to }
-                       },
-                       'show_on_front': {
-                               controls: [ 'page_on_front', 'page_for_posts' ],
-                               callback: function( to ) { return 'page' === to }
-                       },
-                       'header_textcolor': {
-                               controls: [ 'header_textcolor' ],
-                               callback: function( to ) { return 'blank' !== to }
-                       }
-               }, function( settingId, o ) {
-                       api( settingId, function( setting ) {
-                               $.each( o.controls, function( i, controlId ) {
-                                       api.control( controlId, function( control ) {
-                                               var visibility = function( to ) {
-                                                       control.container.toggle( o.callback( to ) );
-                                               };
-
-                                               visibility( setting.get() );
-                                               setting.bind( visibility );
-                                       });
-                               });
-                       });
-               });
-
-               // Juggle the two controls that use header_textcolor
-               api.control( 'display_header_text', function( control ) {
-                       var last = '';
-
-                       control.elements[0].unsync( api( 'header_textcolor' ) );
-
-                       control.element = new api.Element( control.container.find('input') );
-                       control.element.set( 'blank' !== control.setting() );
-
-                       control.element.bind( function( to ) {
-                               if ( ! to )
-                                       last = api( 'header_textcolor' ).get();
-
-                               control.setting.set( to ? last : 'blank' );
-                       });
-
-                       control.setting.bind( function( to ) {
-                               control.element.set( 'blank' !== to );
-                       });
-               });
-
-               // Handle header image data
-               api.control( 'header_image', function( control ) {
-                       control.setting.bind( function( to ) {
-                               if ( to === control.params.removed )
-                                       control.settings.data.set( false );
-                       });
-
-                       control.library.on( 'click', 'a', function( event ) {
-                               control.settings.data.set( $(this).data('customizeHeaderImageData') );
-                       });
-
-                       control.uploader.success = function( attachment ) {
-                               var data;
-
-                               api.ImageControl.prototype.success.call( control, attachment );
-
-                               data = {
-                                       attachment_id: attachment.id,
-                                       url:           attachment.url,
-                                       thumbnail_url: attachment.url,
-                                       height:        attachment.meta.height,
-                                       width:         attachment.meta.width
-                               };
-
-                               attachment.element.data( 'customizeHeaderImageData', data );
-                               control.settings.data.set( data );
-                       }
-               });
-
-               api.trigger( 'ready' );
-       });
-
-})( wp, jQuery );
\ No newline at end of file
index a07421619ed014941dea9064271e9e98735be1fe..96f776744fe76732b7990b8b974f9b23a5af78c3 100644 (file)
@@ -1 +1,1019 @@
-(function(a,c){var b=wp.customize;b.Setting=b.Value.extend({initialize:function(g,f,d){var e;b.Value.prototype.initialize.call(this,f,d);this.id=g;this.transport=this.transport||"refresh";this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}});b.Control=b.Class.extend({initialize:function(i,e){var g=this,d,h,f;this.params={};c.extend(this,e||{});this.id=i;this.selector="#customize-control-"+i.replace("]","").replace("[","-");this.container=c(this.selector);f=c.map(this.params.settings,function(j){return j});b.apply(b,f.concat(function(){var j;g.settings={};for(j in g.params.settings){g.settings[j]=b(g.params.settings[j])}g.setting=g.settings["default"]||null;g.ready()}));g.elements=[];d=this.container.find("[data-customize-setting-link]");h={};d.each(function(){var k=c(this),j;if(k.is(":radio")){j=k.prop("name");if(h[j]){return}h[j]=true;k=d.filter('[name="'+j+'"]')}b(k.data("customizeSettingLink"),function(m){var l=new b.Element(k);g.elements.push(l);l.sync(m);l.set(m())})})},ready:function(){},dropdownInit:function(){var e=this,d=this.container.find(".dropdown-status"),f=this.params,g=function(h){if(typeof h==="string"&&f.statuses&&f.statuses[h]){d.html(f.statuses[h]).show()}else{d.hide()}};this.container.on("click",".dropdown",function(h){h.preventDefault();e.container.toggleClass("open")});this.setting.bind(g);g(this.setting())}});b.ColorControl=b.Control.extend({ready:function(){var g=this,f,e,d,h,i;f=/^#([A-Fa-f0-9]{3}){0,2}$/;e=this.container.find(".dropdown-content");d=new b.Element(this.container.find(".color-picker-hex"));i=function(j){e.css("background",j);g.farbtastic.setColor(j)};this.farbtastic=c.farbtastic(this.container.find(".farbtastic-placeholder"),g.setting.set);d.sync(this.setting).validate=function(j){return f.test(j)?j:null};this.setting.bind(i);i(this.setting());this.dropdownInit()}});b.UploadControl=b.Control.extend({ready:function(){var d=this;this.params.removed=this.params.removed||"";this.success=c.proxy(this.success,this);this.uploader=c.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success},this.uploader||{});if(this.uploader.supported){if(d.params.context){d.uploader.param("post_data[context]",this.params.context)}d.uploader.param("post_data[theme]",b.settings.theme.stylesheet)}this.uploader=new wp.Uploader(this.uploader);this.remover=this.container.find(".remove");this.remover.click(function(e){d.setting.set(d.params.removed);e.preventDefault()});this.removerVisibility=c.proxy(this.removerVisibility,this);this.setting.bind(this.removerVisibility);this.removerVisibility(this.setting.get())},success:function(d){this.setting.set(d.url)},removerVisibility:function(d){this.remover.toggle(d!=this.params.removed)}});b.ImageControl=b.UploadControl.extend({ready:function(){var e=this,d;this.uploader={init:function(f){var h,g;if(this.supports.dragdrop){return}h=e.container.find(".upload-fallback");g=h.children().detach();this.browser.detach().empty().append(g);h.append(this.browser).show()}};b.UploadControl.prototype.ready.call(this);this.thumbnail=this.container.find(".preview-thumbnail img");this.thumbnailSrc=c.proxy(this.thumbnailSrc,this);this.setting.bind(this.thumbnailSrc);this.library=this.container.find(".library");this.tabs={};d=this.library.find(".library-content");this.library.children("ul").children("li").each(function(){var g=c(this),h=g.data("customizeTab"),f=d.filter('[data-customize-tab="'+h+'"]');e.tabs[h]={both:g.add(f),link:g,panel:f}});this.library.children("ul").on("click","li",function(g){var h=c(this).data("customizeTab"),f=e.tabs[h];g.preventDefault();if(f.link.hasClass("library-selected")){return}e.selected.both.removeClass("library-selected");e.selected=f;e.selected.both.addClass("library-selected")});this.library.on("click","a",function(f){var g=c(this).data("customizeImageValue");if(g){e.setting.set(g);f.preventDefault()}});if(this.tabs.uploaded){this.tabs.uploaded.target=this.library.find(".uploaded-target");if(!this.tabs.uploaded.panel.find(".thumbnail").length){this.tabs.uploaded.both.addClass("hidden")}}d.each(function(){var f=e.tabs[c(this).data("customizeTab")];if(!f.link.hasClass("hidden")){e.selected=f;f.both.addClass("library-selected");return false}});this.dropdownInit()},success:function(d){b.UploadControl.prototype.success.call(this,d);if(this.tabs.uploaded&&this.tabs.uploaded.target.length){this.tabs.uploaded.both.removeClass("hidden");d.element=c('<a href="#" class="thumbnail"></a>').data("customizeImageValue",d.url).append('<img src="'+d.url+'" />').appendTo(this.tabs.uploaded.target)}},thumbnailSrc:function(d){if(/^(https?:)?\/\//.test(d)){this.thumbnail.prop("src",d).show()}else{this.thumbnail.hide()}}});b.defaultConstructor=b.Setting;b.control=new b.Values({defaultConstructor:b.Control});b.PreviewFrame=b.Messenger.extend({sensitivity:2000,initialize:function(g,f){var e=c.Deferred(),d=this;e.promise(this);this.container=g.container;this.signature=g.signature;c.extend(g,{channel:b.PreviewFrame.uuid()});b.Messenger.prototype.initialize.call(this,g,f);this.add("previewUrl",g.previewUrl);this.query=c.extend(g.query||{},{customize_messenger_channel:this.channel()});this.run(e)},run:function(e){var d=this,f=false,g=false;if(this._ready){this.unbind("ready",this._ready)}this._ready=function(){g=true;if(f){e.resolveWith(d)}};this.bind("ready",this._ready);this.request=c.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:true}});this.request.fail(function(){e.rejectWith(d,["request failure"])});this.request.done(function(j){var i=d.request.getResponseHeader("Location"),h=d.signature,k;if(i&&i!=d.previewUrl()){e.rejectWith(d,["redirect",i]);return}if("0"===j){d.login(e);return}if("-1"===j){e.rejectWith(d,["cheatin"]);return}k=j.lastIndexOf(h);if(-1===k||k<j.lastIndexOf("</html>")){e.rejectWith(d,["unsigned"]);return}j=j.slice(0,k)+j.slice(k+h.length);d.iframe=c("<iframe />").appendTo(d.container);d.iframe.one("load",function(){f=true;if(g){e.resolveWith(d)}else{setTimeout(function(){e.rejectWith(d,["ready timeout"])},d.sensitivity)}});d.targetWindow(d.iframe[0].contentWindow);d.targetWindow().document.open();d.targetWindow().document.write(j);d.targetWindow().document.close()})},login:function(e){var d=this,f;f=function(){e.rejectWith(d,["logged out"])};if(this.triedLogin){return f()}c.get(b.settings.url.ajax,{action:"logged-in"}).fail(f).done(function(g){var h;if("1"!==g){f()}h=c('<iframe src="'+d.previewUrl()+'" />').hide();h.appendTo(d.container);h.load(function(){d.triedLogin=true;h.remove();d.run(e)})})},destroy:function(){b.Messenger.prototype.destroy.call(this);this.request.abort();if(this.iframe){this.iframe.remove()}delete this.request;delete this.iframe;delete this.targetWindow}});(function(){var d=0;b.PreviewFrame.uuid=function(){return"preview-"+d++}}());b.Previewer=b.Messenger.extend({refreshBuffer:250,initialize:function(h,f){var d=this,g=/^https?/,e;c.extend(this,f||{});this.refresh=(function(i){var j=i.refresh,l=function(){k=null;j.call(i)},k;return function(){if(typeof k!=="number"){if(i.loading){i.abort()}else{return l()}}clearTimeout(k);k=setTimeout(l,i.refreshBuffer)}})(this);this.container=b.ensure(h.container);this.allowedUrls=h.allowedUrls;this.signature=h.signature;h.url=window.location.href;b.Messenger.prototype.initialize.call(this,h);this.add("scheme",this.origin()).link(this.origin).setter(function(j){var i=j.match(g);return i?i[0]:""});this.add("previewUrl",h.previewUrl).setter(function(j){var i;if(/\/wp-admin(\/|$)/.test(j.replace(/[#?].*$/,""))){return null}c.each([j.replace(g,d.scheme()),j],function(l,k){c.each(d.allowedUrls,function(m,n){if(0===k.indexOf(n)){i=k;return false}});if(i){return false}});return i?i:null});this.previewUrl.bind(this.refresh);this.scroll=0;this.bind("scroll",function(i){this.scroll=i});this.bind("url",this.previewUrl)},query:function(){},abort:function(){if(this.loading){this.loading.destroy();delete this.loading}},refresh:function(){var d=this;this.abort();this.loading=new b.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature});this.loading.done(function(){this.bind("synced",function(){if(d.preview){d.preview.destroy()}d.preview=this;delete d.loading;d.targetWindow(this.targetWindow());d.channel(this.channel());d.send("active")});this.send("sync",{scroll:d.scroll,settings:b.get()})});this.loading.fail(function(f,e){if("redirect"===f&&e){d.previewUrl(e)}if("logged out"===f){if(d.preview){d.preview.destroy();delete d.preview}d.login().done(d.refresh)}if("cheatin"===f){d.cheatin()}})},login:function(){var g=this,d,f,e;if(this._login){return this._login}d=c.Deferred();this._login=d.promise();f=new b.Messenger({channel:"login",url:b.settings.url.login});e=c('<iframe src="'+b.settings.url.login+'" />').appendTo(this.container);f.targetWindow(e[0].contentWindow);f.bind("login",function(){e.remove();f.destroy();delete g._login;d.resolve()});return this._login},cheatin:function(){c(document.body).empty().addClass("cheatin").append("<p>"+b.l10n.cheatin+"</p>")}});b.controlConstructor={color:b.ColorControl,upload:b.UploadControl,image:b.ImageControl};c(function(){b.settings=window._wpCustomizeSettings;b.l10n=window._wpCustomizeControlsL10n;if(!b.settings){return}if(!c.support.postMessage||(!c.support.cors&&b.settings.isCrossDomain)){return window.location=b.settings.url.fallback}var d=c(document.body),e=d.children(".wp-full-overlay"),g,h,f;c("#customize-controls").on("keydown",function(i){if(c(i.target).is("textarea")){return}if(13===i.which){i.preventDefault()}});h=new b.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:b.settings.url.preview,allowedUrls:b.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:b.settings.nonce,query:function(){return{wp_customize:"on",theme:b.settings.theme.stylesheet,customized:JSON.stringify(b.get()),nonce:this.nonce.preview}},save:function(){var i=this,k=c.extend(this.query(),{action:"customize_save",nonce:this.nonce.save}),j=c.post(b.settings.url.ajax,k);b.trigger("save",j);d.addClass("saving");j.always(function(){d.removeClass("saving")});j.done(function(l){if("0"===l){i.preview.iframe.hide();i.login().done(function(){i.save();i.preview.iframe.show()});return}if("-1"===l){i.cheatin();return}b.trigger("saved")})}});h.bind("nonce",function(i){c.extend(this.nonce,i)});c.each(b.settings.settings,function(j,i){b.create(j,j,i.value,{transport:i.transport,previewer:h})});c.each(b.settings.controls,function(l,j){var i=b.controlConstructor[j.type]||b.Control,k;k=b.control.add(l,new i(l,{params:j,previewer:h}))});if(h.previewUrl()){h.refresh()}else{h.previewUrl(b.settings.url.home)}(function(){var k=new b.Values(),j=k.create("saved"),i=k.create("activated");k.bind("change",function(){var m=c("#save"),l=c(".back");if(!i()){m.val(b.l10n.activate).prop("disabled",false);l.text(b.l10n.cancel)}else{if(j()){m.val(b.l10n.saved).prop("disabled",true);l.text(b.l10n.close)}else{m.val(b.l10n.save).prop("disabled",false);l.text(b.l10n.cancel)}}});j(true);i(b.settings.theme.active);b.bind("change",function(){k("saved").set(false)});b.bind("saved",function(){k("saved").set(true);k("activated").set(true)});i.bind(function(l){if(l){b.trigger("activated")}});b.state=k}());c(".customize-section-title").click(function(j){var i=c(this).parents(".customize-section");if(i.hasClass("cannot-expand")){return}c(".customize-section").not(i).removeClass("open");i.toggleClass("open");j.preventDefault()});c("#save").click(function(i){h.save();i.preventDefault()});c(".collapse-sidebar").click(function(i){e.toggleClass("collapsed").toggleClass("expanded");i.preventDefault()});f=new b.Messenger({url:b.settings.url.parent,channel:"loader"});f.bind("back",function(){c(".back").on("click.back",function(i){i.preventDefault();f.send("close")})});b.bind("saved",function(){f.send("saved")});b.bind("activated",function(){if(f.targetWindow()){f.send("activated",b.settings.url.activated)}else{if(b.settings.url.activated){window.location=b.settings.url.activated}}});f.send("ready");c.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(i){return !!i}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(i){return"page"===i}},header_textcolor:{controls:["header_textcolor"],callback:function(i){return"blank"!==i}}},function(i,j){b(i,function(k){c.each(j.controls,function(l,m){b.control(m,function(o){var n=function(p){o.container.toggle(j.callback(p))};n(k.get());k.bind(n)})})})});b.control("display_header_text",function(j){var i="";j.elements[0].unsync(b("header_textcolor"));j.element=new b.Element(j.container.find("input"));j.element.set("blank"!==j.setting());j.element.bind(function(k){if(!k){i=b("header_textcolor").get()}j.setting.set(k?i:"blank")});j.setting.bind(function(k){j.element.set("blank"!==k)})});b.control("header_image",function(i){i.setting.bind(function(j){if(j===i.params.removed){i.settings.data.set(false)}});i.library.on("click","a",function(j){i.settings.data.set(c(this).data("customizeHeaderImageData"))});i.uploader.success=function(k){var j;b.ImageControl.prototype.success.call(i,k);j={attachment_id:k.id,url:k.url,thumbnail_url:k.url,height:k.meta.height,width:k.meta.width};k.element.data("customizeHeaderImageData",j);i.settings.data.set(j)}});b.trigger("ready")})})(wp,jQuery);
\ No newline at end of file
+(function( exports, $ ){
+       var api = wp.customize;
+
+       /*
+        * @param options
+        * - previewer - The Previewer instance to sync with.
+        * - transport - The transport to use for previewing. Supports 'refresh' and 'postMessage'.
+        */
+       api.Setting = api.Value.extend({
+               initialize: function( id, value, options ) {
+                       var element;
+
+                       api.Value.prototype.initialize.call( this, value, options );
+
+                       this.id = id;
+                       this.transport = this.transport || 'refresh';
+
+                       this.bind( this.preview );
+               },
+               preview: function() {
+                       switch ( this.transport ) {
+                               case 'refresh':
+                                       return this.previewer.refresh();
+                               case 'postMessage':
+                                       return this.previewer.send( 'setting', [ this.id, this() ] );
+                       }
+               }
+       });
+
+       api.Control = api.Class.extend({
+               initialize: function( id, options ) {
+                       var control = this,
+                               nodes, radios, settings;
+
+                       this.params = {};
+                       $.extend( this, options || {} );
+
+                       this.id = id;
+                       this.selector = '#customize-control-' + id.replace( ']', '' ).replace( '[', '-' );
+                       this.container = $( this.selector );
+
+                       settings = $.map( this.params.settings, function( value ) {
+                               return value;
+                       });
+
+                       api.apply( api, settings.concat( function() {
+                               var key;
+
+                               control.settings = {};
+                               for ( key in control.params.settings ) {
+                                       control.settings[ key ] = api( control.params.settings[ key ] );
+                               }
+
+                               control.setting = control.settings['default'] || null;
+                               control.ready();
+                       }) );
+
+                       control.elements = [];
+
+                       nodes  = this.container.find('[data-customize-setting-link]');
+                       radios = {};
+
+                       nodes.each( function() {
+                               var node = $(this),
+                                       name;
+
+                               if ( node.is(':radio') ) {
+                                       name = node.prop('name');
+                                       if ( radios[ name ] )
+                                               return;
+
+                                       radios[ name ] = true;
+                                       node = nodes.filter( '[name="' + name + '"]' );
+                               }
+
+                               api( node.data('customizeSettingLink'), function( setting ) {
+                                       var element = new api.Element( node );
+                                       control.elements.push( element );
+                                       element.sync( setting );
+                                       element.set( setting() );
+                               });
+                       });
+               },
+
+               ready: function() {},
+
+               dropdownInit: function() {
+                       var control  = this,
+                               statuses = this.container.find('.dropdown-status'),
+                               params   = this.params,
+                               update   = function( to ) {
+                                       if ( typeof     to === 'string' && params.statuses && params.statuses[ to ] )
+                                               statuses.html( params.statuses[ to ] ).show();
+                                       else
+                                               statuses.hide();
+                               };
+
+                       var toggleFreeze = false;
+
+                       // Support the .dropdown class to open/close complex elements
+                       this.container.on( 'click keydown', '.dropdown', function( event ) {
+                               if ( event.type === 'keydown' &&  13 !== event.which ) // enter
+                                       return;
+
+                               event.preventDefault();
+
+                               if (!toggleFreeze)
+                                       control.container.toggleClass('open');
+
+                               if ( control.container.hasClass('open') )
+                                       control.container.parent().parent().find('li.library-selected').focus();
+
+                               // Don't want to fire focus and click at same time
+                               toggleFreeze = true;
+                               setTimeout(function () {
+                                       toggleFreeze = false;
+                               }, 400);
+                       });
+
+                       this.setting.bind( update );
+                       update( this.setting() );
+               }
+       });
+
+       api.ColorControl = api.Control.extend({
+               ready: function() {
+                       var control = this,
+                               picker = this.container.find('.color-picker-hex');
+
+                       picker.val( control.setting() ).wpColorPicker({
+                               change: function( event, options ) {
+                                       control.setting.set( picker.wpColorPicker('color') );
+                               },
+                               clear: function() {
+                                       control.setting.set( false );
+                               }
+                       });
+               }
+       });
+
+       api.UploadControl = api.Control.extend({
+               ready: function() {
+                       var control = this;
+
+                       this.params.removed = this.params.removed || '';
+
+                       this.success = $.proxy( this.success, this );
+
+                       this.uploader = $.extend({
+                               container: this.container,
+                               browser:   this.container.find('.upload'),
+                               dropzone:  this.container.find('.upload-dropzone'),
+                               success:   this.success,
+                               plupload:  {},
+                               params:    {}
+                       }, this.uploader || {} );
+
+                       if ( control.params.extensions ) {
+                               control.uploader.plupload.filters = [{
+                                       title:      api.l10n.allowedFiles,
+                                       extensions: control.params.extensions
+                               }];
+                       }
+
+                       if ( control.params.context )
+                               control.uploader.params['post_data[context]'] = this.params.context;
+
+                       if ( api.settings.theme.stylesheet )
+                               control.uploader.params['post_data[theme]'] = api.settings.theme.stylesheet;
+
+                       this.uploader = new wp.Uploader( this.uploader );
+
+                       this.remover = this.container.find('.remove');
+                       this.remover.on( 'click keydown', function( event ) {
+                               if ( event.type === 'keydown' &&  13 !== event.which ) // enter
+                                       return;
+
+                               control.setting.set( control.params.removed );
+                               event.preventDefault();
+                       });
+
+                       this.removerVisibility = $.proxy( this.removerVisibility, this );
+                       this.setting.bind( this.removerVisibility );
+                       this.removerVisibility( this.setting.get() );
+               },
+               success: function( attachment ) {
+                       this.setting.set( attachment.get('url') );
+               },
+               removerVisibility: function( to ) {
+                       this.remover.toggle( to != this.params.removed );
+               }
+       });
+
+       api.ImageControl = api.UploadControl.extend({
+               ready: function() {
+                       var control = this,
+                               panels;
+
+                       this.uploader = {
+                               init: function( up ) {
+                                       var fallback, button;
+
+                                       if ( this.supports.dragdrop )
+                                               return;
+
+                                       // Maintain references while wrapping the fallback button.
+                                       fallback = control.container.find( '.upload-fallback' );
+                                       button   = fallback.children().detach();
+
+                                       this.browser.detach().empty().append( button );
+                                       fallback.append( this.browser ).show();
+                               }
+                       };
+
+                       api.UploadControl.prototype.ready.call( this );
+
+                       this.thumbnail    = this.container.find('.preview-thumbnail img');
+                       this.thumbnailSrc = $.proxy( this.thumbnailSrc, this );
+                       this.setting.bind( this.thumbnailSrc );
+
+                       this.library = this.container.find('.library');
+
+                       // Generate tab objects
+                       this.tabs = {};
+                       panels    = this.library.find('.library-content');
+
+                       this.library.children('ul').children('li').each( function() {
+                               var link  = $(this),
+                                       id    = link.data('customizeTab'),
+                                       panel = panels.filter('[data-customize-tab="' + id + '"]');
+
+                               control.tabs[ id ] = {
+                                       both:  link.add( panel ),
+                                       link:  link,
+                                       panel: panel
+                               };
+                       });
+
+                       // Bind tab switch events
+                       this.library.children('ul').on( 'click keydown', 'li', function( event ) {
+                               if ( event.type === 'keydown' &&  13 !== event.which ) // enter
+                                       return;
+
+                               var id  = $(this).data('customizeTab'),
+                                       tab = control.tabs[ id ];
+
+                               event.preventDefault();
+
+                               if ( tab.link.hasClass('library-selected') )
+                                       return;
+
+                               control.selected.both.removeClass('library-selected');
+                               control.selected = tab;
+                               control.selected.both.addClass('library-selected');
+                       });
+
+                       // Bind events to switch image urls.
+                       this.library.on( 'click keydown', 'a', function( event ) {
+                               if ( event.type === 'keydown' && 13 !== event.which ) // enter
+                                       return;
+
+                               var value = $(this).data('customizeImageValue');
+
+                               if ( value ) {
+                                       control.setting.set( value );
+                                       event.preventDefault();
+                               }
+                       });
+
+                       if ( this.tabs.uploaded ) {
+                               this.tabs.uploaded.target = this.library.find('.uploaded-target');
+                               if ( ! this.tabs.uploaded.panel.find('.thumbnail').length )
+                                       this.tabs.uploaded.both.addClass('hidden');
+                       }
+
+                       // Select a tab
+                       panels.each( function() {
+                               var tab = control.tabs[ $(this).data('customizeTab') ];
+
+                               // Select the first visible tab.
+                               if ( ! tab.link.hasClass('hidden') ) {
+                                       control.selected = tab;
+                                       tab.both.addClass('library-selected');
+                                       return false;
+                               }
+                       });
+
+                       this.dropdownInit();
+               },
+               success: function( attachment ) {
+                       api.UploadControl.prototype.success.call( this, attachment );
+
+                       // Add the uploaded image to the uploaded tab.
+                       if ( this.tabs.uploaded && this.tabs.uploaded.target.length ) {
+                               this.tabs.uploaded.both.removeClass('hidden');
+
+                               // @todo: Do NOT store this on the attachment model. That is bad.
+                               attachment.element = $( '<a href="#" class="thumbnail"></a>' )
+                                       .data( 'customizeImageValue', attachment.get('url') )
+                                       .append( '<img src="' +  attachment.get('url')+ '" />' )
+                                       .appendTo( this.tabs.uploaded.target );
+                       }
+               },
+               thumbnailSrc: function( to ) {
+                       if ( /^(https?:)?\/\//.test( to ) )
+                               this.thumbnail.prop( 'src', to ).show();
+                       else
+                               this.thumbnail.hide();
+               }
+       });
+
+       // Change objects contained within the main customize object to Settings.
+       api.defaultConstructor = api.Setting;
+
+       // Create the collection of Control objects.
+       api.control = new api.Values({ defaultConstructor: api.Control });
+
+       api.PreviewFrame = api.Messenger.extend({
+               sensitivity: 2000,
+
+               initialize: function( params, options ) {
+                       var deferred = $.Deferred(),
+                               self     = this;
+
+                       // This is the promise object.
+                       deferred.promise( this );
+
+                       this.container = params.container;
+                       this.signature = params.signature;
+
+                       $.extend( params, { channel: api.PreviewFrame.uuid() });
+
+                       api.Messenger.prototype.initialize.call( this, params, options );
+
+                       this.add( 'previewUrl', params.previewUrl );
+
+                       this.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() });
+
+                       this.run( deferred );
+               },
+
+               run: function( deferred ) {
+                       var self   = this,
+                               loaded = false,
+                               ready  = false;
+
+                       if ( this._ready )
+                               this.unbind( 'ready', this._ready );
+
+                       this._ready = function() {
+                               ready = true;
+
+                               if ( loaded )
+                                       deferred.resolveWith( self );
+                       };
+
+                       this.bind( 'ready', this._ready );
+
+                       this.request = $.ajax( this.previewUrl(), {
+                               type: 'POST',
+                               data: this.query,
+                               xhrFields: {
+                                       withCredentials: true
+                               }
+                       } );
+
+                       this.request.fail( function() {
+                               deferred.rejectWith( self, [ 'request failure' ] );
+                       });
+
+                       this.request.done( function( response ) {
+                               var location = self.request.getResponseHeader('Location'),
+                                       signature = self.signature,
+                                       index;
+
+                               // Check if the location response header differs from the current URL.
+                               // If so, the request was redirected; try loading the requested page.
+                               if ( location && location != self.previewUrl() ) {
+                                       deferred.rejectWith( self, [ 'redirect', location ] );
+                                       return;
+                               }
+
+                               // Check if the user is not logged in.
+                               if ( '0' === response ) {
+                                       self.login( deferred );
+                                       return;
+                               }
+
+                               // Check for cheaters.
+                               if ( '-1' === response ) {
+                                       deferred.rejectWith( self, [ 'cheatin' ] );
+                                       return;
+                               }
+
+                               // Check for a signature in the request.
+                               index = response.lastIndexOf( signature );
+                               if ( -1 === index || index < response.lastIndexOf('</html>') ) {
+                                       deferred.rejectWith( self, [ 'unsigned' ] );
+                                       return;
+                               }
+
+                               // Strip the signature from the request.
+                               response = response.slice( 0, index ) + response.slice( index + signature.length );
+
+                               // Create the iframe and inject the html content.
+                               self.iframe = $('<iframe />').appendTo( self.container );
+
+                               // Bind load event after the iframe has been added to the page;
+                               // otherwise it will fire when injected into the DOM.
+                               self.iframe.one( 'load', function() {
+                                       loaded = true;
+
+                                       if ( ready ) {
+                                               deferred.resolveWith( self );
+                                       } else {
+                                               setTimeout( function() {
+                                                       deferred.rejectWith( self, [ 'ready timeout' ] );
+                                               }, self.sensitivity );
+                                       }
+                               });
+
+                               self.targetWindow( self.iframe[0].contentWindow );
+
+                               self.targetWindow().document.open();
+                               self.targetWindow().document.write( response );
+                               self.targetWindow().document.close();
+                       });
+               },
+
+               login: function( deferred ) {
+                       var self = this,
+                               reject;
+
+                       reject = function() {
+                               deferred.rejectWith( self, [ 'logged out' ] );
+                       };
+
+                       if ( this.triedLogin )
+                               return reject();
+
+                       // Check if we have an admin cookie.
+                       $.get( api.settings.url.ajax, {
+                               action: 'logged-in'
+                       }).fail( reject ).done( function( response ) {
+                               var iframe;
+
+                               if ( '1' !== response )
+                                       reject();
+
+                               iframe = $('<iframe src="' + self.previewUrl() + '" />').hide();
+                               iframe.appendTo( self.container );
+                               iframe.load( function() {
+                                       self.triedLogin = true;
+
+                                       iframe.remove();
+                                       self.run( deferred );
+                               });
+                       });
+               },
+
+               destroy: function() {
+                       api.Messenger.prototype.destroy.call( this );
+                       this.request.abort();
+
+                       if ( this.iframe )
+                               this.iframe.remove();
+
+                       delete this.request;
+                       delete this.iframe;
+                       delete this.targetWindow;
+               }
+       });
+
+       (function(){
+               var uuid = 0;
+               api.PreviewFrame.uuid = function() {
+                       return 'preview-' + uuid++;
+               };
+       }());
+
+       api.Previewer = api.Messenger.extend({
+               refreshBuffer: 250,
+
+               /**
+                * Requires params:
+                *  - container  - a selector or jQuery element
+                *  - previewUrl - the URL of preview frame
+                */
+               initialize: function( params, options ) {
+                       var self = this,
+                               rscheme = /^https?/,
+                               url;
+
+                       $.extend( this, options || {} );
+
+                       /*
+                        * Wrap this.refresh to prevent it from hammering the servers:
+                        *
+                        * If refresh is called once and no other refresh requests are
+                        * loading, trigger the request immediately.
+                        *
+                        * If refresh is called while another refresh request is loading,
+                        * debounce the refresh requests:
+                        * 1. Stop the loading request (as it is instantly outdated).
+                        * 2. Trigger the new request once refresh hasn't been called for
+                        *    self.refreshBuffer milliseconds.
+                        */
+                       this.refresh = (function( self ) {
+                               var refresh  = self.refresh,
+                                       callback = function() {
+                                               timeout = null;
+                                               refresh.call( self );
+                                       },
+                                       timeout;
+
+                               return function() {
+                                       if ( typeof timeout !== 'number' ) {
+                                               if ( self.loading ) {
+                                                       self.abort();
+                                               } else {
+                                                       return callback();
+                                               }
+                                       }
+
+                                       clearTimeout( timeout );
+                                       timeout = setTimeout( callback, self.refreshBuffer );
+                               };
+                       })( this );
+
+                       this.container   = api.ensure( params.container );
+                       this.allowedUrls = params.allowedUrls;
+                       this.signature   = params.signature;
+
+                       params.url = window.location.href;
+
+                       api.Messenger.prototype.initialize.call( this, params );
+
+                       this.add( 'scheme', this.origin() ).link( this.origin ).setter( function( to ) {
+                               var match = to.match( rscheme );
+                               return match ? match[0] : '';
+                       });
+
+                       // Limit the URL to internal, front-end links.
+                       //
+                       // If the frontend and the admin are served from the same domain, load the
+                       // preview over ssl if the customizer is being loaded over ssl. This avoids
+                       // insecure content warnings. This is not attempted if the admin and frontend
+                       // are on different domains to avoid the case where the frontend doesn't have
+                       // ssl certs.
+
+                       this.add( 'previewUrl', params.previewUrl ).setter( function( to ) {
+                               var result;
+
+                               // Check for URLs that include "/wp-admin/" or end in "/wp-admin".
+                               // Strip hashes and query strings before testing.
+                               if ( /\/wp-admin(\/|$)/.test( to.replace(/[#?].*$/, '') ) )
+                                       return null;
+
+                               // Attempt to match the URL to the control frame's scheme
+                               // and check if it's allowed. If not, try the original URL.
+                               $.each([ to.replace( rscheme, self.scheme() ), to ], function( i, url ) {
+                                       $.each( self.allowedUrls, function( i, allowed ) {
+                                               if ( 0 === url.indexOf( allowed ) ) {
+                                                       result = url;
+                                                       return false;
+                                               }
+                                       });
+                                       if ( result )
+                                               return false;
+                               });
+
+                               // If we found a matching result, return it. If not, bail.
+                               return result ? result : null;
+                       });
+
+                       // Refresh the preview when the URL is changed (but not yet).
+                       this.previewUrl.bind( this.refresh );
+
+                       this.scroll = 0;
+                       this.bind( 'scroll', function( distance ) {
+                               this.scroll = distance;
+                       });
+
+                       // Update the URL when the iframe sends a URL message.
+                       this.bind( 'url', this.previewUrl );
+               },
+
+               query: function() {},
+
+               abort: function() {
+                       if ( this.loading ) {
+                               this.loading.destroy();
+                               delete this.loading;
+                       }
+               },
+
+               refresh: function() {
+                       var self = this;
+
+                       this.abort();
+
+                       this.loading = new api.PreviewFrame({
+                               url:        this.url(),
+                               previewUrl: this.previewUrl(),
+                               query:      this.query() || {},
+                               container:  this.container,
+                               signature:  this.signature
+                       });
+
+                       this.loading.done( function() {
+                               // 'this' is the loading frame
+                               this.bind( 'synced', function() {
+                                       if ( self.preview )
+                                               self.preview.destroy();
+                                       self.preview = this;
+                                       delete self.loading;
+
+                                       self.targetWindow( this.targetWindow() );
+                                       self.channel( this.channel() );
+
+                                       self.send( 'active' );
+                               });
+
+                               this.send( 'sync', {
+                                       scroll:   self.scroll,
+                                       settings: api.get()
+                               });
+                       });
+
+                       this.loading.fail( function( reason, location ) {
+                               if ( 'redirect' === reason && location )
+                                       self.previewUrl( location );
+
+                               if ( 'logged out' === reason ) {
+                                       if ( self.preview ) {
+                                               self.preview.destroy();
+                                               delete self.preview;
+                                       }
+
+                                       self.login().done( self.refresh );
+                               }
+
+                               if ( 'cheatin' === reason )
+                                       self.cheatin();
+                       });
+               },
+
+               login: function() {
+                       var previewer = this,
+                               deferred, messenger, iframe;
+
+                       if ( this._login )
+                               return this._login;
+
+                       deferred = $.Deferred();
+                       this._login = deferred.promise();
+
+                       messenger = new api.Messenger({
+                               channel: 'login',
+                               url:     api.settings.url.login
+                       });
+
+                       iframe = $('<iframe src="' + api.settings.url.login + '" />').appendTo( this.container );
+
+                       messenger.targetWindow( iframe[0].contentWindow );
+
+                       messenger.bind( 'login', function() {
+                               iframe.remove();
+                               messenger.destroy();
+                               delete previewer._login;
+                               deferred.resolve();
+                       });
+
+                       return this._login;
+               },
+
+               cheatin: function() {
+                       $( document.body ).empty().addClass('cheatin').append( '<p>' + api.l10n.cheatin + '</p>' );
+               }
+       });
+
+       /* =====================================================================
+        * Ready.
+        * ===================================================================== */
+
+       api.controlConstructor = {
+               color:  api.ColorControl,
+               upload: api.UploadControl,
+               image:  api.ImageControl
+       };
+
+       $( function() {
+               api.settings = window._wpCustomizeSettings;
+               api.l10n = window._wpCustomizeControlsL10n;
+
+               // Check if we can run the customizer.
+               if ( ! api.settings )
+                       return;
+
+               // Redirect to the fallback preview if any incompatibilities are found.
+               if ( ! $.support.postMessage || ( ! $.support.cors && api.settings.isCrossDomain ) )
+                       return window.location = api.settings.url.fallback;
+
+               var body = $( document.body ),
+                       overlay = body.children('.wp-full-overlay'),
+                       query, previewer, parent;
+
+               // Prevent the form from saving when enter is pressed.
+               $('#customize-controls').on( 'keydown', function( e ) {
+                       if ( $( e.target ).is('textarea') )
+                               return;
+
+                       if ( 13 === e.which ) // Enter
+                               e.preventDefault();
+               });
+
+               // Initialize Previewer
+               previewer = new api.Previewer({
+                       container:   '#customize-preview',
+                       form:        '#customize-controls',
+                       previewUrl:  api.settings.url.preview,
+                       allowedUrls: api.settings.url.allowed,
+                       signature:   'WP_CUSTOMIZER_SIGNATURE'
+               }, {
+
+                       nonce: api.settings.nonce,
+
+                       query: function() {
+                               return {
+                                       wp_customize: 'on',
+                                       theme:        api.settings.theme.stylesheet,
+                                       customized:   JSON.stringify( api.get() ),
+                                       nonce:        this.nonce.preview
+                               };
+                       },
+
+                       save: function() {
+                               var self  = this,
+                                       query = $.extend( this.query(), {
+                                               action: 'customize_save',
+                                               nonce:  this.nonce.save
+                                       }),
+                                       request = $.post( api.settings.url.ajax, query );
+
+                               api.trigger( 'save', request );
+
+                               body.addClass('saving');
+
+                               request.always( function() {
+                                       body.removeClass('saving');
+                               });
+
+                               request.done( function( response ) {
+                                       // Check if the user is logged out.
+                                       if ( '0' === response ) {
+                                               self.preview.iframe.hide();
+                                               self.login().done( function() {
+                                                       self.save();
+                                                       self.preview.iframe.show();
+                                               });
+                                               return;
+                                       }
+
+                                       // Check for cheaters.
+                                       if ( '-1' === response ) {
+                                               self.cheatin();
+                                               return;
+                                       }
+
+                                       api.trigger( 'saved' );
+                               });
+                       }
+               });
+
+               // Refresh the nonces if the preview sends updated nonces over.
+               previewer.bind( 'nonce', function( nonce ) {
+                       $.extend( this.nonce, nonce );
+               });
+
+               $.each( api.settings.settings, function( id, data ) {
+                       api.create( id, id, data.value, {
+                               transport: data.transport,
+                               previewer: previewer
+                       } );
+               });
+
+               $.each( api.settings.controls, function( id, data ) {
+                       var constructor = api.controlConstructor[ data.type ] || api.Control,
+                               control;
+
+                       control = api.control.add( id, new constructor( id, {
+                               params: data,
+                               previewer: previewer
+                       } ) );
+               });
+
+               // Check if preview url is valid and load the preview frame.
+               if ( previewer.previewUrl() )
+                       previewer.refresh();
+               else
+                       previewer.previewUrl( api.settings.url.home );
+
+               // Save and activated states
+               (function() {
+                       var state = new api.Values(),
+                               saved = state.create('saved'),
+                               activated = state.create('activated');
+
+                       state.bind( 'change', function() {
+                               var save = $('#save'),
+                                       back = $('.back');
+
+                               if ( ! activated() ) {
+                                       save.val( api.l10n.activate ).prop( 'disabled', false );
+                                       back.text( api.l10n.cancel );
+
+                               } else if ( saved() ) {
+                                       save.val( api.l10n.saved ).prop( 'disabled', true );
+                                       back.text( api.l10n.close );
+
+                               } else {
+                                       save.val( api.l10n.save ).prop( 'disabled', false );
+                                       back.text( api.l10n.cancel );
+                               }
+                       });
+
+                       // Set default states.
+                       saved( true );
+                       activated( api.settings.theme.active );
+
+                       api.bind( 'change', function() {
+                               state('saved').set( false );
+                       });
+
+                       api.bind( 'saved', function() {
+                               state('saved').set( true );
+                               state('activated').set( true );
+                       });
+
+                       activated.bind( function( to ) {
+                               if ( to )
+                                       api.trigger( 'activated' );
+                       });
+
+                       // Expose states to the API.
+                       api.state = state;
+               }());
+
+               // Temporary accordion code.
+               $('.customize-section-title').bind('click keydown', function( event ) {
+
+                       if ( event.type === 'keydown' &&  13 !== event.which ) // enter
+                                       return;
+
+                       var clicked = $( this ).parents( '.customize-section' );
+
+                       if ( clicked.hasClass('cannot-expand') )
+                               return;
+
+                       // Scroll up if on #customize-section-title_tagline
+                       if ('customize-section-title_tagline' === clicked.attr('id'))
+                               $('.wp-full-overlay-sidebar-content').scrollTop(0);
+
+                       $( '.customize-section' ).not( clicked ).removeClass( 'open' );
+                       clicked.toggleClass( 'open' );
+                       event.preventDefault();
+               });
+
+               // Button bindings.
+               $('#save').click( function( event ) {
+                       previewer.save();
+                       event.preventDefault();
+               }).keydown( function( event ) {
+                       if ( 9 === event.which ) // tab
+                               return;
+                       if ( 13 === event.which ) // enter
+                               previewer.save();
+                       event.preventDefault();
+               });
+
+               $('.back').keydown( function( event ) {
+                       if ( 9 === event.which ) // tab
+                               return;
+                       if ( 13 === event.which ) // enter
+                               parent.send( 'close' );
+                       event.preventDefault();
+               });
+
+               $('.collapse-sidebar').on( 'click keydown', function( event ) {
+                       if ( event.type === 'keydown' &&  13 !== event.which ) // enter
+                               return;
+
+                       overlay.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
+                       event.preventDefault();
+               });
+
+               // Create a potential postMessage connection with the parent frame.
+               parent = new api.Messenger({
+                       url: api.settings.url.parent,
+                       channel: 'loader'
+               });
+
+               // If we receive a 'back' event, we're inside an iframe.
+               // Send any clicks to the 'Return' link to the parent page.
+               parent.bind( 'back', function() {
+                       $('.back').on( 'click.back', function( event ) {
+                               event.preventDefault();
+                               parent.send( 'close' );
+                       });
+               });
+
+               // Pass events through to the parent.
+               api.bind( 'saved', function() {
+                       parent.send( 'saved' );
+               });
+
+               // When activated, let the loader handle redirecting the page.
+               // If no loader exists, redirect the page ourselves (if a url exists).
+               api.bind( 'activated', function() {
+                       if ( parent.targetWindow() )
+                               parent.send( 'activated', api.settings.url.activated );
+                       else if ( api.settings.url.activated )
+                               window.location = api.settings.url.activated;
+               });
+
+               // Initialize the connection with the parent frame.
+               parent.send( 'ready' );
+
+               // Control visibility for default controls
+               $.each({
+                       'background_image': {
+                               controls: [ 'background_repeat', 'background_position_x', 'background_attachment' ],
+                               callback: function( to ) { return !! to }
+                       },
+                       'show_on_front': {
+                               controls: [ 'page_on_front', 'page_for_posts' ],
+                               callback: function( to ) { return 'page' === to }
+                       },
+                       'header_textcolor': {
+                               controls: [ 'header_textcolor' ],
+                               callback: function( to ) { return 'blank' !== to }
+                       }
+               }, function( settingId, o ) {
+                       api( settingId, function( setting ) {
+                               $.each( o.controls, function( i, controlId ) {
+                                       api.control( controlId, function( control ) {
+                                               var visibility = function( to ) {
+                                                       control.container.toggle( o.callback( to ) );
+                                               };
+
+                                               visibility( setting.get() );
+                                               setting.bind( visibility );
+                                       });
+                               });
+                       });
+               });
+
+               // Juggle the two controls that use header_textcolor
+               api.control( 'display_header_text', function( control ) {
+                       var last = '';
+
+                       control.elements[0].unsync( api( 'header_textcolor' ) );
+
+                       control.element = new api.Element( control.container.find('input') );
+                       control.element.set( 'blank' !== control.setting() );
+
+                       control.element.bind( function( to ) {
+                               if ( ! to )
+                                       last = api( 'header_textcolor' ).get();
+
+                               control.setting.set( to ? last : 'blank' );
+                       });
+
+                       control.setting.bind( function( to ) {
+                               control.element.set( 'blank' !== to );
+                       });
+               });
+
+               // Handle header image data
+               api.control( 'header_image', function( control ) {
+                       control.setting.bind( function( to ) {
+                               if ( to === control.params.removed )
+                                       control.settings.data.set( false );
+                       });
+
+                       control.library.on( 'click', 'a', function( event ) {
+                               control.settings.data.set( $(this).data('customizeHeaderImageData') );
+                       });
+
+                       control.uploader.success = function( attachment ) {
+                               var data;
+
+                               api.ImageControl.prototype.success.call( control, attachment );
+
+                               data = {
+                                       attachment_id: attachment.get('id'),
+                                       url:           attachment.get('url'),
+                                       thumbnail_url: attachment.get('url'),
+                                       height:        attachment.get('height'),
+                                       width:         attachment.get('width')
+                               };
+
+                               attachment.element.data( 'customizeHeaderImageData', data );
+                               control.settings.data.set( data );
+                       };
+               });
+
+               api.trigger( 'ready' );
+
+               // Make sure left column gets focus
+               var topFocus = $('.back');
+               topFocus.focus();
+               setTimeout(function () {
+                       topFocus.focus();
+               }, 200);
+
+       });
+
+})( wp, jQuery );
diff --git a/wp-admin/js/customize-controls.min.js b/wp-admin/js/customize-controls.min.js
new file mode 100644 (file)
index 0000000..b3543ee
--- /dev/null
@@ -0,0 +1 @@
+(function(a,c){var b=wp.customize;b.Setting=b.Value.extend({initialize:function(g,f,d){var e;b.Value.prototype.initialize.call(this,f,d);this.id=g;this.transport=this.transport||"refresh";this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}});b.Control=b.Class.extend({initialize:function(i,e){var g=this,d,h,f;this.params={};c.extend(this,e||{});this.id=i;this.selector="#customize-control-"+i.replace("]","").replace("[","-");this.container=c(this.selector);f=c.map(this.params.settings,function(j){return j});b.apply(b,f.concat(function(){var j;g.settings={};for(j in g.params.settings){g.settings[j]=b(g.params.settings[j])}g.setting=g.settings["default"]||null;g.ready()}));g.elements=[];d=this.container.find("[data-customize-setting-link]");h={};d.each(function(){var k=c(this),j;if(k.is(":radio")){j=k.prop("name");if(h[j]){return}h[j]=true;k=d.filter('[name="'+j+'"]')}b(k.data("customizeSettingLink"),function(m){var l=new b.Element(k);g.elements.push(l);l.sync(m);l.set(m())})})},ready:function(){},dropdownInit:function(){var f=this,e=this.container.find(".dropdown-status"),g=this.params,h=function(i){if(typeof i==="string"&&g.statuses&&g.statuses[i]){e.html(g.statuses[i]).show()}else{e.hide()}};var d=false;this.container.on("click keydown",".dropdown",function(i){if(i.type==="keydown"&&13!==i.which){return}i.preventDefault();if(!d){f.container.toggleClass("open")}if(f.container.hasClass("open")){f.container.parent().parent().find("li.library-selected").focus()}d=true;setTimeout(function(){d=false},400)});this.setting.bind(h);h(this.setting())}});b.ColorControl=b.Control.extend({ready:function(){var e=this,d=this.container.find(".color-picker-hex");d.val(e.setting()).wpColorPicker({change:function(g,f){e.setting.set(d.wpColorPicker("color"))},clear:function(){e.setting.set(false)}})}});b.UploadControl=b.Control.extend({ready:function(){var d=this;this.params.removed=this.params.removed||"";this.success=c.proxy(this.success,this);this.uploader=c.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success,plupload:{},params:{}},this.uploader||{});if(d.params.extensions){d.uploader.plupload.filters=[{title:b.l10n.allowedFiles,extensions:d.params.extensions}]}if(d.params.context){d.uploader.params["post_data[context]"]=this.params.context}if(b.settings.theme.stylesheet){d.uploader.params["post_data[theme]"]=b.settings.theme.stylesheet}this.uploader=new wp.Uploader(this.uploader);this.remover=this.container.find(".remove");this.remover.on("click keydown",function(e){if(e.type==="keydown"&&13!==e.which){return}d.setting.set(d.params.removed);e.preventDefault()});this.removerVisibility=c.proxy(this.removerVisibility,this);this.setting.bind(this.removerVisibility);this.removerVisibility(this.setting.get())},success:function(d){this.setting.set(d.get("url"))},removerVisibility:function(d){this.remover.toggle(d!=this.params.removed)}});b.ImageControl=b.UploadControl.extend({ready:function(){var e=this,d;this.uploader={init:function(f){var h,g;if(this.supports.dragdrop){return}h=e.container.find(".upload-fallback");g=h.children().detach();this.browser.detach().empty().append(g);h.append(this.browser).show()}};b.UploadControl.prototype.ready.call(this);this.thumbnail=this.container.find(".preview-thumbnail img");this.thumbnailSrc=c.proxy(this.thumbnailSrc,this);this.setting.bind(this.thumbnailSrc);this.library=this.container.find(".library");this.tabs={};d=this.library.find(".library-content");this.library.children("ul").children("li").each(function(){var g=c(this),h=g.data("customizeTab"),f=d.filter('[data-customize-tab="'+h+'"]');e.tabs[h]={both:g.add(f),link:g,panel:f}});this.library.children("ul").on("click keydown","li",function(g){if(g.type==="keydown"&&13!==g.which){return}var h=c(this).data("customizeTab"),f=e.tabs[h];g.preventDefault();if(f.link.hasClass("library-selected")){return}e.selected.both.removeClass("library-selected");e.selected=f;e.selected.both.addClass("library-selected")});this.library.on("click keydown","a",function(f){if(f.type==="keydown"&&13!==f.which){return}var g=c(this).data("customizeImageValue");if(g){e.setting.set(g);f.preventDefault()}});if(this.tabs.uploaded){this.tabs.uploaded.target=this.library.find(".uploaded-target");if(!this.tabs.uploaded.panel.find(".thumbnail").length){this.tabs.uploaded.both.addClass("hidden")}}d.each(function(){var f=e.tabs[c(this).data("customizeTab")];if(!f.link.hasClass("hidden")){e.selected=f;f.both.addClass("library-selected");return false}});this.dropdownInit()},success:function(d){b.UploadControl.prototype.success.call(this,d);if(this.tabs.uploaded&&this.tabs.uploaded.target.length){this.tabs.uploaded.both.removeClass("hidden");d.element=c('<a href="#" class="thumbnail"></a>').data("customizeImageValue",d.get("url")).append('<img src="'+d.get("url")+'" />').appendTo(this.tabs.uploaded.target)}},thumbnailSrc:function(d){if(/^(https?:)?\/\//.test(d)){this.thumbnail.prop("src",d).show()}else{this.thumbnail.hide()}}});b.defaultConstructor=b.Setting;b.control=new b.Values({defaultConstructor:b.Control});b.PreviewFrame=b.Messenger.extend({sensitivity:2000,initialize:function(g,f){var e=c.Deferred(),d=this;e.promise(this);this.container=g.container;this.signature=g.signature;c.extend(g,{channel:b.PreviewFrame.uuid()});b.Messenger.prototype.initialize.call(this,g,f);this.add("previewUrl",g.previewUrl);this.query=c.extend(g.query||{},{customize_messenger_channel:this.channel()});this.run(e)},run:function(e){var d=this,f=false,g=false;if(this._ready){this.unbind("ready",this._ready)}this._ready=function(){g=true;if(f){e.resolveWith(d)}};this.bind("ready",this._ready);this.request=c.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:true}});this.request.fail(function(){e.rejectWith(d,["request failure"])});this.request.done(function(j){var i=d.request.getResponseHeader("Location"),h=d.signature,k;if(i&&i!=d.previewUrl()){e.rejectWith(d,["redirect",i]);return}if("0"===j){d.login(e);return}if("-1"===j){e.rejectWith(d,["cheatin"]);return}k=j.lastIndexOf(h);if(-1===k||k<j.lastIndexOf("</html>")){e.rejectWith(d,["unsigned"]);return}j=j.slice(0,k)+j.slice(k+h.length);d.iframe=c("<iframe />").appendTo(d.container);d.iframe.one("load",function(){f=true;if(g){e.resolveWith(d)}else{setTimeout(function(){e.rejectWith(d,["ready timeout"])},d.sensitivity)}});d.targetWindow(d.iframe[0].contentWindow);d.targetWindow().document.open();d.targetWindow().document.write(j);d.targetWindow().document.close()})},login:function(e){var d=this,f;f=function(){e.rejectWith(d,["logged out"])};if(this.triedLogin){return f()}c.get(b.settings.url.ajax,{action:"logged-in"}).fail(f).done(function(g){var h;if("1"!==g){f()}h=c('<iframe src="'+d.previewUrl()+'" />').hide();h.appendTo(d.container);h.load(function(){d.triedLogin=true;h.remove();d.run(e)})})},destroy:function(){b.Messenger.prototype.destroy.call(this);this.request.abort();if(this.iframe){this.iframe.remove()}delete this.request;delete this.iframe;delete this.targetWindow}});(function(){var d=0;b.PreviewFrame.uuid=function(){return"preview-"+d++}}());b.Previewer=b.Messenger.extend({refreshBuffer:250,initialize:function(h,f){var d=this,g=/^https?/,e;c.extend(this,f||{});this.refresh=(function(i){var j=i.refresh,l=function(){k=null;j.call(i)},k;return function(){if(typeof k!=="number"){if(i.loading){i.abort()}else{return l()}}clearTimeout(k);k=setTimeout(l,i.refreshBuffer)}})(this);this.container=b.ensure(h.container);this.allowedUrls=h.allowedUrls;this.signature=h.signature;h.url=window.location.href;b.Messenger.prototype.initialize.call(this,h);this.add("scheme",this.origin()).link(this.origin).setter(function(j){var i=j.match(g);return i?i[0]:""});this.add("previewUrl",h.previewUrl).setter(function(j){var i;if(/\/wp-admin(\/|$)/.test(j.replace(/[#?].*$/,""))){return null}c.each([j.replace(g,d.scheme()),j],function(l,k){c.each(d.allowedUrls,function(m,n){if(0===k.indexOf(n)){i=k;return false}});if(i){return false}});return i?i:null});this.previewUrl.bind(this.refresh);this.scroll=0;this.bind("scroll",function(i){this.scroll=i});this.bind("url",this.previewUrl)},query:function(){},abort:function(){if(this.loading){this.loading.destroy();delete this.loading}},refresh:function(){var d=this;this.abort();this.loading=new b.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature});this.loading.done(function(){this.bind("synced",function(){if(d.preview){d.preview.destroy()}d.preview=this;delete d.loading;d.targetWindow(this.targetWindow());d.channel(this.channel());d.send("active")});this.send("sync",{scroll:d.scroll,settings:b.get()})});this.loading.fail(function(f,e){if("redirect"===f&&e){d.previewUrl(e)}if("logged out"===f){if(d.preview){d.preview.destroy();delete d.preview}d.login().done(d.refresh)}if("cheatin"===f){d.cheatin()}})},login:function(){var g=this,d,f,e;if(this._login){return this._login}d=c.Deferred();this._login=d.promise();f=new b.Messenger({channel:"login",url:b.settings.url.login});e=c('<iframe src="'+b.settings.url.login+'" />').appendTo(this.container);f.targetWindow(e[0].contentWindow);f.bind("login",function(){e.remove();f.destroy();delete g._login;d.resolve()});return this._login},cheatin:function(){c(document.body).empty().addClass("cheatin").append("<p>"+b.l10n.cheatin+"</p>")}});b.controlConstructor={color:b.ColorControl,upload:b.UploadControl,image:b.ImageControl};c(function(){b.settings=window._wpCustomizeSettings;b.l10n=window._wpCustomizeControlsL10n;if(!b.settings){return}if(!c.support.postMessage||(!c.support.cors&&b.settings.isCrossDomain)){return window.location=b.settings.url.fallback}var d=c(document.body),f=d.children(".wp-full-overlay"),h,i,g;c("#customize-controls").on("keydown",function(j){if(c(j.target).is("textarea")){return}if(13===j.which){j.preventDefault()}});i=new b.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:b.settings.url.preview,allowedUrls:b.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:b.settings.nonce,query:function(){return{wp_customize:"on",theme:b.settings.theme.stylesheet,customized:JSON.stringify(b.get()),nonce:this.nonce.preview}},save:function(){var j=this,l=c.extend(this.query(),{action:"customize_save",nonce:this.nonce.save}),k=c.post(b.settings.url.ajax,l);b.trigger("save",k);d.addClass("saving");k.always(function(){d.removeClass("saving")});k.done(function(m){if("0"===m){j.preview.iframe.hide();j.login().done(function(){j.save();j.preview.iframe.show()});return}if("-1"===m){j.cheatin();return}b.trigger("saved")})}});i.bind("nonce",function(j){c.extend(this.nonce,j)});c.each(b.settings.settings,function(k,j){b.create(k,k,j.value,{transport:j.transport,previewer:i})});c.each(b.settings.controls,function(m,k){var j=b.controlConstructor[k.type]||b.Control,l;l=b.control.add(m,new j(m,{params:k,previewer:i}))});if(i.previewUrl()){i.refresh()}else{i.previewUrl(b.settings.url.home)}(function(){var l=new b.Values(),k=l.create("saved"),j=l.create("activated");l.bind("change",function(){var n=c("#save"),m=c(".back");if(!j()){n.val(b.l10n.activate).prop("disabled",false);m.text(b.l10n.cancel)}else{if(k()){n.val(b.l10n.saved).prop("disabled",true);m.text(b.l10n.close)}else{n.val(b.l10n.save).prop("disabled",false);m.text(b.l10n.cancel)}}});k(true);j(b.settings.theme.active);b.bind("change",function(){l("saved").set(false)});b.bind("saved",function(){l("saved").set(true);l("activated").set(true)});j.bind(function(m){if(m){b.trigger("activated")}});b.state=l}());c(".customize-section-title").bind("click keydown",function(k){if(k.type==="keydown"&&13!==k.which){return}var j=c(this).parents(".customize-section");if(j.hasClass("cannot-expand")){return}if("customize-section-title_tagline"===j.attr("id")){c(".wp-full-overlay-sidebar-content").scrollTop(0)}c(".customize-section").not(j).removeClass("open");j.toggleClass("open");k.preventDefault()});c("#save").click(function(j){i.save();j.preventDefault()}).keydown(function(j){if(9===j.which){return}if(13===j.which){i.save()}j.preventDefault()});c(".back").keydown(function(j){if(9===j.which){return}if(13===j.which){g.send("close")}j.preventDefault()});c(".collapse-sidebar").on("click keydown",function(j){if(j.type==="keydown"&&13!==j.which){return}f.toggleClass("collapsed").toggleClass("expanded");j.preventDefault()});g=new b.Messenger({url:b.settings.url.parent,channel:"loader"});g.bind("back",function(){c(".back").on("click.back",function(j){j.preventDefault();g.send("close")})});b.bind("saved",function(){g.send("saved")});b.bind("activated",function(){if(g.targetWindow()){g.send("activated",b.settings.url.activated)}else{if(b.settings.url.activated){window.location=b.settings.url.activated}}});g.send("ready");c.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(j){return !!j}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(j){return"page"===j}},header_textcolor:{controls:["header_textcolor"],callback:function(j){return"blank"!==j}}},function(j,k){b(j,function(l){c.each(k.controls,function(m,n){b.control(n,function(p){var o=function(q){p.container.toggle(k.callback(q))};o(l.get());l.bind(o)})})})});b.control("display_header_text",function(k){var j="";k.elements[0].unsync(b("header_textcolor"));k.element=new b.Element(k.container.find("input"));k.element.set("blank"!==k.setting());k.element.bind(function(l){if(!l){j=b("header_textcolor").get()}k.setting.set(l?j:"blank")});k.setting.bind(function(l){k.element.set("blank"!==l)})});b.control("header_image",function(j){j.setting.bind(function(k){if(k===j.params.removed){j.settings.data.set(false)}});j.library.on("click","a",function(k){j.settings.data.set(c(this).data("customizeHeaderImageData"))});j.uploader.success=function(l){var k;b.ImageControl.prototype.success.call(j,l);k={attachment_id:l.get("id"),url:l.get("url"),thumbnail_url:l.get("url"),height:l.get("height"),width:l.get("width")};l.element.data("customizeHeaderImageData",k);j.settings.data.set(k)}});b.trigger("ready");var e=c(".back");e.focus();setTimeout(function(){e.focus()},200)})})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/dashboard.dev.js b/wp-admin/js/dashboard.dev.js
deleted file mode 100644 (file)
index 6709ba7..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad;
-
-jQuery(document).ready( function($) {
-       /* Dashboard Welcome Panel */
-       var welcomePanel = $('#welcome-panel'),
-               welcomePanelHide = $('#wp_welcome_panel-hide'),
-               updateWelcomePanel = function( visible ) {
-                       $.post( ajaxurl, {
-                               action: 'update-welcome-panel',
-                               visible: visible,
-                               welcomepanelnonce: $('#welcomepanelnonce').val()
-                       });
-               };
-
-       if ( welcomePanel.hasClass('hidden') && welcomePanelHide.prop('checked') )
-               welcomePanel.removeClass('hidden');
-
-       $('.welcome-panel-close, .welcome-panel-dismiss a', welcomePanel).click( function(e) {
-               e.preventDefault();
-               welcomePanel.addClass('hidden');
-               updateWelcomePanel( 0 );
-               $('#wp_welcome_panel-hide').prop('checked', false);
-       });
-
-       welcomePanelHide.click( function() {
-               welcomePanel.toggleClass('hidden', ! this.checked );
-               updateWelcomePanel( this.checked ? 1 : 0 );
-       });
-
-       // These widgets are sometimes populated via ajax
-       ajaxWidgets = [
-               'dashboard_incoming_links',
-               'dashboard_primary',
-               'dashboard_secondary',
-               'dashboard_plugins'
-       ];
-
-       ajaxPopulateWidgets = function(el) {
-               function show(i, id) {
-                       var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading');
-                       if ( e.length ) {
-                               p = e.parent();
-                               setTimeout( function(){
-                                       p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id, '', function() {
-                                               p.hide().slideDown('normal', function(){
-                                                       $(this).css('display', '');
-                                               });
-                                       });
-                               }, i * 500 );
-                       }
-               }
-
-               if ( el ) {
-                       el = el.toString();
-                       if ( $.inArray(el, ajaxWidgets) != -1 )
-                               show(0, el);
-               } else {
-                       $.each( ajaxWidgets, show );
-               }
-       };
-       ajaxPopulateWidgets();
-
-       postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } );
-
-       /* QuickPress */
-       quickPressLoad = function() {
-               var act = $('#quickpost-action'), t;
-               t = $('#quick-press').submit( function() {
-                       $('#dashboard_quick_press #publishing-action img.waiting').css('visibility', 'visible');
-                       $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true);
-
-                       if ( 'post' == act.val() ) {
-                               act.val( 'post-quickpress-publish' );
-                       }
-
-                       $('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() {
-                               $('#dashboard_quick_press #publishing-action img.waiting').css('visibility', 'hidden');
-                               $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', false);
-                               $('#dashboard_quick_press ul').next('p').remove();
-                               $('#dashboard_quick_press ul').find('li').each( function() {
-                                       $('#dashboard_recent_drafts ul').prepend( this );
-                               } ).end().remove();
-                               quickPressLoad();
-                       } );
-                       return false;
-               } );
-
-               $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
-
-       };
-       quickPressLoad();
-
-} );
index c44eed79d1a98f2fe65c5b1dd9deb86827624089..50a17f85eb375ec14135ddaf334f86342f434616 100644 (file)
@@ -1 +1,117 @@
-var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(c){var d=c("#welcome-panel"),a=c("#wp_welcome_panel-hide"),b=function(e){c.post(ajaxurl,{action:"update-welcome-panel",visible:e,welcomepanelnonce:c("#welcomepanelnonce").val()})};if(d.hasClass("hidden")&&a.prop("checked")){d.removeClass("hidden")}c(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(f){f.preventDefault();d.addClass("hidden");b(0);c("#wp_welcome_panel-hide").prop("checked",false)});a.click(function(){d.toggleClass("hidden",!this.checked);b(this.checked?1:0)});ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(f){function e(g,k){var j,h=c("#"+k+" div.inside:visible").find(".widget-loading");if(h.length){j=h.parent();setTimeout(function(){j.load(ajaxurl+"?action=dashboard-widgets&widget="+k,"",function(){j.hide().slideDown("normal",function(){c(this).css("display","")})})},g*500)}}if(f){f=f.toString();if(c.inArray(f,ajaxWidgets)!=-1){e(0,f)}}else{c.each(ajaxWidgets,e)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var e=c("#quickpost-action"),f;f=c("#quick-press").submit(function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==e.val()){e.val("post-quickpress-publish")}c("#dashboard_quick_press div.inside").load(f.attr("action"),f.serializeArray(),function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);c("#dashboard_quick_press ul").next("p").remove();c("#dashboard_quick_press ul").find("li").each(function(){c("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});c("#publish").click(function(){e.val("post-quickpress-publish")})};quickPressLoad()});
\ No newline at end of file
+var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad;
+
+jQuery(document).ready( function($) {
+       /* Dashboard Welcome Panel */
+       var welcomePanel = $('#welcome-panel'),
+               welcomePanelHide = $('#wp_welcome_panel-hide'),
+               updateWelcomePanel = function( visible ) {
+                       $.post( ajaxurl, {
+                               action: 'update-welcome-panel',
+                               visible: visible,
+                               welcomepanelnonce: $('#welcomepanelnonce').val()
+                       });
+               };
+
+       if ( welcomePanel.hasClass('hidden') && welcomePanelHide.prop('checked') )
+               welcomePanel.removeClass('hidden');
+
+       $('.welcome-panel-close, .welcome-panel-dismiss a', welcomePanel).click( function(e) {
+               e.preventDefault();
+               welcomePanel.addClass('hidden');
+               updateWelcomePanel( 0 );
+               $('#wp_welcome_panel-hide').prop('checked', false);
+       });
+
+       welcomePanelHide.click( function() {
+               welcomePanel.toggleClass('hidden', ! this.checked );
+               updateWelcomePanel( this.checked ? 1 : 0 );
+       });
+
+       // These widgets are sometimes populated via ajax
+       ajaxWidgets = [
+               'dashboard_incoming_links',
+               'dashboard_primary',
+               'dashboard_secondary',
+               'dashboard_plugins'
+       ];
+
+       ajaxPopulateWidgets = function(el) {
+               function show(i, id) {
+                       var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading');
+                       if ( e.length ) {
+                               p = e.parent();
+                               setTimeout( function(){
+                                       p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id, '', function() {
+                                               p.hide().slideDown('normal', function(){
+                                                       $(this).css('display', '');
+                                               });
+                                       });
+                               }, i * 500 );
+                       }
+               }
+
+               if ( el ) {
+                       el = el.toString();
+                       if ( $.inArray(el, ajaxWidgets) != -1 )
+                               show(0, el);
+               } else {
+                       $.each( ajaxWidgets, show );
+               }
+       };
+       ajaxPopulateWidgets();
+
+       postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } );
+
+       /* QuickPress */
+       quickPressLoad = function() {
+               var act = $('#quickpost-action'), t;
+               t = $('#quick-press').submit( function() {
+                       $('#dashboard_quick_press #publishing-action .spinner').show();
+                       $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true);
+
+                       if ( 'post' == act.val() ) {
+                               act.val( 'post-quickpress-publish' );
+                       }
+
+                       $('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() {
+                               $('#dashboard_quick_press #publishing-action .spinner').hide();
+                               $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', false);
+                               $('#dashboard_quick_press ul').next('p').remove();
+                               $('#dashboard_quick_press ul').find('li').each( function() {
+                                       $('#dashboard_recent_drafts ul').prepend( this );
+                               } ).end().remove();
+                               quickPressLoad();
+                       } );
+                       return false;
+               } );
+
+               $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
+
+               $('#title, #tags-input').each( function() {
+                       var input = $(this), prompt = $('#' + this.id + '-prompt-text');
+
+                       if ( '' === this.value )
+                               prompt.removeClass('screen-reader-text');
+
+                       prompt.click( function() {
+                               $(this).addClass('screen-reader-text');
+                               input.focus();
+                       });
+
+                       input.blur( function() {
+                               if ( '' === this.value )
+                                       prompt.removeClass('screen-reader-text');
+                       });
+
+                       input.focus( function() {
+                               prompt.addClass('screen-reader-text');
+                       });
+               });
+
+               $('#quick-press').on( 'click focusin', function() {
+                       wpActiveEditor = 'content';
+               });
+       };
+       quickPressLoad();
+
+} );
diff --git a/wp-admin/js/dashboard.min.js b/wp-admin/js/dashboard.min.js
new file mode 100644 (file)
index 0000000..7e793b9
--- /dev/null
@@ -0,0 +1 @@
+var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(c){var d=c("#welcome-panel"),a=c("#wp_welcome_panel-hide"),b=function(e){c.post(ajaxurl,{action:"update-welcome-panel",visible:e,welcomepanelnonce:c("#welcomepanelnonce").val()})};if(d.hasClass("hidden")&&a.prop("checked")){d.removeClass("hidden")}c(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(f){f.preventDefault();d.addClass("hidden");b(0);c("#wp_welcome_panel-hide").prop("checked",false)});a.click(function(){d.toggleClass("hidden",!this.checked);b(this.checked?1:0)});ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(f){function e(g,k){var j,h=c("#"+k+" div.inside:visible").find(".widget-loading");if(h.length){j=h.parent();setTimeout(function(){j.load(ajaxurl+"?action=dashboard-widgets&widget="+k,"",function(){j.hide().slideDown("normal",function(){c(this).css("display","")})})},g*500)}}if(f){f=f.toString();if(c.inArray(f,ajaxWidgets)!=-1){e(0,f)}}else{c.each(ajaxWidgets,e)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var e=c("#quickpost-action"),f;f=c("#quick-press").submit(function(){c("#dashboard_quick_press #publishing-action .spinner").show();c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==e.val()){e.val("post-quickpress-publish")}c("#dashboard_quick_press div.inside").load(f.attr("action"),f.serializeArray(),function(){c("#dashboard_quick_press #publishing-action .spinner").hide();c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);c("#dashboard_quick_press ul").next("p").remove();c("#dashboard_quick_press ul").find("li").each(function(){c("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});c("#publish").click(function(){e.val("post-quickpress-publish")});c("#title, #tags-input").each(function(){var h=c(this),g=c("#"+this.id+"-prompt-text");if(""===this.value){g.removeClass("screen-reader-text")}g.click(function(){c(this).addClass("screen-reader-text");h.focus()});h.blur(function(){if(""===this.value){g.removeClass("screen-reader-text")}});h.focus(function(){g.addClass("screen-reader-text")})});c("#quick-press").on("click focusin",function(){wpActiveEditor="content"})};quickPressLoad()});
\ No newline at end of file
diff --git a/wp-admin/js/edit-comments.dev.js b/wp-admin/js/edit-comments.dev.js
deleted file mode 100644 (file)
index b353377..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-var theList, theExtraList, toggleWithKeyboard = false;
-
-(function($) {
-var getCount, updateCount, updatePending, dashboardTotals;
-
-setCommentsList = function() {
-       var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList;
-
-       totalInput = $('input[name="_total"]', '#comments-form');
-       perPageInput = $('input[name="_per_page"]', '#comments-form');
-       pageInput = $('input[name="_page"]', '#comments-form');
-
-       dimAfter = function( r, settings ) {
-               var c = $('#' + settings.element), editRow, replyID, replyButton;
-
-               editRow = $('#replyrow');
-               replyID = $('#comment_ID', editRow).val();
-               replyButton = $('#replybtn', editRow);
-
-               if ( c.is('.unapproved') ) {
-                       if ( settings.data.id == replyID )
-                               replyButton.text(adminCommentsL10n.replyApprove);
-
-                       c.find('div.comment_status').html('0');
-               } else {
-                       if ( settings.data.id == replyID )
-                               replyButton.text(adminCommentsL10n.reply);
-
-                       c.find('div.comment_status').html('1');
-               }
-
-               var diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
-               updatePending( diff );
-       };
-
-       // Send current total, page, per_page and url
-       delBefore = function( settings, list ) {
-               var cl = $(settings.target).attr('class'), id, el, n, h, a, author, action = false;
-
-               settings.data._total = totalInput.val() || 0;
-               settings.data._per_page = perPageInput.val() || 0;
-               settings.data._page = pageInput.val() || 0;
-               settings.data._url = document.location.href;
-               settings.data.comment_status = $('input[name="comment_status"]', '#comments-form').val();
-
-               if ( cl.indexOf(':trash=1') != -1 )
-                       action = 'trash';
-               else if ( cl.indexOf(':spam=1') != -1 )
-                       action = 'spam';
-
-               if ( action ) {
-                       id = cl.replace(/.*?comment-([0-9]+).*/, '$1');
-                       el = $('#comment-' + id);
-                       note = $('#' + action + '-undo-holder').html();
-
-                       el.find('.check-column :checkbox').prop('checked', false); // Uncheck the row so as not to be affected by Bulk Edits.
-
-                       if ( el.siblings('#replyrow').length && commentReply.cid == id )
-                               commentReply.close();
-
-                       if ( el.is('tr') ) {
-                               n = el.children(':visible').length;
-                               author = $('.author strong', el).text();
-                               h = $('<tr id="undo-' + id + '" class="undo un' + action + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
-                       } else {
-                               author = $('.comment-author', el).text();
-                               h = $('<div id="undo-' + id + '" style="display:none;" class="undo un' + action + '">' + note + '</div>');
-                       }
-
-                       el.before(h);
-
-                       $('strong', '#undo-' + id).text(author);
-                       a = $('.undo a', '#undo-' + id);
-                       a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
-                       a.attr('class', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1 vim-z vim-destructive');
-                       $('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside');
-
-                       a.click(function(){
-                               list.wpList.del(this);
-                               $('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
-                                       $(this).remove();
-                                       $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() });
-                               });
-                               return false;
-                       });
-               }
-
-               return settings;
-       };
-
-       // Updates the current total (stored in the _total input)
-       updateTotalCount = function( total, time, setConfidentTime ) {
-               if ( time < lastConfidentTime )
-                       return;
-
-               if ( setConfidentTime )
-                       lastConfidentTime = time;
-
-               totalInput.val( total.toString() );
-       };
-
-       dashboardTotals = function(n) {
-               var dash = $('#dashboard_right_now'), total, appr, totalN, apprN;
-
-               n = n || 0;
-               if ( isNaN(n) || !dash.length )
-                       return;
-
-               total = $('span.total-count', dash);
-               appr = $('span.approved-count', dash);
-               totalN = getCount(total);
-
-               totalN = totalN + n;
-               apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
-               updateCount(total, totalN);
-               updateCount(appr, apprN);
-       };
-
-       getCount = function(el) {
-               var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
-               if ( isNaN(n) )
-                       return 0;
-               return n;
-       };
-
-       updateCount = function(el, n) {
-               var n1 = '';
-               if ( isNaN(n) )
-                       return;
-               n = n < 1 ? '0' : n.toString();
-               if ( n.length > 3 ) {
-                       while ( n.length > 3 ) {
-                               n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
-                               n = n.substr(0, n.length - 3);
-                       }
-                       n = n + n1;
-               }
-               el.html(n);
-       };
-
-       updatePending = function( diff ) {
-               $('span.pending-count').each(function() {
-                       var a = $(this), n = getCount(a) + diff;
-                       if ( n < 1 )
-                               n = 0;
-                       a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
-                       updateCount( a, n );
-               });
-
-               dashboardTotals();
-       };
-
-       // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
-       delAfter = function( r, settings ) {
-               var total, N, spam, trash, pending,
-                       untrash = $(settings.target).parent().is('span.untrash'),
-                       unspam = $(settings.target).parent().is('span.unspam'),
-                       unapproved = $('#' + settings.element).is('.unapproved');
-
-               function getUpdate(s) {
-                       if ( $(settings.target).parent().is('span.' + s) )
-                               return 1;
-                       else if ( $('#' + settings.element).is('.' + s) )
-                               return -1;
-
-                       return 0;
-               }
-
-               if ( untrash )
-                       trash = -1;
-               else
-                       trash = getUpdate('trash');
-
-               if ( unspam )
-                       spam = -1;
-               else
-                       spam = getUpdate('spam');
-
-               if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) {
-                       // a comment was 'deleted' from another list (e.g. approved, spam, trash) and moved to pending,
-                       // or a trash/spam of a pending comment was undone
-                       pending = 1;
-               } else if ( unapproved ) {
-                       // a pending comment was trashed/spammed/approved
-                       pending = -1;
-               }
-
-               if ( pending )
-                       updatePending(pending);
-
-               $('span.spam-count').each( function() {
-                       var a = $(this), n = getCount(a) + spam;
-                       updateCount(a, n);
-               });
-
-               $('span.trash-count').each( function() {
-                       var a = $(this), n = getCount(a) + trash;
-                       updateCount(a, n);
-               });
-
-               if ( $('#dashboard_right_now').length ) {
-                       N = trash ? -1 * trash : 0;
-                       dashboardTotals(N);
-               } else {
-                       total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
-                       if ( $(settings.target).parent().is('span.undo') )
-                               total++;
-                       else
-                               total--;
-
-                       if ( total < 0 )
-                               total = 0;
-
-                       if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) {
-                               total_items_i18n = settings.parsed.responses[0].supplemental.total_items_i18n || '';
-                               if ( total_items_i18n ) {
-                                       $('.displaying-num').text( total_items_i18n );
-                                       $('.total-pages').text( settings.parsed.responses[0].supplemental.total_pages_i18n );
-                                       $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', settings.parsed.responses[0].supplemental.total_pages == $('.current-page').val());
-                               }
-                               updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true );
-                       } else {
-                               updateTotalCount( total, r, false );
-                       }
-               }
-
-               if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) {
-                       return;
-               }
-
-               theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
-
-               refillTheExtraList();
-       };
-
-       refillTheExtraList = function(ev) {
-               var args = $.query.get(), total_pages = $('.total-pages').text(), per_page = $('input[name="_per_page"]', '#comments-form').val();
-
-               if (! args.paged)
-                       args.paged = 1;
-
-               if (args.paged > total_pages) {
-                       return;
-               }
-
-               if (ev) {
-                       theExtraList.empty();
-                       args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php
-               } else {
-                       args.number = 1;
-                       args.offset = Math.min(8, per_page) - 1; // fetch only the next item on the extra list
-               }
-
-               args.no_placeholder = true;
-
-               args.paged ++;
-
-               // $.query.get() needs some correction to be sent into an ajax request
-               if ( true === args.comment_type )
-                       args.comment_type = '';
-
-               args = $.extend(args, {
-                       'action': 'fetch-list',
-                       'list_args': list_args,
-                       '_ajax_fetch_list_nonce': $('#_ajax_fetch_list_nonce').val()
-               });
-
-               $.ajax({
-                       url: ajaxurl,
-                       global: false,
-                       dataType: 'json',
-                       data: args,
-                       success: function(response) {
-                               theExtraList.get(0).wpList.add( response.rows );
-                       }
-               });
-       };
-
-       theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
-       theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } )
-               .bind('wpListDelEnd', function(e, s){
-                       var id = s.element.replace(/[^0-9]+/g, '');
-
-                       if ( s.target.className.indexOf(':trash=1') != -1 || s.target.className.indexOf(':spam=1') != -1 )
-                               $('#undo-' + id).fadeIn(300, function(){ $(this).show() });
-               });
-};
-
-commentReply = {
-       cid : '',
-       act : '',
-
-       init : function() {
-               var row = $('#replyrow');
-
-               $('a.cancel', row).click(function() { return commentReply.revert(); });
-               $('a.save', row).click(function() { return commentReply.send(); });
-               $('input#author, input#author-email, input#author-url', row).keypress(function(e){
-                       if ( e.which == 13 ) {
-                               commentReply.send();
-                               e.preventDefault();
-                               return false;
-                       }
-               });
-
-               // add events
-               $('#the-comment-list .column-comment > p').dblclick(function(){
-                       commentReply.toggle($(this).parent());
-               });
-
-               $('#doaction, #doaction2, #post-query-submit').click(function(e){
-                       if ( $('#the-comment-list #replyrow').length > 0 )
-                               commentReply.close();
-               });
-
-               this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || '';
-
-               /* $(listTable).bind('beforeChangePage', function(){
-                       commentReply.close();
-               }); */
-       },
-
-       addEvents : function(r) {
-               r.each(function() {
-                       $(this).find('.column-comment > p').dblclick(function(){
-                               commentReply.toggle($(this).parent());
-                       });
-               });
-       },
-
-       toggle : function(el) {
-               if ( $(el).css('display') != 'none' )
-                       $(el).find('a.vim-q').click();
-       },
-
-       revert : function() {
-
-               if ( $('#the-comment-list #replyrow').length < 1 )
-                       return false;
-
-               $('#replyrow').fadeOut('fast', function(){
-                       commentReply.close();
-               });
-
-               return false;
-       },
-
-       close : function() {
-               var c, replyrow = $('#replyrow');
-
-               // replyrow is not showing?
-               if ( replyrow.parent().is('#com-reply') )
-                       return;
-
-               if ( this.cid && this.act == 'edit-comment' ) {
-                       c = $('#comment-' + this.cid);
-                       c.fadeIn(300, function(){ c.show() }).css('backgroundColor', '');
-               }
-
-               // reset the Quicktags buttons
-               if ( typeof QTags != 'undefined' )
-                       QTags.closeAllTags('replycontent');
-
-               $('#add-new-comment').css('display', '');
-
-               replyrow.hide();
-               $('#com-reply').append( replyrow );
-               $('#replycontent').css('height', '').val('');
-               $('#edithead input').val('');
-               $('.error', replyrow).html('').hide();
-               $('.waiting', replyrow).hide();
-
-               this.cid = '';
-       },
-
-       open : function(comment_id, post_id, action) {
-               var t = this, editRow, rowData, act, c = $('#comment-' + comment_id), h = c.height(), replyButton;
-
-               t.close();
-               t.cid = comment_id;
-
-               editRow = $('#replyrow');
-               rowData = $('#inline-'+comment_id);
-               action = action || 'replyto';
-               act = 'edit' == action ? 'edit' : 'replyto';
-               act = t.act = act + '-comment';
-
-               $('#action', editRow).val(act);
-               $('#comment_post_ID', editRow).val(post_id);
-               $('#comment_ID', editRow).val(comment_id);
-
-               if ( h > 120 )
-                       $('#replycontent', editRow).css('height', (35+h) + 'px');
-
-               if ( action == 'edit' ) {
-                       $('#author', editRow).val( $('div.author', rowData).text() );
-                       $('#author-email', editRow).val( $('div.author-email', rowData).text() );
-                       $('#author-url', editRow).val( $('div.author-url', rowData).text() );
-                       $('#status', editRow).val( $('div.comment_status', rowData).text() );
-                       $('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
-                       $('#edithead, #savebtn', editRow).show();
-                       $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide();
-
-                       c.after( editRow ).fadeOut('fast', function(){
-                               $('#replyrow').fadeIn(300, function(){ $(this).show() });
-                       });
-               } else if ( action == 'add' ) {
-                       $('#addhead, #addbtn', editRow).show();
-                       $('#replyhead, #replybtn, #edithead, #editbtn', editRow).hide();
-                       $('#the-comment-list').prepend(editRow);
-                       $('#replyrow').fadeIn(300);
-               } else {
-                       replyButton = $('#replybtn', editRow);
-                       $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide();
-                       $('#replyhead, #replybtn', editRow).show();
-                       c.after(editRow);
-
-                       if ( c.hasClass('unapproved') ) {
-                               replyButton.text(adminCommentsL10n.replyApprove);
-                       } else {
-                               replyButton.text(adminCommentsL10n.reply);
-                       }
-
-                       $('#replyrow').fadeIn(300, function(){ $(this).show() });
-               }
-
-               setTimeout(function() {
-                       var rtop, rbottom, scrollTop, vp, scrollBottom;
-
-                       rtop = $('#replyrow').offset().top;
-                       rbottom = rtop + $('#replyrow').height();
-                       scrollTop = window.pageYOffset || document.documentElement.scrollTop;
-                       vp = document.documentElement.clientHeight || self.innerHeight || 0;
-                       scrollBottom = scrollTop + vp;
-
-                       if ( scrollBottom - 20 < rbottom )
-                               window.scroll(0, rbottom - vp + 35);
-                       else if ( rtop - 20 < scrollTop )
-                               window.scroll(0, rtop - 35);
-
-                       $('#replycontent').focus().keyup(function(e){
-                               if ( e.which == 27 )
-                                       commentReply.revert(); // close on Escape
-                       });
-               }, 600);
-
-               return false;
-       },
-
-       send : function() {
-               var post = {};
-
-               $('#replysubmit .error').hide();
-               $('#replysubmit .waiting').show();
-
-               $('#replyrow input').not(':button').each(function() {
-                       var t = $(this);
-                       post[ t.attr('name') ] = t.val();
-               });
-
-               post.content = $('#replycontent').val();
-               post.id = post.comment_post_ID;
-               post.comments_listing = this.comments_listing;
-               post.p = $('[name="p"]').val();
-
-               if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') )
-                       post.approve_parent = 1;
-
-               $.ajax({
-                       type : 'POST',
-                       url : ajaxurl,
-                       data : post,
-                       success : function(x) { commentReply.show(x); },
-                       error : function(r) { commentReply.error(r); }
-               });
-
-               return false;
-       },
-
-       show : function(xml) {
-               var t = this, r, c, id, bg, pid;
-
-               if ( typeof(xml) == 'string' ) {
-                       t.error({'responseText': xml});
-                       return false;
-               }
-
-               r = wpAjax.parseAjaxResponse(xml);
-               if ( r.errors ) {
-                       t.error({'responseText': wpAjax.broken});
-                       return false;
-               }
-
-               t.revert();
-
-               r = r.responses[0];
-               c = r.data;
-               id = '#comment-' + r.id;
-
-               if ( 'edit-comment' == t.act )
-                       $(id).remove();
-
-               if ( r.supplemental.parent_approved ) {
-                       pid = $('#comment-' + r.supplemental.parent_approved);
-                       updatePending( -1 );
-
-                       if ( this.comments_listing == 'moderated' ) {
-                               pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
-                                       pid.fadeOut();
-                               });
-                               return;
-                       }
-               }
-
-               $(c).hide()
-               $('#replyrow').after(c);
-               id = $(id);
-               t.addEvents(id);
-               bg = id.hasClass('unapproved') ? '#FFFFE0' : id.closest('.widefat, .postbox').css('backgroundColor');
-
-               id.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
-                       .animate( { 'backgroundColor': bg }, 300, function() {
-                               if ( pid && pid.length ) {
-                                       pid.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
-                                               .animate( { 'backgroundColor': bg }, 300 )
-                                               .removeClass('unapproved').addClass('approved')
-                                               .find('div.comment_status').html('1');
-                               }
-                       });
-
-       },
-
-       error : function(r) {
-               var er = r.statusText;
-
-               $('#replysubmit .waiting').hide();
-
-               if ( r.responseText )
-                       er = r.responseText.replace( /<.[^<>]*?>/g, '' );
-
-               if ( er )
-                       $('#replysubmit .error').html(er).show();
-
-       },
-
-       addcomment: function(post_id) {
-               var t = this;
-
-               $('#add-new-comment').fadeOut(200, function(){
-                       t.open(0, post_id, 'add');
-                       $('table.comments-box').css('display', '');
-                       $('#no-comments').remove();
-               });
-       }
-};
-
-$(document).ready(function(){
-       var make_hotkeys_redirect, edit_comment, toggle_all, make_bulk;
-
-       setCommentsList();
-       commentReply.init();
-       $(document).delegate('span.delete a.delete', 'click', function(){return false;});
-
-       if ( typeof $.table_hotkeys != 'undefined' ) {
-               make_hotkeys_redirect = function(which) {
-                       return function() {
-                               var first_last, l;
-
-                               first_last = 'next' == which? 'first' : 'last';
-                               l = $('.tablenav-pages .'+which+'-page:not(.disabled)');
-                               if (l.length)
-                                       window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1';
-                       }
-               };
-
-               edit_comment = function(event, current_row) {
-                       window.location = $('span.edit a', current_row).attr('href');
-               };
-
-               toggle_all = function() {
-                       toggleWithKeyboard = true;
-                       $('input:checkbox', '#cb').click().prop('checked', false);
-                       toggleWithKeyboard = false;
-               };
-
-               make_bulk = function(value) {
-                       return function() {
-                               var scope = $('select[name="action"]');
-                               $('option[value="' + value + '"]', scope).prop('selected', true);
-                               $('#doaction').click();
-                       }
-               };
-
-               $.table_hotkeys(
-                       $('table.widefat'),
-                       ['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift+x', toggle_all],
-                       ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('spam')],
-                       ['shift+d', make_bulk('delete')], ['shift+t', make_bulk('trash')],
-                       ['shift+z', make_bulk('untrash')], ['shift+u', make_bulk('unapprove')]],
-                       { highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last,
-                       prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next') }
-               );
-       }
-});
-
-})(jQuery);
index 6171510f8f46d1ad17e17bc9a74553308aa2cbc1..038a1e56893ba92de46a239b664d48e150b0fb01 100644 (file)
@@ -1 +1,607 @@
-var theList,theExtraList,toggleWithKeyboard=false;(function(d){var b,a,e,c;setCommentsList=function(){var g,i,k,n=0,j,l,h,m,f;g=d('input[name="_total"]',"#comments-form");i=d('input[name="_per_page"]',"#comments-form");k=d('input[name="_page"]',"#comments-form");j=function(s,p){var v=d("#"+p.element),o,u,q;o=d("#replyrow");u=d("#comment_ID",o).val();q=d("#replybtn",o);if(v.is(".unapproved")){if(p.data.id==u){q.text(adminCommentsL10n.replyApprove)}v.find("div.comment_status").html("0")}else{if(p.data.id==u){q.text(adminCommentsL10n.reply)}v.find("div.comment_status").html("1")}var t=d("#"+p.element).is("."+p.dimClass)?1:-1;e(t)};l=function(r,v){var x=d(r.target).attr("class"),o,p,q,u,w,t,s=false;r.data._total=g.val()||0;r.data._per_page=i.val()||0;r.data._page=k.val()||0;r.data._url=document.location.href;r.data.comment_status=d('input[name="comment_status"]',"#comments-form").val();if(x.indexOf(":trash=1")!=-1){s="trash"}else{if(x.indexOf(":spam=1")!=-1){s="spam"}}if(s){o=x.replace(/.*?comment-([0-9]+).*/,"$1");p=d("#comment-"+o);note=d("#"+s+"-undo-holder").html();p.find(".check-column :checkbox").prop("checked",false);if(p.siblings("#replyrow").length&&commentReply.cid==o){commentReply.close()}if(p.is("tr")){q=p.children(":visible").length;t=d(".author strong",p).text();u=d('<tr id="undo-'+o+'" class="undo un'+s+'" style="display:none;"><td colspan="'+q+'">'+note+"</td></tr>")}else{t=d(".comment-author",p).text();u=d('<div id="undo-'+o+'" style="display:none;" class="undo un'+s+'">'+note+"</div>")}p.before(u);d("strong","#undo-"+o).text(t);w=d(".undo a","#undo-"+o);w.attr("href","comment.php?action=un"+s+"comment&c="+o+"&_wpnonce="+r.data._ajax_nonce);w.attr("class","delete:the-comment-list:comment-"+o+"::un"+s+"=1 vim-z vim-destructive");d(".avatar",p).clone().prependTo("#undo-"+o+" ."+s+"-undo-inside");w.click(function(){v.wpList.del(this);d("#undo-"+o).css({backgroundColor:"#ceb"}).fadeOut(350,function(){d(this).remove();d("#comment-"+o).css("backgroundColor","").fadeIn(300,function(){d(this).show()})});return false})}return r};h=function(o,p,q){if(p<n){return}if(q){n=p}g.val(o.toString())};c=function(t){var s=d("#dashboard_right_now"),p,r,q,o;t=t||0;if(isNaN(t)||!s.length){return}p=d("span.total-count",s);r=d("span.approved-count",s);q=b(p);q=q+t;o=q-b(d("span.pending-count",s))-b(d("span.spam-count",s));a(p,q);a(r,o)};b=function(o){var p=parseInt(o.html().replace(/[^0-9]+/g,""),10);if(isNaN(p)){return 0}return p};a=function(p,q){var o="";if(isNaN(q)){return}q=q<1?"0":q.toString();if(q.length>3){while(q.length>3){o=thousandsSeparator+q.substr(q.length-3)+o;q=q.substr(0,q.length-3)}q=q+o}p.html(q)};e=function(o){d("span.pending-count").each(function(){var p=d(this),q=b(p)+o;if(q<1){q=0}p.closest(".awaiting-mod")[0==q?"addClass":"removeClass"]("count-0");a(p,q)});c()};m=function(o,s){var v,t,x,w,p,y=d(s.target).parent().is("span.untrash"),q=d(s.target).parent().is("span.unspam"),u=d("#"+s.element).is(".unapproved");function z(r){if(d(s.target).parent().is("span."+r)){return 1}else{if(d("#"+s.element).is("."+r)){return -1}}return 0}if(y){w=-1}else{w=z("trash")}if(q){x=-1}else{x=z("spam")}if(d(s.target).parent().is("span.unapprove")||((y||q)&&u)){p=1}else{if(u){p=-1}}if(p){e(p)}d("span.spam-count").each(function(){var r=d(this),A=b(r)+x;a(r,A)});d("span.trash-count").each(function(){var r=d(this),A=b(r)+w;a(r,A)});if(d("#dashboard_right_now").length){t=w?-1*w:0;c(t)}else{v=g.val()?parseInt(g.val(),10):0;if(d(s.target).parent().is("span.undo")){v++}else{v--}if(v<0){v=0}if(("object"==typeof o)&&n<s.parsed.responses[0].supplemental.time){total_items_i18n=s.parsed.responses[0].supplemental.total_items_i18n||"";if(total_items_i18n){d(".displaying-num").text(total_items_i18n);d(".total-pages").text(s.parsed.responses[0].supplemental.total_pages_i18n);d(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",s.parsed.responses[0].supplemental.total_pages==d(".current-page").val())}h(v,s.parsed.responses[0].supplemental.time,true)}else{h(v,o,false)}}if(!theExtraList||theExtraList.size()==0||theExtraList.children().size()==0||y||q){return}theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone());f()};f=function(r){var p=d.query.get(),o=d(".total-pages").text(),q=d('input[name="_per_page"]',"#comments-form").val();if(!p.paged){p.paged=1}if(p.paged>o){return}if(r){theExtraList.empty();p.number=Math.min(8,q)}else{p.number=1;p.offset=Math.min(8,q)-1}p.no_placeholder=true;p.paged++;if(true===p.comment_type){p.comment_type=""}p=d.extend(p,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:d("#_ajax_fetch_list_nonce").val()});d.ajax({url:ajaxurl,global:false,dataType:"json",data:p,success:function(s){theExtraList.get(0).wpList.add(s.rows)}})};theExtraList=d("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=d("#the-comment-list").wpList({alt:"",delBefore:l,dimAfter:j,delAfter:m,addColor:"none"}).bind("wpListDelEnd",function(p,o){var q=o.element.replace(/[^0-9]+/g,"");if(o.target.className.indexOf(":trash=1")!=-1||o.target.className.indexOf(":spam=1")!=-1){d("#undo-"+q).fadeIn(300,function(){d(this).show()})}})};commentReply={cid:"",act:"",init:function(){var f=d("#replyrow");d("a.cancel",f).click(function(){return commentReply.revert()});d("a.save",f).click(function(){return commentReply.send()});d("input#author, input#author-email, input#author-url",f).keypress(function(g){if(g.which==13){commentReply.send();g.preventDefault();return false}});d("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())});d("#doaction, #doaction2, #post-query-submit").click(function(g){if(d("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=d('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(f){f.each(function(){d(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())})})},toggle:function(f){if(d(f).css("display")!="none"){d(f).find("a.vim-q").click()}},revert:function(){if(d("#the-comment-list #replyrow").length<1){return false}d("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){var g,f=d("#replyrow");if(f.parent().is("#com-reply")){return}if(this.cid&&this.act=="edit-comment"){g=d("#comment-"+this.cid);g.fadeIn(300,function(){g.show()}).css("backgroundColor","")}if(typeof QTags!="undefined"){QTags.closeAllTags("replycontent")}d("#add-new-comment").css("display","");f.hide();d("#com-reply").append(f);d("#replycontent").css("height","").val("");d("#edithead input").val("");d(".error",f).html("").hide();d(".waiting",f).hide();this.cid=""},open:function(f,i,k){var p=this,g,j,m,n=d("#comment-"+f),l=n.height(),o;p.close();p.cid=f;g=d("#replyrow");j=d("#inline-"+f);k=k||"replyto";m="edit"==k?"edit":"replyto";m=p.act=m+"-comment";d("#action",g).val(m);d("#comment_post_ID",g).val(i);d("#comment_ID",g).val(f);if(l>120){d("#replycontent",g).css("height",(35+l)+"px")}if(k=="edit"){d("#author",g).val(d("div.author",j).text());d("#author-email",g).val(d("div.author-email",j).text());d("#author-url",g).val(d("div.author-url",j).text());d("#status",g).val(d("div.comment_status",j).text());d("#replycontent",g).val(d("textarea.comment",j).val());d("#edithead, #savebtn",g).show();d("#replyhead, #replybtn, #addhead, #addbtn",g).hide();n.after(g).fadeOut("fast",function(){d("#replyrow").fadeIn(300,function(){d(this).show()})})}else{if(k=="add"){d("#addhead, #addbtn",g).show();d("#replyhead, #replybtn, #edithead, #editbtn",g).hide();d("#the-comment-list").prepend(g);d("#replyrow").fadeIn(300)}else{o=d("#replybtn",g);d("#edithead, #savebtn, #addhead, #addbtn",g).hide();d("#replyhead, #replybtn",g).show();n.after(g);if(n.hasClass("unapproved")){o.text(adminCommentsL10n.replyApprove)}else{o.text(adminCommentsL10n.reply)}d("#replyrow").fadeIn(300,function(){d(this).show()})}}setTimeout(function(){var s,q,t,h,r;s=d("#replyrow").offset().top;q=s+d("#replyrow").height();t=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;r=t+h;if(r-20<q){window.scroll(0,q-h+35)}else{if(s-20<t){window.scroll(0,s-35)}}d("#replycontent").focus().keyup(function(u){if(u.which==27){commentReply.revert()}})},600);return false},send:function(){var f={};d("#replysubmit .error").hide();d("#replysubmit .waiting").show();d("#replyrow input").not(":button").each(function(){var g=d(this);f[g.attr("name")]=g.val()});f.content=d("#replycontent").val();f.id=f.comment_post_ID;f.comments_listing=this.comments_listing;f.p=d('[name="p"]').val();if(d("#comment-"+d("#comment_ID").val()).hasClass("unapproved")){f.approve_parent=1}d.ajax({type:"POST",url:ajaxurl,data:f,success:function(g){commentReply.show(g)},error:function(g){commentReply.error(g)}});return false},show:function(g){var i=this,j,l,k,h,f;if(typeof(g)=="string"){i.error({responseText:g});return false}j=wpAjax.parseAjaxResponse(g);if(j.errors){i.error({responseText:wpAjax.broken});return false}i.revert();j=j.responses[0];l=j.data;k="#comment-"+j.id;if("edit-comment"==i.act){d(k).remove()}if(j.supplemental.parent_approved){f=d("#comment-"+j.supplemental.parent_approved);e(-1);if(this.comments_listing=="moderated"){f.animate({backgroundColor:"#CCEEBB"},400,function(){f.fadeOut()});return}}d(l).hide();d("#replyrow").after(l);k=d(k);i.addEvents(k);h=k.hasClass("unapproved")?"#FFFFE0":k.closest(".widefat, .postbox").css("backgroundColor");k.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300,function(){if(f&&f.length){f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}})},error:function(f){var g=f.statusText;d("#replysubmit .waiting").hide();if(f.responseText){g=f.responseText.replace(/<.[^<>]*?>/g,"")}if(g){d("#replysubmit .error").html(g).show()}},addcomment:function(f){var g=this;d("#add-new-comment").fadeOut(200,function(){g.open(0,f,"add");d("table.comments-box").css("display","");d("#no-comments").remove()})}};d(document).ready(function(){var i,f,g,h;setCommentsList();commentReply.init();d(document).delegate("span.delete a.delete","click",function(){return false});if(typeof d.table_hotkeys!="undefined"){i=function(j){return function(){var m,k;m="next"==j?"first":"last";k=d(".tablenav-pages ."+j+"-page:not(.disabled)");if(k.length){window.location=k[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+m+"=1"}}};f=function(k,j){window.location=d("span.edit a",j).attr("href")};g=function(){toggleWithKeyboard=true;d("input:checkbox","#cb").click().prop("checked",false);toggleWithKeyboard=false};h=function(j){return function(){var k=d('select[name="action"]');d('option[value="'+j+'"]',k).prop("selected",true);d("#doaction").click()}};d.table_hotkeys(d("table.widefat"),["a","u","s","d","r","q","z",["e",f],["shift+x",g],["shift+a",h("approve")],["shift+s",h("spam")],["shift+d",h("delete")],["shift+t",h("trash")],["shift+z",h("untrash")],["shift+u",h("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:i("prev"),next_page_link_cb:i("next")})}})})(jQuery);
\ No newline at end of file
+var theList, theExtraList, toggleWithKeyboard = false;
+
+(function($) {
+var getCount, updateCount, updatePending, dashboardTotals;
+
+setCommentsList = function() {
+       var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList;
+
+       totalInput = $('input[name="_total"]', '#comments-form');
+       perPageInput = $('input[name="_per_page"]', '#comments-form');
+       pageInput = $('input[name="_page"]', '#comments-form');
+
+       dimAfter = function( r, settings ) {
+               var c = $('#' + settings.element), editRow, replyID, replyButton;
+
+               editRow = $('#replyrow');
+               replyID = $('#comment_ID', editRow).val();
+               replyButton = $('#replybtn', editRow);
+
+               if ( c.is('.unapproved') ) {
+                       if ( settings.data.id == replyID )
+                               replyButton.text(adminCommentsL10n.replyApprove);
+
+                       c.find('div.comment_status').html('0');
+               } else {
+                       if ( settings.data.id == replyID )
+                               replyButton.text(adminCommentsL10n.reply);
+
+                       c.find('div.comment_status').html('1');
+               }
+
+               var diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
+               updatePending( diff );
+       };
+
+       // Send current total, page, per_page and url
+       delBefore = function( settings, list ) {
+               var wpListsData = $(settings.target).attr('data-wp-lists'), id, el, n, h, a, author, action = false;
+
+               settings.data._total = totalInput.val() || 0;
+               settings.data._per_page = perPageInput.val() || 0;
+               settings.data._page = pageInput.val() || 0;
+               settings.data._url = document.location.href;
+               settings.data.comment_status = $('input[name="comment_status"]', '#comments-form').val();
+
+               if ( wpListsData.indexOf(':trash=1') != -1 )
+                       action = 'trash';
+               else if ( wpListsData.indexOf(':spam=1') != -1 )
+                       action = 'spam';
+
+               if ( action ) {
+                       id = wpListsData.replace(/.*?comment-([0-9]+).*/, '$1');
+                       el = $('#comment-' + id);
+                       note = $('#' + action + '-undo-holder').html();
+
+                       el.find('.check-column :checkbox').prop('checked', false); // Uncheck the row so as not to be affected by Bulk Edits.
+
+                       if ( el.siblings('#replyrow').length && commentReply.cid == id )
+                               commentReply.close();
+
+                       if ( el.is('tr') ) {
+                               n = el.children(':visible').length;
+                               author = $('.author strong', el).text();
+                               h = $('<tr id="undo-' + id + '" class="undo un' + action + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
+                       } else {
+                               author = $('.comment-author', el).text();
+                               h = $('<div id="undo-' + id + '" style="display:none;" class="undo un' + action + '">' + note + '</div>');
+                       }
+
+                       el.before(h);
+
+                       $('strong', '#undo-' + id).text(author);
+                       a = $('.undo a', '#undo-' + id);
+                       a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
+                       a.attr('data-wp-lists', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1');
+                       a.attr('class', 'vim-z vim-destructive');
+                       $('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside');
+
+                       a.click(function(){
+                               list.wpList.del(this);
+                               $('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
+                                       $(this).remove();
+                                       $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() });
+                               });
+                               return false;
+                       });
+               }
+
+               return settings;
+       };
+
+       // Updates the current total (stored in the _total input)
+       updateTotalCount = function( total, time, setConfidentTime ) {
+               if ( time < lastConfidentTime )
+                       return;
+
+               if ( setConfidentTime )
+                       lastConfidentTime = time;
+
+               totalInput.val( total.toString() );
+       };
+
+       dashboardTotals = function(n) {
+               var dash = $('#dashboard_right_now'), total, appr, totalN, apprN;
+
+               n = n || 0;
+               if ( isNaN(n) || !dash.length )
+                       return;
+
+               total = $('span.total-count', dash);
+               appr = $('span.approved-count', dash);
+               totalN = getCount(total);
+
+               totalN = totalN + n;
+               apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
+               updateCount(total, totalN);
+               updateCount(appr, apprN);
+       };
+
+       getCount = function(el) {
+               var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
+               if ( isNaN(n) )
+                       return 0;
+               return n;
+       };
+
+       updateCount = function(el, n) {
+               var n1 = '';
+               if ( isNaN(n) )
+                       return;
+               n = n < 1 ? '0' : n.toString();
+               if ( n.length > 3 ) {
+                       while ( n.length > 3 ) {
+                               n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
+                               n = n.substr(0, n.length - 3);
+                       }
+                       n = n + n1;
+               }
+               el.html(n);
+       };
+
+       updatePending = function( diff ) {
+               $('span.pending-count').each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 )
+                               n = 0;
+                       a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
+                       updateCount( a, n );
+               });
+
+               dashboardTotals();
+       };
+
+       // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
+       delAfter = function( r, settings ) {
+               var total, N, spam, trash, pending,
+                       untrash = $(settings.target).parent().is('span.untrash'),
+                       unspam = $(settings.target).parent().is('span.unspam'),
+                       unapproved = $('#' + settings.element).is('.unapproved');
+
+               function getUpdate(s) {
+                       if ( $(settings.target).parent().is('span.' + s) )
+                               return 1;
+                       else if ( $('#' + settings.element).is('.' + s) )
+                               return -1;
+
+                       return 0;
+               }
+
+               if ( untrash )
+                       trash = -1;
+               else
+                       trash = getUpdate('trash');
+
+               if ( unspam )
+                       spam = -1;
+               else
+                       spam = getUpdate('spam');
+
+               if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) {
+                       // a comment was 'deleted' from another list (e.g. approved, spam, trash) and moved to pending,
+                       // or a trash/spam of a pending comment was undone
+                       pending = 1;
+               } else if ( unapproved ) {
+                       // a pending comment was trashed/spammed/approved
+                       pending = -1;
+               }
+
+               if ( pending )
+                       updatePending(pending);
+
+               $('span.spam-count').each( function() {
+                       var a = $(this), n = getCount(a) + spam;
+                       updateCount(a, n);
+               });
+
+               $('span.trash-count').each( function() {
+                       var a = $(this), n = getCount(a) + trash;
+                       updateCount(a, n);
+               });
+
+               if ( $('#dashboard_right_now').length ) {
+                       N = trash ? -1 * trash : 0;
+                       dashboardTotals(N);
+               } else {
+                       total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
+                       if ( $(settings.target).parent().is('span.undo') )
+                               total++;
+                       else
+                               total--;
+
+                       if ( total < 0 )
+                               total = 0;
+
+                       if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) {
+                               total_items_i18n = settings.parsed.responses[0].supplemental.total_items_i18n || '';
+                               if ( total_items_i18n ) {
+                                       $('.displaying-num').text( total_items_i18n );
+                                       $('.total-pages').text( settings.parsed.responses[0].supplemental.total_pages_i18n );
+                                       $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', settings.parsed.responses[0].supplemental.total_pages == $('.current-page').val());
+                               }
+                               updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true );
+                       } else {
+                               updateTotalCount( total, r, false );
+                       }
+               }
+
+               if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) {
+                       return;
+               }
+
+               theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
+
+               refillTheExtraList();
+       };
+
+       refillTheExtraList = function(ev) {
+               var args = $.query.get(), total_pages = $('.total-pages').text(), per_page = $('input[name="_per_page"]', '#comments-form').val();
+
+               if (! args.paged)
+                       args.paged = 1;
+
+               if (args.paged > total_pages) {
+                       return;
+               }
+
+               if (ev) {
+                       theExtraList.empty();
+                       args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php
+               } else {
+                       args.number = 1;
+                       args.offset = Math.min(8, per_page) - 1; // fetch only the next item on the extra list
+               }
+
+               args.no_placeholder = true;
+
+               args.paged ++;
+
+               // $.query.get() needs some correction to be sent into an ajax request
+               if ( true === args.comment_type )
+                       args.comment_type = '';
+
+               args = $.extend(args, {
+                       'action': 'fetch-list',
+                       'list_args': list_args,
+                       '_ajax_fetch_list_nonce': $('#_ajax_fetch_list_nonce').val()
+               });
+
+               $.ajax({
+                       url: ajaxurl,
+                       global: false,
+                       dataType: 'json',
+                       data: args,
+                       success: function(response) {
+                               theExtraList.get(0).wpList.add( response.rows );
+                       }
+               });
+       };
+
+       theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
+       theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } )
+               .bind('wpListDelEnd', function(e, s){
+                       var wpListsData = $(s.target).attr('data-wp-lists'), id = s.element.replace(/[^0-9]+/g, '');
+
+                       if ( wpListsData.indexOf(':trash=1') != -1 || wpListsData.indexOf(':spam=1') != -1 )
+                               $('#undo-' + id).fadeIn(300, function(){ $(this).show() });
+               });
+};
+
+commentReply = {
+       cid : '',
+       act : '',
+
+       init : function() {
+               var row = $('#replyrow');
+
+               $('a.cancel', row).click(function() { return commentReply.revert(); });
+               $('a.save', row).click(function() { return commentReply.send(); });
+               $('input#author, input#author-email, input#author-url', row).keypress(function(e){
+                       if ( e.which == 13 ) {
+                               commentReply.send();
+                               e.preventDefault();
+                               return false;
+                       }
+               });
+
+               // add events
+               $('#the-comment-list .column-comment > p').dblclick(function(){
+                       commentReply.toggle($(this).parent());
+               });
+
+               $('#doaction, #doaction2, #post-query-submit').click(function(e){
+                       if ( $('#the-comment-list #replyrow').length > 0 )
+                               commentReply.close();
+               });
+
+               this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || '';
+
+               /* $(listTable).bind('beforeChangePage', function(){
+                       commentReply.close();
+               }); */
+       },
+
+       addEvents : function(r) {
+               r.each(function() {
+                       $(this).find('.column-comment > p').dblclick(function(){
+                               commentReply.toggle($(this).parent());
+                       });
+               });
+       },
+
+       toggle : function(el) {
+               if ( $(el).css('display') != 'none' )
+                       $(el).find('a.vim-q').click();
+       },
+
+       revert : function() {
+
+               if ( $('#the-comment-list #replyrow').length < 1 )
+                       return false;
+
+               $('#replyrow').fadeOut('fast', function(){
+                       commentReply.close();
+               });
+
+               return false;
+       },
+
+       close : function() {
+               var c, replyrow = $('#replyrow');
+
+               // replyrow is not showing?
+               if ( replyrow.parent().is('#com-reply') )
+                       return;
+
+               if ( this.cid && this.act == 'edit-comment' ) {
+                       c = $('#comment-' + this.cid);
+                       c.fadeIn(300, function(){ c.show() }).css('backgroundColor', '');
+               }
+
+               // reset the Quicktags buttons
+               if ( typeof QTags != 'undefined' )
+                       QTags.closeAllTags('replycontent');
+
+               $('#add-new-comment').css('display', '');
+
+               replyrow.hide();
+               $('#com-reply').append( replyrow );
+               $('#replycontent').css('height', '').val('');
+               $('#edithead input').val('');
+               $('.error', replyrow).html('').hide();
+               $('.spinner', replyrow).hide();
+
+               this.cid = '';
+       },
+
+       open : function(comment_id, post_id, action) {
+               var t = this, editRow, rowData, act, c = $('#comment-' + comment_id), h = c.height(), replyButton;
+
+               t.close();
+               t.cid = comment_id;
+
+               editRow = $('#replyrow');
+               rowData = $('#inline-'+comment_id);
+               action = action || 'replyto';
+               act = 'edit' == action ? 'edit' : 'replyto';
+               act = t.act = act + '-comment';
+
+               $('#action', editRow).val(act);
+               $('#comment_post_ID', editRow).val(post_id);
+               $('#comment_ID', editRow).val(comment_id);
+
+               if ( h > 120 )
+                       $('#replycontent', editRow).css('height', (35+h) + 'px');
+
+               if ( action == 'edit' ) {
+                       $('#author', editRow).val( $('div.author', rowData).text() );
+                       $('#author-email', editRow).val( $('div.author-email', rowData).text() );
+                       $('#author-url', editRow).val( $('div.author-url', rowData).text() );
+                       $('#status', editRow).val( $('div.comment_status', rowData).text() );
+                       $('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
+                       $('#edithead, #savebtn', editRow).show();
+                       $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide();
+
+                       c.after( editRow ).fadeOut('fast', function(){
+                               $('#replyrow').fadeIn(300, function(){ $(this).show() });
+                       });
+               } else if ( action == 'add' ) {
+                       $('#addhead, #addbtn', editRow).show();
+                       $('#replyhead, #replybtn, #edithead, #editbtn', editRow).hide();
+                       $('#the-comment-list').prepend(editRow);
+                       $('#replyrow').fadeIn(300);
+               } else {
+                       replyButton = $('#replybtn', editRow);
+                       $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide();
+                       $('#replyhead, #replybtn', editRow).show();
+                       c.after(editRow);
+
+                       if ( c.hasClass('unapproved') ) {
+                               replyButton.text(adminCommentsL10n.replyApprove);
+                       } else {
+                               replyButton.text(adminCommentsL10n.reply);
+                       }
+
+                       $('#replyrow').fadeIn(300, function(){ $(this).show() });
+               }
+
+               setTimeout(function() {
+                       var rtop, rbottom, scrollTop, vp, scrollBottom;
+
+                       rtop = $('#replyrow').offset().top;
+                       rbottom = rtop + $('#replyrow').height();
+                       scrollTop = window.pageYOffset || document.documentElement.scrollTop;
+                       vp = document.documentElement.clientHeight || self.innerHeight || 0;
+                       scrollBottom = scrollTop + vp;
+
+                       if ( scrollBottom - 20 < rbottom )
+                               window.scroll(0, rbottom - vp + 35);
+                       else if ( rtop - 20 < scrollTop )
+                               window.scroll(0, rtop - 35);
+
+                       $('#replycontent').focus().keyup(function(e){
+                               if ( e.which == 27 )
+                                       commentReply.revert(); // close on Escape
+                       });
+               }, 600);
+
+               return false;
+       },
+
+       send : function() {
+               var post = {};
+
+               $('#replysubmit .error').hide();
+               $('#replysubmit .spinner').show();
+
+               $('#replyrow input').not(':button').each(function() {
+                       var t = $(this);
+                       post[ t.attr('name') ] = t.val();
+               });
+
+               post.content = $('#replycontent').val();
+               post.id = post.comment_post_ID;
+               post.comments_listing = this.comments_listing;
+               post.p = $('[name="p"]').val();
+
+               if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') )
+                       post.approve_parent = 1;
+
+               $.ajax({
+                       type : 'POST',
+                       url : ajaxurl,
+                       data : post,
+                       success : function(x) { commentReply.show(x); },
+                       error : function(r) { commentReply.error(r); }
+               });
+
+               return false;
+       },
+
+       show : function(xml) {
+               var t = this, r, c, id, bg, pid;
+
+               if ( typeof(xml) == 'string' ) {
+                       t.error({'responseText': xml});
+                       return false;
+               }
+
+               r = wpAjax.parseAjaxResponse(xml);
+               if ( r.errors ) {
+                       t.error({'responseText': wpAjax.broken});
+                       return false;
+               }
+
+               t.revert();
+
+               r = r.responses[0];
+               c = r.data;
+               id = '#comment-' + r.id;
+
+               if ( 'edit-comment' == t.act )
+                       $(id).remove();
+
+               if ( r.supplemental.parent_approved ) {
+                       pid = $('#comment-' + r.supplemental.parent_approved);
+                       updatePending( -1 );
+
+                       if ( this.comments_listing == 'moderated' ) {
+                               pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
+                                       pid.fadeOut();
+                               });
+                               return;
+                       }
+               }
+
+               $(c).hide()
+               $('#replyrow').after(c);
+               id = $(id);
+               t.addEvents(id);
+               bg = id.hasClass('unapproved') ? '#FFFFE0' : id.closest('.widefat, .postbox').css('backgroundColor');
+
+               id.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
+                       .animate( { 'backgroundColor': bg }, 300, function() {
+                               if ( pid && pid.length ) {
+                                       pid.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
+                                               .animate( { 'backgroundColor': bg }, 300 )
+                                               .removeClass('unapproved').addClass('approved')
+                                               .find('div.comment_status').html('1');
+                               }
+                       });
+
+       },
+
+       error : function(r) {
+               var er = r.statusText;
+
+               $('#replysubmit .spinner').hide();
+
+               if ( r.responseText )
+                       er = r.responseText.replace( /<.[^<>]*?>/g, '' );
+
+               if ( er )
+                       $('#replysubmit .error').html(er).show();
+
+       },
+
+       addcomment: function(post_id) {
+               var t = this;
+
+               $('#add-new-comment').fadeOut(200, function(){
+                       t.open(0, post_id, 'add');
+                       $('table.comments-box').css('display', '');
+                       $('#no-comments').remove();
+               });
+       }
+};
+
+$(document).ready(function(){
+       var make_hotkeys_redirect, edit_comment, toggle_all, make_bulk;
+
+       setCommentsList();
+       commentReply.init();
+       $(document).delegate('span.delete a.delete', 'click', function(){return false;});
+
+       if ( typeof $.table_hotkeys != 'undefined' ) {
+               make_hotkeys_redirect = function(which) {
+                       return function() {
+                               var first_last, l;
+
+                               first_last = 'next' == which? 'first' : 'last';
+                               l = $('.tablenav-pages .'+which+'-page:not(.disabled)');
+                               if (l.length)
+                                       window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1';
+                       }
+               };
+
+               edit_comment = function(event, current_row) {
+                       window.location = $('span.edit a', current_row).attr('href');
+               };
+
+               toggle_all = function() {
+                       toggleWithKeyboard = true;
+                       $('input:checkbox', '#cb').click().prop('checked', false);
+                       toggleWithKeyboard = false;
+               };
+
+               make_bulk = function(value) {
+                       return function() {
+                               var scope = $('select[name="action"]');
+                               $('option[value="' + value + '"]', scope).prop('selected', true);
+                               $('#doaction').click();
+                       }
+               };
+
+               $.table_hotkeys(
+                       $('table.widefat'),
+                       ['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift+x', toggle_all],
+                       ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('spam')],
+                       ['shift+d', make_bulk('delete')], ['shift+t', make_bulk('trash')],
+                       ['shift+z', make_bulk('untrash')], ['shift+u', make_bulk('unapprove')]],
+                       { highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last,
+                       prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next') }
+               );
+       }
+});
+
+})(jQuery);
diff --git a/wp-admin/js/edit-comments.min.js b/wp-admin/js/edit-comments.min.js
new file mode 100644 (file)
index 0000000..cfd9d5a
--- /dev/null
@@ -0,0 +1 @@
+var theList,theExtraList,toggleWithKeyboard=false;(function(d){var b,a,e,c;setCommentsList=function(){var g,i,k,n=0,j,l,h,m,f;g=d('input[name="_total"]',"#comments-form");i=d('input[name="_per_page"]',"#comments-form");k=d('input[name="_page"]',"#comments-form");j=function(s,p){var v=d("#"+p.element),o,u,q;o=d("#replyrow");u=d("#comment_ID",o).val();q=d("#replybtn",o);if(v.is(".unapproved")){if(p.data.id==u){q.text(adminCommentsL10n.replyApprove)}v.find("div.comment_status").html("0")}else{if(p.data.id==u){q.text(adminCommentsL10n.reply)}v.find("div.comment_status").html("1")}var t=d("#"+p.element).is("."+p.dimClass)?1:-1;e(t)};l=function(r,v){var w=d(r.target).attr("data-wp-lists"),o,p,q,u,x,t,s=false;r.data._total=g.val()||0;r.data._per_page=i.val()||0;r.data._page=k.val()||0;r.data._url=document.location.href;r.data.comment_status=d('input[name="comment_status"]',"#comments-form").val();if(w.indexOf(":trash=1")!=-1){s="trash"}else{if(w.indexOf(":spam=1")!=-1){s="spam"}}if(s){o=w.replace(/.*?comment-([0-9]+).*/,"$1");p=d("#comment-"+o);note=d("#"+s+"-undo-holder").html();p.find(".check-column :checkbox").prop("checked",false);if(p.siblings("#replyrow").length&&commentReply.cid==o){commentReply.close()}if(p.is("tr")){q=p.children(":visible").length;t=d(".author strong",p).text();u=d('<tr id="undo-'+o+'" class="undo un'+s+'" style="display:none;"><td colspan="'+q+'">'+note+"</td></tr>")}else{t=d(".comment-author",p).text();u=d('<div id="undo-'+o+'" style="display:none;" class="undo un'+s+'">'+note+"</div>")}p.before(u);d("strong","#undo-"+o).text(t);x=d(".undo a","#undo-"+o);x.attr("href","comment.php?action=un"+s+"comment&c="+o+"&_wpnonce="+r.data._ajax_nonce);x.attr("data-wp-lists","delete:the-comment-list:comment-"+o+"::un"+s+"=1");x.attr("class","vim-z vim-destructive");d(".avatar",p).clone().prependTo("#undo-"+o+" ."+s+"-undo-inside");x.click(function(){v.wpList.del(this);d("#undo-"+o).css({backgroundColor:"#ceb"}).fadeOut(350,function(){d(this).remove();d("#comment-"+o).css("backgroundColor","").fadeIn(300,function(){d(this).show()})});return false})}return r};h=function(o,p,q){if(p<n){return}if(q){n=p}g.val(o.toString())};c=function(t){var s=d("#dashboard_right_now"),p,r,q,o;t=t||0;if(isNaN(t)||!s.length){return}p=d("span.total-count",s);r=d("span.approved-count",s);q=b(p);q=q+t;o=q-b(d("span.pending-count",s))-b(d("span.spam-count",s));a(p,q);a(r,o)};b=function(o){var p=parseInt(o.html().replace(/[^0-9]+/g,""),10);if(isNaN(p)){return 0}return p};a=function(p,q){var o="";if(isNaN(q)){return}q=q<1?"0":q.toString();if(q.length>3){while(q.length>3){o=thousandsSeparator+q.substr(q.length-3)+o;q=q.substr(0,q.length-3)}q=q+o}p.html(q)};e=function(o){d("span.pending-count").each(function(){var p=d(this),q=b(p)+o;if(q<1){q=0}p.closest(".awaiting-mod")[0==q?"addClass":"removeClass"]("count-0");a(p,q)});c()};m=function(o,s){var v,t,x,w,p,y=d(s.target).parent().is("span.untrash"),q=d(s.target).parent().is("span.unspam"),u=d("#"+s.element).is(".unapproved");function z(r){if(d(s.target).parent().is("span."+r)){return 1}else{if(d("#"+s.element).is("."+r)){return -1}}return 0}if(y){w=-1}else{w=z("trash")}if(q){x=-1}else{x=z("spam")}if(d(s.target).parent().is("span.unapprove")||((y||q)&&u)){p=1}else{if(u){p=-1}}if(p){e(p)}d("span.spam-count").each(function(){var r=d(this),A=b(r)+x;a(r,A)});d("span.trash-count").each(function(){var r=d(this),A=b(r)+w;a(r,A)});if(d("#dashboard_right_now").length){t=w?-1*w:0;c(t)}else{v=g.val()?parseInt(g.val(),10):0;if(d(s.target).parent().is("span.undo")){v++}else{v--}if(v<0){v=0}if(("object"==typeof o)&&n<s.parsed.responses[0].supplemental.time){total_items_i18n=s.parsed.responses[0].supplemental.total_items_i18n||"";if(total_items_i18n){d(".displaying-num").text(total_items_i18n);d(".total-pages").text(s.parsed.responses[0].supplemental.total_pages_i18n);d(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",s.parsed.responses[0].supplemental.total_pages==d(".current-page").val())}h(v,s.parsed.responses[0].supplemental.time,true)}else{h(v,o,false)}}if(!theExtraList||theExtraList.size()==0||theExtraList.children().size()==0||y||q){return}theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone());f()};f=function(r){var p=d.query.get(),o=d(".total-pages").text(),q=d('input[name="_per_page"]',"#comments-form").val();if(!p.paged){p.paged=1}if(p.paged>o){return}if(r){theExtraList.empty();p.number=Math.min(8,q)}else{p.number=1;p.offset=Math.min(8,q)-1}p.no_placeholder=true;p.paged++;if(true===p.comment_type){p.comment_type=""}p=d.extend(p,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:d("#_ajax_fetch_list_nonce").val()});d.ajax({url:ajaxurl,global:false,dataType:"json",data:p,success:function(s){theExtraList.get(0).wpList.add(s.rows)}})};theExtraList=d("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=d("#the-comment-list").wpList({alt:"",delBefore:l,dimAfter:j,delAfter:m,addColor:"none"}).bind("wpListDelEnd",function(q,p){var o=d(p.target).attr("data-wp-lists"),r=p.element.replace(/[^0-9]+/g,"");if(o.indexOf(":trash=1")!=-1||o.indexOf(":spam=1")!=-1){d("#undo-"+r).fadeIn(300,function(){d(this).show()})}})};commentReply={cid:"",act:"",init:function(){var f=d("#replyrow");d("a.cancel",f).click(function(){return commentReply.revert()});d("a.save",f).click(function(){return commentReply.send()});d("input#author, input#author-email, input#author-url",f).keypress(function(g){if(g.which==13){commentReply.send();g.preventDefault();return false}});d("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())});d("#doaction, #doaction2, #post-query-submit").click(function(g){if(d("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=d('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(f){f.each(function(){d(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())})})},toggle:function(f){if(d(f).css("display")!="none"){d(f).find("a.vim-q").click()}},revert:function(){if(d("#the-comment-list #replyrow").length<1){return false}d("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){var g,f=d("#replyrow");if(f.parent().is("#com-reply")){return}if(this.cid&&this.act=="edit-comment"){g=d("#comment-"+this.cid);g.fadeIn(300,function(){g.show()}).css("backgroundColor","")}if(typeof QTags!="undefined"){QTags.closeAllTags("replycontent")}d("#add-new-comment").css("display","");f.hide();d("#com-reply").append(f);d("#replycontent").css("height","").val("");d("#edithead input").val("");d(".error",f).html("").hide();d(".spinner",f).hide();this.cid=""},open:function(f,i,k){var p=this,g,j,m,n=d("#comment-"+f),l=n.height(),o;p.close();p.cid=f;g=d("#replyrow");j=d("#inline-"+f);k=k||"replyto";m="edit"==k?"edit":"replyto";m=p.act=m+"-comment";d("#action",g).val(m);d("#comment_post_ID",g).val(i);d("#comment_ID",g).val(f);if(l>120){d("#replycontent",g).css("height",(35+l)+"px")}if(k=="edit"){d("#author",g).val(d("div.author",j).text());d("#author-email",g).val(d("div.author-email",j).text());d("#author-url",g).val(d("div.author-url",j).text());d("#status",g).val(d("div.comment_status",j).text());d("#replycontent",g).val(d("textarea.comment",j).val());d("#edithead, #savebtn",g).show();d("#replyhead, #replybtn, #addhead, #addbtn",g).hide();n.after(g).fadeOut("fast",function(){d("#replyrow").fadeIn(300,function(){d(this).show()})})}else{if(k=="add"){d("#addhead, #addbtn",g).show();d("#replyhead, #replybtn, #edithead, #editbtn",g).hide();d("#the-comment-list").prepend(g);d("#replyrow").fadeIn(300)}else{o=d("#replybtn",g);d("#edithead, #savebtn, #addhead, #addbtn",g).hide();d("#replyhead, #replybtn",g).show();n.after(g);if(n.hasClass("unapproved")){o.text(adminCommentsL10n.replyApprove)}else{o.text(adminCommentsL10n.reply)}d("#replyrow").fadeIn(300,function(){d(this).show()})}}setTimeout(function(){var s,q,t,h,r;s=d("#replyrow").offset().top;q=s+d("#replyrow").height();t=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;r=t+h;if(r-20<q){window.scroll(0,q-h+35)}else{if(s-20<t){window.scroll(0,s-35)}}d("#replycontent").focus().keyup(function(u){if(u.which==27){commentReply.revert()}})},600);return false},send:function(){var f={};d("#replysubmit .error").hide();d("#replysubmit .spinner").show();d("#replyrow input").not(":button").each(function(){var g=d(this);f[g.attr("name")]=g.val()});f.content=d("#replycontent").val();f.id=f.comment_post_ID;f.comments_listing=this.comments_listing;f.p=d('[name="p"]').val();if(d("#comment-"+d("#comment_ID").val()).hasClass("unapproved")){f.approve_parent=1}d.ajax({type:"POST",url:ajaxurl,data:f,success:function(g){commentReply.show(g)},error:function(g){commentReply.error(g)}});return false},show:function(g){var i=this,j,l,k,h,f;if(typeof(g)=="string"){i.error({responseText:g});return false}j=wpAjax.parseAjaxResponse(g);if(j.errors){i.error({responseText:wpAjax.broken});return false}i.revert();j=j.responses[0];l=j.data;k="#comment-"+j.id;if("edit-comment"==i.act){d(k).remove()}if(j.supplemental.parent_approved){f=d("#comment-"+j.supplemental.parent_approved);e(-1);if(this.comments_listing=="moderated"){f.animate({backgroundColor:"#CCEEBB"},400,function(){f.fadeOut()});return}}d(l).hide();d("#replyrow").after(l);k=d(k);i.addEvents(k);h=k.hasClass("unapproved")?"#FFFFE0":k.closest(".widefat, .postbox").css("backgroundColor");k.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300,function(){if(f&&f.length){f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}})},error:function(f){var g=f.statusText;d("#replysubmit .spinner").hide();if(f.responseText){g=f.responseText.replace(/<.[^<>]*?>/g,"")}if(g){d("#replysubmit .error").html(g).show()}},addcomment:function(f){var g=this;d("#add-new-comment").fadeOut(200,function(){g.open(0,f,"add");d("table.comments-box").css("display","");d("#no-comments").remove()})}};d(document).ready(function(){var i,f,g,h;setCommentsList();commentReply.init();d(document).delegate("span.delete a.delete","click",function(){return false});if(typeof d.table_hotkeys!="undefined"){i=function(j){return function(){var m,k;m="next"==j?"first":"last";k=d(".tablenav-pages ."+j+"-page:not(.disabled)");if(k.length){window.location=k[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+m+"=1"}}};f=function(k,j){window.location=d("span.edit a",j).attr("href")};g=function(){toggleWithKeyboard=true;d("input:checkbox","#cb").click().prop("checked",false);toggleWithKeyboard=false};h=function(j){return function(){var k=d('select[name="action"]');d('option[value="'+j+'"]',k).prop("selected",true);d("#doaction").click()}};d.table_hotkeys(d("table.widefat"),["a","u","s","d","r","q","z",["e",f],["shift+x",g],["shift+a",h("approve")],["shift+s",h("spam")],["shift+d",h("delete")],["shift+t",h("trash")],["shift+z",h("untrash")],["shift+u",h("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:i("prev"),next_page_link_cb:i("next")})}})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/editor.dev.js b/wp-admin/js/editor.dev.js
deleted file mode 100644 (file)
index 93bb6d4..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-
-var switchEditors = {
-
-       switchto: function(el) {
-               var aid = el.id, l = aid.length, id = aid.substr(0, l - 5), mode = aid.substr(l - 4);
-
-               this.go(id, mode);
-       },
-
-       go: function(id, mode) { // mode can be 'html', 'tmce', or 'toggle'
-               id = id || 'content';
-               mode = mode || 'toggle';
-
-               var t = this, ed = tinyMCE.get(id), wrap_id, txtarea_el, dom = tinymce.DOM;
-
-               wrap_id = 'wp-'+id+'-wrap';
-               txtarea_el = dom.get(id);
-
-               if ( 'toggle' == mode ) {
-                       if ( ed && !ed.isHidden() )
-                               mode = 'html';
-                       else
-                               mode = 'tmce';
-               }
-
-               if ( 'tmce' == mode || 'tinymce' == mode ) {
-                       if ( ed && ! ed.isHidden() )
-                               return false;
-
-                       if ( typeof(QTags) != 'undefined' )
-                               QTags.closeAllTags(id);
-
-                       if ( tinyMCEPreInit.mceInit[id] && tinyMCEPreInit.mceInit[id].wpautop )
-                               txtarea_el.value = t.wpautop( txtarea_el.value );
-
-                       if ( ed ) {
-                               ed.show();
-                       } else {
-                               ed = new tinymce.Editor(id, tinyMCEPreInit.mceInit[id]);
-                               ed.render();
-                       }
-
-                       dom.removeClass(wrap_id, 'html-active');
-                       dom.addClass(wrap_id, 'tmce-active');
-                       setUserSetting('editor', 'tinymce');
-
-               } else if ( 'html' == mode ) {
-
-                       if ( ed && ed.isHidden() )
-                               return false;
-
-                       if ( ed ) {
-                               txtarea_el.style.height = ed.getContentAreaContainer().offsetHeight + 20 + 'px';
-                               ed.hide();
-                       }
-
-                       dom.removeClass(wrap_id, 'tmce-active');
-                       dom.addClass(wrap_id, 'html-active');
-                       setUserSetting('editor', 'html');
-               }
-               return false;
-       },
-
-       _wp_Nop : function(content) {
-               var blocklist1, blocklist2, preserve_linebreaks = false, preserve_br = false;
-
-               // Protect pre|script tags
-               if ( content.indexOf('<pre') != -1 || content.indexOf('<script') != -1 ) {
-                       preserve_linebreaks = true;
-                       content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
-                               a = a.replace(/<br ?\/?>(\r\n|\n)?/g, '<wp-temp-lb>');
-                               return a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, '<wp-temp-lb>');
-                       });
-               }
-
-               // keep <br> tags inside captions and remove line breaks
-               if ( content.indexOf('[caption') != -1 ) {
-                       preserve_br = true;
-                       content = content.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
-                               return a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>').replace(/[\r\n\t]+/, '');
-                       });
-               }
-
-               // Pretty it up for the source editor
-               blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset';
-               content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'g'), '</$1>\n');
-               content = content.replace(new RegExp('\\s*<((?:'+blocklist1+')(?: [^>]*)?)>', 'g'), '\n<$1>');
-
-               // Mark </p> if it has any attributes.
-               content = content.replace(/(<p [^>]+>.*?)<\/p>/g, '$1</p#>');
-
-               // Sepatate <div> containing <p>
-               content = content.replace(/<div( [^>]*)?>\s*<p>/gi, '<div$1>\n\n');
-
-               // Remove <p> and <br />
-               content = content.replace(/\s*<p>/gi, '');
-               content = content.replace(/\s*<\/p>\s*/gi, '\n\n');
-               content = content.replace(/\n[\s\u00a0]+\n/g, '\n\n');
-               content = content.replace(/\s*<br ?\/?>\s*/gi, '\n');
-
-               // Fix some block element newline issues
-               content = content.replace(/\s*<div/g, '\n<div');
-               content = content.replace(/<\/div>\s*/g, '</div>\n');
-               content = content.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi, '\n\n[caption$1[/caption]\n\n');
-               content = content.replace(/caption\]\n\n+\[caption/g, 'caption]\n\n[caption');
-
-               blocklist2 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset';
-               content = content.replace(new RegExp('\\s*<((?:'+blocklist2+')(?: [^>]*)?)\\s*>', 'g'), '\n<$1>');
-               content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'g'), '</$1>\n');
-               content = content.replace(/<li([^>]*)>/g, '\t<li$1>');
-
-               if ( content.indexOf('<hr') != -1 ) {
-                       content = content.replace(/\s*<hr( [^>]*)?>\s*/g, '\n\n<hr$1>\n\n');
-               }
-
-               if ( content.indexOf('<object') != -1 ) {
-                       content = content.replace(/<object[\s\S]+?<\/object>/g, function(a){
-                               return a.replace(/[\r\n]+/g, '');
-                       });
-               }
-
-               // Unmark special paragraph closing tags
-               content = content.replace(/<\/p#>/g, '</p>\n');
-               content = content.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g, '\n$1');
-
-               // Trim whitespace
-               content = content.replace(/^\s+/, '');
-               content = content.replace(/[\s\u00a0]+$/, '');
-
-               // put back the line breaks in pre|script
-               if ( preserve_linebreaks )
-                       content = content.replace(/<wp-temp-lb>/g, '\n');
-
-               // and the <br> tags in captions
-               if ( preserve_br )
-                       content = content.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
-
-               return content;
-       },
-
-       _wp_Autop : function(pee) {
-               var preserve_linebreaks = false, preserve_br = false,
-                       blocklist = 'table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary';
-
-               if ( pee.indexOf('<object') != -1 ) {
-                       pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
-                               return a.replace(/[\r\n]+/g, '');
-                       });
-               }
-
-               pee = pee.replace(/<[^<>]+>/g, function(a){
-                       return a.replace(/[\r\n]+/g, ' ');
-               });
-
-               // Protect pre|script tags
-               if ( pee.indexOf('<pre') != -1 || pee.indexOf('<script') != -1 ) {
-                       preserve_linebreaks = true;
-                       pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
-                               return a.replace(/(\r\n|\n)/g, '<wp-temp-lb>');
-                       });
-               }
-
-               // keep <br> tags inside captions and convert line breaks
-               if ( pee.indexOf('[caption') != -1 ) {
-                       preserve_br = true;
-                       pee = pee.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
-                               // keep existing <br>
-                               a = a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>');
-                               // no line breaks inside HTML tags
-                               a = a.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(b){
-                                       return b.replace(/[\r\n\t]+/, ' ');
-                               });
-                               // convert remaining line breaks to <br>
-                               return a.replace(/\s*\n\s*/g, '<wp-temp-br />');
-                       });
-               }
-
-               pee = pee + '\n\n';
-               pee = pee.replace(/<br \/>\s*<br \/>/gi, '\n\n');
-               pee = pee.replace(new RegExp('(<(?:'+blocklist+')(?: [^>]*)?>)', 'gi'), '\n$1');
-               pee = pee.replace(new RegExp('(</(?:'+blocklist+')>)', 'gi'), '$1\n\n');
-               pee = pee.replace(/<hr( [^>]*)?>/gi, '<hr$1>\n\n'); // hr is self closing block element
-               pee = pee.replace(/\r\n|\r/g, '\n');
-               pee = pee.replace(/\n\s*\n+/g, '\n\n');
-               pee = pee.replace(/([\s\S]+?)\n\n/g, '<p>$1</p>\n');
-               pee = pee.replace(/<p>\s*?<\/p>/gi, '');
-               pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')(?: [^>]*)?>)\\s*</p>', 'gi'), "$1");
-               pee = pee.replace(/<p>(<li.+?)<\/p>/gi, '$1');
-               pee = pee.replace(/<p>\s*<blockquote([^>]*)>/gi, '<blockquote$1><p>');
-               pee = pee.replace(/<\/blockquote>\s*<\/p>/gi, '</p></blockquote>');
-               pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')(?: [^>]*)?>)', 'gi'), "$1");
-               pee = pee.replace(new RegExp('(</?(?:'+blocklist+')(?: [^>]*)?>)\\s*</p>', 'gi'), "$1");
-               pee = pee.replace(/\s*\n/gi, '<br />\n');
-               pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*<br />', 'gi'), "$1");
-               pee = pee.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi, '$1');
-               pee = pee.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi, '[caption$1[/caption]');
-
-               pee = pee.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g, function(a, b, c) {
-                       if ( c.match(/<p( [^>]*)?>/) )
-                               return a;
-
-                       return b + '<p>' + c + '</p>';
-               });
-
-               // put back the line breaks in pre|script
-               if ( preserve_linebreaks )
-                       pee = pee.replace(/<wp-temp-lb>/g, '\n');
-
-               if ( preserve_br )
-                       pee = pee.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
-
-               return pee;
-       },
-
-       pre_wpautop : function(content) {
-               var t = this, o = { o: t, data: content, unfiltered: content },
-                       q = typeof(jQuery) != 'undefined';
-
-               if ( q )
-                       jQuery('body').trigger('beforePreWpautop', [o]);
-               o.data = t._wp_Nop(o.data);
-               if ( q )
-                       jQuery('body').trigger('afterPreWpautop', [o]);
-
-               return o.data;
-       },
-
-       wpautop : function(pee) {
-               var t = this, o = { o: t, data: pee, unfiltered: pee },
-                       q = typeof(jQuery) != 'undefined';
-
-               if ( q )
-                       jQuery('body').trigger('beforeWpautop', [o]);
-               o.data = t._wp_Autop(o.data);
-               if ( q )
-                       jQuery('body').trigger('afterWpautop', [o]);
-
-               return o.data;
-       }
-}
index 905fffdd96fb67a5c812450d19781cee9bba3d0d..675ffd94b0eb66da55ffd1b8d497bff70e2c46c2 100644 (file)
@@ -1 +1,238 @@
-var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){d.style.height=b.getContentAreaContainer().offsetHeight+20+"px";b.hide()}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(c){var d,b,e=false,a=false;if(c.indexOf("<pre")!=-1||c.indexOf("<script")!=-1){e=true;c=c.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(f){f=f.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-temp-lb>");return f.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-temp-lb>")})}if(c.indexOf("[caption")!=-1){a=true;c=c.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(f){return f.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})}d="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";c=c.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n");c=c.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)>","g"),"\n<$1>");c=c.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");c=c.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");c=c.replace(/\s*<p>/gi,"");c=c.replace(/\s*<\/p>\s*/gi,"\n\n");c=c.replace(/\n[\s\u00a0]+\n/g,"\n\n");c=c.replace(/\s*<br ?\/?>\s*/gi,"\n");c=c.replace(/\s*<div/g,"\n<div");c=c.replace(/<\/div>\s*/g,"</div>\n");c=c.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");c=c.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";c=c.replace(new RegExp("\\s*<((?:"+b+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");c=c.replace(new RegExp("\\s*</("+b+")>\\s*","g"),"</$1>\n");c=c.replace(/<li([^>]*)>/g,"\t<li$1>");if(c.indexOf("<hr")!=-1){c=c.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(c.indexOf("<object")!=-1){c=c.replace(/<object[\s\S]+?<\/object>/g,function(f){return f.replace(/[\r\n]+/g,"")})}c=c.replace(/<\/p#>/g,"</p>\n");c=c.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");c=c.replace(/^\s+/,"");c=c.replace(/[\s\u00a0]+$/,"");if(e){c=c.replace(/<wp-temp-lb>/g,"\n")}if(a){c=c.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return c},_wp_Autop:function(a){var c=false,b=false,d="table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(e){return e.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(e){return e.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){c=true;a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(e){return e.replace(/(\r\n|\n)/g,"<wp-temp-lb>")})}if(a.indexOf("[caption")!=-1){b=true;a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(e){e=e.replace(/<br([^>]*)>/g,"<wp-temp-br$1>");e=e.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(f){return f.replace(/[\r\n\t]+/," ")});return e.replace(/\s*\n\s*/g,"<wp-temp-br />")})}a=a+"\n\n";a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n");a=a.replace(new RegExp("(<(?:"+d+")(?: [^>]*)?>)","gi"),"\n$1");a=a.replace(new RegExp("(</(?:"+d+")>)","gi"),"$1\n\n");a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n");a=a.replace(/\r\n|\r/g,"\n");a=a.replace(/\n\s*\n+/g,"\n\n");a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n");a=a.replace(/<p>\s*?<\/p>/gi,"");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1");a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>");a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)","gi"),"$1");a=a.replace(new RegExp("(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/\s*\n/gi,"<br />\n");a=a.replace(new RegExp("(</?(?:"+d+")[^>]*>)\\s*<br />","gi"),"$1");a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1");a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]");a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(f,e,g){if(g.match(/<p( [^>]*)?>/)){return f}return e+"<p>"+g+"</p>"});if(c){a=a.replace(/<wp-temp-lb>/g,"\n")}if(b){a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
+
+var switchEditors = {
+
+       switchto: function(el) {
+               var aid = el.id, l = aid.length, id = aid.substr(0, l - 5), mode = aid.substr(l - 4);
+
+               this.go(id, mode);
+       },
+
+       go: function(id, mode) { // mode can be 'html', 'tmce', or 'toggle'; 'html' is used for the "Text" editor tab.
+               id = id || 'content';
+               mode = mode || 'toggle';
+
+               var t = this, ed = tinyMCE.get(id), wrap_id, txtarea_el, dom = tinymce.DOM;
+
+               wrap_id = 'wp-'+id+'-wrap';
+               txtarea_el = dom.get(id);
+
+               if ( 'toggle' == mode ) {
+                       if ( ed && !ed.isHidden() )
+                               mode = 'html';
+                       else
+                               mode = 'tmce';
+               }
+
+               if ( 'tmce' == mode || 'tinymce' == mode ) {
+                       if ( ed && ! ed.isHidden() )
+                               return false;
+
+                       if ( typeof(QTags) != 'undefined' )
+                               QTags.closeAllTags(id);
+
+                       if ( tinyMCEPreInit.mceInit[id] && tinyMCEPreInit.mceInit[id].wpautop )
+                               txtarea_el.value = t.wpautop( txtarea_el.value );
+
+                       if ( ed ) {
+                               ed.show();
+                       } else {
+                               ed = new tinymce.Editor(id, tinyMCEPreInit.mceInit[id]);
+                               ed.render();
+                       }
+
+                       dom.removeClass(wrap_id, 'html-active');
+                       dom.addClass(wrap_id, 'tmce-active');
+                       setUserSetting('editor', 'tinymce');
+
+               } else if ( 'html' == mode ) {
+
+                       if ( ed && ed.isHidden() )
+                               return false;
+
+                       if ( ed )
+                               ed.hide();
+
+                       dom.removeClass(wrap_id, 'tmce-active');
+                       dom.addClass(wrap_id, 'html-active');
+                       setUserSetting('editor', 'html');
+               }
+               return false;
+       },
+
+       _wp_Nop : function(content) {
+               var blocklist1, blocklist2, preserve_linebreaks = false, preserve_br = false;
+
+               // Protect pre|script tags
+               if ( content.indexOf('<pre') != -1 || content.indexOf('<script') != -1 ) {
+                       preserve_linebreaks = true;
+                       content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
+                               a = a.replace(/<br ?\/?>(\r\n|\n)?/g, '<wp-temp-lb>');
+                               return a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, '<wp-temp-lb>');
+                       });
+               }
+
+               // keep <br> tags inside captions and remove line breaks
+               if ( content.indexOf('[caption') != -1 ) {
+                       preserve_br = true;
+                       content = content.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
+                               return a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>').replace(/[\r\n\t]+/, '');
+                       });
+               }
+
+               // Pretty it up for the source editor
+               blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset';
+               content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'g'), '</$1>\n');
+               content = content.replace(new RegExp('\\s*<((?:'+blocklist1+')(?: [^>]*)?)>', 'g'), '\n<$1>');
+
+               // Mark </p> if it has any attributes.
+               content = content.replace(/(<p [^>]+>.*?)<\/p>/g, '$1</p#>');
+
+               // Sepatate <div> containing <p>
+               content = content.replace(/<div( [^>]*)?>\s*<p>/gi, '<div$1>\n\n');
+
+               // Remove <p> and <br />
+               content = content.replace(/\s*<p>/gi, '');
+               content = content.replace(/\s*<\/p>\s*/gi, '\n\n');
+               content = content.replace(/\n[\s\u00a0]+\n/g, '\n\n');
+               content = content.replace(/\s*<br ?\/?>\s*/gi, '\n');
+
+               // Fix some block element newline issues
+               content = content.replace(/\s*<div/g, '\n<div');
+               content = content.replace(/<\/div>\s*/g, '</div>\n');
+               content = content.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi, '\n\n[caption$1[/caption]\n\n');
+               content = content.replace(/caption\]\n\n+\[caption/g, 'caption]\n\n[caption');
+
+               blocklist2 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset';
+               content = content.replace(new RegExp('\\s*<((?:'+blocklist2+')(?: [^>]*)?)\\s*>', 'g'), '\n<$1>');
+               content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'g'), '</$1>\n');
+               content = content.replace(/<li([^>]*)>/g, '\t<li$1>');
+
+               if ( content.indexOf('<hr') != -1 ) {
+                       content = content.replace(/\s*<hr( [^>]*)?>\s*/g, '\n\n<hr$1>\n\n');
+               }
+
+               if ( content.indexOf('<object') != -1 ) {
+                       content = content.replace(/<object[\s\S]+?<\/object>/g, function(a){
+                               return a.replace(/[\r\n]+/g, '');
+                       });
+               }
+
+               // Unmark special paragraph closing tags
+               content = content.replace(/<\/p#>/g, '</p>\n');
+               content = content.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g, '\n$1');
+
+               // Trim whitespace
+               content = content.replace(/^\s+/, '');
+               content = content.replace(/[\s\u00a0]+$/, '');
+
+               // put back the line breaks in pre|script
+               if ( preserve_linebreaks )
+                       content = content.replace(/<wp-temp-lb>/g, '\n');
+
+               // and the <br> tags in captions
+               if ( preserve_br )
+                       content = content.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
+
+               return content;
+       },
+
+       _wp_Autop : function(pee) {
+               var preserve_linebreaks = false, preserve_br = false,
+                       blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary';
+
+               if ( pee.indexOf('<object') != -1 ) {
+                       pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
+                               return a.replace(/[\r\n]+/g, '');
+                       });
+               }
+
+               pee = pee.replace(/<[^<>]+>/g, function(a){
+                       return a.replace(/[\r\n]+/g, ' ');
+               });
+
+               // Protect pre|script tags
+               if ( pee.indexOf('<pre') != -1 || pee.indexOf('<script') != -1 ) {
+                       preserve_linebreaks = true;
+                       pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
+                               return a.replace(/(\r\n|\n)/g, '<wp-temp-lb>');
+                       });
+               }
+
+               // keep <br> tags inside captions and convert line breaks
+               if ( pee.indexOf('[caption') != -1 ) {
+                       preserve_br = true;
+                       pee = pee.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
+                               // keep existing <br>
+                               a = a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>');
+                               // no line breaks inside HTML tags
+                               a = a.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(b){
+                                       return b.replace(/[\r\n\t]+/, ' ');
+                               });
+                               // convert remaining line breaks to <br>
+                               return a.replace(/\s*\n\s*/g, '<wp-temp-br />');
+                       });
+               }
+
+               pee = pee + '\n\n';
+               pee = pee.replace(/<br \/>\s*<br \/>/gi, '\n\n');
+               pee = pee.replace(new RegExp('(<(?:'+blocklist+')(?: [^>]*)?>)', 'gi'), '\n$1');
+               pee = pee.replace(new RegExp('(</(?:'+blocklist+')>)', 'gi'), '$1\n\n');
+               pee = pee.replace(/<hr( [^>]*)?>/gi, '<hr$1>\n\n'); // hr is self closing block element
+               pee = pee.replace(/\r\n|\r/g, '\n');
+               pee = pee.replace(/\n\s*\n+/g, '\n\n');
+               pee = pee.replace(/([\s\S]+?)\n\n/g, '<p>$1</p>\n');
+               pee = pee.replace(/<p>\s*?<\/p>/gi, '');
+               pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')(?: [^>]*)?>)\\s*</p>', 'gi'), "$1");
+               pee = pee.replace(/<p>(<li.+?)<\/p>/gi, '$1');
+               pee = pee.replace(/<p>\s*<blockquote([^>]*)>/gi, '<blockquote$1><p>');
+               pee = pee.replace(/<\/blockquote>\s*<\/p>/gi, '</p></blockquote>');
+               pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')(?: [^>]*)?>)', 'gi'), "$1");
+               pee = pee.replace(new RegExp('(</?(?:'+blocklist+')(?: [^>]*)?>)\\s*</p>', 'gi'), "$1");
+               pee = pee.replace(/\s*\n/gi, '<br />\n');
+               pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*<br />', 'gi'), "$1");
+               pee = pee.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi, '$1');
+               pee = pee.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi, '[caption$1[/caption]');
+
+               pee = pee.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g, function(a, b, c) {
+                       if ( c.match(/<p( [^>]*)?>/) )
+                               return a;
+
+                       return b + '<p>' + c + '</p>';
+               });
+
+               // put back the line breaks in pre|script
+               if ( preserve_linebreaks )
+                       pee = pee.replace(/<wp-temp-lb>/g, '\n');
+
+               if ( preserve_br )
+                       pee = pee.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
+
+               return pee;
+       },
+
+       pre_wpautop : function(content) {
+               var t = this, o = { o: t, data: content, unfiltered: content },
+                       q = typeof(jQuery) != 'undefined';
+
+               if ( q )
+                       jQuery('body').trigger('beforePreWpautop', [o]);
+               o.data = t._wp_Nop(o.data);
+               if ( q )
+                       jQuery('body').trigger('afterPreWpautop', [o]);
+
+               return o.data;
+       },
+
+       wpautop : function(pee) {
+               var t = this, o = { o: t, data: pee, unfiltered: pee },
+                       q = typeof(jQuery) != 'undefined';
+
+               if ( q )
+                       jQuery('body').trigger('beforeWpautop', [o]);
+               o.data = t._wp_Autop(o.data);
+               if ( q )
+                       jQuery('body').trigger('afterWpautop', [o]);
+
+               return o.data;
+       }
+}
diff --git a/wp-admin/js/editor.min.js b/wp-admin/js/editor.min.js
new file mode 100644 (file)
index 0000000..70cca04
--- /dev/null
@@ -0,0 +1 @@
+var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){b.hide()}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(c){var d,b,e=false,a=false;if(c.indexOf("<pre")!=-1||c.indexOf("<script")!=-1){e=true;c=c.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(f){f=f.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-temp-lb>");return f.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-temp-lb>")})}if(c.indexOf("[caption")!=-1){a=true;c=c.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(f){return f.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})}d="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";c=c.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n");c=c.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)>","g"),"\n<$1>");c=c.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");c=c.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");c=c.replace(/\s*<p>/gi,"");c=c.replace(/\s*<\/p>\s*/gi,"\n\n");c=c.replace(/\n[\s\u00a0]+\n/g,"\n\n");c=c.replace(/\s*<br ?\/?>\s*/gi,"\n");c=c.replace(/\s*<div/g,"\n<div");c=c.replace(/<\/div>\s*/g,"</div>\n");c=c.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");c=c.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";c=c.replace(new RegExp("\\s*<((?:"+b+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");c=c.replace(new RegExp("\\s*</("+b+")>\\s*","g"),"</$1>\n");c=c.replace(/<li([^>]*)>/g,"\t<li$1>");if(c.indexOf("<hr")!=-1){c=c.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(c.indexOf("<object")!=-1){c=c.replace(/<object[\s\S]+?<\/object>/g,function(f){return f.replace(/[\r\n]+/g,"")})}c=c.replace(/<\/p#>/g,"</p>\n");c=c.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");c=c.replace(/^\s+/,"");c=c.replace(/[\s\u00a0]+$/,"");if(e){c=c.replace(/<wp-temp-lb>/g,"\n")}if(a){c=c.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return c},_wp_Autop:function(a){var c=false,b=false,d="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(e){return e.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(e){return e.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){c=true;a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(e){return e.replace(/(\r\n|\n)/g,"<wp-temp-lb>")})}if(a.indexOf("[caption")!=-1){b=true;a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(e){e=e.replace(/<br([^>]*)>/g,"<wp-temp-br$1>");e=e.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(f){return f.replace(/[\r\n\t]+/," ")});return e.replace(/\s*\n\s*/g,"<wp-temp-br />")})}a=a+"\n\n";a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n");a=a.replace(new RegExp("(<(?:"+d+")(?: [^>]*)?>)","gi"),"\n$1");a=a.replace(new RegExp("(</(?:"+d+")>)","gi"),"$1\n\n");a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n");a=a.replace(/\r\n|\r/g,"\n");a=a.replace(/\n\s*\n+/g,"\n\n");a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n");a=a.replace(/<p>\s*?<\/p>/gi,"");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1");a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>");a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)","gi"),"$1");a=a.replace(new RegExp("(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/\s*\n/gi,"<br />\n");a=a.replace(new RegExp("(</?(?:"+d+")[^>]*>)\\s*<br />","gi"),"$1");a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1");a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]");a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(f,e,g){if(g.match(/<p( [^>]*)?>/)){return f}return e+"<p>"+g+"</p>"});if(c){a=a.replace(/<wp-temp-lb>/g,"\n")}if(b){a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
diff --git a/wp-admin/js/gallery.dev.js b/wp-admin/js/gallery.dev.js
deleted file mode 100644 (file)
index d7b4bb1..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-jQuery(document).ready(function($) {
-       var gallerySortable, gallerySortableInit, w, desc = false;
-
-       gallerySortableInit = function() {
-               gallerySortable = $('#media-items').sortable( {
-                       items: 'div.media-item',
-                       placeholder: 'sorthelper',
-                       axis: 'y',
-                       distance: 2,
-                       handle: 'div.filename',
-                       stop: function(e, ui) {
-                               // When an update has occurred, adjust the order for each item
-                               var all = $('#media-items').sortable('toArray'), len = all.length;
-                               $.each(all, function(i, id) {
-                                       var order = desc ? (len - i) : (1 + i);
-                                       $('#' + id + ' .menu_order input').val(order);
-                               });
-                       }
-               } );
-       }
-
-       sortIt = function() {
-               var all = $('.menu_order_input'), len = all.length;
-               all.each(function(i){
-                       var order = desc ? (len - i) : (1 + i);
-                       $(this).val(order);
-               });
-       }
-
-       clearAll = function(c) {
-               c = c || 0;
-               $('.menu_order_input').each(function(){
-                       if ( this.value == '0' || c ) this.value = '';
-               });
-       }
-
-       $('#asc').click(function(){desc = false; sortIt(); return false;});
-       $('#desc').click(function(){desc = true; sortIt(); return false;});
-       $('#clear').click(function(){clearAll(1); return false;});
-       $('#showall').click(function(){
-               $('#sort-buttons span a').toggle();
-               $('a.describe-toggle-on').hide();
-               $('a.describe-toggle-off, table.slidetoggle').show();
-               $('img.pinkynail').toggle(false);
-               return false;
-       });
-       $('#hideall').click(function(){
-               $('#sort-buttons span a').toggle();
-               $('a.describe-toggle-on').show();
-               $('a.describe-toggle-off, table.slidetoggle').hide();
-               $('img.pinkynail').toggle(true);
-               return false;
-       });
-
-       // initialize sortable
-       gallerySortableInit();
-       clearAll();
-
-       if ( $('#media-items>*').length > 1 ) {
-               w = wpgallery.getWin();
-
-               $('#save-all, #gallery-settings').show();
-               if ( typeof w.tinyMCE != 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
-                       wpgallery.mcemode = true;
-                       wpgallery.init();
-               } else {
-                       $('#insert-gallery').show();
-               }
-       }
-});
-
-jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
-
-/* gallery settings */
-var tinymce = null, tinyMCE, wpgallery;
-
-wpgallery = {
-       mcemode : false,
-       editor : {},
-       dom : {},
-       is_update : false,
-       el : {},
-
-       I : function(e) {
-               return document.getElementById(e);
-       },
-
-       init: function() {
-               var t = this, li, q, i, it, w = t.getWin();
-
-               if ( ! t.mcemode ) return;
-
-               li = ('' + document.location.search).replace(/^\?/, '').split('&');
-               q = {};
-               for (i=0; i<li.length; i++) {
-                       it = li[i].split('=');
-                       q[unescape(it[0])] = unescape(it[1]);
-               }
-
-               if (q.mce_rdomain)
-                       document.domain = q.mce_rdomain;
-
-               // Find window & API
-               tinymce = w.tinymce;
-               tinyMCE = w.tinyMCE;
-               t.editor = tinymce.EditorManager.activeEditor;
-
-               t.setup();
-       },
-
-       getWin : function() {
-               return window.dialogArguments || opener || parent || top;
-       },
-
-       setup : function() {
-               var t = this, a, ed = t.editor, g, columns, link, order, orderby;
-               if ( ! t.mcemode ) return;
-
-               t.el = ed.selection.getNode();
-
-               if ( t.el.nodeName != 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
-                       if ( (g = ed.dom.select('img.wpGallery')) && g[0] ) {
-                               t.el = g[0];
-                       } else {
-                               if ( getUserSetting('galfile') == '1' ) t.I('linkto-file').checked = "checked";
-                               if ( getUserSetting('galdesc') == '1' ) t.I('order-desc').checked = "checked";
-                               if ( getUserSetting('galcols') ) t.I('columns').value = getUserSetting('galcols');
-                               if ( getUserSetting('galord') ) t.I('orderby').value = getUserSetting('galord');
-                               jQuery('#insert-gallery').show();
-                               return;
-                       }
-               }
-
-               a = ed.dom.getAttrib(t.el, 'title');
-               a = ed.dom.decode(a);
-
-               if ( a ) {
-                       jQuery('#update-gallery').show();
-                       t.is_update = true;
-
-                       columns = a.match(/columns=['"]([0-9]+)['"]/);
-                       link = a.match(/link=['"]([^'"]+)['"]/i);
-                       order = a.match(/order=['"]([^'"]+)['"]/i);
-                       orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
-
-                       if ( link && link[1] ) t.I('linkto-file').checked = "checked";
-                       if ( order && order[1] ) t.I('order-desc').checked = "checked";
-                       if ( columns && columns[1] ) t.I('columns').value = ''+columns[1];
-                       if ( orderby && orderby[1] ) t.I('orderby').value = orderby[1];
-               } else {
-                       jQuery('#insert-gallery').show();
-               }
-       },
-
-       update : function() {
-               var t = this, ed = t.editor, all = '', s;
-
-               if ( ! t.mcemode || ! t.is_update ) {
-                       s = '[gallery'+t.getSettings()+']';
-                       t.getWin().send_to_editor(s);
-                       return;
-               }
-
-               if (t.el.nodeName != 'IMG') return;
-
-               all = ed.dom.decode(ed.dom.getAttrib(t.el, 'title'));
-               all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
-               all += t.getSettings();
-
-               ed.dom.setAttrib(t.el, 'title', all);
-               t.getWin().tb_remove();
-       },
-
-       getSettings : function() {
-               var I = this.I, s = '';
-
-               if ( I('linkto-file').checked ) {
-                       s += ' link="file"';
-                       setUserSetting('galfile', '1');
-               }
-
-               if ( I('order-desc').checked ) {
-                       s += ' order="DESC"';
-                       setUserSetting('galdesc', '1');
-               }
-
-               if ( I('columns').value != 3 ) {
-                       s += ' columns="'+I('columns').value+'"';
-                       setUserSetting('galcols', I('columns').value);
-               }
-
-               if ( I('orderby').value != 'menu_order' ) {
-                       s += ' orderby="'+I('orderby').value+'"';
-                       setUserSetting('galord', I('orderby').value);
-               }
-
-               return s;
-       }
-};
index 9d112ca61ce50adeeb99354d070c0effc72006e4..d7b4bb19100fbf769f24043937478d381e29bc18 100644 (file)
@@ -1 +1,199 @@
-jQuery(document).ready(function(c){var b,e,a,d=false;e=function(){b=c("#media-items").sortable({items:"div.media-item",placeholder:"sorthelper",axis:"y",distance:2,handle:"div.filename",stop:function(i,h){var g=c("#media-items").sortable("toArray"),f=g.length;c.each(g,function(k,l){var j=d?(f-k):(1+k);c("#"+l+" .menu_order input").val(j)})}})};sortIt=function(){var g=c(".menu_order_input"),f=g.length;g.each(function(j){var h=d?(f-j):(1+j);c(this).val(h)})};clearAll=function(f){f=f||0;c(".menu_order_input").each(function(){if(this.value=="0"||f){this.value=""}})};c("#asc").click(function(){d=false;sortIt();return false});c("#desc").click(function(){d=true;sortIt();return false});c("#clear").click(function(){clearAll(1);return false});c("#showall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").hide();c("a.describe-toggle-off, table.slidetoggle").show();c("img.pinkynail").toggle(false);return false});c("#hideall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").show();c("a.describe-toggle-off, table.slidetoggle").hide();c("img.pinkynail").toggle(true);return false});e();clearAll();if(c("#media-items>*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.setup()},getWin:function(){return window.dialogArguments||opener||parent||top},setup:function(){var f=this,c,d=f.editor,i,e,h,b,j;if(!f.mcemode){return}f.el=d.selection.getNode();if(f.el.nodeName!="IMG"||!d.dom.hasClass(f.el,"wpGallery")){if((i=d.dom.select("img.wpGallery"))&&i[0]){f.el=i[0]}else{if(getUserSetting("galfile")=="1"){f.I("linkto-file").checked="checked"}if(getUserSetting("galdesc")=="1"){f.I("order-desc").checked="checked"}if(getUserSetting("galcols")){f.I("columns").value=getUserSetting("galcols")}if(getUserSetting("galord")){f.I("orderby").value=getUserSetting("galord")}jQuery("#insert-gallery").show();return}}c=d.dom.getAttrib(f.el,"title");c=d.dom.decode(c);if(c){jQuery("#update-gallery").show();f.is_update=true;e=c.match(/columns=['"]([0-9]+)['"]/);h=c.match(/link=['"]([^'"]+)['"]/i);b=c.match(/order=['"]([^'"]+)['"]/i);j=c.match(/orderby=['"]([^'"]+)['"]/i);if(h&&h[1]){f.I("linkto-file").checked="checked"}if(b&&b[1]){f.I("order-desc").checked="checked"}if(e&&e[1]){f.I("columns").value=""+e[1]}if(j&&j[1]){f.I("orderby").value=j[1]}}else{jQuery("#insert-gallery").show()}},update:function(){var b=this,a=b.editor,d="",c;if(!b.mcemode||!b.is_update){c="[gallery"+b.getSettings()+"]";b.getWin().send_to_editor(c);return}if(b.el.nodeName!="IMG"){return}d=a.dom.decode(a.dom.getAttrib(b.el,"title"));d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,"");d+=b.getSettings();a.dom.setAttrib(b.el,"title",d);b.getWin().tb_remove()},getSettings:function(){var a=this.I,b="";if(a("linkto-file").checked){b+=' link="file"';setUserSetting("galfile","1")}if(a("order-desc").checked){b+=' order="DESC"';setUserSetting("galdesc","1")}if(a("columns").value!=3){b+=' columns="'+a("columns").value+'"';setUserSetting("galcols",a("columns").value)}if(a("orderby").value!="menu_order"){b+=' orderby="'+a("orderby").value+'"';setUserSetting("galord",a("orderby").value)}return b}};
\ No newline at end of file
+jQuery(document).ready(function($) {
+       var gallerySortable, gallerySortableInit, w, desc = false;
+
+       gallerySortableInit = function() {
+               gallerySortable = $('#media-items').sortable( {
+                       items: 'div.media-item',
+                       placeholder: 'sorthelper',
+                       axis: 'y',
+                       distance: 2,
+                       handle: 'div.filename',
+                       stop: function(e, ui) {
+                               // When an update has occurred, adjust the order for each item
+                               var all = $('#media-items').sortable('toArray'), len = all.length;
+                               $.each(all, function(i, id) {
+                                       var order = desc ? (len - i) : (1 + i);
+                                       $('#' + id + ' .menu_order input').val(order);
+                               });
+                       }
+               } );
+       }
+
+       sortIt = function() {
+               var all = $('.menu_order_input'), len = all.length;
+               all.each(function(i){
+                       var order = desc ? (len - i) : (1 + i);
+                       $(this).val(order);
+               });
+       }
+
+       clearAll = function(c) {
+               c = c || 0;
+               $('.menu_order_input').each(function(){
+                       if ( this.value == '0' || c ) this.value = '';
+               });
+       }
+
+       $('#asc').click(function(){desc = false; sortIt(); return false;});
+       $('#desc').click(function(){desc = true; sortIt(); return false;});
+       $('#clear').click(function(){clearAll(1); return false;});
+       $('#showall').click(function(){
+               $('#sort-buttons span a').toggle();
+               $('a.describe-toggle-on').hide();
+               $('a.describe-toggle-off, table.slidetoggle').show();
+               $('img.pinkynail').toggle(false);
+               return false;
+       });
+       $('#hideall').click(function(){
+               $('#sort-buttons span a').toggle();
+               $('a.describe-toggle-on').show();
+               $('a.describe-toggle-off, table.slidetoggle').hide();
+               $('img.pinkynail').toggle(true);
+               return false;
+       });
+
+       // initialize sortable
+       gallerySortableInit();
+       clearAll();
+
+       if ( $('#media-items>*').length > 1 ) {
+               w = wpgallery.getWin();
+
+               $('#save-all, #gallery-settings').show();
+               if ( typeof w.tinyMCE != 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
+                       wpgallery.mcemode = true;
+                       wpgallery.init();
+               } else {
+                       $('#insert-gallery').show();
+               }
+       }
+});
+
+jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
+
+/* gallery settings */
+var tinymce = null, tinyMCE, wpgallery;
+
+wpgallery = {
+       mcemode : false,
+       editor : {},
+       dom : {},
+       is_update : false,
+       el : {},
+
+       I : function(e) {
+               return document.getElementById(e);
+       },
+
+       init: function() {
+               var t = this, li, q, i, it, w = t.getWin();
+
+               if ( ! t.mcemode ) return;
+
+               li = ('' + document.location.search).replace(/^\?/, '').split('&');
+               q = {};
+               for (i=0; i<li.length; i++) {
+                       it = li[i].split('=');
+                       q[unescape(it[0])] = unescape(it[1]);
+               }
+
+               if (q.mce_rdomain)
+                       document.domain = q.mce_rdomain;
+
+               // Find window & API
+               tinymce = w.tinymce;
+               tinyMCE = w.tinyMCE;
+               t.editor = tinymce.EditorManager.activeEditor;
+
+               t.setup();
+       },
+
+       getWin : function() {
+               return window.dialogArguments || opener || parent || top;
+       },
+
+       setup : function() {
+               var t = this, a, ed = t.editor, g, columns, link, order, orderby;
+               if ( ! t.mcemode ) return;
+
+               t.el = ed.selection.getNode();
+
+               if ( t.el.nodeName != 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
+                       if ( (g = ed.dom.select('img.wpGallery')) && g[0] ) {
+                               t.el = g[0];
+                       } else {
+                               if ( getUserSetting('galfile') == '1' ) t.I('linkto-file').checked = "checked";
+                               if ( getUserSetting('galdesc') == '1' ) t.I('order-desc').checked = "checked";
+                               if ( getUserSetting('galcols') ) t.I('columns').value = getUserSetting('galcols');
+                               if ( getUserSetting('galord') ) t.I('orderby').value = getUserSetting('galord');
+                               jQuery('#insert-gallery').show();
+                               return;
+                       }
+               }
+
+               a = ed.dom.getAttrib(t.el, 'title');
+               a = ed.dom.decode(a);
+
+               if ( a ) {
+                       jQuery('#update-gallery').show();
+                       t.is_update = true;
+
+                       columns = a.match(/columns=['"]([0-9]+)['"]/);
+                       link = a.match(/link=['"]([^'"]+)['"]/i);
+                       order = a.match(/order=['"]([^'"]+)['"]/i);
+                       orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
+
+                       if ( link && link[1] ) t.I('linkto-file').checked = "checked";
+                       if ( order && order[1] ) t.I('order-desc').checked = "checked";
+                       if ( columns && columns[1] ) t.I('columns').value = ''+columns[1];
+                       if ( orderby && orderby[1] ) t.I('orderby').value = orderby[1];
+               } else {
+                       jQuery('#insert-gallery').show();
+               }
+       },
+
+       update : function() {
+               var t = this, ed = t.editor, all = '', s;
+
+               if ( ! t.mcemode || ! t.is_update ) {
+                       s = '[gallery'+t.getSettings()+']';
+                       t.getWin().send_to_editor(s);
+                       return;
+               }
+
+               if (t.el.nodeName != 'IMG') return;
+
+               all = ed.dom.decode(ed.dom.getAttrib(t.el, 'title'));
+               all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
+               all += t.getSettings();
+
+               ed.dom.setAttrib(t.el, 'title', all);
+               t.getWin().tb_remove();
+       },
+
+       getSettings : function() {
+               var I = this.I, s = '';
+
+               if ( I('linkto-file').checked ) {
+                       s += ' link="file"';
+                       setUserSetting('galfile', '1');
+               }
+
+               if ( I('order-desc').checked ) {
+                       s += ' order="DESC"';
+                       setUserSetting('galdesc', '1');
+               }
+
+               if ( I('columns').value != 3 ) {
+                       s += ' columns="'+I('columns').value+'"';
+                       setUserSetting('galcols', I('columns').value);
+               }
+
+               if ( I('orderby').value != 'menu_order' ) {
+                       s += ' orderby="'+I('orderby').value+'"';
+                       setUserSetting('galord', I('orderby').value);
+               }
+
+               return s;
+       }
+};
diff --git a/wp-admin/js/gallery.min.js b/wp-admin/js/gallery.min.js
new file mode 100644 (file)
index 0000000..9d112ca
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(c){var b,e,a,d=false;e=function(){b=c("#media-items").sortable({items:"div.media-item",placeholder:"sorthelper",axis:"y",distance:2,handle:"div.filename",stop:function(i,h){var g=c("#media-items").sortable("toArray"),f=g.length;c.each(g,function(k,l){var j=d?(f-k):(1+k);c("#"+l+" .menu_order input").val(j)})}})};sortIt=function(){var g=c(".menu_order_input"),f=g.length;g.each(function(j){var h=d?(f-j):(1+j);c(this).val(h)})};clearAll=function(f){f=f||0;c(".menu_order_input").each(function(){if(this.value=="0"||f){this.value=""}})};c("#asc").click(function(){d=false;sortIt();return false});c("#desc").click(function(){d=true;sortIt();return false});c("#clear").click(function(){clearAll(1);return false});c("#showall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").hide();c("a.describe-toggle-off, table.slidetoggle").show();c("img.pinkynail").toggle(false);return false});c("#hideall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").show();c("a.describe-toggle-off, table.slidetoggle").hide();c("img.pinkynail").toggle(true);return false});e();clearAll();if(c("#media-items>*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.setup()},getWin:function(){return window.dialogArguments||opener||parent||top},setup:function(){var f=this,c,d=f.editor,i,e,h,b,j;if(!f.mcemode){return}f.el=d.selection.getNode();if(f.el.nodeName!="IMG"||!d.dom.hasClass(f.el,"wpGallery")){if((i=d.dom.select("img.wpGallery"))&&i[0]){f.el=i[0]}else{if(getUserSetting("galfile")=="1"){f.I("linkto-file").checked="checked"}if(getUserSetting("galdesc")=="1"){f.I("order-desc").checked="checked"}if(getUserSetting("galcols")){f.I("columns").value=getUserSetting("galcols")}if(getUserSetting("galord")){f.I("orderby").value=getUserSetting("galord")}jQuery("#insert-gallery").show();return}}c=d.dom.getAttrib(f.el,"title");c=d.dom.decode(c);if(c){jQuery("#update-gallery").show();f.is_update=true;e=c.match(/columns=['"]([0-9]+)['"]/);h=c.match(/link=['"]([^'"]+)['"]/i);b=c.match(/order=['"]([^'"]+)['"]/i);j=c.match(/orderby=['"]([^'"]+)['"]/i);if(h&&h[1]){f.I("linkto-file").checked="checked"}if(b&&b[1]){f.I("order-desc").checked="checked"}if(e&&e[1]){f.I("columns").value=""+e[1]}if(j&&j[1]){f.I("orderby").value=j[1]}}else{jQuery("#insert-gallery").show()}},update:function(){var b=this,a=b.editor,d="",c;if(!b.mcemode||!b.is_update){c="[gallery"+b.getSettings()+"]";b.getWin().send_to_editor(c);return}if(b.el.nodeName!="IMG"){return}d=a.dom.decode(a.dom.getAttrib(b.el,"title"));d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,"");d+=b.getSettings();a.dom.setAttrib(b.el,"title",d);b.getWin().tb_remove()},getSettings:function(){var a=this.I,b="";if(a("linkto-file").checked){b+=' link="file"';setUserSetting("galfile","1")}if(a("order-desc").checked){b+=' order="DESC"';setUserSetting("galdesc","1")}if(a("columns").value!=3){b+=' columns="'+a("columns").value+'"';setUserSetting("galcols",a("columns").value)}if(a("orderby").value!="menu_order"){b+=' orderby="'+a("orderby").value+'"';setUserSetting("galord",a("orderby").value)}return b}};
\ No newline at end of file
diff --git a/wp-admin/js/image-edit.dev.js b/wp-admin/js/image-edit.dev.js
deleted file mode 100644 (file)
index e4dfbda..0000000
+++ /dev/null
@@ -1,572 +0,0 @@
-var imageEdit;
-
-(function($) {
-imageEdit = {
-       iasapi : {},
-       hold : {},
-       postid : '',
-
-       intval : function(f) {
-               return f | 0;
-       },
-
-       setDisabled : function(el, s) {
-               if ( s ) {
-                       el.removeClass('disabled');
-                       $('input', el).removeAttr('disabled');
-               } else {
-                       el.addClass('disabled');
-                       $('input', el).prop('disabled', true);
-               }
-       },
-
-       init : function(postid, nonce) {
-               var t = this, old = $('#image-editor-' + t.postid),
-                       x = t.intval( $('#imgedit-x-' + postid).val() ),
-                       y = t.intval( $('#imgedit-y-' + postid).val() );
-
-               if ( t.postid != postid && old.length )
-                       t.close(t.postid);
-
-               t.hold['w'] = t.hold['ow'] = x;
-               t.hold['h'] = t.hold['oh'] = y;
-               t.hold['xy_ratio'] = x / y;
-               t.hold['sizer'] = parseFloat( $('#imgedit-sizer-' + postid).val() );
-               t.postid = postid;
-               $('#imgedit-response-' + postid).empty();
-
-               $('input[type="text"]', '#imgedit-panel-' + postid).keypress(function(e) {
-                       var k = e.keyCode;
-
-                       if ( 36 < k && k < 41 )
-                               $(this).blur()
-
-                       if ( 13 == k ) {
-                               e.preventDefault();
-                               e.stopPropagation();
-                               return false;
-                       }
-               });
-       },
-
-       toggleEditor : function(postid, toggle) {
-               var wait = $('#imgedit-wait-' + postid);
-
-               if ( toggle )
-                       wait.height( $('#imgedit-panel-' + postid).height() ).fadeIn('fast');
-               else
-                       wait.fadeOut('fast');
-       },
-
-       toggleHelp : function(el) {
-               $(el).siblings('.imgedit-help').slideToggle('fast');
-               return false;
-       },
-
-       getTarget : function(postid) {
-               return $('input[name="imgedit-target-' + postid + '"]:checked', '#imgedit-save-target-' + postid).val() || 'full';
-       },
-
-       scaleChanged : function(postid, x) {
-               var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
-               warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '';
-
-               if ( x ) {
-                       h1 = (w.val() != '') ? this.intval( w.val() / this.hold['xy_ratio'] ) : '';
-                       h.val( h1 );
-               } else {
-                       w1 = (h.val() != '') ? this.intval( h.val() * this.hold['xy_ratio'] ) : '';
-                       w.val( w1 );
-               }
-
-               if ( ( h1 && h1 > this.hold['oh'] ) || ( w1 && w1 > this.hold['ow'] ) )
-                       warn.css('visibility', 'visible');
-               else
-                       warn.css('visibility', 'hidden');
-       },
-
-       getSelRatio : function(postid) {
-               var x = this.hold['w'], y = this.hold['h'],
-                       X = this.intval( $('#imgedit-crop-width-' + postid).val() ),
-                       Y = this.intval( $('#imgedit-crop-height-' + postid).val() );
-
-               if ( X && Y )
-                       return X + ':' + Y;
-
-               if ( x && y )
-                       return x + ':' + y;
-
-               return '1:1';
-       },
-
-       filterHistory : function(postid, setSize) {
-               // apply undo state to history
-               var history = $('#imgedit-history-' + postid).val(), pop, n, o, i, op = [];
-
-               if ( history != '' ) {
-                       history = JSON.parse(history);
-                       pop = this.intval( $('#imgedit-undone-' + postid).val() );
-                       if ( pop > 0 ) {
-                               while ( pop > 0 ) {
-                                       history.pop();
-                                       pop--;
-                               }
-                       }
-
-                       if ( setSize ) {
-                               if ( !history.length ) {
-                                       this.hold['w'] = this.hold['ow'];
-                                       this.hold['h'] = this.hold['oh'];
-                                       return '';
-                               }
-
-                               // restore
-                               o = history[history.length - 1];
-                               o = o.c || o.r || o.f || false;
-
-                               if ( o ) {
-                                       this.hold['w'] = o.fw;
-                                       this.hold['h'] = o.fh;
-                               }
-                       }
-
-                       // filter the values
-                       for ( n in history ) {
-                               i = history[n];
-                               if ( i.hasOwnProperty('c') ) {
-                                       op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h } };
-                               } else if ( i.hasOwnProperty('r') ) {
-                                       op[n] = { 'r': i.r.r };
-                               } else if ( i.hasOwnProperty('f') ) {
-                                       op[n] = { 'f': i.f.f };
-                               }
-                       }
-                       return JSON.stringify(op);
-               }
-               return '';
-       },
-
-       refreshEditor : function(postid, nonce, callback) {
-               var t = this, data, img;
-
-               t.toggleEditor(postid, 1);
-               data = {
-                       'action': 'imgedit-preview',
-                       '_ajax_nonce': nonce,
-                       'postid': postid,
-                       'history': t.filterHistory(postid, 1),
-                       'rand': t.intval(Math.random() * 1000000)
-               };
-
-               img = $('<img id="image-preview-' + postid + '" />');
-               img.load( function() {
-                       var max1, max2, parent = $('#imgedit-crop-' + postid), t = imageEdit;
-
-                       parent.empty().append(img);
-
-                       // w, h are the new full size dims
-                       max1 = Math.max( t.hold.w, t.hold.h );
-                       max2 = Math.max( $(img).width(), $(img).height() );
-                       t.hold['sizer'] = max1 > max2 ? max2 / max1 : 1;
-
-                       t.initCrop(postid, img, parent);
-                       t.setCropSelection(postid, 0);
-
-                       if ( (typeof callback != "unknown") && callback != null )
-                               callback();
-
-                       if ( $('#imgedit-history-' + postid).val() && $('#imgedit-undone-' + postid).val() == 0 )
-                               $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).removeAttr('disabled');
-                       else
-                               $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).prop('disabled', true);
-
-                       t.toggleEditor(postid, 0);
-               }).error(function(){
-                       $('#imgedit-crop-' + postid).empty().append('<div class="error"><p>' + imageEditL10n.error + '</p></div>');
-                       t.toggleEditor(postid, 0);
-               }).attr('src', ajaxurl + '?' + $.param(data));
-       },
-
-       action : function(postid, nonce, action) {
-               var t = this, data, w, h, fw, fh;
-
-               if ( t.notsaved(postid) )
-                       return false;
-
-               data = {
-                       'action': 'image-editor',
-                       '_ajax_nonce': nonce,
-                       'postid': postid
-               };
-
-               if ( 'scale' == action ) {
-                       w = $('#imgedit-scale-width-' + postid),
-                       h = $('#imgedit-scale-height-' + postid),
-                       fw = t.intval(w.val()),
-                       fh = t.intval(h.val());
-
-                       if ( fw < 1 ) {
-                               w.focus();
-                               return false;
-                       } else if ( fh < 1 ) {
-                               h.focus();
-                               return false;
-                       }
-
-                       if ( fw == t.hold.ow || fh == t.hold.oh )
-                               return false;
-
-                       data['do'] = 'scale';
-                       data['fwidth'] = fw;
-                       data['fheight'] = fh;
-               } else if ( 'restore' == action ) {
-                       data['do'] = 'restore';
-               } else {
-                       return false;
-               }
-
-               t.toggleEditor(postid, 1);
-               $.post(ajaxurl, data, function(r) {
-                       $('#image-editor-' + postid).empty().append(r);
-                       t.toggleEditor(postid, 0);
-               });
-       },
-
-       save : function(postid, nonce) {
-               var data, target = this.getTarget(postid), history = this.filterHistory(postid, 0);
-
-               if ( '' == history )
-                       return false;
-
-               this.toggleEditor(postid, 1);
-               data = {
-                       'action': 'image-editor',
-                       '_ajax_nonce': nonce,
-                       'postid': postid,
-                       'history': history,
-                       'target': target,
-                       'do': 'save'
-               };
-
-               $.post(ajaxurl, data, function(r) {
-                       var ret = JSON.parse(r);
-
-                       if ( ret.error ) {
-                               $('#imgedit-response-' + postid).html('<div class="error"><p>' + ret.error + '</p><div>');
-                               imageEdit.close(postid);
-                               return;
-                       }
-
-                       if ( ret.fw && ret.fh )
-                               $('#media-dims-' + postid).html( ret.fw + ' &times; ' + ret.fh );
-
-                       if ( ret.thumbnail )
-                               $('.thumbnail', '#thumbnail-head-' + postid).attr('src', ''+ret.thumbnail);
-
-                       if ( ret.msg )
-                               $('#imgedit-response-' + postid).html('<div class="updated"><p>' + ret.msg + '</p></div>');
-
-                       imageEdit.close(postid);
-               });
-       },
-
-       open : function(postid, nonce) {
-               var data, elem = $('#image-editor-' + postid), head = $('#media-head-' + postid),
-                       btn = $('#imgedit-open-btn-' + postid), spin = btn.siblings('img');
-
-               btn.prop('disabled', true);
-               spin.css('visibility', 'visible');
-
-               data = {
-                       'action': 'image-editor',
-                       '_ajax_nonce': nonce,
-                       'postid': postid,
-                       'do': 'open'
-               };
-
-               elem.load(ajaxurl, data, function() {
-                       elem.fadeIn('fast');
-                       head.fadeOut('fast', function(){
-                               btn.removeAttr('disabled');
-                               spin.css('visibility', 'hidden');
-                       });
-               });
-       },
-
-       imgLoaded : function(postid) {
-               var img = $('#image-preview-' + postid), parent = $('#imgedit-crop-' + postid);
-
-               this.initCrop(postid, img, parent);
-               this.setCropSelection(postid, 0);
-               this.toggleEditor(postid, 0);
-       },
-
-       initCrop : function(postid, image, parent) {
-               var t = this, selW = $('#imgedit-sel-width-' + postid),
-                       selH = $('#imgedit-sel-height-' + postid);
-
-               t.iasapi = $(image).imgAreaSelect({
-                       parent: parent,
-                       instance: true,
-                       handles: true,
-                       keys: true,
-                       minWidth: 3,
-                       minHeight: 3,
-
-                       onInit: function(img, c) {
-                               parent.children().mousedown(function(e){
-                                       var ratio = false, sel, defRatio;
-
-                                       if ( e.shiftKey ) {
-                                               sel = t.iasapi.getSelection();
-                                               defRatio = t.getSelRatio(postid);
-                                               ratio = ( sel && sel.width && sel.height ) ? sel.width + ':' + sel.height : defRatio;
-                                       }
-
-                                       t.iasapi.setOptions({
-                                               aspectRatio: ratio
-                                       });
-                               });
-                       },
-
-                       onSelectStart: function(img, c) {
-                               imageEdit.setDisabled($('#imgedit-crop-sel-' + postid), 1);
-                       },
-
-                       onSelectEnd: function(img, c) {
-                               imageEdit.setCropSelection(postid, c);
-                       },
-
-                       onSelectChange: function(img, c) {
-                               var sizer = imageEdit.hold.sizer;
-                               selW.val( imageEdit.round(c.width / sizer) );
-                               selH.val( imageEdit.round(c.height / sizer) );
-                       }
-               });
-       },
-
-       setCropSelection : function(postid, c) {
-               var sel, min = $('#imgedit-minthumb-' + postid).val() || '128:128',
-                       sizer = this.hold['sizer'];
-                       min = min.split(':');
-                       c = c || 0;
-
-               if ( !c || ( c.width < 3 && c.height < 3 ) ) {
-                       this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0);
-                       this.setDisabled($('#imgedit-crop-sel-' + postid), 0);
-                       $('#imgedit-sel-width-' + postid).val('');
-                       $('#imgedit-sel-height-' + postid).val('');
-                       $('#imgedit-selection-' + postid).val('');
-                       return false;
-               }
-
-               if ( c.width < (min[0] * sizer) && c.height < (min[1] * sizer) ) {
-                       this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0);
-                       $('#imgedit-selection-' + postid).val('');
-                       return false;
-               }
-
-               sel = { 'x': c.x1, 'y': c.y1, 'w': c.width, 'h': c.height };
-               this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 1);
-               $('#imgedit-selection-' + postid).val( JSON.stringify(sel) );
-       },
-
-       close : function(postid, warn) {
-               warn = warn || false;
-
-               if ( warn && this.notsaved(postid) )
-                       return false;
-
-               this.iasapi = {};
-               this.hold = {};
-               $('#image-editor-' + postid).fadeOut('fast', function() {
-                       $('#media-head-' + postid).fadeIn('fast');
-                       $(this).empty();
-               });
-       },
-
-       notsaved : function(postid) {
-               var h = $('#imgedit-history-' + postid).val(),
-                       history = (h != '') ? JSON.parse(h) : new Array(),
-                       pop = this.intval( $('#imgedit-undone-' + postid).val() );
-
-               if ( pop < history.length ) {
-                       if ( confirm( $('#imgedit-leaving-' + postid).html() ) )
-                               return false;
-                       return true;
-               }
-               return false;
-       },
-
-       addStep : function(op, postid, nonce) {
-               var t = this, elem = $('#imgedit-history-' + postid),
-               history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array(),
-               undone = $('#imgedit-undone-' + postid),
-               pop = t.intval(undone.val());
-
-               while ( pop > 0 ) {
-                       history.pop();
-                       pop--;
-               }
-               undone.val(0); // reset
-
-               history.push(op);
-               elem.val( JSON.stringify(history) );
-
-               t.refreshEditor(postid, nonce, function() {
-                       t.setDisabled($('#image-undo-' + postid), true);
-                       t.setDisabled($('#image-redo-' + postid), false);
-               });
-       },
-
-       rotate : function(angle, postid, nonce, t) {
-               if ( $(t).hasClass('disabled') )
-                       return false;
-
-               this.addStep({ 'r': { 'r': angle, 'fw': this.hold['h'], 'fh': this.hold['w'] }}, postid, nonce);
-       },
-
-       flip : function (axis, postid, nonce, t) {
-               if ( $(t).hasClass('disabled') )
-                       return false;
-
-               this.addStep({ 'f': { 'f': axis, 'fw': this.hold['w'], 'fh': this.hold['h'] }}, postid, nonce);
-       },
-
-       crop : function (postid, nonce, t) {
-               var sel = $('#imgedit-selection-' + postid).val(),
-                       w = this.intval( $('#imgedit-sel-width-' + postid).val() ),
-                       h = this.intval( $('#imgedit-sel-height-' + postid).val() );
-
-               if ( $(t).hasClass('disabled') || sel == '' )
-                       return false;
-
-               sel = JSON.parse(sel);
-               if ( sel.w > 0 && sel.h > 0 && w > 0 && h > 0 ) {
-                       sel['fw'] = w;
-                       sel['fh'] = h;
-                       this.addStep({ 'c': sel }, postid, nonce);
-               }
-       },
-
-       undo : function (postid, nonce) {
-               var t = this, button = $('#image-undo-' + postid), elem = $('#imgedit-undone-' + postid),
-                       pop = t.intval( elem.val() ) + 1;
-
-               if ( button.hasClass('disabled') )
-                       return;
-
-               elem.val(pop);
-               t.refreshEditor(postid, nonce, function() {
-                       var elem = $('#imgedit-history-' + postid),
-                       history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array();
-
-                       t.setDisabled($('#image-redo-' + postid), true);
-                       t.setDisabled(button, pop < history.length);
-               });
-       },
-
-       redo : function(postid, nonce) {
-               var t = this, button = $('#image-redo-' + postid), elem = $('#imgedit-undone-' + postid),
-                       pop = t.intval( elem.val() ) - 1;
-
-               if ( button.hasClass('disabled') )
-                       return;
-
-               elem.val(pop);
-               t.refreshEditor(postid, nonce, function() {
-                       t.setDisabled($('#image-undo-' + postid), true);
-                       t.setDisabled(button, pop > 0);
-               });
-       },
-
-       setNumSelection : function(postid) {
-               var sel, elX = $('#imgedit-sel-width-' + postid), elY = $('#imgedit-sel-height-' + postid),
-                       x = this.intval( elX.val() ), y = this.intval( elY.val() ),
-                       img = $('#image-preview-' + postid), imgh = img.height(), imgw = img.width(),
-                       sizer = this.hold['sizer'], x1, y1, x2, y2, ias = this.iasapi;
-
-               if ( x < 1 ) {
-                       elX.val('');
-                       return false;
-               }
-
-               if ( y < 1 ) {
-                       elY.val('');
-                       return false;
-               }
-
-               if ( x && y && ( sel = ias.getSelection() ) ) {
-                       x2 = sel.x1 + Math.round( x * sizer );
-                       y2 = sel.y1 + Math.round( y * sizer );
-                       x1 = sel.x1;
-                       y1 = sel.y1;
-
-                       if ( x2 > imgw ) {
-                               x1 = 0;
-                               x2 = imgw;
-                               elX.val( Math.round( x2 / sizer ) );
-                       }
-
-                       if ( y2 > imgh ) {
-                               y1 = 0;
-                               y2 = imgh;
-                               elY.val( Math.round( y2 / sizer ) );
-                       }
-
-                       ias.setSelection( x1, y1, x2, y2 );
-                       ias.update();
-                       this.setCropSelection(postid, ias.getSelection());
-               }
-       },
-
-       round : function(num) {
-               var s;
-               num = Math.round(num);
-
-               if ( this.hold.sizer > 0.6 )
-                       return num;
-
-               s = num.toString().slice(-1);
-
-               if ( '1' == s )
-                       return num - 1;
-               else if ( '9' == s )
-                       return num + 1;
-
-               return num;
-       },
-
-       setRatioSelection : function(postid, n, el) {
-               var sel, r, x = this.intval( $('#imgedit-crop-width-' + postid).val() ),
-                       y = this.intval( $('#imgedit-crop-height-' + postid).val() ),
-                       h = $('#image-preview-' + postid).height();
-
-               if ( !this.intval( $(el).val() ) ) {
-                       $(el).val('');
-                       return;
-               }
-
-               if ( x && y ) {
-                       this.iasapi.setOptions({
-                               aspectRatio: x + ':' + y
-                       });
-
-                       if ( sel = this.iasapi.getSelection(true) ) {
-                               r = Math.ceil( sel.y1 + ((sel.x2 - sel.x1) / (x / y)) );
-
-                               if ( r > h ) {
-                                       r = h;
-                                       if ( n )
-                                               $('#imgedit-crop-height-' + postid).val('');
-                                       else
-                                               $('#imgedit-crop-width-' + postid).val('');
-                               }
-
-                               this.iasapi.setSelection( sel.x1, sel.y1, sel.x2, r );
-                               this.iasapi.update();
-                       }
-               }
-       }
-}
-})(jQuery);
index dd15d165d6e9dc326272a15b6e3ca4e06318930e..b11e2d3ab00de41893e99b7c396c1d1a60ae6089 100644 (file)
@@ -1 +1,573 @@
-var imageEdit;(function(a){imageEdit={iasapi:{},hold:{},postid:"",intval:function(b){return b|0},setDisabled:function(c,b){if(b){c.removeClass("disabled");a("input",c).removeAttr("disabled")}else{c.addClass("disabled");a("input",c).prop("disabled",true)}},init:function(g,e){var d=this,c=a("#image-editor-"+d.postid),b=d.intval(a("#imgedit-x-"+g).val()),f=d.intval(a("#imgedit-y-"+g).val());if(d.postid!=g&&c.length){d.close(d.postid)}d.hold.w=d.hold.ow=b;d.hold.h=d.hold.oh=f;d.hold.xy_ratio=b/f;d.hold.sizer=parseFloat(a("#imgedit-sizer-"+g).val());d.postid=g;a("#imgedit-response-"+g).empty();a('input[type="text"]',"#imgedit-panel-"+g).keypress(function(i){var h=i.keyCode;if(36<h&&h<41){a(this).blur()}if(13==h){i.preventDefault();i.stopPropagation();return false}})},toggleEditor:function(d,b){var c=a("#imgedit-wait-"+d);if(b){c.height(a("#imgedit-panel-"+d).height()).fadeIn("fast")}else{c.fadeOut("fast")}},toggleHelp:function(b){a(b).siblings(".imgedit-help").slideToggle("fast");return false},getTarget:function(b){return a('input[name="imgedit-target-'+b+'"]:checked',"#imgedit-save-target-"+b).val()||"full"},scaleChanged:function(i,b){var d=a("#imgedit-scale-width-"+i),f=a("#imgedit-scale-height-"+i),g=a("#imgedit-scale-warn-"+i),c="",e="";if(b){e=(d.val()!="")?this.intval(d.val()/this.hold.xy_ratio):"";f.val(e)}else{c=(f.val()!="")?this.intval(f.val()*this.hold.xy_ratio):"";d.val(c)}if((e&&e>this.hold.oh)||(c&&c>this.hold.ow)){g.css("visibility","visible")}else{g.css("visibility","hidden")}},getSelRatio:function(f){var b=this.hold.w,e=this.hold.h,d=this.intval(a("#imgedit-crop-width-"+f).val()),c=this.intval(a("#imgedit-crop-height-"+f).val());if(d&&c){return d+":"+c}if(b&&e){return b+":"+e}return"1:1"},filterHistory:function(j,f){var d=a("#imgedit-history-"+j).val(),b,h,e,c,g=[];if(d!=""){d=JSON.parse(d);b=this.intval(a("#imgedit-undone-"+j).val());if(b>0){while(b>0){d.pop();b--}}if(f){if(!d.length){this.hold.w=this.hold.ow;this.hold.h=this.hold.oh;return""}e=d[d.length-1];e=e.c||e.r||e.f||false;if(e){this.hold.w=e.fw;this.hold.h=e.fh}}for(h in d){c=d[h];if(c.hasOwnProperty("c")){g[h]={c:{x:c.c.x,y:c.c.y,w:c.c.w,h:c.c.h}}}else{if(c.hasOwnProperty("r")){g[h]={r:c.r.r}}else{if(c.hasOwnProperty("f")){g[h]={f:c.f.f}}}}}return JSON.stringify(g)}return""},refreshEditor:function(g,d,f){var c=this,e,b;c.toggleEditor(g,1);e={action:"imgedit-preview",_ajax_nonce:d,postid:g,history:c.filterHistory(g,1),rand:c.intval(Math.random()*1000000)};b=a('<img id="image-preview-'+g+'" />');b.load(function(){var i,h,k=a("#imgedit-crop-"+g),j=imageEdit;k.empty().append(b);i=Math.max(j.hold.w,j.hold.h);h=Math.max(a(b).width(),a(b).height());j.hold.sizer=i>h?h/i:1;j.initCrop(g,b,k);j.setCropSelection(g,0);if((typeof f!="unknown")&&f!=null){f()}if(a("#imgedit-history-"+g).val()&&a("#imgedit-undone-"+g).val()==0){a("input.imgedit-submit-btn","#imgedit-panel-"+g).removeAttr("disabled")}else{a("input.imgedit-submit-btn","#imgedit-panel-"+g).prop("disabled",true)}j.toggleEditor(g,0)}).error(function(){a("#imgedit-crop-"+g).empty().append('<div class="error"><p>'+imageEditL10n.error+"</p></div>");c.toggleEditor(g,0)}).attr("src",ajaxurl+"?"+a.param(e))},action:function(b,g,c){var j=this,e,i,f,d,k;if(j.notsaved(b)){return false}e={action:"image-editor",_ajax_nonce:g,postid:b};if("scale"==c){i=a("#imgedit-scale-width-"+b),f=a("#imgedit-scale-height-"+b),d=j.intval(i.val()),k=j.intval(f.val());if(d<1){i.focus();return false}else{if(k<1){f.focus();return false}}if(d==j.hold.ow||k==j.hold.oh){return false}e["do"]="scale";e.fwidth=d;e.fheight=k}else{if("restore"==c){e["do"]="restore"}else{return false}}j.toggleEditor(b,1);a.post(ajaxurl,e,function(h){a("#image-editor-"+b).empty().append(h);j.toggleEditor(b,0)})},save:function(f,b){var c,e=this.getTarget(f),d=this.filterHistory(f,0);if(""==d){return false}this.toggleEditor(f,1);c={action:"image-editor",_ajax_nonce:b,postid:f,history:d,target:e,"do":"save"};a.post(ajaxurl,c,function(h){var g=JSON.parse(h);if(g.error){a("#imgedit-response-"+f).html('<div class="error"><p>'+g.error+"</p><div>");imageEdit.close(f);return}if(g.fw&&g.fh){a("#media-dims-"+f).html(g.fw+" &times; "+g.fh)}if(g.thumbnail){a(".thumbnail","#thumbnail-head-"+f).attr("src",""+g.thumbnail)}if(g.msg){a("#imgedit-response-"+f).html('<div class="updated"><p>'+g.msg+"</p></div>")}imageEdit.close(f)})},open:function(h,d){var f,e=a("#image-editor-"+h),c=a("#media-head-"+h),b=a("#imgedit-open-btn-"+h),g=b.siblings("img");b.prop("disabled",true);g.css("visibility","visible");f={action:"image-editor",_ajax_nonce:d,postid:h,"do":"open"};e.load(ajaxurl,f,function(){e.fadeIn("fast");c.fadeOut("fast",function(){b.removeAttr("disabled");g.css("visibility","hidden")})})},imgLoaded:function(d){var b=a("#image-preview-"+d),c=a("#imgedit-crop-"+d);this.initCrop(d,b,c);this.setCropSelection(d,0);this.toggleEditor(d,0)},initCrop:function(g,e,c){var b=this,d=a("#imgedit-sel-width-"+g),f=a("#imgedit-sel-height-"+g);b.iasapi=a(e).imgAreaSelect({parent:c,instance:true,handles:true,keys:true,minWidth:3,minHeight:3,onInit:function(h,i){c.children().mousedown(function(m){var k=false,l,j;if(m.shiftKey){l=b.iasapi.getSelection();j=b.getSelRatio(g);k=(l&&l.width&&l.height)?l.width+":"+l.height:j}b.iasapi.setOptions({aspectRatio:k})})},onSelectStart:function(h,i){imageEdit.setDisabled(a("#imgedit-crop-sel-"+g),1)},onSelectEnd:function(h,i){imageEdit.setCropSelection(g,i)},onSelectChange:function(h,j){var i=imageEdit.hold.sizer;d.val(imageEdit.round(j.width/i));f.val(imageEdit.round(j.height/i))}})},setCropSelection:function(g,f){var e,b=a("#imgedit-minthumb-"+g).val()||"128:128",d=this.hold.sizer;b=b.split(":");f=f||0;if(!f||(f.width<3&&f.height<3)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);this.setDisabled(a("#imgedit-crop-sel-"+g),0);a("#imgedit-sel-width-"+g).val("");a("#imgedit-sel-height-"+g).val("");a("#imgedit-selection-"+g).val("");return false}if(f.width<(b[0]*d)&&f.height<(b[1]*d)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);a("#imgedit-selection-"+g).val("");return false}e={x:f.x1,y:f.y1,w:f.width,h:f.height};this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),1);a("#imgedit-selection-"+g).val(JSON.stringify(e))},close:function(c,b){b=b||false;if(b&&this.notsaved(c)){return false}this.iasapi={};this.hold={};a("#image-editor-"+c).fadeOut("fast",function(){a("#media-head-"+c).fadeIn("fast");a(this).empty()})},notsaved:function(e){var c=a("#imgedit-history-"+e).val(),d=(c!="")?JSON.parse(c):new Array(),b=this.intval(a("#imgedit-undone-"+e).val());if(b<d.length){if(confirm(a("#imgedit-leaving-"+e).html())){return false}return true}return false},addStep:function(i,h,d){var c=this,e=a("#imgedit-history-"+h),g=(e.val()!="")?JSON.parse(e.val()):new Array(),f=a("#imgedit-undone-"+h),b=c.intval(f.val());while(b>0){g.pop();b--}f.val(0);g.push(i);e.val(JSON.stringify(g));c.refreshEditor(h,d,function(){c.setDisabled(a("#image-undo-"+h),true);c.setDisabled(a("#image-redo-"+h),false)})},rotate:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({r:{r:d,fw:this.hold.h,fh:this.hold.w}},e,c)},flip:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({f:{f:d,fw:this.hold.w,fh:this.hold.h}},e,c)},crop:function(g,e,c){var f=a("#imgedit-selection-"+g).val(),b=this.intval(a("#imgedit-sel-width-"+g).val()),d=this.intval(a("#imgedit-sel-height-"+g).val());if(a(c).hasClass("disabled")||f==""){return false}f=JSON.parse(f);if(f.w>0&&f.h>0&&b>0&&d>0){f.fw=b;f.fh=d;this.addStep({c:f},g,e)}},undo:function(g,e){var d=this,c=a("#image-undo-"+g),f=a("#imgedit-undone-"+g),b=d.intval(f.val())+1;if(c.hasClass("disabled")){return}f.val(b);d.refreshEditor(g,e,function(){var h=a("#imgedit-history-"+g),i=(h.val()!="")?JSON.parse(h.val()):new Array();d.setDisabled(a("#image-redo-"+g),true);d.setDisabled(c,b<i.length)})},redo:function(g,e){var d=this,c=a("#image-redo-"+g),f=a("#imgedit-undone-"+g),b=d.intval(f.val())-1;if(c.hasClass("disabled")){return}f.val(b);d.refreshEditor(g,e,function(){d.setDisabled(a("#image-undo-"+g),true);d.setDisabled(c,b>0)})},setNumSelection:function(c){var g,k=a("#imgedit-sel-width-"+c),j=a("#imgedit-sel-height-"+c),o=this.intval(k.val()),m=this.intval(j.val()),i=a("#image-preview-"+c),p=i.height(),h=i.width(),b=this.hold.sizer,f,n,e,l,d=this.iasapi;if(o<1){k.val("");return false}if(m<1){j.val("");return false}if(o&&m&&(g=d.getSelection())){e=g.x1+Math.round(o*b);l=g.y1+Math.round(m*b);f=g.x1;n=g.y1;if(e>h){f=0;e=h;k.val(Math.round(e/b))}if(l>p){n=0;l=p;j.val(Math.round(l/b))}d.setSelection(f,n,e,l);d.update();this.setCropSelection(c,d.getSelection())}},round:function(b){var c;b=Math.round(b);if(this.hold.sizer>0.6){return b}c=b.toString().slice(-1);if("1"==c){return b-1}else{if("9"==c){return b+1}}return b},setRatioSelection:function(j,i,d){var f,e,b=this.intval(a("#imgedit-crop-width-"+j).val()),g=this.intval(a("#imgedit-crop-height-"+j).val()),c=a("#image-preview-"+j).height();if(!this.intval(a(d).val())){a(d).val("");return}if(b&&g){this.iasapi.setOptions({aspectRatio:b+":"+g});if(f=this.iasapi.getSelection(true)){e=Math.ceil(f.y1+((f.x2-f.x1)/(b/g)));if(e>c){e=c;if(i){a("#imgedit-crop-height-"+j).val("")}else{a("#imgedit-crop-width-"+j).val("")}}this.iasapi.setSelection(f.x1,f.y1,f.x2,e);this.iasapi.update()}}}}})(jQuery);
\ No newline at end of file
+var imageEdit;
+
+(function($) {
+imageEdit = {
+       iasapi : {},
+       hold : {},
+       postid : '',
+
+       intval : function(f) {
+               return f | 0;
+       },
+
+       setDisabled : function(el, s) {
+               if ( s ) {
+                       el.removeClass('disabled');
+                       $('input', el).removeAttr('disabled');
+               } else {
+                       el.addClass('disabled');
+                       $('input', el).prop('disabled', true);
+               }
+       },
+
+       init : function(postid, nonce) {
+               var t = this, old = $('#image-editor-' + t.postid),
+                       x = t.intval( $('#imgedit-x-' + postid).val() ),
+                       y = t.intval( $('#imgedit-y-' + postid).val() );
+
+               if ( t.postid != postid && old.length )
+                       t.close(t.postid);
+
+               t.hold['w'] = t.hold['ow'] = x;
+               t.hold['h'] = t.hold['oh'] = y;
+               t.hold['xy_ratio'] = x / y;
+               t.hold['sizer'] = parseFloat( $('#imgedit-sizer-' + postid).val() );
+               t.postid = postid;
+               $('#imgedit-response-' + postid).empty();
+
+               $('input[type="text"]', '#imgedit-panel-' + postid).keypress(function(e) {
+                       var k = e.keyCode;
+
+                       if ( 36 < k && k < 41 )
+                               $(this).blur()
+
+                       if ( 13 == k ) {
+                               e.preventDefault();
+                               e.stopPropagation();
+                               return false;
+                       }
+               });
+       },
+
+       toggleEditor : function(postid, toggle) {
+               var wait = $('#imgedit-wait-' + postid);
+
+               if ( toggle )
+                       wait.height( $('#imgedit-panel-' + postid).height() ).fadeIn('fast');
+               else
+                       wait.fadeOut('fast');
+       },
+
+       toggleHelp : function(el) {
+               $(el).siblings('.imgedit-help').slideToggle('fast');
+               return false;
+       },
+
+       getTarget : function(postid) {
+               return $('input[name="imgedit-target-' + postid + '"]:checked', '#imgedit-save-target-' + postid).val() || 'full';
+       },
+
+       scaleChanged : function(postid, x) {
+               var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
+               warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '';
+
+               if ( x ) {
+                       h1 = (w.val() != '') ? Math.round( w.val() / this.hold['xy_ratio'] ) : '';
+                       h.val( h1 );
+               } else {
+                       w1 = (h.val() != '') ? Math.round( h.val() * this.hold['xy_ratio'] ) : '';
+                       w.val( w1 );
+               }
+
+               if ( ( h1 && h1 > this.hold['oh'] ) || ( w1 && w1 > this.hold['ow'] ) )
+                       warn.css('visibility', 'visible');
+               else
+                       warn.css('visibility', 'hidden');
+       },
+
+       getSelRatio : function(postid) {
+               var x = this.hold['w'], y = this.hold['h'],
+                       X = this.intval( $('#imgedit-crop-width-' + postid).val() ),
+                       Y = this.intval( $('#imgedit-crop-height-' + postid).val() );
+
+               if ( X && Y )
+                       return X + ':' + Y;
+
+               if ( x && y )
+                       return x + ':' + y;
+
+               return '1:1';
+       },
+
+       filterHistory : function(postid, setSize) {
+               // apply undo state to history
+               var history = $('#imgedit-history-' + postid).val(), pop, n, o, i, op = [];
+
+               if ( history != '' ) {
+                       history = JSON.parse(history);
+                       pop = this.intval( $('#imgedit-undone-' + postid).val() );
+                       if ( pop > 0 ) {
+                               while ( pop > 0 ) {
+                                       history.pop();
+                                       pop--;
+                               }
+                       }
+
+                       if ( setSize ) {
+                               if ( !history.length ) {
+                                       this.hold['w'] = this.hold['ow'];
+                                       this.hold['h'] = this.hold['oh'];
+                                       return '';
+                               }
+
+                               // restore
+                               o = history[history.length - 1];
+                               o = o.c || o.r || o.f || false;
+
+                               if ( o ) {
+                                       this.hold['w'] = o.fw;
+                                       this.hold['h'] = o.fh;
+                               }
+                       }
+
+                       // filter the values
+                       for ( n in history ) {
+                               i = history[n];
+                               if ( i.hasOwnProperty('c') ) {
+                                       op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h } };
+                               } else if ( i.hasOwnProperty('r') ) {
+                                       op[n] = { 'r': i.r.r };
+                               } else if ( i.hasOwnProperty('f') ) {
+                                       op[n] = { 'f': i.f.f };
+                               }
+                       }
+                       return JSON.stringify(op);
+               }
+               return '';
+       },
+
+       refreshEditor : function(postid, nonce, callback) {
+               var t = this, data, img;
+
+               t.toggleEditor(postid, 1);
+               data = {
+                       'action': 'imgedit-preview',
+                       '_ajax_nonce': nonce,
+                       'postid': postid,
+                       'history': t.filterHistory(postid, 1),
+                       'rand': t.intval(Math.random() * 1000000)
+               };
+
+               img = $('<img id="image-preview-' + postid + '" />');
+               img.load( function() {
+                       var max1, max2, parent = $('#imgedit-crop-' + postid), t = imageEdit;
+
+                       parent.empty().append(img);
+
+                       // w, h are the new full size dims
+                       max1 = Math.max( t.hold.w, t.hold.h );
+                       max2 = Math.max( $(img).width(), $(img).height() );
+                       t.hold['sizer'] = max1 > max2 ? max2 / max1 : 1;
+
+                       t.initCrop(postid, img, parent);
+                       t.setCropSelection(postid, 0);
+
+                       if ( (typeof callback != "unknown") && callback != null )
+                               callback();
+
+                       if ( $('#imgedit-history-' + postid).val() && $('#imgedit-undone-' + postid).val() == 0 )
+                               $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).removeAttr('disabled');
+                       else
+                               $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).prop('disabled', true);
+
+                       t.toggleEditor(postid, 0);
+               }).error(function(){
+                       $('#imgedit-crop-' + postid).empty().append('<div class="error"><p>' + imageEditL10n.error + '</p></div>');
+                       t.toggleEditor(postid, 0);
+               }).attr('src', ajaxurl + '?' + $.param(data));
+       },
+
+       action : function(postid, nonce, action) {
+               var t = this, data, w, h, fw, fh;
+
+               if ( t.notsaved(postid) )
+                       return false;
+
+               data = {
+                       'action': 'image-editor',
+                       '_ajax_nonce': nonce,
+                       'postid': postid
+               };
+
+               if ( 'scale' == action ) {
+                       w = $('#imgedit-scale-width-' + postid),
+                       h = $('#imgedit-scale-height-' + postid),
+                       fw = t.intval(w.val()),
+                       fh = t.intval(h.val());
+
+                       if ( fw < 1 ) {
+                               w.focus();
+                               return false;
+                       } else if ( fh < 1 ) {
+                               h.focus();
+                               return false;
+                       }
+
+                       if ( fw == t.hold.ow || fh == t.hold.oh )
+                               return false;
+
+                       data['do'] = 'scale';
+                       data['fwidth'] = fw;
+                       data['fheight'] = fh;
+               } else if ( 'restore' == action ) {
+                       data['do'] = 'restore';
+               } else {
+                       return false;
+               }
+
+               t.toggleEditor(postid, 1);
+               $.post(ajaxurl, data, function(r) {
+                       $('#image-editor-' + postid).empty().append(r);
+                       t.toggleEditor(postid, 0);
+               });
+       },
+
+       save : function(postid, nonce) {
+               var data, target = this.getTarget(postid), history = this.filterHistory(postid, 0);
+
+               if ( '' == history )
+                       return false;
+
+               this.toggleEditor(postid, 1);
+               data = {
+                       'action': 'image-editor',
+                       '_ajax_nonce': nonce,
+                       'postid': postid,
+                       'history': history,
+                       'target': target,
+                       'context': $('#image-edit-context').length ? $('#image-edit-context').val() : null,
+                       'do': 'save'
+               };
+
+               $.post(ajaxurl, data, function(r) {
+                       var ret = JSON.parse(r);
+
+                       if ( ret.error ) {
+                               $('#imgedit-response-' + postid).html('<div class="error"><p>' + ret.error + '</p><div>');
+                               imageEdit.close(postid);
+                               return;
+                       }
+
+                       if ( ret.fw && ret.fh )
+                               $('#media-dims-' + postid).html( ret.fw + ' &times; ' + ret.fh );
+
+                       if ( ret.thumbnail )
+                               $('.thumbnail', '#thumbnail-head-' + postid).attr('src', ''+ret.thumbnail);
+
+                       if ( ret.msg )
+                               $('#imgedit-response-' + postid).html('<div class="updated"><p>' + ret.msg + '</p></div>');
+
+                       imageEdit.close(postid);
+               });
+       },
+
+       open : function(postid, nonce) {
+               var data, elem = $('#image-editor-' + postid), head = $('#media-head-' + postid),
+                       btn = $('#imgedit-open-btn-' + postid), spin = btn.siblings('.spinner');
+
+               btn.prop('disabled', true);
+               spin.show();
+
+               data = {
+                       'action': 'image-editor',
+                       '_ajax_nonce': nonce,
+                       'postid': postid,
+                       'do': 'open'
+               };
+
+               elem.load(ajaxurl, data, function() {
+                       elem.fadeIn('fast');
+                       head.fadeOut('fast', function(){
+                               btn.removeAttr('disabled');
+                               spin.hide();
+                       });
+               });
+       },
+
+       imgLoaded : function(postid) {
+               var img = $('#image-preview-' + postid), parent = $('#imgedit-crop-' + postid);
+
+               this.initCrop(postid, img, parent);
+               this.setCropSelection(postid, 0);
+               this.toggleEditor(postid, 0);
+       },
+
+       initCrop : function(postid, image, parent) {
+               var t = this, selW = $('#imgedit-sel-width-' + postid),
+                       selH = $('#imgedit-sel-height-' + postid);
+
+               t.iasapi = $(image).imgAreaSelect({
+                       parent: parent,
+                       instance: true,
+                       handles: true,
+                       keys: true,
+                       minWidth: 3,
+                       minHeight: 3,
+
+                       onInit: function(img, c) {
+                               parent.children().mousedown(function(e){
+                                       var ratio = false, sel, defRatio;
+
+                                       if ( e.shiftKey ) {
+                                               sel = t.iasapi.getSelection();
+                                               defRatio = t.getSelRatio(postid);
+                                               ratio = ( sel && sel.width && sel.height ) ? sel.width + ':' + sel.height : defRatio;
+                                       }
+
+                                       t.iasapi.setOptions({
+                                               aspectRatio: ratio
+                                       });
+                               });
+                       },
+
+                       onSelectStart: function(img, c) {
+                               imageEdit.setDisabled($('#imgedit-crop-sel-' + postid), 1);
+                       },
+
+                       onSelectEnd: function(img, c) {
+                               imageEdit.setCropSelection(postid, c);
+                       },
+
+                       onSelectChange: function(img, c) {
+                               var sizer = imageEdit.hold.sizer;
+                               selW.val( imageEdit.round(c.width / sizer) );
+                               selH.val( imageEdit.round(c.height / sizer) );
+                       }
+               });
+       },
+
+       setCropSelection : function(postid, c) {
+               var sel, min = $('#imgedit-minthumb-' + postid).val() || '128:128',
+                       sizer = this.hold['sizer'];
+                       min = min.split(':');
+                       c = c || 0;
+
+               if ( !c || ( c.width < 3 && c.height < 3 ) ) {
+                       this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0);
+                       this.setDisabled($('#imgedit-crop-sel-' + postid), 0);
+                       $('#imgedit-sel-width-' + postid).val('');
+                       $('#imgedit-sel-height-' + postid).val('');
+                       $('#imgedit-selection-' + postid).val('');
+                       return false;
+               }
+
+               if ( c.width < (min[0] * sizer) && c.height < (min[1] * sizer) ) {
+                       this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0);
+                       $('#imgedit-selection-' + postid).val('');
+                       return false;
+               }
+
+               sel = { 'x': c.x1, 'y': c.y1, 'w': c.width, 'h': c.height };
+               this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 1);
+               $('#imgedit-selection-' + postid).val( JSON.stringify(sel) );
+       },
+
+       close : function(postid, warn) {
+               warn = warn || false;
+
+               if ( warn && this.notsaved(postid) )
+                       return false;
+
+               this.iasapi = {};
+               this.hold = {};
+               $('#image-editor-' + postid).fadeOut('fast', function() {
+                       $('#media-head-' + postid).fadeIn('fast');
+                       $(this).empty();
+               });
+       },
+
+       notsaved : function(postid) {
+               var h = $('#imgedit-history-' + postid).val(),
+                       history = (h != '') ? JSON.parse(h) : new Array(),
+                       pop = this.intval( $('#imgedit-undone-' + postid).val() );
+
+               if ( pop < history.length ) {
+                       if ( confirm( $('#imgedit-leaving-' + postid).html() ) )
+                               return false;
+                       return true;
+               }
+               return false;
+       },
+
+       addStep : function(op, postid, nonce) {
+               var t = this, elem = $('#imgedit-history-' + postid),
+               history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array(),
+               undone = $('#imgedit-undone-' + postid),
+               pop = t.intval(undone.val());
+
+               while ( pop > 0 ) {
+                       history.pop();
+                       pop--;
+               }
+               undone.val(0); // reset
+
+               history.push(op);
+               elem.val( JSON.stringify(history) );
+
+               t.refreshEditor(postid, nonce, function() {
+                       t.setDisabled($('#image-undo-' + postid), true);
+                       t.setDisabled($('#image-redo-' + postid), false);
+               });
+       },
+
+       rotate : function(angle, postid, nonce, t) {
+               if ( $(t).hasClass('disabled') )
+                       return false;
+
+               this.addStep({ 'r': { 'r': angle, 'fw': this.hold['h'], 'fh': this.hold['w'] }}, postid, nonce);
+       },
+
+       flip : function (axis, postid, nonce, t) {
+               if ( $(t).hasClass('disabled') )
+                       return false;
+
+               this.addStep({ 'f': { 'f': axis, 'fw': this.hold['w'], 'fh': this.hold['h'] }}, postid, nonce);
+       },
+
+       crop : function (postid, nonce, t) {
+               var sel = $('#imgedit-selection-' + postid).val(),
+                       w = this.intval( $('#imgedit-sel-width-' + postid).val() ),
+                       h = this.intval( $('#imgedit-sel-height-' + postid).val() );
+
+               if ( $(t).hasClass('disabled') || sel == '' )
+                       return false;
+
+               sel = JSON.parse(sel);
+               if ( sel.w > 0 && sel.h > 0 && w > 0 && h > 0 ) {
+                       sel['fw'] = w;
+                       sel['fh'] = h;
+                       this.addStep({ 'c': sel }, postid, nonce);
+               }
+       },
+
+       undo : function (postid, nonce) {
+               var t = this, button = $('#image-undo-' + postid), elem = $('#imgedit-undone-' + postid),
+                       pop = t.intval( elem.val() ) + 1;
+
+               if ( button.hasClass('disabled') )
+                       return;
+
+               elem.val(pop);
+               t.refreshEditor(postid, nonce, function() {
+                       var elem = $('#imgedit-history-' + postid),
+                       history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array();
+
+                       t.setDisabled($('#image-redo-' + postid), true);
+                       t.setDisabled(button, pop < history.length);
+               });
+       },
+
+       redo : function(postid, nonce) {
+               var t = this, button = $('#image-redo-' + postid), elem = $('#imgedit-undone-' + postid),
+                       pop = t.intval( elem.val() ) - 1;
+
+               if ( button.hasClass('disabled') )
+                       return;
+
+               elem.val(pop);
+               t.refreshEditor(postid, nonce, function() {
+                       t.setDisabled($('#image-undo-' + postid), true);
+                       t.setDisabled(button, pop > 0);
+               });
+       },
+
+       setNumSelection : function(postid) {
+               var sel, elX = $('#imgedit-sel-width-' + postid), elY = $('#imgedit-sel-height-' + postid),
+                       x = this.intval( elX.val() ), y = this.intval( elY.val() ),
+                       img = $('#image-preview-' + postid), imgh = img.height(), imgw = img.width(),
+                       sizer = this.hold['sizer'], x1, y1, x2, y2, ias = this.iasapi;
+
+               if ( x < 1 ) {
+                       elX.val('');
+                       return false;
+               }
+
+               if ( y < 1 ) {
+                       elY.val('');
+                       return false;
+               }
+
+               if ( x && y && ( sel = ias.getSelection() ) ) {
+                       x2 = sel.x1 + Math.round( x * sizer );
+                       y2 = sel.y1 + Math.round( y * sizer );
+                       x1 = sel.x1;
+                       y1 = sel.y1;
+
+                       if ( x2 > imgw ) {
+                               x1 = 0;
+                               x2 = imgw;
+                               elX.val( Math.round( x2 / sizer ) );
+                       }
+
+                       if ( y2 > imgh ) {
+                               y1 = 0;
+                               y2 = imgh;
+                               elY.val( Math.round( y2 / sizer ) );
+                       }
+
+                       ias.setSelection( x1, y1, x2, y2 );
+                       ias.update();
+                       this.setCropSelection(postid, ias.getSelection());
+               }
+       },
+
+       round : function(num) {
+               var s;
+               num = Math.round(num);
+
+               if ( this.hold.sizer > 0.6 )
+                       return num;
+
+               s = num.toString().slice(-1);
+
+               if ( '1' == s )
+                       return num - 1;
+               else if ( '9' == s )
+                       return num + 1;
+
+               return num;
+       },
+
+       setRatioSelection : function(postid, n, el) {
+               var sel, r, x = this.intval( $('#imgedit-crop-width-' + postid).val() ),
+                       y = this.intval( $('#imgedit-crop-height-' + postid).val() ),
+                       h = $('#image-preview-' + postid).height();
+
+               if ( !this.intval( $(el).val() ) ) {
+                       $(el).val('');
+                       return;
+               }
+
+               if ( x && y ) {
+                       this.iasapi.setOptions({
+                               aspectRatio: x + ':' + y
+                       });
+
+                       if ( sel = this.iasapi.getSelection(true) ) {
+                               r = Math.ceil( sel.y1 + ((sel.x2 - sel.x1) / (x / y)) );
+
+                               if ( r > h ) {
+                                       r = h;
+                                       if ( n )
+                                               $('#imgedit-crop-height-' + postid).val('');
+                                       else
+                                               $('#imgedit-crop-width-' + postid).val('');
+                               }
+
+                               this.iasapi.setSelection( sel.x1, sel.y1, sel.x2, r );
+                               this.iasapi.update();
+                       }
+               }
+       }
+}
+})(jQuery);
diff --git a/wp-admin/js/image-edit.min.js b/wp-admin/js/image-edit.min.js
new file mode 100644 (file)
index 0000000..6d7e031
--- /dev/null
@@ -0,0 +1 @@
+var imageEdit;(function(a){imageEdit={iasapi:{},hold:{},postid:"",intval:function(b){return b|0},setDisabled:function(c,b){if(b){c.removeClass("disabled");a("input",c).removeAttr("disabled")}else{c.addClass("disabled");a("input",c).prop("disabled",true)}},init:function(g,e){var d=this,c=a("#image-editor-"+d.postid),b=d.intval(a("#imgedit-x-"+g).val()),f=d.intval(a("#imgedit-y-"+g).val());if(d.postid!=g&&c.length){d.close(d.postid)}d.hold.w=d.hold.ow=b;d.hold.h=d.hold.oh=f;d.hold.xy_ratio=b/f;d.hold.sizer=parseFloat(a("#imgedit-sizer-"+g).val());d.postid=g;a("#imgedit-response-"+g).empty();a('input[type="text"]',"#imgedit-panel-"+g).keypress(function(i){var h=i.keyCode;if(36<h&&h<41){a(this).blur()}if(13==h){i.preventDefault();i.stopPropagation();return false}})},toggleEditor:function(d,b){var c=a("#imgedit-wait-"+d);if(b){c.height(a("#imgedit-panel-"+d).height()).fadeIn("fast")}else{c.fadeOut("fast")}},toggleHelp:function(b){a(b).siblings(".imgedit-help").slideToggle("fast");return false},getTarget:function(b){return a('input[name="imgedit-target-'+b+'"]:checked',"#imgedit-save-target-"+b).val()||"full"},scaleChanged:function(i,b){var d=a("#imgedit-scale-width-"+i),f=a("#imgedit-scale-height-"+i),g=a("#imgedit-scale-warn-"+i),c="",e="";if(b){e=(d.val()!="")?Math.round(d.val()/this.hold.xy_ratio):"";f.val(e)}else{c=(f.val()!="")?Math.round(f.val()*this.hold.xy_ratio):"";d.val(c)}if((e&&e>this.hold.oh)||(c&&c>this.hold.ow)){g.css("visibility","visible")}else{g.css("visibility","hidden")}},getSelRatio:function(f){var b=this.hold.w,e=this.hold.h,d=this.intval(a("#imgedit-crop-width-"+f).val()),c=this.intval(a("#imgedit-crop-height-"+f).val());if(d&&c){return d+":"+c}if(b&&e){return b+":"+e}return"1:1"},filterHistory:function(j,f){var d=a("#imgedit-history-"+j).val(),b,h,e,c,g=[];if(d!=""){d=JSON.parse(d);b=this.intval(a("#imgedit-undone-"+j).val());if(b>0){while(b>0){d.pop();b--}}if(f){if(!d.length){this.hold.w=this.hold.ow;this.hold.h=this.hold.oh;return""}e=d[d.length-1];e=e.c||e.r||e.f||false;if(e){this.hold.w=e.fw;this.hold.h=e.fh}}for(h in d){c=d[h];if(c.hasOwnProperty("c")){g[h]={c:{x:c.c.x,y:c.c.y,w:c.c.w,h:c.c.h}}}else{if(c.hasOwnProperty("r")){g[h]={r:c.r.r}}else{if(c.hasOwnProperty("f")){g[h]={f:c.f.f}}}}}return JSON.stringify(g)}return""},refreshEditor:function(g,d,f){var c=this,e,b;c.toggleEditor(g,1);e={action:"imgedit-preview",_ajax_nonce:d,postid:g,history:c.filterHistory(g,1),rand:c.intval(Math.random()*1000000)};b=a('<img id="image-preview-'+g+'" />');b.load(function(){var i,h,k=a("#imgedit-crop-"+g),j=imageEdit;k.empty().append(b);i=Math.max(j.hold.w,j.hold.h);h=Math.max(a(b).width(),a(b).height());j.hold.sizer=i>h?h/i:1;j.initCrop(g,b,k);j.setCropSelection(g,0);if((typeof f!="unknown")&&f!=null){f()}if(a("#imgedit-history-"+g).val()&&a("#imgedit-undone-"+g).val()==0){a("input.imgedit-submit-btn","#imgedit-panel-"+g).removeAttr("disabled")}else{a("input.imgedit-submit-btn","#imgedit-panel-"+g).prop("disabled",true)}j.toggleEditor(g,0)}).error(function(){a("#imgedit-crop-"+g).empty().append('<div class="error"><p>'+imageEditL10n.error+"</p></div>");c.toggleEditor(g,0)}).attr("src",ajaxurl+"?"+a.param(e))},action:function(b,g,c){var j=this,e,i,f,d,k;if(j.notsaved(b)){return false}e={action:"image-editor",_ajax_nonce:g,postid:b};if("scale"==c){i=a("#imgedit-scale-width-"+b),f=a("#imgedit-scale-height-"+b),d=j.intval(i.val()),k=j.intval(f.val());if(d<1){i.focus();return false}else{if(k<1){f.focus();return false}}if(d==j.hold.ow||k==j.hold.oh){return false}e["do"]="scale";e.fwidth=d;e.fheight=k}else{if("restore"==c){e["do"]="restore"}else{return false}}j.toggleEditor(b,1);a.post(ajaxurl,e,function(h){a("#image-editor-"+b).empty().append(h);j.toggleEditor(b,0)})},save:function(f,b){var c,e=this.getTarget(f),d=this.filterHistory(f,0);if(""==d){return false}this.toggleEditor(f,1);c={action:"image-editor",_ajax_nonce:b,postid:f,history:d,target:e,context:a("#image-edit-context").length?a("#image-edit-context").val():null,"do":"save"};a.post(ajaxurl,c,function(h){var g=JSON.parse(h);if(g.error){a("#imgedit-response-"+f).html('<div class="error"><p>'+g.error+"</p><div>");imageEdit.close(f);return}if(g.fw&&g.fh){a("#media-dims-"+f).html(g.fw+" &times; "+g.fh)}if(g.thumbnail){a(".thumbnail","#thumbnail-head-"+f).attr("src",""+g.thumbnail)}if(g.msg){a("#imgedit-response-"+f).html('<div class="updated"><p>'+g.msg+"</p></div>")}imageEdit.close(f)})},open:function(h,d){var f,e=a("#image-editor-"+h),c=a("#media-head-"+h),b=a("#imgedit-open-btn-"+h),g=b.siblings(".spinner");b.prop("disabled",true);g.show();f={action:"image-editor",_ajax_nonce:d,postid:h,"do":"open"};e.load(ajaxurl,f,function(){e.fadeIn("fast");c.fadeOut("fast",function(){b.removeAttr("disabled");g.hide()})})},imgLoaded:function(d){var b=a("#image-preview-"+d),c=a("#imgedit-crop-"+d);this.initCrop(d,b,c);this.setCropSelection(d,0);this.toggleEditor(d,0)},initCrop:function(g,e,c){var b=this,d=a("#imgedit-sel-width-"+g),f=a("#imgedit-sel-height-"+g);b.iasapi=a(e).imgAreaSelect({parent:c,instance:true,handles:true,keys:true,minWidth:3,minHeight:3,onInit:function(h,i){c.children().mousedown(function(m){var k=false,l,j;if(m.shiftKey){l=b.iasapi.getSelection();j=b.getSelRatio(g);k=(l&&l.width&&l.height)?l.width+":"+l.height:j}b.iasapi.setOptions({aspectRatio:k})})},onSelectStart:function(h,i){imageEdit.setDisabled(a("#imgedit-crop-sel-"+g),1)},onSelectEnd:function(h,i){imageEdit.setCropSelection(g,i)},onSelectChange:function(h,j){var i=imageEdit.hold.sizer;d.val(imageEdit.round(j.width/i));f.val(imageEdit.round(j.height/i))}})},setCropSelection:function(g,f){var e,b=a("#imgedit-minthumb-"+g).val()||"128:128",d=this.hold.sizer;b=b.split(":");f=f||0;if(!f||(f.width<3&&f.height<3)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);this.setDisabled(a("#imgedit-crop-sel-"+g),0);a("#imgedit-sel-width-"+g).val("");a("#imgedit-sel-height-"+g).val("");a("#imgedit-selection-"+g).val("");return false}if(f.width<(b[0]*d)&&f.height<(b[1]*d)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);a("#imgedit-selection-"+g).val("");return false}e={x:f.x1,y:f.y1,w:f.width,h:f.height};this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),1);a("#imgedit-selection-"+g).val(JSON.stringify(e))},close:function(c,b){b=b||false;if(b&&this.notsaved(c)){return false}this.iasapi={};this.hold={};a("#image-editor-"+c).fadeOut("fast",function(){a("#media-head-"+c).fadeIn("fast");a(this).empty()})},notsaved:function(e){var c=a("#imgedit-history-"+e).val(),d=(c!="")?JSON.parse(c):new Array(),b=this.intval(a("#imgedit-undone-"+e).val());if(b<d.length){if(confirm(a("#imgedit-leaving-"+e).html())){return false}return true}return false},addStep:function(i,h,d){var c=this,e=a("#imgedit-history-"+h),g=(e.val()!="")?JSON.parse(e.val()):new Array(),f=a("#imgedit-undone-"+h),b=c.intval(f.val());while(b>0){g.pop();b--}f.val(0);g.push(i);e.val(JSON.stringify(g));c.refreshEditor(h,d,function(){c.setDisabled(a("#image-undo-"+h),true);c.setDisabled(a("#image-redo-"+h),false)})},rotate:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({r:{r:d,fw:this.hold.h,fh:this.hold.w}},e,c)},flip:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({f:{f:d,fw:this.hold.w,fh:this.hold.h}},e,c)},crop:function(g,e,c){var f=a("#imgedit-selection-"+g).val(),b=this.intval(a("#imgedit-sel-width-"+g).val()),d=this.intval(a("#imgedit-sel-height-"+g).val());if(a(c).hasClass("disabled")||f==""){return false}f=JSON.parse(f);if(f.w>0&&f.h>0&&b>0&&d>0){f.fw=b;f.fh=d;this.addStep({c:f},g,e)}},undo:function(g,e){var d=this,c=a("#image-undo-"+g),f=a("#imgedit-undone-"+g),b=d.intval(f.val())+1;if(c.hasClass("disabled")){return}f.val(b);d.refreshEditor(g,e,function(){var h=a("#imgedit-history-"+g),i=(h.val()!="")?JSON.parse(h.val()):new Array();d.setDisabled(a("#image-redo-"+g),true);d.setDisabled(c,b<i.length)})},redo:function(g,e){var d=this,c=a("#image-redo-"+g),f=a("#imgedit-undone-"+g),b=d.intval(f.val())-1;if(c.hasClass("disabled")){return}f.val(b);d.refreshEditor(g,e,function(){d.setDisabled(a("#image-undo-"+g),true);d.setDisabled(c,b>0)})},setNumSelection:function(c){var g,k=a("#imgedit-sel-width-"+c),j=a("#imgedit-sel-height-"+c),o=this.intval(k.val()),m=this.intval(j.val()),i=a("#image-preview-"+c),p=i.height(),h=i.width(),b=this.hold.sizer,f,n,e,l,d=this.iasapi;if(o<1){k.val("");return false}if(m<1){j.val("");return false}if(o&&m&&(g=d.getSelection())){e=g.x1+Math.round(o*b);l=g.y1+Math.round(m*b);f=g.x1;n=g.y1;if(e>h){f=0;e=h;k.val(Math.round(e/b))}if(l>p){n=0;l=p;j.val(Math.round(l/b))}d.setSelection(f,n,e,l);d.update();this.setCropSelection(c,d.getSelection())}},round:function(b){var c;b=Math.round(b);if(this.hold.sizer>0.6){return b}c=b.toString().slice(-1);if("1"==c){return b-1}else{if("9"==c){return b+1}}return b},setRatioSelection:function(j,i,d){var f,e,b=this.intval(a("#imgedit-crop-width-"+j).val()),g=this.intval(a("#imgedit-crop-height-"+j).val()),c=a("#image-preview-"+j).height();if(!this.intval(a(d).val())){a(d).val("");return}if(b&&g){this.iasapi.setOptions({aspectRatio:b+":"+g});if(f=this.iasapi.getSelection(true)){e=Math.ceil(f.y1+((f.x2-f.x1)/(b/g)));if(e>c){e=c;if(i){a("#imgedit-crop-height-"+j).val("")}else{a("#imgedit-crop-width-"+j).val("")}}this.iasapi.setSelection(f.x1,f.y1,f.x2,e);this.iasapi.update()}}}}})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/inline-edit-post.dev.js b/wp-admin/js/inline-edit-post.dev.js
deleted file mode 100644 (file)
index 4b0eb2e..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-(function($) {
-inlineEditPost = {
-
-       init : function(){
-               var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
-
-               t.type = $('table.widefat').hasClass('pages') ? 'page' : 'post';
-               t.what = '#post-';
-
-               // prepare the edit rows
-               qeRow.keyup(function(e){
-                       if (e.which == 27)
-                               return inlineEditPost.revert();
-               });
-               bulkRow.keyup(function(e){
-                       if (e.which == 27)
-                               return inlineEditPost.revert();
-               });
-
-               $('a.cancel', qeRow).click(function(){
-                       return inlineEditPost.revert();
-               });
-               $('a.save', qeRow).click(function(){
-                       return inlineEditPost.save(this);
-               });
-               $('td', qeRow).keydown(function(e){
-                       if ( e.which == 13 )
-                               return inlineEditPost.save(this);
-               });
-
-               $('a.cancel', bulkRow).click(function(){
-                       return inlineEditPost.revert();
-               });
-
-               $('#inline-edit .inline-edit-private input[value="private"]').click( function(){
-                       var pw = $('input.inline-edit-password-input');
-                       if ( $(this).prop('checked') ) {
-                               pw.val('').prop('disabled', true);
-                       } else {
-                               pw.prop('disabled', false);
-                       }
-               });
-
-               // add events
-               $('a.editinline').live('click', function(){
-                       inlineEditPost.edit(this);
-                       return false;
-               });
-
-               $('#bulk-title-div').parents('fieldset').after(
-                       $('#inline-edit fieldset.inline-edit-categories').clone()
-               ).siblings( 'fieldset:last' ).prepend(
-                       $('#inline-edit label.inline-edit-tags').clone()
-               );
-
-               // hiearchical taxonomies expandable?
-               $('span.catshow').click(function(){
-                       $(this).hide().next().show().parent().next().addClass("cat-hover");
-               });
-
-               $('span.cathide').click(function(){
-                       $(this).hide().prev().show().parent().next().removeClass("cat-hover");
-               });
-
-               $('select[name="_status"] option[value="future"]', bulkRow).remove();
-
-               $('#doaction, #doaction2').click(function(e){
-                       var n = $(this).attr('id').substr(2);
-                       if ( $('select[name="'+n+'"]').val() == 'edit' ) {
-                               e.preventDefault();
-                               t.setBulk();
-                       } else if ( $('form#posts-filter tr.inline-editor').length > 0 ) {
-                               t.revert();
-                       }
-               });
-
-               $('#post-query-submit').mousedown(function(e){
-                       t.revert();
-                       $('select[name^="action"]').val('-1');
-               });
-       },
-
-       toggle : function(el){
-               var t = this;
-               $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
-       },
-
-       setBulk : function(){
-               var te = '', type = this.type, tax, c = true;
-               this.revert();
-
-               $('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length);
-               $('table.widefat tbody').prepend( $('#bulk-edit') );
-               $('#bulk-edit').addClass('inline-editor').show();
-
-               $('tbody th.check-column input[type="checkbox"]').each(function(i){
-                       if ( $(this).prop('checked') ) {
-                               c = false;
-                               var id = $(this).val(), theTitle;
-                               theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
-                               te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
-                       }
-               });
-
-               if ( c )
-                       return this.revert();
-
-               $('#bulk-titles').html(te);
-               $('#bulk-titles a').click(function(){
-                       var id = $(this).attr('id').substr(1);
-
-                       $('table.widefat input[value="' + id + '"]').prop('checked', false);
-                       $('#ttle'+id).remove();
-               });
-
-               // enable autocomplete for tags
-               if ( 'post' == type ) {
-                       // support multi taxonomies?
-                       tax = 'post_tag';
-                       $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
-               }
-               $('html, body').animate( { scrollTop: 0 }, 'fast' );
-       },
-
-       edit : function(id) {
-               var t = this, fields, editRow, rowData, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, cur_format, f;
-               t.revert();
-
-               if ( typeof(id) == 'object' )
-                       id = t.getId(id);
-
-               fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format', 'menu_order'];
-               if ( t.type == 'page' )
-                       fields.push('post_parent', 'page_template');
-
-               // add the new blank row
-               editRow = $('#inline-edit').clone(true);
-               $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
-
-               if ( $(t.what+id).hasClass('alternate') )
-                       $(editRow).addClass('alternate');
-               $(t.what+id).hide().after(editRow);
-
-               // populate the data
-               rowData = $('#inline_'+id);
-               if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) {
-                       // author no longer has edit caps, so we need to add them to the list of authors
-                       $(':input[name="post_author"]', editRow).prepend('<option value="' + $('.post_author', rowData).text() + '">' + $('#' + t.type + '-' + id + ' .author').text() + '</option>');
-               }
-               if ( $(':input[name="post_author"] option', editRow).length == 1 ) {
-                       $('label.inline-edit-author', editRow).hide();
-               }
-
-               // hide unsupported formats, but leave the current format alone
-               cur_format = $('.post_format', rowData).text();
-               $('option.unsupported', editRow).each(function() {
-                       var $this = $(this);
-                       if ( $this.val() != cur_format )
-                               $this.remove();
-               });
-
-               for ( f = 0; f < fields.length; f++ ) {
-                       $(':input[name="' + fields[f] + '"]', editRow).val( $('.'+fields[f], rowData).text() );
-               }
-
-               if ( $('.comment_status', rowData).text() == 'open' )
-                       $('input[name="comment_status"]', editRow).prop("checked", true);
-               if ( $('.ping_status', rowData).text() == 'open' )
-                       $('input[name="ping_status"]', editRow).prop("checked", true);
-               if ( $('.sticky', rowData).text() == 'sticky' )
-                       $('input[name="sticky"]', editRow).prop("checked", true);
-
-               // hierarchical taxonomies
-               $('.post_category', rowData).each(function(){
-                       var term_ids = $(this).text();
-
-                       if ( term_ids ) {
-                               taxname = $(this).attr('id').replace('_'+id, '');
-                               $('ul.'+taxname+'-checklist :checkbox', editRow).val(term_ids.split(','));
-                       }
-               });
-
-               //flat taxonomies
-               $('.tags_input', rowData).each(function(){
-                       var terms = $(this).text(),
-                               taxname = $(this).attr('id').replace('_' + id, ''),
-                               textarea = $('textarea.tax_input_' + taxname, editRow),
-                               comma = inlineEditL10n.comma;
-
-                       if ( terms ) {
-                               if ( ',' !== comma )
-                                       terms = terms.replace(/,/g, comma);
-                               textarea.val(terms);
-                       }
-
-                       textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
-               });
-
-               // handle the post status
-               status = $('._status', rowData).text();
-               if ( 'future' != status )
-                       $('select[name="_status"] option[value="future"]', editRow).remove();
-
-               if ( 'private' == status ) {
-                       $('input[name="keep_private"]', editRow).prop("checked", true);
-                       $('input.inline-edit-password-input').val('').prop('disabled', true);
-               }
-
-               // remove the current page and children from the parent dropdown
-               pageOpt = $('select[name="post_parent"] option[value="' + id + '"]', editRow);
-               if ( pageOpt.length > 0 ) {
-                       pageLevel = pageOpt[0].className.split('-')[1];
-                       nextPage = pageOpt;
-                       while ( pageLoop ) {
-                               nextPage = nextPage.next('option');
-                               if (nextPage.length == 0) break;
-                               nextLevel = nextPage[0].className.split('-')[1];
-                               if ( nextLevel <= pageLevel ) {
-                                       pageLoop = false;
-                               } else {
-                                       nextPage.remove();
-                                       nextPage = pageOpt;
-                               }
-                       }
-                       pageOpt.remove();
-               }
-
-               $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
-               $('.ptitle', editRow).focus();
-
-               return false;
-       },
-
-       save : function(id) {
-               var params, fields, page = $('.post_status_page').val() || '';
-
-               if ( typeof(id) == 'object' )
-                       id = this.getId(id);
-
-               $('table.widefat .inline-edit-save .waiting').show();
-
-               params = {
-                       action: 'inline-save',
-                       post_type: typenow,
-                       post_ID: id,
-                       edit_date: 'true',
-                       post_status: page
-               };
-
-               fields = $('#edit-'+id+' :input').serialize();
-               params = fields + '&' + $.param(params);
-
-               // make ajax request
-               $.post( ajaxurl, params,
-                       function(r) {
-                               $('table.widefat .inline-edit-save .waiting').hide();
-
-                               if (r) {
-                                       if ( -1 != r.indexOf('<tr') ) {
-                                               $(inlineEditPost.what+id).remove();
-                                               $('#edit-'+id).before(r).remove();
-                                               $(inlineEditPost.what+id).hide().fadeIn();
-                                       } else {
-                                               r = r.replace( /<.[^<>]*?>/g, '' );
-                                               $('#edit-'+id+' .inline-edit-save .error').html(r).show();
-                                       }
-                               } else {
-                                       $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
-                               }
-                       }
-               , 'html');
-               return false;
-       },
-
-       revert : function(){
-               var id = $('table.widefat tr.inline-editor').attr('id');
-
-               if ( id ) {
-                       $('table.widefat .inline-edit-save .waiting').hide();
-
-                       if ( 'bulk-edit' == id ) {
-                               $('table.widefat #bulk-edit').removeClass('inline-editor').hide();
-                               $('#bulk-titles').html('');
-                               $('#inlineedit').append( $('#bulk-edit') );
-                       } else {
-                               $('#'+id).remove();
-                               id = id.substr( id.lastIndexOf('-') + 1 );
-                               $(this.what+id).show();
-                       }
-               }
-
-               return false;
-       },
-
-       getId : function(o) {
-               var id = $(o).closest('tr').attr('id'),
-                       parts = id.split('-');
-               return parts[parts.length - 1];
-       }
-};
-
-$(document).ready(function(){inlineEditPost.init();});
-})(jQuery);
index 13430d395349493e2333d79a67e7c8039e114393..9abf478ada6fcf9db21d78e796c386c282e45ff3 100644 (file)
@@ -1 +1,303 @@
-(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").text()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("post"==d){b="post_tag";a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"];if(n.type=="page"){j.push("post_parent","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var q=a(this).text(),r=a(this).attr("id").replace("_"+c,""),p=a("textarea.tax_input_"+r,e),f=inlineEditL10n.comma;if(q){if(","!==f){q=q.replace(/,/g,f)}p.val(q)}p.suggest(ajaxurl+"?action=ajax-tag-search&tax="+r,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(f){a("table.widefat .inline-edit-save .waiting").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
\ No newline at end of file
+(function($) {
+inlineEditPost = {
+
+       init : function(){
+               var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
+
+               t.type = $('table.widefat').hasClass('pages') ? 'page' : 'post';
+               t.what = '#post-';
+
+               // prepare the edit rows
+               qeRow.keyup(function(e){
+                       if (e.which == 27)
+                               return inlineEditPost.revert();
+               });
+               bulkRow.keyup(function(e){
+                       if (e.which == 27)
+                               return inlineEditPost.revert();
+               });
+
+               $('a.cancel', qeRow).click(function(){
+                       return inlineEditPost.revert();
+               });
+               $('a.save', qeRow).click(function(){
+                       return inlineEditPost.save(this);
+               });
+               $('td', qeRow).keydown(function(e){
+                       if ( e.which == 13 )
+                               return inlineEditPost.save(this);
+               });
+
+               $('a.cancel', bulkRow).click(function(){
+                       return inlineEditPost.revert();
+               });
+
+               $('#inline-edit .inline-edit-private input[value="private"]').click( function(){
+                       var pw = $('input.inline-edit-password-input');
+                       if ( $(this).prop('checked') ) {
+                               pw.val('').prop('disabled', true);
+                       } else {
+                               pw.prop('disabled', false);
+                       }
+               });
+
+               // add events
+               $('a.editinline').live('click', function(){
+                       inlineEditPost.edit(this);
+                       return false;
+               });
+
+               $('#bulk-title-div').parents('fieldset').after(
+                       $('#inline-edit fieldset.inline-edit-categories').clone()
+               ).siblings( 'fieldset:last' ).prepend(
+                       $('#inline-edit label.inline-edit-tags').clone()
+               );
+
+               // hiearchical taxonomies expandable?
+               $('span.catshow').click(function(){
+                       $(this).hide().next().show().parent().next().addClass("cat-hover");
+               });
+
+               $('span.cathide').click(function(){
+                       $(this).hide().prev().show().parent().next().removeClass("cat-hover");
+               });
+
+               $('select[name="_status"] option[value="future"]', bulkRow).remove();
+
+               $('#doaction, #doaction2').click(function(e){
+                       var n = $(this).attr('id').substr(2);
+                       if ( $('select[name="'+n+'"]').val() == 'edit' ) {
+                               e.preventDefault();
+                               t.setBulk();
+                       } else if ( $('form#posts-filter tr.inline-editor').length > 0 ) {
+                               t.revert();
+                       }
+               });
+
+               $('#post-query-submit').mousedown(function(e){
+                       t.revert();
+                       $('select[name^="action"]').val('-1');
+               });
+       },
+
+       toggle : function(el){
+               var t = this;
+               $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
+       },
+
+       setBulk : function(){
+               var te = '', type = this.type, tax, c = true;
+               this.revert();
+
+               $('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length);
+               $('table.widefat tbody').prepend( $('#bulk-edit') );
+               $('#bulk-edit').addClass('inline-editor').show();
+
+               $('tbody th.check-column input[type="checkbox"]').each(function(i){
+                       if ( $(this).prop('checked') ) {
+                               c = false;
+                               var id = $(this).val(), theTitle;
+                               theTitle = $('#inline_'+id+' .post_title').html() || inlineEditL10n.notitle;
+                               te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
+                       }
+               });
+
+               if ( c )
+                       return this.revert();
+
+               $('#bulk-titles').html(te);
+               $('#bulk-titles a').click(function(){
+                       var id = $(this).attr('id').substr(1);
+
+                       $('table.widefat input[value="' + id + '"]').prop('checked', false);
+                       $('#ttle'+id).remove();
+               });
+
+               // enable autocomplete for tags
+               if ( 'post' == type ) {
+                       // support multi taxonomies?
+                       tax = 'post_tag';
+                       $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
+               }
+               $('html, body').animate( { scrollTop: 0 }, 'fast' );
+       },
+
+       edit : function(id) {
+               var t = this, fields, editRow, rowData, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, cur_format, f;
+               t.revert();
+
+               if ( typeof(id) == 'object' )
+                       id = t.getId(id);
+
+               fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format', 'menu_order'];
+               if ( t.type == 'page' )
+                       fields.push('post_parent', 'page_template');
+
+               // add the new blank row
+               editRow = $('#inline-edit').clone(true);
+               $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
+
+               if ( $(t.what+id).hasClass('alternate') )
+                       $(editRow).addClass('alternate');
+               $(t.what+id).hide().after(editRow);
+
+               // populate the data
+               rowData = $('#inline_'+id);
+               if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) {
+                       // author no longer has edit caps, so we need to add them to the list of authors
+                       $(':input[name="post_author"]', editRow).prepend('<option value="' + $('.post_author', rowData).text() + '">' + $('#' + t.type + '-' + id + ' .author').text() + '</option>');
+               }
+               if ( $(':input[name="post_author"] option', editRow).length == 1 ) {
+                       $('label.inline-edit-author', editRow).hide();
+               }
+
+               // hide unsupported formats, but leave the current format alone
+               cur_format = $('.post_format', rowData).text();
+               $('option.unsupported', editRow).each(function() {
+                       var $this = $(this);
+                       if ( $this.val() != cur_format )
+                               $this.remove();
+               });
+
+               for ( f = 0; f < fields.length; f++ ) {
+                       $(':input[name="' + fields[f] + '"]', editRow).val( $('.'+fields[f], rowData).text() );
+               }
+
+               if ( $('.comment_status', rowData).text() == 'open' )
+                       $('input[name="comment_status"]', editRow).prop("checked", true);
+               if ( $('.ping_status', rowData).text() == 'open' )
+                       $('input[name="ping_status"]', editRow).prop("checked", true);
+               if ( $('.sticky', rowData).text() == 'sticky' )
+                       $('input[name="sticky"]', editRow).prop("checked", true);
+
+               // hierarchical taxonomies
+               $('.post_category', rowData).each(function(){
+                       var term_ids = $(this).text();
+
+                       if ( term_ids ) {
+                               taxname = $(this).attr('id').replace('_'+id, '');
+                               $('ul.'+taxname+'-checklist :checkbox', editRow).val(term_ids.split(','));
+                       }
+               });
+
+               //flat taxonomies
+               $('.tags_input', rowData).each(function(){
+                       var terms = $(this).text(),
+                               taxname = $(this).attr('id').replace('_' + id, ''),
+                               textarea = $('textarea.tax_input_' + taxname, editRow),
+                               comma = inlineEditL10n.comma;
+
+                       if ( terms ) {
+                               if ( ',' !== comma )
+                                       terms = terms.replace(/,/g, comma);
+                               textarea.val(terms);
+                       }
+
+                       textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
+               });
+
+               // handle the post status
+               status = $('._status', rowData).text();
+               if ( 'future' != status )
+                       $('select[name="_status"] option[value="future"]', editRow).remove();
+
+               if ( 'private' == status ) {
+                       $('input[name="keep_private"]', editRow).prop("checked", true);
+                       $('input.inline-edit-password-input').val('').prop('disabled', true);
+               }
+
+               // remove the current page and children from the parent dropdown
+               pageOpt = $('select[name="post_parent"] option[value="' + id + '"]', editRow);
+               if ( pageOpt.length > 0 ) {
+                       pageLevel = pageOpt[0].className.split('-')[1];
+                       nextPage = pageOpt;
+                       while ( pageLoop ) {
+                               nextPage = nextPage.next('option');
+                               if (nextPage.length == 0) break;
+                               nextLevel = nextPage[0].className.split('-')[1];
+                               if ( nextLevel <= pageLevel ) {
+                                       pageLoop = false;
+                               } else {
+                                       nextPage.remove();
+                                       nextPage = pageOpt;
+                               }
+                       }
+                       pageOpt.remove();
+               }
+
+               $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
+               $('.ptitle', editRow).focus();
+
+               return false;
+       },
+
+       save : function(id) {
+               var params, fields, page = $('.post_status_page').val() || '';
+
+               if ( typeof(id) == 'object' )
+                       id = this.getId(id);
+
+               $('table.widefat .spinner').show();
+
+               params = {
+                       action: 'inline-save',
+                       post_type: typenow,
+                       post_ID: id,
+                       edit_date: 'true',
+                       post_status: page
+               };
+
+               fields = $('#edit-'+id+' :input').serialize();
+               params = fields + '&' + $.param(params);
+
+               // make ajax request
+               $.post( ajaxurl, params,
+                       function(r) {
+                               $('table.widefat .spinner').hide();
+
+                               if (r) {
+                                       if ( -1 != r.indexOf('<tr') ) {
+                                               $(inlineEditPost.what+id).remove();
+                                               $('#edit-'+id).before(r).remove();
+                                               $(inlineEditPost.what+id).hide().fadeIn();
+                                       } else {
+                                               r = r.replace( /<.[^<>]*?>/g, '' );
+                                               $('#edit-'+id+' .inline-edit-save .error').html(r).show();
+                                       }
+                               } else {
+                                       $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
+                               }
+                       }
+               , 'html');
+               return false;
+       },
+
+       revert : function(){
+               var id = $('table.widefat tr.inline-editor').attr('id');
+
+               if ( id ) {
+                       $('table.widefat .spinner').hide();
+
+                       if ( 'bulk-edit' == id ) {
+                               $('table.widefat #bulk-edit').removeClass('inline-editor').hide();
+                               $('#bulk-titles').html('');
+                               $('#inlineedit').append( $('#bulk-edit') );
+                       } else {
+                               $('#'+id).remove();
+                               id = id.substr( id.lastIndexOf('-') + 1 );
+                               $(this.what+id).show();
+                       }
+               }
+
+               return false;
+       },
+
+       getId : function(o) {
+               var id = $(o).closest('tr').attr('id'),
+                       parts = id.split('-');
+               return parts[parts.length - 1];
+       }
+};
+
+$(document).ready(function(){inlineEditPost.init();});
+})(jQuery);
diff --git a/wp-admin/js/inline-edit-post.min.js b/wp-admin/js/inline-edit-post.min.js
new file mode 100644 (file)
index 0000000..6f1cc3f
--- /dev/null
@@ -0,0 +1 @@
+(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").html()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("post"==d){b="post_tag";a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"];if(n.type=="page"){j.push("post_parent","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var q=a(this).text(),r=a(this).attr("id").replace("_"+c,""),p=a("textarea.tax_input_"+r,e),f=inlineEditL10n.comma;if(q){if(","!==f){q=q.replace(/,/g,f)}p.val(q)}p.suggest(ajaxurl+"?action=ajax-tag-search&tax="+r,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(f){a("table.widefat .spinner").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/inline-edit-tax.dev.js b/wp-admin/js/inline-edit-tax.dev.js
deleted file mode 100644 (file)
index 64c7bab..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-
-(function($) {
-inlineEditTax = {
-
-       init : function() {
-               var t = this, row = $('#inline-edit');
-
-               t.type = $('#the-list').attr('class').substr(5);
-               t.what = '#'+t.type+'-';
-
-               $('.editinline').live('click', function(){
-                       inlineEditTax.edit(this);
-                       return false;
-               });
-
-               // prepare the edit row
-               row.keyup(function(e) { if(e.which == 27) return inlineEditTax.revert(); });
-
-               $('a.cancel', row).click(function() { return inlineEditTax.revert(); });
-               $('a.save', row).click(function() { return inlineEditTax.save(this); });
-               $('input, select', row).keydown(function(e) { if(e.which == 13) return inlineEditTax.save(this); });
-
-               $('#posts-filter input[type="submit"]').mousedown(function(e){
-                       t.revert();
-               });
-       },
-
-       toggle : function(el) {
-               var t = this;
-               $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
-       },
-
-       edit : function(id) {
-               var t = this, editRow;
-               t.revert();
-
-               if ( typeof(id) == 'object' )
-                       id = t.getId(id);
-
-               editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
-               $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
-
-               if ( $(t.what+id).hasClass('alternate') )
-                       $(editRow).addClass('alternate');
-
-               $(t.what+id).hide().after(editRow);
-
-               $(':input[name="name"]', editRow).val( $('.name', rowData).text() );
-               $(':input[name="slug"]', editRow).val( $('.slug', rowData).text() );
-
-               $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
-               $('.ptitle', editRow).eq(0).focus();
-
-               return false;
-       },
-
-       save : function(id) {
-               var params, fields, tax = $('input[name="taxonomy"]').val() || '';
-
-               if( typeof(id) == 'object' )
-                       id = this.getId(id);
-
-               $('table.widefat .inline-edit-save .waiting').show();
-
-               params = {
-                       action: 'inline-save-tax',
-                       tax_type: this.type,
-                       tax_ID: id,
-                       taxonomy: tax
-               };
-
-               fields = $('#edit-'+id+' :input').serialize();
-               params = fields + '&' + $.param(params);
-
-               // make ajax request
-               $.post( ajaxurl, params,
-                       function(r) {
-                               var row, new_id;
-                               $('table.widefat .inline-edit-save .waiting').hide();
-
-                               if (r) {
-                                       if ( -1 != r.indexOf('<tr') ) {
-                                               $(inlineEditTax.what+id).remove();
-                                               new_id = $(r).attr('id');
-
-                                               $('#edit-'+id).before(r).remove();
-                                               row = new_id ? $('#'+new_id) : $(inlineEditTax.what+id);
-                                               row.hide().fadeIn();
-                                       } else
-                                               $('#edit-'+id+' .inline-edit-save .error').html(r).show();
-                               } else
-                                       $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
-                       }
-               );
-               return false;
-       },
-
-       revert : function() {
-               var id = $('table.widefat tr.inline-editor').attr('id');
-
-               if ( id ) {
-                       $('table.widefat .inline-edit-save .waiting').hide();
-                       $('#'+id).remove();
-                       id = id.substr( id.lastIndexOf('-') + 1 );
-                       $(this.what+id).show();
-               }
-
-               return false;
-       },
-
-       getId : function(o) {
-               var id = o.tagName == 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
-               return parts[parts.length - 1];
-       }
-};
-
-$(document).ready(function(){inlineEditTax.init();});
-})(jQuery);
index cccde57d09549c7c82da193f3a28ba9dec53b771..76adab4f648eb260eb822f995b75922f96d29393 100644 (file)
@@ -1 +1,118 @@
-(function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("class").substr(5);b.what="#"+b.type+"-";a(".editinline").live("click",function(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});a("a.cancel",c).click(function(){return inlineEditTax.revert()});a("a.save",c).click(function(){return inlineEditTax.save(this)});a("input, select",c).keydown(function(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(g){var h,f;a("table.widefat .inline-edit-save .waiting").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
+
+(function($) {
+inlineEditTax = {
+
+       init : function() {
+               var t = this, row = $('#inline-edit');
+
+               t.type = $('#the-list').attr('data-wp-lists').substr(5);
+               t.what = '#'+t.type+'-';
+
+               $('.editinline').live('click', function(){
+                       inlineEditTax.edit(this);
+                       return false;
+               });
+
+               // prepare the edit row
+               row.keyup(function(e) { if(e.which == 27) return inlineEditTax.revert(); });
+
+               $('a.cancel', row).click(function() { return inlineEditTax.revert(); });
+               $('a.save', row).click(function() { return inlineEditTax.save(this); });
+               $('input, select', row).keydown(function(e) { if(e.which == 13) return inlineEditTax.save(this); });
+
+               $('#posts-filter input[type="submit"]').mousedown(function(e){
+                       t.revert();
+               });
+       },
+
+       toggle : function(el) {
+               var t = this;
+               $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
+       },
+
+       edit : function(id) {
+               var t = this, editRow;
+               t.revert();
+
+               if ( typeof(id) == 'object' )
+                       id = t.getId(id);
+
+               editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
+               $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
+
+               if ( $(t.what+id).hasClass('alternate') )
+                       $(editRow).addClass('alternate');
+
+               $(t.what+id).hide().after(editRow);
+
+               $(':input[name="name"]', editRow).val( $('.name', rowData).text() );
+               $(':input[name="slug"]', editRow).val( $('.slug', rowData).text() );
+
+               $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
+               $('.ptitle', editRow).eq(0).focus();
+
+               return false;
+       },
+
+       save : function(id) {
+               var params, fields, tax = $('input[name="taxonomy"]').val() || '';
+
+               if( typeof(id) == 'object' )
+                       id = this.getId(id);
+
+               $('table.widefat .spinner').show();
+
+               params = {
+                       action: 'inline-save-tax',
+                       tax_type: this.type,
+                       tax_ID: id,
+                       taxonomy: tax
+               };
+
+               fields = $('#edit-'+id+' :input').serialize();
+               params = fields + '&' + $.param(params);
+
+               // make ajax request
+               $.post( ajaxurl, params,
+                       function(r) {
+                               var row, new_id;
+                               $('table.widefat .spinner').hide();
+
+                               if (r) {
+                                       if ( -1 != r.indexOf('<tr') ) {
+                                               $(inlineEditTax.what+id).remove();
+                                               new_id = $(r).attr('id');
+
+                                               $('#edit-'+id).before(r).remove();
+                                               row = new_id ? $('#'+new_id) : $(inlineEditTax.what+id);
+                                               row.hide().fadeIn();
+                                       } else
+                                               $('#edit-'+id+' .inline-edit-save .error').html(r).show();
+                               } else
+                                       $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
+                       }
+               );
+               return false;
+       },
+
+       revert : function() {
+               var id = $('table.widefat tr.inline-editor').attr('id');
+
+               if ( id ) {
+                       $('table.widefat .spinner').hide();
+                       $('#'+id).remove();
+                       id = id.substr( id.lastIndexOf('-') + 1 );
+                       $(this.what+id).show();
+               }
+
+               return false;
+       },
+
+       getId : function(o) {
+               var id = o.tagName == 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
+               return parts[parts.length - 1];
+       }
+};
+
+$(document).ready(function(){inlineEditTax.init();});
+})(jQuery);
diff --git a/wp-admin/js/inline-edit-tax.min.js b/wp-admin/js/inline-edit-tax.min.js
new file mode 100644 (file)
index 0000000..649abdb
--- /dev/null
@@ -0,0 +1 @@
+(function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5);b.what="#"+b.type+"-";a(".editinline").live("click",function(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});a("a.cancel",c).click(function(){return inlineEditTax.revert()});a("a.save",c).click(function(){return inlineEditTax.save(this)});a("input, select",c).keydown(function(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(g){var h,f;a("table.widefat .spinner").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/iris.min.js b/wp-admin/js/iris.min.js
new file mode 100644 (file)
index 0000000..a8043b5
--- /dev/null
@@ -0,0 +1,4 @@
+/*! Iris - v0.9.14 - 2012-11-20
+* https://github.com/Automattic/Iris
+* Copyright (c) 2012 Matt Wiebe; Licensed GPL */
+(function(e,t){function u(){if(r)i="filter";else{var t=e('<div id="iris-gradtest" />'),n="linear-gradient(top,#fff,#000)";e.each(s,function(e,r){t.css("backgroundImage",r+n);if(t.css("backgroundImage").match("gradient"))return i=e,!1}),e.browser.webkit&&i===!1&&(t.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),t.css("backgroundImage").match("gradient")&&(i="webkit")),t.remove()}}function a(t,n){return t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1),i==="webkit"?l(t,n):s[i]+"linear-gradient("+t+", "+n.join(", ")+")"}function f(t,n){t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1);var r=t==="top"?0:1,i=e(this),s=n.length-1,o=parseInt(e.browser.version,10)>=8?"-ms-filter":"filter";o="filter";var u=r===1?"left":"top",a=r===1?"right":"bottom",f=r===1?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+f+":100%;"+u+":%start%;"+a+":%end%;"+o+':%filter%;" data-color:"%color%"></div>',h="";i.css("position")==="static"&&i.css({position:"relative"}),n=c(n),e.each(n,function(e,t){if(e===s)return!1;var i=n[e+1];if(t.stop===i.stop)return;var o=100-parseFloat(i.stop)+"%";t.octoHex=(new Color(t.color)).toIEOctoHex(),i.octoHex=(new Color(i.color)).toIEOctoHex();var u="progid:DXImageTransform.Microsoft.Gradient(GradientType="+r+", StartColorStr='"+t.octoHex+"', EndColorStr='"+i.octoHex+"')";h+=l.replace("%start%",t.stop).replace("%end%",o).replace("%filter%",u)}),i.find(".iris-ie-gradient-shim").remove(),e(h).prependTo(i)}function l(t,n){var r=[];return t=t==="top"?"0% 0%,0% 100%,":"0% 100%,100% 100%,",n=c(n),e.each(n,function(e,t){r.push("color-stop("+parseFloat(t.stop)/100+", "+t.color+")")}),"-webkit-gradient(linear,"+t+r.join(",")+")"}function c(t){var n=[],r=[],i=[],s=t.length-1;return e.each(t,function(e,t){var i=t,s=!1,o=t.match(/1?[0-9]{1,2}%$/);o&&(i=t.replace(/\s?1?[0-9]{1,2}%$/,""),s=o.shift()),n.push(i),r.push(s)}),r[0]===!1&&(r[0]="0%"),r[s]===!1&&(r[s]="100%"),r=h(r),e.each(r,function(e){i[e]={color:n[e],stop:r[e]}}),i}function h(t){var n=0,r=t.length-1,i=0,s=!1,o,u,a,f;if(t.length<=2||e.inArray(!1,t)<0)return t;while(i<t.length-1)!s&&t[i]===!1?(n=i-1,s=!0):s&&t[i]!==!1&&(r=i,i=t.length),i++;u=r-n,f=parseInt(t[n].replace("%"),10),o=(parseFloat(t[r].replace("%"))-f)/u,i=n+1,a=1;while(i<r)t[i]=f+a*o+"%",a++,i++;return h(t)}var n='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',r=!!(e.browser.msie&&parseInt(e.browser.version,10)<10),i=!1,s=["-moz-","-webkit-","-o-","-ms-"],o='.iris-picker{display:block;position:relative}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,0.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:none;border:3px solid #fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}';if(r&&parseInt(e.browser.version,10)<=7)return e.fn.iris=e.noop;e.fn.gradient=function(t){var n=arguments;return this.each(function(){r?f.apply(this,n):e(this).css("backgroundImage",a.apply(this,n))})},e.fn.raninbowGradient=function(t,n){t=t||"top";var r=e.extend({},{s:100,l:50},n),i="hsl(%h%,"+r.s+"%,"+r.l+"%)",s=0,o=[];while(s<=360)o.push(i.replace("%h%",s)),s+=30;return this.each(function(){e(this).gradient(t,o)})};var p={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_scale:{h:360,s:100,l:100,v:100},_create:function(){var t=this,r=t.element,s=t.options.color||r.val(),o;i===!1&&u(),r.is("input")?(t.options.target?t.picker=e(n).appendTo(t.options.target):t.picker=e(n).insertAfter(r),t._addInputListeners(r)):(r.append(n),t.picker=r.find(".iris-picker"));if(e.browser.mozilla)t.picker.addClass("iris-mozilla");else if(e.browser.msie){var a=parseInt(e.browser.version,10);a===9?t.picker.addClass("iris-ie-9"):a<=8&&t.picker.addClass("iris-ie-lt9")}t.options.palettes&&t._addPalettes(),t.color=(new Color(s)).setHSpace(t.options.mode),t.options.color=t.color.toString(),t.controls={square:t.picker.find(".iris-square"),squareDrag:t.picker.find(".iris-square-value"),horiz:t.picker.find(".iris-square-horiz"),vert:t.picker.find(".iris-square-vert"),strip:t.picker.find(".iris-strip"),stripSlider:t.picker.find(".iris-strip .iris-slider-offset")},t.options.mode==="hsv"&&t.options.controls.vert==="l"&&(t.options.controls={horiz:"h",vert:"v",strip:"s"}),t.hue=t.color.h(),t.options.hide&&t.picker.hide(),t.options.border&&t.picker.addClass("iris-border"),t._initControls(),t.active="external",t._dimensions(),t._change()},_addPalettes:function(){var t=e("<div class='iris-palette-container' />"),n=e("<a class='iris-palette' tabindex='0' />"),r=e.isArray(this.options.palettes)?this.options.palettes:this._palettes;e.each(r,function(e,r){n.clone().data("color",r).css("backgroundColor",r).appendTo(t).height(10).width(10)}),this.picker.append(t)},_paint:function(){var e=this;e._paintDimension("top","strip"),e._paintDimension("top","vert"),e._paintDimension("left","horiz")},_paintDimension:function(e,t){var n=this,r=n.color,i=n.options.mode,s=n._getHSpaceColor(),o=n.controls[t],u=n.options.controls,a;if(t===n.active||n.active==="square"&&t!=="strip")return;switch(u[t]){case"h":if(i==="hsv"){s=r.clone();switch(t){case"horiz":s[u.vert](100);break;case"vert":s[u.horiz](100);break;case"strip":s.setHSpace("hsl")}a=s.toHsl()}else t==="strip"?a={s:s.s,l:s.l}:a={s:100,l:s.l};o.raninbowGradient(e,a);break;case"s":i==="hsv"?t==="vert"?a=[r.clone().a(0).s(0).toCSS("rgba"),r.clone().a(1).s(0).toCSS("rgba")]:t==="strip"?a=[r.clone().s(100).toCSS("hsl"),r.clone().s(0).toCSS("hsl")]:t==="horiz"&&(a=["#fff","hsl("+s.h+",100%,50%)"]):t==="vert"&&n.options.controls.horiz==="h"?a=["hsla(0, 0%, "+s.l+"%, 0)","hsla(0, 0%, "+s.l+"%, 1)"]:a=["hsl("+s.h+",0%,50%)","hsl("+s.h+",100%,50%)"],o.gradient(e,a);break;case"l":t==="strip"?a=["hsl("+s.h+",100%,100%)","hsl("+s.h+", "+s.s+"%,50%)","hsl("+s.h+",100%,0%)"]:a=["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],o.gradient(e,a);break;case"v":t==="strip"?a=[r.clone().v(100).toCSS(),r.clone().v(0).toCSS()]:a=["rgba(0,0,0,0)","#000"],o.gradient(e,a);break;default:}},_getHSpaceColor:function(){return this.options.mode==="hsv"?this.color.toHsv():this.color.toHsl()},_dimensions:function(t){var n=this,r=n.options,i=n.picker.find(".iris-picker-inner"),s=n.controls,o=s.square,u=n.picker.find(".iris-strip"),a="77.5%",f="12%",l=20,c=r.border?r.width-l:r.width,h,p=e.isArray(r.palettes)?r.palettes.length:n._palettes.length,d,v,m;t&&(o.css("width",""),u.css("width",""),n.picker.removeAttr("style")),a=c*(parseFloat(a)/100),f=c*(parseFloat(f)/100),h=r.border?a+l:a,o.width(a).height(a),u.height(a).width(f),n.picker.css({width:r.width,height:h});if(!r.palettes)return;d=a*2/100,m=a-(p-1)*d,v=m/p,n.picker.find(".iris-palette").each(function(t,n){var r=t===0?0:d;e(this).css({width:v,height:v,marginLeft:r})}),n.picker.css("paddingBottom",v+d),u.height(v+d+a)},_addInputListeners:function(e){var t=this,n=100,r=function(n){var r=new Color(e.val()),i=e.val().replace(/^#/,"");e.removeClass("iris-error"),r.error?i!==""&&e.addClass("iris-error"):r.toString()!==t.color.toString()&&(n.type!=="keyup"||!i.match(/^[0-9a-fA-F]{3}$/))&&t._setOption("color",r.toString())};e.on("change",r).on("keyup",t._debounce(r,n))},_initControls:function(){var t=this,n=t.controls,r=n.square,i=t.options.controls,s=t._scale[i.strip];n.stripSlider.slider({orientation:"vertical",max:s,slide:function(e,n){t.active="strip",i.strip==="h"&&(n.value=s-n.value),t.color[i.strip](n.value),t._change.apply(t,arguments)}}),n.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(e,n){t._squareDrag(e,n)},start:function(){r.addClass("iris-dragging"),e(this).addClass("ui-state-focus")},stop:function(){r.removeClass("iris-dragging"),e(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(n){n.preventDefault();var r="ui-state-focus";n.type==="mousedown"?(t.picker.find("."+r).removeClass(r).blur(),e(this).addClass(r).focus()):e(this).removeClass(r)}).on("keydown",function(e){var r=n.square,i=n.squareDrag,s=i.position(),o=t.options.width/100;e.altKey&&(o*=10);switch(e.keyCode){case 37:s.left-=o;break;case 38:s.top-=o;break;case 39:s.left+=o;break;case 40:s.top+=o;break;default:return!0}s.left=Math.max(0,Math.min(s.left,r.width())),s.top=Math.max(0,Math.min(s.top,r.height())),i.css(s),t._squareDrag(e,{position:s}),e.preventDefault()}),r.mousedown(function(n){if(n.which!==1)return;if(!e(n.target).is("div"))return;var r=t.controls.square.offset(),i={top:n.pageY-r.top,left:n.pageX-r.left};n.preventDefault(),t._squareDrag(n,{position:i}),n.target=t.controls.squareDrag.get(0),t.controls.squareDrag.css(i).trigger(n)}),t.options.palettes&&t.picker.find(".iris-palette-container").on("click",".iris-palette",function(n){t.color.fromCSS(e(this).data("color")),t.active="external",t._change()}).on("keydown",".iris-palette",function(t){if(t.keyCode!==13&&t.keyCode!==32)return!0;t.stopPropagation(),e(this).click()})},_squareDrag:function(e,t){var n=this,r=n.options.controls,i=n._squareDimensions(),s=Math.round((i.h-t.position.top)/i.h*n._scale[r.vert]),o=n._scale[r.horiz]-Math.round((i.w-t.position.left)/i.w*n._scale[r.horiz]);n.color[r.horiz](o)[r.vert](s),n.active="square",n._change.apply(n,arguments)},_setOption:function(e,t){var n=this.options[e];if(e==="color"){t=""+t;var r=t.replace(/^#/,""),i=(new Color(t)).setHSpace(this.options.mode);i.error||(this.color=i,this.options.color=this.options[e]=this.color.toString(),this.active="external",this._change())}},_squareDimensions:function(e){var n=this.controls.square,r,i;return e!==t&&n.data("dimensions")?n.data("dimensions"):(i=this.controls.squareDrag,r={w:n.width(),h:n.height()},n.data("dimensions",r),r)},_isNonHueControl:function(e,t){return e==="square"&&this.options.controls.strip==="h"?!0:t==="external"||t==="h"&&e==="strip"?!1:!0},_change:function(t,n){var r=this,i=r.controls,s=r._getHSpaceColor(),o=r.color.toString(),u=["square","strip"],a=r.options.controls,f=a[r.active]||"external",l=r.hue;r.active==="strip"?u=[]:r.active!=="external"&&u.pop(),e.each(u,function(e,t){var n;if(t!==r.active)switch(t){case"strip":n=a.strip==="h"?r._scale[a.strip]-s[a.strip]:s[a.strip],i.stripSlider.slider("value",n);break;case"square":var o=r._squareDimensions(),u={left:s[a.horiz]/r._scale[a.horiz]*o.w,top:o.h-s[a.vert]/r._scale[a.vert]*o.h};r.controls.squareDrag.css(u)}}),s.h!==l&&r._isNonHueControl(r.active,f)&&r.color.h(l),r.hue=r.color.h(),r.options.color=r.color.toString(),r._inited&&r._trigger("change",{type:r.active},{color:r.color}),r.element.is(":input")&&!r.color.error&&(r.element.removeClass("iris-error"),r.element.val()!==r.color.toString()&&r.element.val(r.color.toString())),r._paint(),r._inited=!0,r.active=!1},_debounce:function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()}};e.widget("a8c.iris",p),e('<style id="iris-css">'+o+"</style>").appendTo("head")})(jQuery),function(e,t){var n=function(e,t){return this instanceof n?this._init(e,t):new n(e,t)};n.fn=n.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(e){var n="noop";switch(typeof e){case"object":return e.a!==t&&this.a(e.a),n=e.r!==t?"fromRgb":e.l!==t?"fromHsl":e.v!==t?"fromHsv":n,this[n](e);case"string":return this.fromCSS(e);case"number":return this.fromInt(parseInt(e,10))}return this},_error:function(){return this.error=!0,this},clone:function(){var e=new n(this.toInt()),t=["_alpha","_hSpace","_hsl","_hsv","error"];for(var r=t.length-1;r>=0;r--)e[t[r]]=this[t[r]];return e},setHSpace:function(e){return this._hSpace=e==="hsv"?e:"hsl",this},noop:function(){return this},fromCSS:function(e){var t,n,r=/^(rgb|hs(l|v))a?\(/;this.error=!1,e=e.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,"");if(e.match(r)&&e.match(/\)$/)){n=e.replace(/(\s|%)/g,"").replace(r,"").replace(/,?\);?$/,"").split(",");if(n.length<3)return this._error();if(n.length===4){this.a(parseFloat(n.pop()));if(this.error)return this}for(var i=n.length-1;i>=0;i--){n[i]=parseInt(n[i],10);if(isNaN(n[i]))return this._error()}return e.match(/^rgb/)?this.fromRgb({r:n[0],g:n[1],b:n[2]}):e.match(/^hsv/)?this.fromHsv({h:n[0],s:n[1],v:n[2]}):this.fromHsl({h:n[0],s:n[1],l:n[2]})}return this.fromHex(e)},fromRgb:function(e,n){return typeof e!="object"||e.r===t||e.g===t||e.b===t?this._error():(this.error=!1,this.fromInt(parseInt((e.r<<16)+(e.g<<8)+e.b,10),n))},fromHex:function(e){return e=e.replace(/^#/,"").replace(/^0x/,""),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),this.error=!/^[0-9A-F]{6}$/i.test(e),this.fromInt(parseInt(e,16))},fromHsl:function(e){var n,r,i,s,o,u,a,f;return typeof e!="object"||e.h===t||e.s===t||e.l===t?this._error():(this._hsl=e,this._hSpace="hsl",u=e.h/360,a=e.s/100,f=e.l/100,a===0?n=r=i=f:(s=f<.5?f*(1+a):f+a-f*a,o=2*f-s,n=this.hue2rgb(o,s,u+1/3),r=this.hue2rgb(o,s,u),i=this.hue2rgb(o,s,u-1/3)),this.fromRgb({r:n*255,g:r*255,b:i*255},!0))},fromHsv:function(e){var n,r,i,s,o,u,a,f,l,c,h;if(typeof e!="object"||e.h===t||e.s===t||e.v===t)return this._error();this._hsv=e,this._hSpace="hsv",n=e.h/360,r=e.s/100,i=e.v/100,a=Math.floor(n*6),f=n*6-a,l=i*(1-r),c=i*(1-f*r),h=i*(1-(1-f)*r);switch(a%6){case 0:s=i,o=h,u=l;break;case 1:s=c,o=i,u=l;break;case 2:s=l,o=i,u=h;break;case 3:s=l,o=c,u=i;break;case 4:s=h,o=l,u=i;break;case 5:s=i,o=l,u=c}return this.fromRgb({r:s*255,g:o*255,b:u*255},!0)},fromInt:function(e,n){return this._color=parseInt(e,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),n===t&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},toString:function(){var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;t>=0;t--)e="0"+e;return"#"+e},toCSS:function(e,t){e=e||"hex",t=parseFloat(t||this._alpha);switch(e){case"rgb":case"rgba":var n=this.toRgb();return t<1?"rgba( "+n.r+", "+n.g+", "+n.b+", "+t+" )":"rgb( "+n.r+", "+n.g+", "+n.b+" )";case"hsl":case"hsla":var r=this.toHsl();return t<1?"hsla( "+r.h+", "+r.s+"%, "+r.l+"%, "+t+" )":"hsl( "+r.h+", "+r.s+"%, "+r.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=(i+s)/2;if(i===s)o=u=0;else{var f=i-s;u=a>.5?f/(2-i-s):f/(i+s);switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsl.h!==o&&(o=this._hsl.h),u=Math.round(u*100),u===0&&this._hsl.s&&(u=this._hsl.s),{h:o,s:u,l:Math.round(a*100)}},toHsv:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=i,f=i-s;u=i===0?0:f/i;if(i===s)o=u=0;else{switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsv.h!==o&&(o=this._hsv.h),u=Math.round(u*100),u===0&&this._hsv.s&&(u=this._hsv.s),{h:o,s:u,v:Math.round(a*100)}},toInt:function(){return this._color},toIEOctoHex:function(){var e=this.toString(),t=parseInt(255*this._alpha,10).toString(16);return t.length===1&&(t="0"+t),"#"+t+e.replace(/^#/,"")},toLuminosity:function(){var e=this.toRgb();return.2126*Math.pow(e.r/255,2.2)+.7152*Math.pow(e.g/255,2.2)+.0722*Math.pow(e.b/255,2.2)},getDistanceLuminosityFrom:function(e){if(e instanceof n){var t=this.toLuminosity(),r=e.toLuminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)}throw"getDistanceLuminosityFrom requires a Color object"},getMaxContrastColor:function(){var e=this.toLuminosity(),t=e>=.5?"000000":"ffffff";return new n(t)},getGrayscaleContrastingColor:function(e){if(!e)return this.getMaxContrastColor();var t=e<5?5:e,n=this.getMaxContrastColor();e=n.getDistanceLuminosityFrom(this);if(e<=t)return n;var r=0===n.toInt()?1:-1;while(e>t)n=n.incrementLightness(r),e=n.getDistanceLuminosityFrom(this);return n},getReadableContrastingColor:function(e,r){if(!e instanceof n)return this;var i=r===t?5:r,s=e.getDistanceLuminosityFrom(this),o=e.getMaxContrastColor(),u=o.getDistanceLuminosityFrom(e);if(u<=i)return o;if(s>=i)return this;var a=0===o.toInt()?-1:1;while(s<i){this.incrementLightness(a),s=this.getDistanceLuminosityFrom(e);if(this._color===0||this._color===16777215)break}return this},a:function(e){if(e===t)return this._alpha;var n=parseFloat(e);return isNaN(n)?this._error():(this._alpha=n,this)},darken:function(e){return e=e||5,this.l(-e,!0)},lighten:function(e){return e=e||5,this.l(e,!0)},saturate:function(e){return e=e||15,this.s(e,!0)},desaturate:function(e){return e=e||15,this.s(-e,!0)},toGrayscale:function(){return this.setHSpace("hsl").s(0)},getComplement:function(){return this.h(180,!0)},getSplitComplement:function(e){e=e||1;var t=180+e*30;return this.h(t,!0)},getAnalog:function(e){e=e||1;var t=e*30;return this.h(t,!0)},getTetrad:function(e){e=e||1;var t=e*60;return this.h(t,!0)},getTriad:function(e){e=e||1;var t=e*120;return this.h(t,!0)},_partial:function(e){var n=r[e];return function(r,i){var s=this._spaceFunc("to",n.space);return r===t?s[e]:(i===!0&&(r=s[e]+r),n.mod&&(r%=n.mod),n.range&&(r=r<n.range[0]?n.range[0]:r>n.range[1]?n.range[1]:r),s[e]=r,this._spaceFunc("from",n.space,s))}},_spaceFunc:function(e,t,n){var r=t||this._hSpace,i=e+r.charAt(0).toUpperCase()+r.substr(1);return this[i](n)}};var r={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var i in r)r.hasOwnProperty(i)&&(n.fn[i]=n.fn._partial(i));e.Color=n}(typeof exports=="object"&&exports||this);
\ No newline at end of file
diff --git a/wp-admin/js/link.dev.js b/wp-admin/js/link.dev.js
deleted file mode 100644 (file)
index f8b4583..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-jQuery(document).ready( function($) {
-
-       var newCat, noSyncChecks = false, syncChecks, catAddAfter;
-
-       $('#link_name').focus();
-       // postboxes
-       postboxes.add_postbox_toggles('link');
-
-       // category tabs
-       $('#category-tabs a').click(function(){
-               var t = $(this).attr('href');
-               $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
-               $('.tabs-panel').hide();
-               $(t).show();
-               if ( '#categories-all' == t )
-                       deleteUserSetting('cats');
-               else
-                       setUserSetting('cats','pop');
-               return false;
-       });
-       if ( getUserSetting('cats') )
-               $('#category-tabs a[href="#categories-pop"]').click();
-
-       // Ajax Cat
-       newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
-       $('#link-category-add-submit').click( function() { newCat.focus(); } );
-       syncChecks = function() {
-               if ( noSyncChecks )
-                       return;
-               noSyncChecks = true;
-               var th = $(this), c = th.is(':checked'), id = th.val().toString();
-               $('#in-link-category-' + id + ', #in-popular-category-' + id).prop( 'checked', c );
-               noSyncChecks = false;
-       };
-
-       catAddAfter = function( r, s ) {
-               $(s.what + ' response_data', r).each( function() {
-                       var t = $($(this).text());
-                       t.find( 'label' ).each( function() {
-                               var th = $(this), val = th.find('input').val(), id = th.find('input')[0].id, name = $.trim( th.text() ), o;
-                               $('#' + id).change( syncChecks );
-                               o = $( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name );
-                       } );
-               } );
-       };
-
-       $('#categorychecklist').wpList( {
-               alt: '',
-               what: 'link-category',
-               response: 'category-ajax-response',
-               addAfter: catAddAfter
-       } );
-
-       $('a[href="#categories-all"]').click(function(){deleteUserSetting('cats');});
-       $('a[href="#categories-pop"]').click(function(){setUserSetting('cats','pop');});
-       if ( 'pop' == getUserSetting('cats') )
-               $('a[href="#categories-pop"]').click();
-
-       $('#category-add-toggle').click( function() {
-               $(this).parents('div:first').toggleClass( 'wp-hidden-children' );
-               $('#category-tabs a[href="#categories-all"]').click();
-               $('#newcategory').focus();
-               return false;
-       } );
-
-       $('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change();
-});
index 3f5433a4c05ea93b3def6653c7273607128cd9e6..f8b4583d4377597961cf46ff3dd05931988458f1 100644 (file)
@@ -1 +1,67 @@
-jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#link-category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-category-"+g).prop("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('<option value="'+parseInt(l,10)+'"></option>').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();c("#newcategory").focus();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()});
\ No newline at end of file
+jQuery(document).ready( function($) {
+
+       var newCat, noSyncChecks = false, syncChecks, catAddAfter;
+
+       $('#link_name').focus();
+       // postboxes
+       postboxes.add_postbox_toggles('link');
+
+       // category tabs
+       $('#category-tabs a').click(function(){
+               var t = $(this).attr('href');
+               $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
+               $('.tabs-panel').hide();
+               $(t).show();
+               if ( '#categories-all' == t )
+                       deleteUserSetting('cats');
+               else
+                       setUserSetting('cats','pop');
+               return false;
+       });
+       if ( getUserSetting('cats') )
+               $('#category-tabs a[href="#categories-pop"]').click();
+
+       // Ajax Cat
+       newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
+       $('#link-category-add-submit').click( function() { newCat.focus(); } );
+       syncChecks = function() {
+               if ( noSyncChecks )
+                       return;
+               noSyncChecks = true;
+               var th = $(this), c = th.is(':checked'), id = th.val().toString();
+               $('#in-link-category-' + id + ', #in-popular-category-' + id).prop( 'checked', c );
+               noSyncChecks = false;
+       };
+
+       catAddAfter = function( r, s ) {
+               $(s.what + ' response_data', r).each( function() {
+                       var t = $($(this).text());
+                       t.find( 'label' ).each( function() {
+                               var th = $(this), val = th.find('input').val(), id = th.find('input')[0].id, name = $.trim( th.text() ), o;
+                               $('#' + id).change( syncChecks );
+                               o = $( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name );
+                       } );
+               } );
+       };
+
+       $('#categorychecklist').wpList( {
+               alt: '',
+               what: 'link-category',
+               response: 'category-ajax-response',
+               addAfter: catAddAfter
+       } );
+
+       $('a[href="#categories-all"]').click(function(){deleteUserSetting('cats');});
+       $('a[href="#categories-pop"]').click(function(){setUserSetting('cats','pop');});
+       if ( 'pop' == getUserSetting('cats') )
+               $('a[href="#categories-pop"]').click();
+
+       $('#category-add-toggle').click( function() {
+               $(this).parents('div:first').toggleClass( 'wp-hidden-children' );
+               $('#category-tabs a[href="#categories-all"]').click();
+               $('#newcategory').focus();
+               return false;
+       } );
+
+       $('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change();
+});
diff --git a/wp-admin/js/link.min.js b/wp-admin/js/link.min.js
new file mode 100644 (file)
index 0000000..3f5433a
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#link-category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-category-"+g).prop("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('<option value="'+parseInt(l,10)+'"></option>').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();c("#newcategory").focus();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()});
\ No newline at end of file
diff --git a/wp-admin/js/media-gallery.dev.js b/wp-admin/js/media-gallery.dev.js
deleted file mode 100644 (file)
index 38e4f7b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-jQuery(function($){
-       $( 'body' ).bind( 'click.wp-gallery', function(e){
-               var target = $( e.target ), id, img_size;
-
-               if ( target.hasClass( 'wp-set-header' ) ) {
-                       ( window.dialogArguments || opener || parent || top ).location.href = target.data( 'location' );
-                       e.preventDefault();
-               } else if ( target.hasClass( 'wp-set-background' ) ) {
-                       id = target.data( 'attachment-id' );
-                       img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
-
-                       jQuery.post(ajaxurl, {
-                               action: 'set-background-image',
-                               attachment_id: id,
-                               size: img_size
-                       }, function(){
-                               var win = window.dialogArguments || opener || parent || top;
-                               win.tb_remove();
-                               win.location.reload();
-                       });
-
-                       e.preventDefault();
-               }
-       });
-});
index 81e51131afbadfe76a8cb6112a6fdbf0774b59a3..38e4f7b481999af4af717af529b79e5574953a05 100644 (file)
@@ -1 +1,25 @@
-jQuery(function(a){a("body").bind("click.wp-gallery",function(d){var c=a(d.target),f,b;if(c.hasClass("wp-set-header")){(window.dialogArguments||opener||parent||top).location.href=c.data("location");d.preventDefault()}else{if(c.hasClass("wp-set-background")){f=c.data("attachment-id");b=a('input[name="attachments['+f+'][image-size]"]:checked').val();jQuery.post(ajaxurl,{action:"set-background-image",attachment_id:f,size:b},function(){var e=window.dialogArguments||opener||parent||top;e.tb_remove();e.location.reload()});d.preventDefault()}}})});
\ No newline at end of file
+jQuery(function($){
+       $( 'body' ).bind( 'click.wp-gallery', function(e){
+               var target = $( e.target ), id, img_size;
+
+               if ( target.hasClass( 'wp-set-header' ) ) {
+                       ( window.dialogArguments || opener || parent || top ).location.href = target.data( 'location' );
+                       e.preventDefault();
+               } else if ( target.hasClass( 'wp-set-background' ) ) {
+                       id = target.data( 'attachment-id' );
+                       img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
+
+                       jQuery.post(ajaxurl, {
+                               action: 'set-background-image',
+                               attachment_id: id,
+                               size: img_size
+                       }, function(){
+                               var win = window.dialogArguments || opener || parent || top;
+                               win.tb_remove();
+                               win.location.reload();
+                       });
+
+                       e.preventDefault();
+               }
+       });
+});
diff --git a/wp-admin/js/media-gallery.min.js b/wp-admin/js/media-gallery.min.js
new file mode 100644 (file)
index 0000000..81e5113
--- /dev/null
@@ -0,0 +1 @@
+jQuery(function(a){a("body").bind("click.wp-gallery",function(d){var c=a(d.target),f,b;if(c.hasClass("wp-set-header")){(window.dialogArguments||opener||parent||top).location.href=c.data("location");d.preventDefault()}else{if(c.hasClass("wp-set-background")){f=c.data("attachment-id");b=a('input[name="attachments['+f+'][image-size]"]:checked').val();jQuery.post(ajaxurl,{action:"set-background-image",attachment_id:f,size:b},function(){var e=window.dialogArguments||opener||parent||top;e.tb_remove();e.location.reload()});d.preventDefault()}}})});
\ No newline at end of file
diff --git a/wp-admin/js/media-upload.dev.js b/wp-admin/js/media-upload.dev.js
deleted file mode 100644 (file)
index 9b998ff..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-// send html to the post editor
-
-var wpActiveEditor;
-
-function send_to_editor(h) {
-       var ed, mce = typeof(tinymce) != 'undefined', qt = typeof(QTags) != 'undefined';
-
-       if ( !wpActiveEditor ) {
-               if ( mce && tinymce.activeEditor ) {
-                       ed = tinymce.activeEditor;
-                       wpActiveEditor = ed.id;
-               } else if ( !qt ) {
-                       return false;
-               }
-       } else if ( mce ) {
-               if ( tinymce.activeEditor && (tinymce.activeEditor.id == 'mce_fullscreen' || tinymce.activeEditor.id == 'wp_mce_fullscreen') )
-                       ed = tinymce.activeEditor;
-               else
-                       ed = tinymce.get(wpActiveEditor);
-       }
-
-       if ( ed && !ed.isHidden() ) {
-               // restore caret position on IE
-               if ( tinymce.isIE && ed.windowManager.insertimagebookmark )
-                       ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
-
-               if ( h.indexOf('[caption') === 0 ) {
-                       if ( ed.wpSetImgCaption )
-                               h = ed.wpSetImgCaption(h);
-               } else if ( h.indexOf('[gallery') === 0 ) {
-                       if ( ed.plugins.wpgallery )
-                               h = ed.plugins.wpgallery._do_gallery(h);
-               } else if ( h.indexOf('[embed') === 0 ) {
-                       if ( ed.plugins.wordpress )
-                               h = ed.plugins.wordpress._setEmbed(h);
-               }
-
-               ed.execCommand('mceInsertContent', false, h);
-       } else if ( qt ) {
-               QTags.insertContent(h);
-       } else {
-               document.getElementById(wpActiveEditor).value += h;
-       }
-
-       try{tb_remove();}catch(e){};
-}
-
-// thickbox settings
-var tb_position;
-(function($) {
-       tb_position = function() {
-               var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width, adminbar_height = 0;
-
-               if ( $('body.admin-bar').length )
-                       adminbar_height = 28;
-
-               if ( tbWindow.size() ) {
-                       tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
-                       $('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
-                       tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
-                       if ( typeof document.body.style.maxWidth != 'undefined' )
-                               tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
-               };
-
-               return $('a.thickbox').each( function() {
-                       var href = $(this).attr('href');
-                       if ( ! href ) return;
-                       href = href.replace(/&width=[0-9]+/g, '');
-                       href = href.replace(/&height=[0-9]+/g, '');
-                       $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
-               });
-       };
-
-       $(window).resize(function(){ tb_position(); });
-
-       // store caret position in IE
-       $(document).ready(function($){
-               $('a.thickbox').click(function(){
-                       var ed;
-
-                       if ( typeof(tinymce) != 'undefined' && tinymce.isIE && ( ed = tinymce.get(wpActiveEditor) ) && !ed.isHidden() ) {
-                               ed.focus();
-                               ed.windowManager.insertimagebookmark = ed.selection.getBookmark();
-                       }
-               });
-       });
-
-})(jQuery);
index 7d1b9beefe1b070a00dc9e38e2c7d2d70738c285..9fc2e8197da892898653d09d8dd325321cd38801 100644 (file)
@@ -1 +1,88 @@
-var wpActiveEditor;function send_to_editor(c){var b,a=typeof(tinymce)!="undefined",f=typeof(QTags)!="undefined";if(!wpActiveEditor){if(a&&tinymce.activeEditor){b=tinymce.activeEditor;wpActiveEditor=b.id}else{if(!f){return false}}}else{if(a){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){b=tinymce.activeEditor}else{b=tinymce.get(wpActiveEditor)}}}if(b&&!b.isHidden()){if(tinymce.isIE&&b.windowManager.insertimagebookmark){b.selection.moveToBookmark(b.windowManager.insertimagebookmark)}if(c.indexOf("[caption")===0){if(b.wpSetImgCaption){c=b.wpSetImgCaption(c)}}else{if(c.indexOf("[gallery")===0){if(b.plugins.wpgallery){c=b.plugins.wpgallery._do_gallery(c)}}else{if(c.indexOf("[embed")===0){if(b.plugins.wordpress){c=b.plugins.wordpress._setEmbed(c)}}}}b.execCommand("mceInsertContent",false,c)}else{if(f){QTags.insertContent(c)}else{document.getElementById(wpActiveEditor).value+=c}}try{tb_remove()}catch(d){}}var tb_position;(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a(document).ready(function(b){b("a.thickbox").click(function(){var c;if(typeof(tinymce)!="undefined"&&tinymce.isIE&&(c=tinymce.get(wpActiveEditor))&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}})})})(jQuery);
\ No newline at end of file
+// send html to the post editor
+
+var wpActiveEditor;
+
+function send_to_editor(h) {
+       var ed, mce = typeof(tinymce) != 'undefined', qt = typeof(QTags) != 'undefined';
+
+       if ( !wpActiveEditor ) {
+               if ( mce && tinymce.activeEditor ) {
+                       ed = tinymce.activeEditor;
+                       wpActiveEditor = ed.id;
+               } else if ( !qt ) {
+                       return false;
+               }
+       } else if ( mce ) {
+               if ( tinymce.activeEditor && (tinymce.activeEditor.id == 'mce_fullscreen' || tinymce.activeEditor.id == 'wp_mce_fullscreen') )
+                       ed = tinymce.activeEditor;
+               else
+                       ed = tinymce.get(wpActiveEditor);
+       }
+
+       if ( ed && !ed.isHidden() ) {
+               // restore caret position on IE
+               if ( tinymce.isIE && ed.windowManager.insertimagebookmark )
+                       ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
+
+               if ( h.indexOf('[caption') !== -1 ) {
+                       if ( ed.wpSetImgCaption )
+                               h = ed.wpSetImgCaption(h);
+               } else if ( h.indexOf('[gallery') !== -1 ) {
+                       if ( ed.plugins.wpgallery )
+                               h = ed.plugins.wpgallery._do_gallery(h);
+               } else if ( h.indexOf('[embed') === 0 ) {
+                       if ( ed.plugins.wordpress )
+                               h = ed.plugins.wordpress._setEmbed(h);
+               }
+
+               ed.execCommand('mceInsertContent', false, h);
+       } else if ( qt ) {
+               QTags.insertContent(h);
+       } else {
+               document.getElementById(wpActiveEditor).value += h;
+       }
+
+       try{tb_remove();}catch(e){};
+}
+
+// thickbox settings
+var tb_position;
+(function($) {
+       tb_position = function() {
+               var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width, adminbar_height = 0;
+
+               if ( $('body.admin-bar').length )
+                       adminbar_height = 28;
+
+               if ( tbWindow.size() ) {
+                       tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
+                       $('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
+                       tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
+                       if ( typeof document.body.style.maxWidth != 'undefined' )
+                               tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
+               };
+
+               return $('a.thickbox').each( function() {
+                       var href = $(this).attr('href');
+                       if ( ! href ) return;
+                       href = href.replace(/&width=[0-9]+/g, '');
+                       href = href.replace(/&height=[0-9]+/g, '');
+                       $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
+               });
+       };
+
+       $(window).resize(function(){ tb_position(); });
+
+       // store caret position in IE
+       $(document).ready(function($){
+               $('a.thickbox').click(function(){
+                       var ed;
+
+                       if ( typeof(tinymce) != 'undefined' && tinymce.isIE && ( ed = tinymce.get(wpActiveEditor) ) && !ed.isHidden() ) {
+                               ed.focus();
+                               ed.windowManager.insertimagebookmark = ed.selection.getBookmark();
+                       }
+               });
+       });
+
+})(jQuery);
diff --git a/wp-admin/js/media-upload.min.js b/wp-admin/js/media-upload.min.js
new file mode 100644 (file)
index 0000000..cbb27e1
--- /dev/null
@@ -0,0 +1 @@
+var wpActiveEditor;function send_to_editor(c){var b,a=typeof(tinymce)!="undefined",f=typeof(QTags)!="undefined";if(!wpActiveEditor){if(a&&tinymce.activeEditor){b=tinymce.activeEditor;wpActiveEditor=b.id}else{if(!f){return false}}}else{if(a){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){b=tinymce.activeEditor}else{b=tinymce.get(wpActiveEditor)}}}if(b&&!b.isHidden()){if(tinymce.isIE&&b.windowManager.insertimagebookmark){b.selection.moveToBookmark(b.windowManager.insertimagebookmark)}if(c.indexOf("[caption")!==-1){if(b.wpSetImgCaption){c=b.wpSetImgCaption(c)}}else{if(c.indexOf("[gallery")!==-1){if(b.plugins.wpgallery){c=b.plugins.wpgallery._do_gallery(c)}}else{if(c.indexOf("[embed")===0){if(b.plugins.wordpress){c=b.plugins.wordpress._setEmbed(c)}}}}b.execCommand("mceInsertContent",false,c)}else{if(f){QTags.insertContent(c)}else{document.getElementById(wpActiveEditor).value+=c}}try{tb_remove()}catch(d){}}var tb_position;(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a(document).ready(function(b){b("a.thickbox").click(function(){var c;if(typeof(tinymce)!="undefined"&&tinymce.isIE&&(c=tinymce.get(wpActiveEditor))&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}})})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/media.dev.js b/wp-admin/js/media.dev.js
deleted file mode 100644 (file)
index 6c589ec..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-
-var findPosts;
-(function($){
-       findPosts = {
-               open : function(af_name, af_val) {
-                       var st = document.documentElement.scrollTop || $(document).scrollTop();
-
-                       if ( af_name && af_val ) {
-                               $('#affected').attr('name', af_name).val(af_val);
-                       }
-                       $('#find-posts').show().draggable({
-                               handle: '#find-posts-head'
-                       }).css({'top':st + 50 + 'px','left':'50%','marginLeft':'-250px'});
-
-                       $('#find-posts-input').focus().keyup(function(e){
-                               if (e.which == 27) { findPosts.close(); } // close on Escape
-                       });
-
-                       return false;
-               },
-
-               close : function() {
-                       $('#find-posts-response').html('');
-                       $('#find-posts').draggable('destroy').hide();
-               },
-
-               send : function() {
-                       var post = {
-                               ps: $('#find-posts-input').val(),
-                               action: 'find_posts',
-                               _ajax_nonce: $('#_ajax_nonce').val(),
-                               post_type: $('input[name="find-posts-what"]:checked').val()
-                       };
-
-                       $.ajax({
-                               type : 'POST',
-                               url : ajaxurl,
-                               data : post,
-                               success : function(x) { findPosts.show(x); },
-                               error : function(r) { findPosts.error(r); }
-                       });
-               },
-
-               show : function(x) {
-
-                       if ( typeof(x) == 'string' ) {
-                               this.error({'responseText': x});
-                               return;
-                       }
-
-                       var r = wpAjax.parseAjaxResponse(x);
-
-                       if ( r.errors ) {
-                               this.error({'responseText': wpAjax.broken});
-                       }
-                       r = r.responses[0];
-                       $('#find-posts-response').html(r.data);
-               },
-
-               error : function(r) {
-                       var er = r.statusText;
-
-                       if ( r.responseText ) {
-                               er = r.responseText.replace( /<.[^<>]*?>/g, '' );
-                       }
-                       if ( er ) {
-                               $('#find-posts-response').html(er);
-                       }
-               }
-       };
-
-       $(document).ready(function() {
-               $('#find-posts-submit').click(function(e) {
-                       if ( '' == $('#find-posts-response').html() )
-                               e.preventDefault();
-               });
-               $( '#find-posts .find-box-search :input' ).keypress( function( event ) {
-                       if ( 13 == event.which ) {
-                               findPosts.send();
-                               return false;
-                       }
-               } );
-               $( '#find-posts-search' ).click( findPosts.send );
-               $( '#find-posts-close' ).click( findPosts.close );
-               $('#doaction, #doaction2').click(function(e){
-                       $('select[name^="action"]').each(function(){
-                               if ( $(this).val() == 'attach' ) {
-                                       e.preventDefault();
-                                       findPosts.open();
-                               }
-                       });
-               });
-       });
-})(jQuery);
index 2fe5c0f9c7ca304f0e32c40df8c3d0ca17d3fa51..b4ed0fb6cef84b5b7c8ff4e1cbb530f4aa1b05f2 100644 (file)
@@ -1 +1,124 @@
-var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val(),post_type:a('input[name="find-posts-what"]:checked').val()};a.ajax({type:"POST",url:ajaxurl,data:b,success:function(c){findPosts.show(c)},error:function(c){findPosts.error(c)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#find-posts .find-box-search :input").keypress(function(b){if(13==b.which){findPosts.send();return false}});a("#find-posts-search").click(findPosts.send);a("#find-posts-close").click(findPosts.close);a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
\ No newline at end of file
+
+var findPosts;
+(function($){
+       findPosts = {
+               open : function(af_name, af_val) {
+                       var st = document.documentElement.scrollTop || $(document).scrollTop(),
+                               overlay = $( '.ui-find-overlay' );
+
+                       if ( overlay.length == 0 ) {
+                               $( 'body' ).append( '<div class="ui-find-overlay"></div>' );
+                               findPosts.overlay();
+                       }
+
+                       overlay.show();
+
+                       if ( af_name && af_val ) {
+                               $('#affected').attr('name', af_name).val(af_val);
+                       }
+                       $('#find-posts').show().draggable({
+                               handle: '#find-posts-head'
+                       }).css({'top':st + 50 + 'px','left':'50%','marginLeft':'-328px'});
+
+                       $('#find-posts-input').focus().keyup(function(e){
+                               if (e.which == 27) { findPosts.close(); } // close on Escape
+                       });
+
+                       // Pull some results up by default
+                       findPosts.send();
+
+                       return false;
+               },
+
+               close : function() {
+                       $('#find-posts-response').html('');
+                       $('#find-posts').draggable('destroy').hide();
+                       $( '.ui-find-overlay' ).hide();
+               },
+
+               overlay : function() {
+                       $( '.ui-find-overlay' ).css(
+                               { 'z-index': '999', 'width': $( document ).width() + 'px', 'height': $( document ).height() + 'px' }
+                       ).on('click', function () {
+                               findPosts.close();
+                       });
+               },
+
+               send : function() {
+                       var post = {
+                                       ps: $('#find-posts-input').val(),
+                                       action: 'find_posts',
+                                       _ajax_nonce: $('#_ajax_nonce').val()
+                               },
+                               spinner = $( '.find-box-search .spinner' );
+
+                       spinner.show();
+
+                       $.ajax({
+                               type : 'POST',
+                               url : ajaxurl,
+                               data : post,
+                               success : function(x) { findPosts.show(x); spinner.hide(); },
+                               error : function(r) { findPosts.error(r); spinner.hide(); }
+                       });
+               },
+
+               show : function(x) {
+
+                       if ( typeof(x) == 'string' ) {
+                               this.error({'responseText': x});
+                               return;
+                       }
+
+                       var r = wpAjax.parseAjaxResponse(x);
+
+                       if ( r.errors ) {
+                               this.error({'responseText': wpAjax.broken});
+                       }
+                       r = r.responses[0];
+                       $('#find-posts-response').html(r.data);
+
+                       // Enable whole row to be clicked
+                       $( '.found-posts td' ).on( 'click', function () {
+                               $( this ).parent().find( '.found-radio input' ).prop( 'checked', true );
+                       });
+               },
+
+               error : function(r) {
+                       var er = r.statusText;
+
+                       if ( r.responseText ) {
+                               er = r.responseText.replace( /<.[^<>]*?>/g, '' );
+                       }
+                       if ( er ) {
+                               $('#find-posts-response').html(er);
+                       }
+               }
+       };
+
+       $(document).ready(function() {
+               $('#find-posts-submit').click(function(e) {
+                       if ( '' == $('#find-posts-response').html() )
+                               e.preventDefault();
+               });
+               $( '#find-posts .find-box-search :input' ).keypress( function( event ) {
+                       if ( 13 == event.which ) {
+                               findPosts.send();
+                               return false;
+                       }
+               } );
+               $( '#find-posts-search' ).click( findPosts.send );
+               $( '#find-posts-close' ).click( findPosts.close );
+               $('#doaction, #doaction2').click(function(e){
+                       $('select[name^="action"]').each(function(){
+                               if ( $(this).val() == 'attach' ) {
+                                       e.preventDefault();
+                                       findPosts.open();
+                               }
+                       });
+               });
+       });
+       $(window).resize(function() {
+               findPosts.overlay();
+       });
+})(jQuery);
diff --git a/wp-admin/js/media.min.js b/wp-admin/js/media.min.js
new file mode 100644 (file)
index 0000000..1ddaf1a
--- /dev/null
@@ -0,0 +1 @@
+var findPosts;(function(a){findPosts={open:function(e,d){var c=document.documentElement.scrollTop||a(document).scrollTop(),b=a(".ui-find-overlay");if(b.length==0){a("body").append('<div class="ui-find-overlay"></div>');findPosts.overlay()}b.show();if(e&&d){a("#affected").attr("name",e).val(d)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:c+50+"px",left:"50%",marginLeft:"-328px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});findPosts.send();return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide();a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").css({"z-index":"999",width:a(document).width()+"px",height:a(document).height()+"px"}).on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.show();a.ajax({type:"POST",url:ajaxurl,data:b,success:function(d){findPosts.show(d);c.hide()},error:function(d){findPosts.error(d);c.hide()}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data);a(".found-posts td").on("click",function(){a(this).parent().find(".found-radio input").prop("checked",true)})},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#find-posts .find-box-search :input").keypress(function(b){if(13==b.which){findPosts.send();return false}});a("#find-posts-search").click(findPosts.send);a("#find-posts-close").click(findPosts.close);a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})});a(window).resize(function(){findPosts.overlay()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/nav-menu.dev.js b/wp-admin/js/nav-menu.dev.js
deleted file mode 100644 (file)
index 1366839..0000000
+++ /dev/null
@@ -1,965 +0,0 @@
-/**
- * WordPress Administration Navigation Menu
- * Interface JS functions
- *
- * @version 2.0.0
- *
- * @package WordPress
- * @subpackage Administration
- */
-
-var wpNavMenu;
-
-(function($) {
-
-       var api = wpNavMenu = {
-
-               options : {
-                       menuItemDepthPerLevel : 30, // Do not use directly. Use depthToPx and pxToDepth instead.
-                       globalMaxDepth : 11
-               },
-
-               menuList : undefined,   // Set in init.
-               targetList : undefined, // Set in init.
-               menusChanged : false,
-               isRTL: !! ( 'undefined' != typeof isRtl && isRtl ),
-               negateIfRTL: ( 'undefined' != typeof isRtl && isRtl ) ? -1 : 1,
-
-               // Functions that run on init.
-               init : function() {
-                       api.menuList = $('#menu-to-edit');
-                       api.targetList = api.menuList;
-
-                       this.jQueryExtensions();
-
-                       this.attachMenuEditListeners();
-
-                       this.setupInputWithDefaultTitle();
-                       this.attachQuickSearchListeners();
-                       this.attachThemeLocationsListeners();
-
-                       this.attachTabsPanelListeners();
-
-                       this.attachUnsavedChangesListener();
-
-                       if( api.menuList.length ) // If no menu, we're in the + tab.
-                               this.initSortables();
-
-                       this.initToggles();
-
-                       this.initTabManager();
-               },
-
-               jQueryExtensions : function() {
-                       // jQuery extensions
-                       $.fn.extend({
-                               menuItemDepth : function() {
-                                       var margin = api.isRTL ? this.eq(0).css('margin-right') : this.eq(0).css('margin-left');
-                                       return api.pxToDepth( margin && -1 != margin.indexOf('px') ? margin.slice(0, -2) : 0 );
-                               },
-                               updateDepthClass : function(current, prev) {
-                                       return this.each(function(){
-                                               var t = $(this);
-                                               prev = prev || t.menuItemDepth();
-                                               $(this).removeClass('menu-item-depth-'+ prev )
-                                                       .addClass('menu-item-depth-'+ current );
-                                       });
-                               },
-                               shiftDepthClass : function(change) {
-                                       return this.each(function(){
-                                               var t = $(this),
-                                                       depth = t.menuItemDepth();
-                                               $(this).removeClass('menu-item-depth-'+ depth )
-                                                       .addClass('menu-item-depth-'+ (depth + change) );
-                                       });
-                               },
-                               childMenuItems : function() {
-                                       var result = $();
-                                       this.each(function(){
-                                               var t = $(this), depth = t.menuItemDepth(), next = t.next();
-                                               while( next.length && next.menuItemDepth() > depth ) {
-                                                       result = result.add( next );
-                                                       next = next.next();
-                                               }
-                                       });
-                                       return result;
-                               },
-                               updateParentMenuItemDBId : function() {
-                                       return this.each(function(){
-                                               var item = $(this),
-                                                       input = item.find('.menu-item-data-parent-id'),
-                                                       depth = item.menuItemDepth(),
-                                                       parent = item.prev();
-
-                                               if( depth == 0 ) { // Item is on the top level, has no parent
-                                                       input.val(0);
-                                               } else { // Find the parent item, and retrieve its object id.
-                                                       while( ! parent[0] || ! parent[0].className || -1 == parent[0].className.indexOf('menu-item') || ( parent.menuItemDepth() != depth - 1 ) )
-                                                               parent = parent.prev();
-                                                       input.val( parent.find('.menu-item-data-db-id').val() );
-                                               }
-                                       });
-                               },
-                               hideAdvancedMenuItemFields : function() {
-                                       return this.each(function(){
-                                               var that = $(this);
-                                               $('.hide-column-tog').not(':checked').each(function(){
-                                                       that.find('.field-' + $(this).val() ).addClass('hidden-field');
-                                               });
-                                       });
-                               },
-                               /**
-                                * Adds selected menu items to the menu.
-                                *
-                                * @param jQuery metabox The metabox jQuery object.
-                                */
-                               addSelectedToMenu : function(processMethod) {
-                                       if ( 0 == $('#menu-to-edit').length ) {
-                                               return false;
-                                       }
-
-                                       return this.each(function() {
-                                               var t = $(this), menuItems = {},
-                                                       checkboxes = t.find('.tabs-panel-active .categorychecklist li input:checked'),
-                                                       re = new RegExp('menu-item\\[(\[^\\]\]*)');
-
-                                               processMethod = processMethod || api.addMenuItemToBottom;
-
-                                               // If no items are checked, bail.
-                                               if ( !checkboxes.length )
-                                                       return false;
-
-                                               // Show the ajax spinner
-                                               t.find('img.waiting').show();
-
-                                               // Retrieve menu item data
-                                               $(checkboxes).each(function(){
-                                                       var t = $(this),
-                                                               listItemDBIDMatch = re.exec( t.attr('name') ),
-                                                               listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
-                                                       if ( this.className && -1 != this.className.indexOf('add-to-top') )
-                                                               processMethod = api.addMenuItemToTop;
-                                                       menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID );
-                                               });
-
-                                               // Add the items
-                                               api.addItemToMenu(menuItems, processMethod, function(){
-                                                       // Deselect the items and hide the ajax spinner
-                                                       checkboxes.removeAttr('checked');
-                                                       t.find('img.waiting').hide();
-                                               });
-                                       });
-                               },
-                               getItemData : function( itemType, id ) {
-                                       itemType = itemType || 'menu-item';
-
-                                       var itemData = {}, i,
-                                       fields = [
-                                               'menu-item-db-id',
-                                               'menu-item-object-id',
-                                               'menu-item-object',
-                                               'menu-item-parent-id',
-                                               'menu-item-position',
-                                               'menu-item-type',
-                                               'menu-item-title',
-                                               'menu-item-url',
-                                               'menu-item-description',
-                                               'menu-item-attr-title',
-                                               'menu-item-target',
-                                               'menu-item-classes',
-                                               'menu-item-xfn'
-                                       ];
-
-                                       if( !id && itemType == 'menu-item' ) {
-                                               id = this.find('.menu-item-data-db-id').val();
-                                       }
-
-                                       if( !id ) return itemData;
-
-                                       this.find('input').each(function() {
-                                               var field;
-                                               i = fields.length;
-                                               while ( i-- ) {
-                                                       if( itemType == 'menu-item' )
-                                                               field = fields[i] + '[' + id + ']';
-                                                       else if( itemType == 'add-menu-item' )
-                                                               field = 'menu-item[' + id + '][' + fields[i] + ']';
-
-                                                       if (
-                                                               this.name &&
-                                                               field == this.name
-                                                       ) {
-                                                               itemData[fields[i]] = this.value;
-                                                       }
-                                               }
-                                       });
-
-                                       return itemData;
-                               },
-                               setItemData : function( itemData, itemType, id ) { // Can take a type, such as 'menu-item', or an id.
-                                       itemType = itemType || 'menu-item';
-
-                                       if( !id && itemType == 'menu-item' ) {
-                                               id = $('.menu-item-data-db-id', this).val();
-                                       }
-
-                                       if( !id ) return this;
-
-                                       this.find('input').each(function() {
-                                               var t = $(this), field;
-                                               $.each( itemData, function( attr, val ) {
-                                                       if( itemType == 'menu-item' )
-                                                               field = attr + '[' + id + ']';
-                                                       else if( itemType == 'add-menu-item' )
-                                                               field = 'menu-item[' + id + '][' + attr + ']';
-
-                                                       if ( field == t.attr('name') ) {
-                                                               t.val( val );
-                                                       }
-                                               });
-                                       });
-                                       return this;
-                               }
-                       });
-               },
-
-               initToggles : function() {
-                       // init postboxes
-                       postboxes.add_postbox_toggles('nav-menus');
-
-                       // adjust columns functions for menus UI
-                       columns.useCheckboxesForHidden();
-                       columns.checked = function(field) {
-                               $('.field-' + field).removeClass('hidden-field');
-                       }
-                       columns.unchecked = function(field) {
-                               $('.field-' + field).addClass('hidden-field');
-                       }
-                       // hide fields
-                       api.menuList.hideAdvancedMenuItemFields();
-               },
-
-               initSortables : function() {
-                       var currentDepth = 0, originalDepth, minDepth, maxDepth,
-                               prev, next, prevBottom, nextThreshold, helperHeight, transport,
-                               menuEdge = api.menuList.offset().left,
-                               body = $('body'), maxChildDepth,
-                               menuMaxDepth = initialMenuMaxDepth();
-
-                       // Use the right edge if RTL.
-                       menuEdge += api.isRTL ? api.menuList.width() : 0;
-
-                       api.menuList.sortable({
-                               handle: '.menu-item-handle',
-                               placeholder: 'sortable-placeholder',
-                               start: function(e, ui) {
-                                       var height, width, parent, children, tempHolder;
-
-                                       // handle placement for rtl orientation
-                                       if ( api.isRTL )
-                                               ui.item[0].style.right = 'auto';
-
-                                       transport = ui.item.children('.menu-item-transport');
-
-                                       // Set depths. currentDepth must be set before children are located.
-                                       originalDepth = ui.item.menuItemDepth();
-                                       updateCurrentDepth(ui, originalDepth);
-
-                                       // Attach child elements to parent
-                                       // Skip the placeholder
-                                       parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item;
-                                       children = parent.childMenuItems();
-                                       transport.append( children );
-
-                                       // Update the height of the placeholder to match the moving item.
-                                       height = transport.outerHeight();
-                                       // If there are children, account for distance between top of children and parent
-                                       height += ( height > 0 ) ? (ui.placeholder.css('margin-top').slice(0, -2) * 1) : 0;
-                                       height += ui.helper.outerHeight();
-                                       helperHeight = height;
-                                       height -= 2; // Subtract 2 for borders
-                                       ui.placeholder.height(height);
-
-                                       // Update the width of the placeholder to match the moving item.
-                                       maxChildDepth = originalDepth;
-                                       children.each(function(){
-                                               var depth = $(this).menuItemDepth();
-                                               maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth;
-                                       });
-                                       width = ui.helper.find('.menu-item-handle').outerWidth(); // Get original width
-                                       width += api.depthToPx(maxChildDepth - originalDepth); // Account for children
-                                       width -= 2; // Subtract 2 for borders
-                                       ui.placeholder.width(width);
-
-                                       // Update the list of menu items.
-                                       tempHolder = ui.placeholder.next();
-                                       tempHolder.css( 'margin-top', helperHeight + 'px' ); // Set the margin to absorb the placeholder
-                                       ui.placeholder.detach(); // detach or jQuery UI will think the placeholder is a menu item
-                                       $(this).sortable( "refresh" ); // The children aren't sortable. We should let jQ UI know.
-                                       ui.item.after( ui.placeholder ); // reattach the placeholder.
-                                       tempHolder.css('margin-top', 0); // reset the margin
-
-                                       // Now that the element is complete, we can update...
-                                       updateSharedVars(ui);
-                               },
-                               stop: function(e, ui) {
-                                       var children, depthChange = currentDepth - originalDepth;
-
-                                       // Return child elements to the list
-                                       children = transport.children().insertAfter(ui.item);
-
-                                       // Update depth classes
-                                       if( depthChange != 0 ) {
-                                               ui.item.updateDepthClass( currentDepth );
-                                               children.shiftDepthClass( depthChange );
-                                               updateMenuMaxDepth( depthChange );
-                                       }
-                                       // Register a change
-                                       api.registerChange();
-                                       // Update the item data.
-                                       ui.item.updateParentMenuItemDBId();
-
-                                       // address sortable's incorrectly-calculated top in opera
-                                       ui.item[0].style.top = 0;
-
-                                       // handle drop placement for rtl orientation
-                                       if ( api.isRTL ) {
-                                               ui.item[0].style.left = 'auto';
-                                               ui.item[0].style.right = 0;
-                                       }
-
-                                       // The width of the tab bar might have changed. Just in case.
-                                       api.refreshMenuTabs( true );
-                               },
-                               change: function(e, ui) {
-                                       // Make sure the placeholder is inside the menu.
-                                       // Otherwise fix it, or we're in trouble.
-                                       if( ! ui.placeholder.parent().hasClass('menu') )
-                                               (prev.length) ? prev.after( ui.placeholder ) : api.menuList.prepend( ui.placeholder );
-
-                                       updateSharedVars(ui);
-                               },
-                               sort: function(e, ui) {
-                                       var offset = ui.helper.offset(),
-                                               edge = api.isRTL ? offset.left + ui.helper.width() : offset.left,
-                                               depth = api.negateIfRTL * api.pxToDepth( edge - menuEdge );
-                                       // Check and correct if depth is not within range.
-                                       // Also, if the dragged element is dragged upwards over
-                                       // an item, shift the placeholder to a child position.
-                                       if ( depth > maxDepth || offset.top < prevBottom ) depth = maxDepth;
-                                       else if ( depth < minDepth ) depth = minDepth;
-
-                                       if( depth != currentDepth )
-                                               updateCurrentDepth(ui, depth);
-
-                                       // If we overlap the next element, manually shift downwards
-                                       if( nextThreshold && offset.top + helperHeight > nextThreshold ) {
-                                               next.after( ui.placeholder );
-                                               updateSharedVars( ui );
-                                               $(this).sortable( "refreshPositions" );
-                                       }
-                               }
-                       });
-
-                       function updateSharedVars(ui) {
-                               var depth;
-
-                               prev = ui.placeholder.prev();
-                               next = ui.placeholder.next();
-
-                               // Make sure we don't select the moving item.
-                               if( prev[0] == ui.item[0] ) prev = prev.prev();
-                               if( next[0] == ui.item[0] ) next = next.next();
-
-                               prevBottom = (prev.length) ? prev.offset().top + prev.height() : 0;
-                               nextThreshold = (next.length) ? next.offset().top + next.height() / 3 : 0;
-                               minDepth = (next.length) ? next.menuItemDepth() : 0;
-
-                               if( prev.length )
-                                       maxDepth = ( (depth = prev.menuItemDepth() + 1) > api.options.globalMaxDepth ) ? api.options.globalMaxDepth : depth;
-                               else
-                                       maxDepth = 0;
-                       }
-
-                       function updateCurrentDepth(ui, depth) {
-                               ui.placeholder.updateDepthClass( depth, currentDepth );
-                               currentDepth = depth;
-                       }
-
-                       function initialMenuMaxDepth() {
-                               if( ! body[0].className ) return 0;
-                               var match = body[0].className.match(/menu-max-depth-(\d+)/);
-                               return match && match[1] ? parseInt(match[1]) : 0;
-                       }
-
-                       function updateMenuMaxDepth( depthChange ) {
-                               var depth, newDepth = menuMaxDepth;
-                               if ( depthChange === 0 ) {
-                                       return;
-                               } else if ( depthChange > 0 ) {
-                                       depth = maxChildDepth + depthChange;
-                                       if( depth > menuMaxDepth )
-                                               newDepth = depth;
-                               } else if ( depthChange < 0 && maxChildDepth == menuMaxDepth ) {
-                                       while( ! $('.menu-item-depth-' + newDepth, api.menuList).length && newDepth > 0 )
-                                               newDepth--;
-                               }
-                               // Update the depth class.
-                               body.removeClass( 'menu-max-depth-' + menuMaxDepth ).addClass( 'menu-max-depth-' + newDepth );
-                               menuMaxDepth = newDepth;
-                       }
-               },
-
-               attachMenuEditListeners : function() {
-                       var that = this;
-                       $('#update-nav-menu').bind('click', function(e) {
-                               if ( e.target && e.target.className ) {
-                                       if ( -1 != e.target.className.indexOf('item-edit') ) {
-                                               return that.eventOnClickEditLink(e.target);
-                                       } else if ( -1 != e.target.className.indexOf('menu-save') ) {
-                                               return that.eventOnClickMenuSave(e.target);
-                                       } else if ( -1 != e.target.className.indexOf('menu-delete') ) {
-                                               return that.eventOnClickMenuDelete(e.target);
-                                       } else if ( -1 != e.target.className.indexOf('item-delete') ) {
-                                               return that.eventOnClickMenuItemDelete(e.target);
-                                       } else if ( -1 != e.target.className.indexOf('item-cancel') ) {
-                                               return that.eventOnClickCancelLink(e.target);
-                                       }
-                               }
-                       });
-                       $('#add-custom-links input[type="text"]').keypress(function(e){
-                               if ( e.keyCode === 13 ) {
-                                       e.preventDefault();
-                                       $("#submit-customlinkdiv").click();
-                               }
-                       });
-               },
-
-               /**
-                * An interface for managing default values for input elements
-                * that is both JS and accessibility-friendly.
-                *
-                * Input elements that add the class 'input-with-default-title'
-                * will have their values set to the provided HTML title when empty.
-                */
-               setupInputWithDefaultTitle : function() {
-                       var name = 'input-with-default-title';
-
-                       $('.' + name).each( function(){
-                               var $t = $(this), title = $t.attr('title'), val = $t.val();
-                               $t.data( name, title );
-
-                               if( '' == val ) $t.val( title );
-                               else if ( title == val ) return;
-                               else $t.removeClass( name );
-                       }).focus( function(){
-                               var $t = $(this);
-                               if( $t.val() == $t.data(name) )
-                                       $t.val('').removeClass( name );
-                       }).blur( function(){
-                               var $t = $(this);
-                               if( '' == $t.val() )
-                                       $t.addClass( name ).val( $t.data(name) );
-                       });
-               },
-
-               attachThemeLocationsListeners : function() {
-                       var loc = $('#nav-menu-theme-locations'), params = {};
-                       params['action'] = 'menu-locations-save';
-                       params['menu-settings-column-nonce'] = $('#menu-settings-column-nonce').val();
-                       loc.find('input[type="submit"]').click(function() {
-                               loc.find('select').each(function() {
-                                       params[this.name] = $(this).val();
-                               });
-                               loc.find('.waiting').show();
-                               $.post( ajaxurl, params, function(r) {
-                                       loc.find('.waiting').hide();
-                               });
-                               return false;
-                       });
-               },
-
-               attachQuickSearchListeners : function() {
-                       var searchTimer;
-
-                       $('.quick-search').keypress(function(e){
-                               var t = $(this);
-
-                               if( 13 == e.which ) {
-                                       api.updateQuickSearchResults( t );
-                                       return false;
-                               }
-
-                               if( searchTimer ) clearTimeout(searchTimer);
-
-                               searchTimer = setTimeout(function(){
-                                       api.updateQuickSearchResults( t );
-                               }, 400);
-                       }).attr('autocomplete','off');
-               },
-
-               updateQuickSearchResults : function(input) {
-                       var panel, params,
-                       minSearchLength = 2,
-                       q = input.val();
-
-                       if( q.length < minSearchLength ) return;
-
-                       panel = input.parents('.tabs-panel');
-                       params = {
-                               'action': 'menu-quick-search',
-                               'response-format': 'markup',
-                               'menu': $('#menu').val(),
-                               'menu-settings-column-nonce': $('#menu-settings-column-nonce').val(),
-                               'q': q,
-                               'type': input.attr('name')
-                       };
-
-                       $('img.waiting', panel).show();
-
-                       $.post( ajaxurl, params, function(menuMarkup) {
-                               api.processQuickSearchQueryResponse(menuMarkup, params, panel);
-                       });
-               },
-
-               addCustomLink : function( processMethod ) {
-                       var url = $('#custom-menu-item-url').val(),
-                               label = $('#custom-menu-item-name').val();
-
-                       processMethod = processMethod || api.addMenuItemToBottom;
-
-                       if ( '' == url || 'http://' == url )
-                               return false;
-
-                       // Show the ajax spinner
-                       $('.customlinkdiv img.waiting').show();
-                       this.addLinkToMenu( url, label, processMethod, function() {
-                               // Remove the ajax spinner
-                               $('.customlinkdiv img.waiting').hide();
-                               // Set custom link form back to defaults
-                               $('#custom-menu-item-name').val('').blur();
-                               $('#custom-menu-item-url').val('http://');
-                       });
-               },
-
-               addLinkToMenu : function(url, label, processMethod, callback) {
-                       processMethod = processMethod || api.addMenuItemToBottom;
-                       callback = callback || function(){};
-
-                       api.addItemToMenu({
-                               '-1': {
-                                       'menu-item-type': 'custom',
-                                       'menu-item-url': url,
-                                       'menu-item-title': label
-                               }
-                       }, processMethod, callback);
-               },
-
-               addItemToMenu : function(menuItem, processMethod, callback) {
-                       var menu = $('#menu').val(),
-                               nonce = $('#menu-settings-column-nonce').val();
-
-                       processMethod = processMethod || function(){};
-                       callback = callback || function(){};
-
-                       params = {
-                               'action': 'add-menu-item',
-                               'menu': menu,
-                               'menu-settings-column-nonce': nonce,
-                               'menu-item': menuItem
-                       };
-
-                       $.post( ajaxurl, params, function(menuMarkup) {
-                               var ins = $('#menu-instructions');
-                               processMethod(menuMarkup, params);
-                               if( ! ins.hasClass('menu-instructions-inactive') && ins.siblings().length )
-                                       ins.addClass('menu-instructions-inactive');
-                               callback();
-                       });
-               },
-
-               /**
-                * Process the add menu item request response into menu list item.
-                *
-                * @param string menuMarkup The text server response of menu item markup.
-                * @param object req The request arguments.
-                */
-               addMenuItemToBottom : function( menuMarkup, req ) {
-                       $(menuMarkup).hideAdvancedMenuItemFields().appendTo( api.targetList );
-               },
-
-               addMenuItemToTop : function( menuMarkup, req ) {
-                       $(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList );
-               },
-
-               attachUnsavedChangesListener : function() {
-                       $('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){
-                               api.registerChange();
-                       });
-
-                       if ( 0 != $('#menu-to-edit').length ) {
-                               window.onbeforeunload = function(){
-                                       if ( api.menusChanged )
-                                               return navMenuL10n.saveAlert;
-                               };
-                       } else {
-                               // Make the post boxes read-only, as they can't be used yet
-                               $('#menu-settings-column').find('input,select').prop('disabled', true).end().find('a').attr('href', '#').unbind('click');
-                       }
-               },
-
-               registerChange : function() {
-                       api.menusChanged = true;
-               },
-
-               attachTabsPanelListeners : function() {
-                       $('#menu-settings-column').bind('click', function(e) {
-                               var selectAreaMatch, panelId, wrapper, items,
-                                       target = $(e.target);
-
-                               if ( target.hasClass('nav-tab-link') ) {
-                                       panelId = /#(.*)$/.exec(e.target.href);
-                                       if ( panelId && panelId[1] )
-                                               panelId = panelId[1]
-                                       else
-                                               return false;
-
-                                       wrapper = target.parents('.inside').first();
-
-                                       // upon changing tabs, we want to uncheck all checkboxes
-                                       $('input', wrapper).removeAttr('checked');
-
-                                       $('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive');
-                                       $('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active');
-
-                                       $('.tabs', wrapper).removeClass('tabs');
-                                       target.parent().addClass('tabs');
-
-                                       // select the search bar
-                                       $('.quick-search', wrapper).focus();
-
-                                       return false;
-                               } else if ( target.hasClass('select-all') ) {
-                                       selectAreaMatch = /#(.*)$/.exec(e.target.href);
-                                       if ( selectAreaMatch && selectAreaMatch[1] ) {
-                                               items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .menu-item-title input');
-                                               if( items.length === items.filter(':checked').length )
-                                                       items.removeAttr('checked');
-                                               else
-                                                       items.prop('checked', true);
-                                               return false;
-                                       }
-                               } else if ( target.hasClass('submit-add-to-menu') ) {
-                                       api.registerChange();
-
-                                       if ( e.target.id && 'submit-customlinkdiv' == e.target.id )
-                                               api.addCustomLink( api.addMenuItemToBottom );
-                                       else if ( e.target.id && -1 != e.target.id.indexOf('submit-') )
-                                               $('#' + e.target.id.replace(/submit-/, '')).addSelectedToMenu( api.addMenuItemToBottom );
-                                       return false;
-                               } else if ( target.hasClass('page-numbers') ) {
-                                       $.post( ajaxurl, e.target.href.replace(/.*\?/, '').replace(/action=([^&]*)/, '') + '&action=menu-get-metabox',
-                                               function( resp ) {
-                                                       if ( -1 == resp.indexOf('replace-id') )
-                                                               return;
-
-                                                       var metaBoxData = $.parseJSON(resp),
-                                                       toReplace = document.getElementById(metaBoxData['replace-id']),
-                                                       placeholder = document.createElement('div'),
-                                                       wrap = document.createElement('div');
-
-                                                       if ( ! metaBoxData['markup'] || ! toReplace )
-                                                               return;
-
-                                                       wrap.innerHTML = metaBoxData['markup'] ? metaBoxData['markup'] : '';
-
-                                                       toReplace.parentNode.insertBefore( placeholder, toReplace );
-                                                       placeholder.parentNode.removeChild( toReplace );
-
-                                                       placeholder.parentNode.insertBefore( wrap, placeholder );
-
-                                                       placeholder.parentNode.removeChild( placeholder );
-
-                                               }
-                                       );
-
-                                       return false;
-                               }
-                       });
-               },
-
-               initTabManager : function() {
-                       var fixed = $('.nav-tabs-wrapper'),
-                               fluid = fixed.children('.nav-tabs'),
-                               active = fluid.children('.nav-tab-active'),
-                               tabs = fluid.children('.nav-tab'),
-                               tabsWidth = 0,
-                               fixedRight, fixedLeft,
-                               arrowLeft, arrowRight, resizeTimer, css = {},
-                               marginFluid = api.isRTL ? 'margin-right' : 'margin-left',
-                               marginFixed = api.isRTL ? 'margin-left' : 'margin-right',
-                               msPerPx = 2;
-
-                       /**
-                        * Refreshes the menu tabs.
-                        * Will show and hide arrows where necessary.
-                        * Scrolls to the active tab by default.
-                        *
-                        * @param savePosition {boolean} Optional. Prevents scrolling so
-                        *                that the current position is maintained. Default false.
-                        **/
-                       api.refreshMenuTabs = function( savePosition ) {
-                               var fixedWidth = fixed.width(),
-                                       margin = 0, css = {};
-                               fixedLeft = fixed.offset().left;
-                               fixedRight = fixedLeft + fixedWidth;
-
-                               if( !savePosition )
-                                       active.makeTabVisible();
-
-                               // Prevent space from building up next to the last tab if there's more to show
-                               if( tabs.last().isTabVisible() ) {
-                                       margin = fixed.width() - tabsWidth;
-                                       margin = margin > 0 ? 0 : margin;
-                                       css[marginFluid] = margin + 'px';
-                                       fluid.animate( css, 100, "linear" );
-                               }
-
-                               // Show the arrows only when necessary
-                               if( fixedWidth > tabsWidth )
-                                       arrowLeft.add( arrowRight ).hide();
-                               else
-                                       arrowLeft.add( arrowRight ).show();
-                       }
-
-                       $.fn.extend({
-                               makeTabVisible : function() {
-                                       var t = this.eq(0), left, right, css = {}, shift = 0;
-
-                                       if( ! t.length ) return this;
-
-                                       left = t.offset().left;
-                                       right = left + t.outerWidth();
-
-                                       if( right > fixedRight )
-                                               shift = fixedRight - right;
-                                       else if ( left < fixedLeft )
-                                               shift = fixedLeft - left;
-
-                                       if( ! shift ) return this;
-
-                                       css[marginFluid] = "+=" + api.negateIfRTL * shift + 'px';
-                                       fluid.animate( css, Math.abs( shift ) * msPerPx, "linear" );
-                                       return this;
-                               },
-                               isTabVisible : function() {
-                                       var t = this.eq(0),
-                                               left = t.offset().left,
-                                               right = left + t.outerWidth();
-                                       return ( right <= fixedRight && left >= fixedLeft ) ? true : false;
-                               }
-                       });
-
-                       // Find the width of all tabs
-                       tabs.each(function(){
-                               tabsWidth += $(this).outerWidth(true);
-                       });
-
-                       // Set up fixed margin for overflow, unset padding
-                       css['padding'] = 0;
-                       css[marginFixed] = (-1 * tabsWidth) + 'px';
-                       fluid.css( css );
-
-                       // Build tab navigation
-                       arrowLeft = $('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');
-                       arrowRight = $('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');
-                       // Attach to the document
-                       fixed.wrap('<div class="nav-tabs-nav"/>').parent().prepend( arrowLeft ).append( arrowRight );
-
-                       // Set the menu tabs
-                       api.refreshMenuTabs();
-                       // Make sure the tabs reset on resize
-                       $(window).resize(function() {
-                               if( resizeTimer ) clearTimeout(resizeTimer);
-                               resizeTimer = setTimeout( api.refreshMenuTabs, 200);
-                       });
-
-                       // Build arrow functions
-                       $.each([{
-                                       arrow : arrowLeft,
-                                       next : "next",
-                                       last : "first",
-                                       operator : "+="
-                               },{
-                                       arrow : arrowRight,
-                                       next : "prev",
-                                       last : "last",
-                                       operator : "-="
-                               }], function(){
-                               var that = this;
-                               this.arrow.mousedown(function(){
-                                       var marginFluidVal = Math.abs( parseInt( fluid.css(marginFluid) ) ),
-                                               shift = marginFluidVal,
-                                               css = {};
-
-                                       if( "-=" == that.operator )
-                                               shift = Math.abs( tabsWidth - fixed.width() ) - marginFluidVal;
-
-                                       if( ! shift ) return;
-
-                                       css[marginFluid] = that.operator + shift + 'px';
-                                       fluid.animate( css, shift * msPerPx, "linear" );
-                               }).mouseup(function(){
-                                       var tab, next;
-                                       fluid.stop(true);
-                                       tab = tabs[that.last]();
-                                       while( (next = tab[that.next]()) && next.length && ! next.isTabVisible() ) {
-                                               tab = next;
-                                       }
-                                       tab.makeTabVisible();
-                               });
-                       });
-               },
-
-               eventOnClickEditLink : function(clickedEl) {
-                       var settings, item,
-                       matchedSection = /#(.*)$/.exec(clickedEl.href);
-                       if ( matchedSection && matchedSection[1] ) {
-                               settings = $('#'+matchedSection[1]);
-                               item = settings.parent();
-                               if( 0 != item.length ) {
-                                       if( item.hasClass('menu-item-edit-inactive') ) {
-                                               if( ! settings.data('menu-item-data') ) {
-                                                       settings.data( 'menu-item-data', settings.getItemData() );
-                                               }
-                                               settings.slideDown('fast');
-                                               item.removeClass('menu-item-edit-inactive')
-                                                       .addClass('menu-item-edit-active');
-                                       } else {
-                                               settings.slideUp('fast');
-                                               item.removeClass('menu-item-edit-active')
-                                                       .addClass('menu-item-edit-inactive');
-                                       }
-                                       return false;
-                               }
-                       }
-               },
-
-               eventOnClickCancelLink : function(clickedEl) {
-                       var settings = $(clickedEl).closest('.menu-item-settings');
-                       settings.setItemData( settings.data('menu-item-data') );
-                       return false;
-               },
-
-               eventOnClickMenuSave : function(clickedEl) {
-                       var locs = '',
-                       menuName = $('#menu-name'),
-                       menuNameVal = menuName.val();
-                       // Cancel and warn if invalid menu name
-                       if( !menuNameVal || menuNameVal == menuName.attr('title') || !menuNameVal.replace(/\s+/, '') ) {
-                               menuName.parent().addClass('form-invalid');
-                               return false;
-                       }
-                       // Copy menu theme locations
-                       $('#nav-menu-theme-locations select').each(function() {
-                               locs += '<input type="hidden" name="' + this.name + '" value="' + $(this).val() + '" />';
-                       });
-                       $('#update-nav-menu').append( locs );
-                       // Update menu item position data
-                       api.menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } );
-                       window.onbeforeunload = null;
-
-                       return true;
-               },
-
-               eventOnClickMenuDelete : function(clickedEl) {
-                       // Delete warning AYS
-                       if ( confirm( navMenuL10n.warnDeleteMenu ) ) {
-                               window.onbeforeunload = null;
-                               return true;
-                       }
-                       return false;
-               },
-
-               eventOnClickMenuItemDelete : function(clickedEl) {
-                       var itemID = parseInt(clickedEl.id.replace('delete-', ''), 10);
-                       api.removeMenuItem( $('#menu-item-' + itemID) );
-                       api.registerChange();
-                       return false;
-               },
-
-               /**
-                * Process the quick search response into a search result
-                *
-                * @param string resp The server response to the query.
-                * @param object req The request arguments.
-                * @param jQuery panel The tabs panel we're searching in.
-                */
-               processQuickSearchQueryResponse : function(resp, req, panel) {
-                       var matched, newID,
-                       takenIDs = {},
-                       form = document.getElementById('nav-menu-meta'),
-                       pattern = new RegExp('menu-item\\[(\[^\\]\]*)', 'g'),
-                       $items = $('<div>').html(resp).find('li'),
-                       $item;
-
-                       if( ! $items.length ) {
-                               $('.categorychecklist', panel).html( '<li><p>' + navMenuL10n.noResultsFound + '</p></li>' );
-                               $('img.waiting', panel).hide();
-                               return;
-                       }
-
-                       $items.each(function(){
-                               $item = $(this);
-
-                               // make a unique DB ID number
-                               matched = pattern.exec($item.html());
-
-                               if ( matched && matched[1] ) {
-                                       newID = matched[1];
-                                       while( form.elements['menu-item[' + newID + '][menu-item-type]'] || takenIDs[ newID ] ) {
-                                               newID--;
-                                       }
-
-                                       takenIDs[newID] = true;
-                                       if ( newID != matched[1] ) {
-                                               $item.html( $item.html().replace(new RegExp(
-                                                       'menu-item\\[' + matched[1] + '\\]', 'g'),
-                                                       'menu-item[' + newID + ']'
-                                               ) );
-                                       }
-                               }
-                       });
-
-                       $('.categorychecklist', panel).html( $items );
-                       $('img.waiting', panel).hide();
-               },
-
-               removeMenuItem : function(el) {
-                       var children = el.childMenuItems();
-
-                       el.addClass('deleting').animate({
-                                       opacity : 0,
-                                       height: 0
-                               }, 350, function() {
-                                       var ins = $('#menu-instructions');
-                                       el.remove();
-                                       children.shiftDepthClass(-1).updateParentMenuItemDBId();
-                                       if( ! ins.siblings().length )
-                                               ins.removeClass('menu-instructions-inactive');
-                               });
-               },
-
-               depthToPx : function(depth) {
-                       return depth * api.options.menuItemDepthPerLevel;
-               },
-
-               pxToDepth : function(px) {
-                       return Math.floor(px / api.options.menuItemDepthPerLevel);
-               }
-
-       };
-
-       $(document).ready(function(){ wpNavMenu.init(); });
-
-})(jQuery);
index e4263dc3c1107fdb2c51ddf4b3ed5a237ea11f0b..20f0fc3becd883bef6b4da4bfe7f067c03d61f47 100644 (file)
@@ -1 +1,965 @@
-var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,isRTL:!!("undefined"!=typeof isRtl&&isRtl),negateIfRTL:("undefined"!=typeof isRtl&&isRtl)?-1:1,init:function(){a.menuList=b("#menu-to-edit");a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}this.initToggles();this.initTabManager()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=a.isRTL?this.eq(0).css("margin-right"):this.eq(0).css("margin-left");return a.pxToDepth(c&&-1!=c.indexOf("px")?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass("menu-item-depth-"+c).addClass("menu-item-depth-"+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass("menu-item-depth-"+e).addClass("menu-item-depth-"+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&&e.menuItemDepth()>f){c=c.add(e);e=e.next()}});return c},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(".menu-item-data-parent-id"),f=e.menuItemDepth(),d=e.prev();if(f==0){c.val(0)}else{while(!d[0]||!d[0].className||-1==d[0].className.indexOf("menu-item")||(d.menuItemDepth()!=f-1)){d=d.prev()}c.val(d.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(".hide-column-tog").not(":checked").each(function(){c.find(".field-"+b(this).val()).addClass("hidden-field")})})},addSelectedToMenu:function(c){if(0==b("#menu-to-edit").length){return false}return this.each(function(){var e=b(this),d={},g=e.find(".tabs-panel-active .categorychecklist li input:checked"),f=new RegExp("menu-item\\[([^\\]]*)");c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find("img.waiting").show();b(g).each(function(){var i=b(this),h=f.exec(i.attr("name")),j="undefined"==typeof h[1]?0:parseInt(h[1],10);if(this.className&&-1!=this.className.indexOf("add-to-top")){c=a.addMenuItemToTop}d[j]=i.closest("li").getItemData("add-menu-item",j)});a.addItemToMenu(d,c,function(){g.removeAttr("checked");e.find("img.waiting").hide()})})},getItemData:function(f,g){f=f||"menu-item";var d={},e,c=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"];if(!g&&f=="menu-item"){g=this.find(".menu-item-data-db-id").val()}if(!g){return d}this.find("input").each(function(){var h;e=c.length;while(e--){if(f=="menu-item"){h=c[e]+"["+g+"]"}else{if(f=="add-menu-item"){h="menu-item["+g+"]["+c[e]+"]"}}if(this.name&&h==this.name){d[c[e]]=this.value}}});return d},setItemData:function(c,d,e){d=d||"menu-item";if(!e&&d=="menu-item"){e=b(".menu-item-data-db-id",this).val()}if(!e){return this}this.find("input").each(function(){var f=b(this),g;b.each(c,function(h,i){if(d=="menu-item"){g=h+"["+e+"]"}else{if(d=="add-menu-item"){g="menu-item["+e+"]["+h+"]"}}if(g==f.attr("name")){f.val(i)}})});return this}})},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(c){b(".field-"+c).removeClass("hidden-field")};columns.unchecked=function(c){b(".field-"+c).addClass("hidden-field")};a.menuList.hideAdvancedMenuItemFields()},initSortables:function(){var p=0,e,t,d,l,o,f,c,i,s,m=a.menuList.offset().left,h=b("body"),q,n=r();m+=a.isRTL?a.menuList.width():0;a.menuList.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(A,z){var u,x,w,v,y;if(a.isRTL){z.item[0].style.right="auto"}s=z.item.children(".menu-item-transport");e=z.item.menuItemDepth();j(z,e);w=(z.item.next()[0]==z.placeholder[0])?z.item.next():z.item;v=w.childMenuItems();s.append(v);u=s.outerHeight();u+=(u>0)?(z.placeholder.css("margin-top").slice(0,-2)*1):0;u+=z.helper.outerHeight();i=u;u-=2;z.placeholder.height(u);q=e;v.each(function(){var B=b(this).menuItemDepth();q=(B>q)?B:q});x=z.helper.find(".menu-item-handle").outerWidth();x+=a.depthToPx(q-e);x-=2;z.placeholder.width(x);y=z.placeholder.next();y.css("margin-top",i+"px");z.placeholder.detach();b(this).sortable("refresh");z.item.after(z.placeholder);y.css("margin-top",0);k(z)},stop:function(x,w){var v,u=p-e;v=s.children().insertAfter(w.item);if(u!=0){w.item.updateDepthClass(p);v.shiftDepthClass(u);g(u)}a.registerChange();w.item.updateParentMenuItemDBId();w.item[0].style.top=0;if(a.isRTL){w.item[0].style.left="auto";w.item[0].style.right=0}a.refreshMenuTabs(true)},change:function(v,u){if(!u.placeholder.parent().hasClass("menu")){(l.length)?l.after(u.placeholder):a.menuList.prepend(u.placeholder)}k(u)},sort:function(w,v){var y=v.helper.offset(),u=a.isRTL?y.left+v.helper.width():y.left,x=a.negateIfRTL*a.pxToDepth(u-m);if(x>d||y.top<f){x=d}else{if(x<t){x=t}}if(x!=p){j(v,x)}if(c&&y.top+i>c){o.after(v.placeholder);k(v);b(this).sortable("refreshPositions")}}});function k(u){var v;l=u.placeholder.prev();o=u.placeholder.next();if(l[0]==u.item[0]){l=l.prev()}if(o[0]==u.item[0]){o=o.next()}f=(l.length)?l.offset().top+l.height():0;c=(o.length)?o.offset().top+o.height()/3:0;t=(o.length)?o.menuItemDepth():0;if(l.length){d=((v=l.menuItemDepth()+1)>a.options.globalMaxDepth)?a.options.globalMaxDepth:v}else{d=0}}function j(u,v){u.placeholder.updateDepthClass(v,p);p=v}function r(){if(!h[0].className){return 0}var u=h[0].className.match(/menu-max-depth-(\d+)/);return u&&u[1]?parseInt(u[1]):0}function g(u){var v,w=n;if(u===0){return}else{if(u>0){v=q+u;if(v>n){w=v}}else{if(u<0&&q==n){while(!b(".menu-item-depth-"+w,a.menuList).length&&w>0){w--}}}}h.removeClass("menu-max-depth-"+n).addClass("menu-max-depth-"+w);n=w}},attachMenuEditListeners:function(){var c=this;b("#update-nav-menu").bind("click",function(d){if(d.target&&d.target.className){if(-1!=d.target.className.indexOf("item-edit")){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf("menu-save")){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf("menu-delete")){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-delete")){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-cancel")){return c.eventOnClickCancelLink(d.target)}}}}}}});b('#add-custom-links input[type="text"]').keypress(function(d){if(d.keyCode===13){d.preventDefault();b("#submit-customlinkdiv").click()}})},setupInputWithDefaultTitle:function(){var c="input-with-default-title";b("."+c).each(function(){var f=b(this),e=f.attr("title"),d=f.val();f.data(c,e);if(""==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val("").removeClass(c)}}).blur(function(){var d=b(this);if(""==d.val()){d.addClass(c).val(d.data(c))}})},attachThemeLocationsListeners:function(){var d=b("#nav-menu-theme-locations"),c={};c.action="menu-locations-save";c["menu-settings-column-nonce"]=b("#menu-settings-column-nonce").val();d.find('input[type="submit"]').click(function(){d.find("select").each(function(){c[this.name]=b(this).val()});d.find(".waiting").show();b.post(ajaxurl,c,function(e){d.find(".waiting").hide()});return false})},attachQuickSearchListeners:function(){var c;b(".quick-search").keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr("autocomplete","off")},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length<e){return}c=d.parents(".tabs-panel");g={action:"menu-quick-search","response-format":"markup",menu:b("#menu").val(),"menu-settings-column-nonce":b("#menu-settings-column-nonce").val(),q:f,type:d.attr("name")};b("img.waiting",c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b("#custom-menu-item-url").val(),d=b("#custom-menu-item-name").val();c=c||a.addMenuItemToBottom;if(""==e||"http://"==e){return false}b(".customlinkdiv img.waiting").show();this.addLinkToMenu(e,d,c,function(){b(".customlinkdiv img.waiting").hide();b("#custom-menu-item-name").val("").blur();b("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":e,"menu-item-title":d}},c,f)},addItemToMenu:function(e,c,g){var f=b("#menu").val(),d=b("#menu-settings-column-nonce").val();c=c||function(){};g=g||function(){};params={action:"add-menu-item",menu:f,"menu-settings-column-nonce":d,"menu-item":e};b.post(ajaxurl,params,function(h){var i=b("#menu-instructions");c(h,params);if(!i.hasClass("menu-instructions-inactive")&&i.siblings().length){i.addClass("menu-instructions-inactive")}g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList)},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList)},attachUnsavedChangesListener:function(){b("#menu-management input, #menu-management select, #menu-management, #menu-management textarea").change(function(){a.registerChange()});if(0!=b("#menu-to-edit").length){window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}}}else{b("#menu-settings-column").find("input,select").prop("disabled",true).end().find("a").attr("href","#").unbind("click")}},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b("#menu-settings-column").bind("click",function(h){var f,d,i,c,g=b(h.target);if(g.hasClass("nav-tab-link")){d=/#(.*)$/.exec(h.target.href);if(d&&d[1]){d=d[1]}else{return false}i=g.parents(".inside").first();b("input",i).removeAttr("checked");b(".tabs-panel-active",i).removeClass("tabs-panel-active").addClass("tabs-panel-inactive");b("#"+d,i).removeClass("tabs-panel-inactive").addClass("tabs-panel-active");b(".tabs",i).removeClass("tabs");g.parent().addClass("tabs");b(".quick-search",i).focus();return false}else{if(g.hasClass("select-all")){f=/#(.*)$/.exec(h.target.href);if(f&&f[1]){c=b("#"+f[1]+" .tabs-panel-active .menu-item-title input");if(c.length===c.filter(":checked").length){c.removeAttr("checked")}else{c.prop("checked",true)}return false}}else{if(g.hasClass("submit-add-to-menu")){a.registerChange();if(h.target.id&&"submit-customlinkdiv"==h.target.id){a.addCustomLink(a.addMenuItemToBottom)}else{if(h.target.id&&-1!=h.target.id.indexOf("submit-")){b("#"+h.target.id.replace(/submit-/,"")).addSelectedToMenu(a.addMenuItemToBottom)}}return false}else{if(g.hasClass("page-numbers")){b.post(ajaxurl,h.target.href.replace(/.*\?/,"").replace(/action=([^&]*)/,"")+"&action=menu-get-metabox",function(m){if(-1==m.indexOf("replace-id")){return}var l=b.parseJSON(m),e=document.getElementById(l["replace-id"]),k=document.createElement("div"),j=document.createElement("div");if(!l.markup||!e){return}j.innerHTML=l.markup?l.markup:"";e.parentNode.insertBefore(k,e);k.parentNode.removeChild(e);k.parentNode.insertBefore(j,k);k.parentNode.removeChild(k)});return false}}}}})},initTabManager:function(){var h=b(".nav-tabs-wrapper"),j=h.children(".nav-tabs"),g=j.children(".nav-tab-active"),m=j.children(".nav-tab"),e=0,o,f,l,d,k,i={},c=a.isRTL?"margin-right":"margin-left",p=a.isRTL?"margin-left":"margin-right",n=2;a.refreshMenuTabs=function(q){var t=h.width(),s=0,r={};f=h.offset().left;o=f+t;if(!q){g.makeTabVisible()}if(m.last().isTabVisible()){s=h.width()-e;s=s>0?0:s;r[c]=s+"px";j.animate(r,100,"linear")}if(t>e){l.add(d).hide()}else{l.add(d).show()}};b.fn.extend({makeTabVisible:function(){var u=this.eq(0),v,s,r={},q=0;if(!u.length){return this}v=u.offset().left;s=v+u.outerWidth();if(s>o){q=o-s}else{if(v<f){q=f-v}}if(!q){return this}r[c]="+="+a.negateIfRTL*q+"px";j.animate(r,Math.abs(q)*n,"linear");return this},isTabVisible:function(){var r=this.eq(0),s=r.offset().left,q=s+r.outerWidth();return(q<=o&&s>=f)?true:false}});m.each(function(){e+=b(this).outerWidth(true)});i.padding=0;i[p]=(-1*e)+"px";j.css(i);l=b('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');d=b('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');h.wrap('<div class="nav-tabs-nav"/>').parent().prepend(l).append(d);a.refreshMenuTabs();b(window).resize(function(){if(k){clearTimeout(k)}k=setTimeout(a.refreshMenuTabs,200)});b.each([{arrow:l,next:"next",last:"first",operator:"+="},{arrow:d,next:"prev",last:"last",operator:"-="}],function(){var q=this;this.arrow.mousedown(function(){var t=Math.abs(parseInt(j.css(c))),r=t,s={};if("-="==q.operator){r=Math.abs(e-h.width())-t}if(!r){return}s[c]=q.operator+r+"px";j.animate(s,r*n,"linear")}).mouseup(function(){var s,r;j.stop(true);s=m[q.last]();while((r=s[q.next]())&&r.length&&!r.isTabVisible()){s=r}s.makeTabVisible()})})},eventOnClickEditLink:function(d){var c,e,f=/#(.*)$/.exec(d.href);if(f&&f[1]){c=b("#"+f[1]);e=c.parent();if(0!=e.length){if(e.hasClass("menu-item-edit-inactive")){if(!c.data("menu-item-data")){c.data("menu-item-data",c.getItemData())}c.slideDown("fast");e.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{c.slideUp("fast");e.removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCancelLink:function(d){var c=b(d).closest(".menu-item-settings");c.setItemData(c.data("menu-item-data"));return false},eventOnClickMenuSave:function(e){var f="",c=b("#menu-name"),d=c.val();if(!d||d==c.attr("title")||!d.replace(/\s+/,"")){c.parent().addClass("form-invalid");return false}b("#nav-menu-theme-locations select").each(function(){f+='<input type="hidden" name="'+this.name+'" value="'+b(this).val()+'" />'});b("#update-nav-menu").append(f);a.menuList.find(".menu-item-data-position").val(function(g){return g+1});window.onbeforeunload=null;return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){window.onbeforeunload=null;return true}return false},eventOnClickMenuItemDelete:function(c){var d=parseInt(c.id.replace("delete-",""),10);a.removeMenuItem(b("#menu-item-"+d));a.registerChange();return false},processQuickSearchQueryResponse:function(g,k,c){var e,i,f={},d=document.getElementById("nav-menu-meta"),j=new RegExp("menu-item\\[([^\\]]*)","g"),h=b("<div>").html(g).find("li"),l;if(!h.length){b(".categorychecklist",c).html("<li><p>"+navMenuL10n.noResultsFound+"</p></li>");b("img.waiting",c).hide();return}h.each(function(){l=b(this);e=j.exec(l.html());if(e&&e[1]){i=e[1];while(d.elements["menu-item["+i+"][menu-item-type]"]||f[i]){i--}f[i]=true;if(i!=e[1]){l.html(l.html().replace(new RegExp("menu-item\\["+e[1]+"\\]","g"),"menu-item["+i+"]"))}}});b(".categorychecklist",c).html(h);b("img.waiting",c).hide()},removeMenuItem:function(d){var c=d.childMenuItems();d.addClass("deleting").animate({opacity:0,height:0},350,function(){var e=b("#menu-instructions");d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId();if(!e.siblings().length){e.removeClass("menu-instructions-inactive")}})},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
\ No newline at end of file
+/**
+ * WordPress Administration Navigation Menu
+ * Interface JS functions
+ *
+ * @version 2.0.0
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+var wpNavMenu;
+
+(function($) {
+
+       var api = wpNavMenu = {
+
+               options : {
+                       menuItemDepthPerLevel : 30, // Do not use directly. Use depthToPx and pxToDepth instead.
+                       globalMaxDepth : 11
+               },
+
+               menuList : undefined,   // Set in init.
+               targetList : undefined, // Set in init.
+               menusChanged : false,
+               isRTL: !! ( 'undefined' != typeof isRtl && isRtl ),
+               negateIfRTL: ( 'undefined' != typeof isRtl && isRtl ) ? -1 : 1,
+
+               // Functions that run on init.
+               init : function() {
+                       api.menuList = $('#menu-to-edit');
+                       api.targetList = api.menuList;
+
+                       this.jQueryExtensions();
+
+                       this.attachMenuEditListeners();
+
+                       this.setupInputWithDefaultTitle();
+                       this.attachQuickSearchListeners();
+                       this.attachThemeLocationsListeners();
+
+                       this.attachTabsPanelListeners();
+
+                       this.attachUnsavedChangesListener();
+
+                       if( api.menuList.length ) // If no menu, we're in the + tab.
+                               this.initSortables();
+
+                       this.initToggles();
+
+                       this.initTabManager();
+               },
+
+               jQueryExtensions : function() {
+                       // jQuery extensions
+                       $.fn.extend({
+                               menuItemDepth : function() {
+                                       var margin = api.isRTL ? this.eq(0).css('margin-right') : this.eq(0).css('margin-left');
+                                       return api.pxToDepth( margin && -1 != margin.indexOf('px') ? margin.slice(0, -2) : 0 );
+                               },
+                               updateDepthClass : function(current, prev) {
+                                       return this.each(function(){
+                                               var t = $(this);
+                                               prev = prev || t.menuItemDepth();
+                                               $(this).removeClass('menu-item-depth-'+ prev )
+                                                       .addClass('menu-item-depth-'+ current );
+                                       });
+                               },
+                               shiftDepthClass : function(change) {
+                                       return this.each(function(){
+                                               var t = $(this),
+                                                       depth = t.menuItemDepth();
+                                               $(this).removeClass('menu-item-depth-'+ depth )
+                                                       .addClass('menu-item-depth-'+ (depth + change) );
+                                       });
+                               },
+                               childMenuItems : function() {
+                                       var result = $();
+                                       this.each(function(){
+                                               var t = $(this), depth = t.menuItemDepth(), next = t.next();
+                                               while( next.length && next.menuItemDepth() > depth ) {
+                                                       result = result.add( next );
+                                                       next = next.next();
+                                               }
+                                       });
+                                       return result;
+                               },
+                               updateParentMenuItemDBId : function() {
+                                       return this.each(function(){
+                                               var item = $(this),
+                                                       input = item.find('.menu-item-data-parent-id'),
+                                                       depth = item.menuItemDepth(),
+                                                       parent = item.prev();
+
+                                               if( depth == 0 ) { // Item is on the top level, has no parent
+                                                       input.val(0);
+                                               } else { // Find the parent item, and retrieve its object id.
+                                                       while( ! parent[0] || ! parent[0].className || -1 == parent[0].className.indexOf('menu-item') || ( parent.menuItemDepth() != depth - 1 ) )
+                                                               parent = parent.prev();
+                                                       input.val( parent.find('.menu-item-data-db-id').val() );
+                                               }
+                                       });
+                               },
+                               hideAdvancedMenuItemFields : function() {
+                                       return this.each(function(){
+                                               var that = $(this);
+                                               $('.hide-column-tog').not(':checked').each(function(){
+                                                       that.find('.field-' + $(this).val() ).addClass('hidden-field');
+                                               });
+                                       });
+                               },
+                               /**
+                                * Adds selected menu items to the menu.
+                                *
+                                * @param jQuery metabox The metabox jQuery object.
+                                */
+                               addSelectedToMenu : function(processMethod) {
+                                       if ( 0 == $('#menu-to-edit').length ) {
+                                               return false;
+                                       }
+
+                                       return this.each(function() {
+                                               var t = $(this), menuItems = {},
+                                                       checkboxes = t.find('.tabs-panel-active .categorychecklist li input:checked'),
+                                                       re = new RegExp('menu-item\\[(\[^\\]\]*)');
+
+                                               processMethod = processMethod || api.addMenuItemToBottom;
+
+                                               // If no items are checked, bail.
+                                               if ( !checkboxes.length )
+                                                       return false;
+
+                                               // Show the ajax spinner
+                                               t.find('.spinner').show();
+
+                                               // Retrieve menu item data
+                                               $(checkboxes).each(function(){
+                                                       var t = $(this),
+                                                               listItemDBIDMatch = re.exec( t.attr('name') ),
+                                                               listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
+                                                       if ( this.className && -1 != this.className.indexOf('add-to-top') )
+                                                               processMethod = api.addMenuItemToTop;
+                                                       menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID );
+                                               });
+
+                                               // Add the items
+                                               api.addItemToMenu(menuItems, processMethod, function(){
+                                                       // Deselect the items and hide the ajax spinner
+                                                       checkboxes.removeAttr('checked');
+                                                       t.find('.spinner').hide();
+                                               });
+                                       });
+                               },
+                               getItemData : function( itemType, id ) {
+                                       itemType = itemType || 'menu-item';
+
+                                       var itemData = {}, i,
+                                       fields = [
+                                               'menu-item-db-id',
+                                               'menu-item-object-id',
+                                               'menu-item-object',
+                                               'menu-item-parent-id',
+                                               'menu-item-position',
+                                               'menu-item-type',
+                                               'menu-item-title',
+                                               'menu-item-url',
+                                               'menu-item-description',
+                                               'menu-item-attr-title',
+                                               'menu-item-target',
+                                               'menu-item-classes',
+                                               'menu-item-xfn'
+                                       ];
+
+                                       if( !id && itemType == 'menu-item' ) {
+                                               id = this.find('.menu-item-data-db-id').val();
+                                       }
+
+                                       if( !id ) return itemData;
+
+                                       this.find('input').each(function() {
+                                               var field;
+                                               i = fields.length;
+                                               while ( i-- ) {
+                                                       if( itemType == 'menu-item' )
+                                                               field = fields[i] + '[' + id + ']';
+                                                       else if( itemType == 'add-menu-item' )
+                                                               field = 'menu-item[' + id + '][' + fields[i] + ']';
+
+                                                       if (
+                                                               this.name &&
+                                                               field == this.name
+                                                       ) {
+                                                               itemData[fields[i]] = this.value;
+                                                       }
+                                               }
+                                       });
+
+                                       return itemData;
+                               },
+                               setItemData : function( itemData, itemType, id ) { // Can take a type, such as 'menu-item', or an id.
+                                       itemType = itemType || 'menu-item';
+
+                                       if( !id && itemType == 'menu-item' ) {
+                                               id = $('.menu-item-data-db-id', this).val();
+                                       }
+
+                                       if( !id ) return this;
+
+                                       this.find('input').each(function() {
+                                               var t = $(this), field;
+                                               $.each( itemData, function( attr, val ) {
+                                                       if( itemType == 'menu-item' )
+                                                               field = attr + '[' + id + ']';
+                                                       else if( itemType == 'add-menu-item' )
+                                                               field = 'menu-item[' + id + '][' + attr + ']';
+
+                                                       if ( field == t.attr('name') ) {
+                                                               t.val( val );
+                                                       }
+                                               });
+                                       });
+                                       return this;
+                               }
+                       });
+               },
+
+               initToggles : function() {
+                       // init postboxes
+                       postboxes.add_postbox_toggles('nav-menus');
+
+                       // adjust columns functions for menus UI
+                       columns.useCheckboxesForHidden();
+                       columns.checked = function(field) {
+                               $('.field-' + field).removeClass('hidden-field');
+                       }
+                       columns.unchecked = function(field) {
+                               $('.field-' + field).addClass('hidden-field');
+                       }
+                       // hide fields
+                       api.menuList.hideAdvancedMenuItemFields();
+               },
+
+               initSortables : function() {
+                       var currentDepth = 0, originalDepth, minDepth, maxDepth,
+                               prev, next, prevBottom, nextThreshold, helperHeight, transport,
+                               menuEdge = api.menuList.offset().left,
+                               body = $('body'), maxChildDepth,
+                               menuMaxDepth = initialMenuMaxDepth();
+
+                       // Use the right edge if RTL.
+                       menuEdge += api.isRTL ? api.menuList.width() : 0;
+
+                       api.menuList.sortable({
+                               handle: '.menu-item-handle',
+                               placeholder: 'sortable-placeholder',
+                               start: function(e, ui) {
+                                       var height, width, parent, children, tempHolder;
+
+                                       // handle placement for rtl orientation
+                                       if ( api.isRTL )
+                                               ui.item[0].style.right = 'auto';
+
+                                       transport = ui.item.children('.menu-item-transport');
+
+                                       // Set depths. currentDepth must be set before children are located.
+                                       originalDepth = ui.item.menuItemDepth();
+                                       updateCurrentDepth(ui, originalDepth);
+
+                                       // Attach child elements to parent
+                                       // Skip the placeholder
+                                       parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item;
+                                       children = parent.childMenuItems();
+                                       transport.append( children );
+
+                                       // Update the height of the placeholder to match the moving item.
+                                       height = transport.outerHeight();
+                                       // If there are children, account for distance between top of children and parent
+                                       height += ( height > 0 ) ? (ui.placeholder.css('margin-top').slice(0, -2) * 1) : 0;
+                                       height += ui.helper.outerHeight();
+                                       helperHeight = height;
+                                       height -= 2; // Subtract 2 for borders
+                                       ui.placeholder.height(height);
+
+                                       // Update the width of the placeholder to match the moving item.
+                                       maxChildDepth = originalDepth;
+                                       children.each(function(){
+                                               var depth = $(this).menuItemDepth();
+                                               maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth;
+                                       });
+                                       width = ui.helper.find('.menu-item-handle').outerWidth(); // Get original width
+                                       width += api.depthToPx(maxChildDepth - originalDepth); // Account for children
+                                       width -= 2; // Subtract 2 for borders
+                                       ui.placeholder.width(width);
+
+                                       // Update the list of menu items.
+                                       tempHolder = ui.placeholder.next();
+                                       tempHolder.css( 'margin-top', helperHeight + 'px' ); // Set the margin to absorb the placeholder
+                                       ui.placeholder.detach(); // detach or jQuery UI will think the placeholder is a menu item
+                                       $(this).sortable( "refresh" ); // The children aren't sortable. We should let jQ UI know.
+                                       ui.item.after( ui.placeholder ); // reattach the placeholder.
+                                       tempHolder.css('margin-top', 0); // reset the margin
+
+                                       // Now that the element is complete, we can update...
+                                       updateSharedVars(ui);
+                               },
+                               stop: function(e, ui) {
+                                       var children, depthChange = currentDepth - originalDepth;
+
+                                       // Return child elements to the list
+                                       children = transport.children().insertAfter(ui.item);
+
+                                       // Update depth classes
+                                       if( depthChange != 0 ) {
+                                               ui.item.updateDepthClass( currentDepth );
+                                               children.shiftDepthClass( depthChange );
+                                               updateMenuMaxDepth( depthChange );
+                                       }
+                                       // Register a change
+                                       api.registerChange();
+                                       // Update the item data.
+                                       ui.item.updateParentMenuItemDBId();
+
+                                       // address sortable's incorrectly-calculated top in opera
+                                       ui.item[0].style.top = 0;
+
+                                       // handle drop placement for rtl orientation
+                                       if ( api.isRTL ) {
+                                               ui.item[0].style.left = 'auto';
+                                               ui.item[0].style.right = 0;
+                                       }
+
+                                       // The width of the tab bar might have changed. Just in case.
+                                       api.refreshMenuTabs( true );
+                               },
+                               change: function(e, ui) {
+                                       // Make sure the placeholder is inside the menu.
+                                       // Otherwise fix it, or we're in trouble.
+                                       if( ! ui.placeholder.parent().hasClass('menu') )
+                                               (prev.length) ? prev.after( ui.placeholder ) : api.menuList.prepend( ui.placeholder );
+
+                                       updateSharedVars(ui);
+                               },
+                               sort: function(e, ui) {
+                                       var offset = ui.helper.offset(),
+                                               edge = api.isRTL ? offset.left + ui.helper.width() : offset.left,
+                                               depth = api.negateIfRTL * api.pxToDepth( edge - menuEdge );
+                                       // Check and correct if depth is not within range.
+                                       // Also, if the dragged element is dragged upwards over
+                                       // an item, shift the placeholder to a child position.
+                                       if ( depth > maxDepth || offset.top < prevBottom ) depth = maxDepth;
+                                       else if ( depth < minDepth ) depth = minDepth;
+
+                                       if( depth != currentDepth )
+                                               updateCurrentDepth(ui, depth);
+
+                                       // If we overlap the next element, manually shift downwards
+                                       if( nextThreshold && offset.top + helperHeight > nextThreshold ) {
+                                               next.after( ui.placeholder );
+                                               updateSharedVars( ui );
+                                               $(this).sortable( "refreshPositions" );
+                                       }
+                               }
+                       });
+
+                       function updateSharedVars(ui) {
+                               var depth;
+
+                               prev = ui.placeholder.prev();
+                               next = ui.placeholder.next();
+
+                               // Make sure we don't select the moving item.
+                               if( prev[0] == ui.item[0] ) prev = prev.prev();
+                               if( next[0] == ui.item[0] ) next = next.next();
+
+                               prevBottom = (prev.length) ? prev.offset().top + prev.height() : 0;
+                               nextThreshold = (next.length) ? next.offset().top + next.height() / 3 : 0;
+                               minDepth = (next.length) ? next.menuItemDepth() : 0;
+
+                               if( prev.length )
+                                       maxDepth = ( (depth = prev.menuItemDepth() + 1) > api.options.globalMaxDepth ) ? api.options.globalMaxDepth : depth;
+                               else
+                                       maxDepth = 0;
+                       }
+
+                       function updateCurrentDepth(ui, depth) {
+                               ui.placeholder.updateDepthClass( depth, currentDepth );
+                               currentDepth = depth;
+                       }
+
+                       function initialMenuMaxDepth() {
+                               if( ! body[0].className ) return 0;
+                               var match = body[0].className.match(/menu-max-depth-(\d+)/);
+                               return match && match[1] ? parseInt(match[1]) : 0;
+                       }
+
+                       function updateMenuMaxDepth( depthChange ) {
+                               var depth, newDepth = menuMaxDepth;
+                               if ( depthChange === 0 ) {
+                                       return;
+                               } else if ( depthChange > 0 ) {
+                                       depth = maxChildDepth + depthChange;
+                                       if( depth > menuMaxDepth )
+                                               newDepth = depth;
+                               } else if ( depthChange < 0 && maxChildDepth == menuMaxDepth ) {
+                                       while( ! $('.menu-item-depth-' + newDepth, api.menuList).length && newDepth > 0 )
+                                               newDepth--;
+                               }
+                               // Update the depth class.
+                               body.removeClass( 'menu-max-depth-' + menuMaxDepth ).addClass( 'menu-max-depth-' + newDepth );
+                               menuMaxDepth = newDepth;
+                       }
+               },
+
+               attachMenuEditListeners : function() {
+                       var that = this;
+                       $('#update-nav-menu').bind('click', function(e) {
+                               if ( e.target && e.target.className ) {
+                                       if ( -1 != e.target.className.indexOf('item-edit') ) {
+                                               return that.eventOnClickEditLink(e.target);
+                                       } else if ( -1 != e.target.className.indexOf('menu-save') ) {
+                                               return that.eventOnClickMenuSave(e.target);
+                                       } else if ( -1 != e.target.className.indexOf('menu-delete') ) {
+                                               return that.eventOnClickMenuDelete(e.target);
+                                       } else if ( -1 != e.target.className.indexOf('item-delete') ) {
+                                               return that.eventOnClickMenuItemDelete(e.target);
+                                       } else if ( -1 != e.target.className.indexOf('item-cancel') ) {
+                                               return that.eventOnClickCancelLink(e.target);
+                                       }
+                               }
+                       });
+                       $('#add-custom-links input[type="text"]').keypress(function(e){
+                               if ( e.keyCode === 13 ) {
+                                       e.preventDefault();
+                                       $("#submit-customlinkdiv").click();
+                               }
+                       });
+               },
+
+               /**
+                * An interface for managing default values for input elements
+                * that is both JS and accessibility-friendly.
+                *
+                * Input elements that add the class 'input-with-default-title'
+                * will have their values set to the provided HTML title when empty.
+                */
+               setupInputWithDefaultTitle : function() {
+                       var name = 'input-with-default-title';
+
+                       $('.' + name).each( function(){
+                               var $t = $(this), title = $t.attr('title'), val = $t.val();
+                               $t.data( name, title );
+
+                               if( '' == val ) $t.val( title );
+                               else if ( title == val ) return;
+                               else $t.removeClass( name );
+                       }).focus( function(){
+                               var $t = $(this);
+                               if( $t.val() == $t.data(name) )
+                                       $t.val('').removeClass( name );
+                       }).blur( function(){
+                               var $t = $(this);
+                               if( '' == $t.val() )
+                                       $t.addClass( name ).val( $t.data(name) );
+                       });
+               },
+
+               attachThemeLocationsListeners : function() {
+                       var loc = $('#nav-menu-theme-locations'), params = {};
+                       params['action'] = 'menu-locations-save';
+                       params['menu-settings-column-nonce'] = $('#menu-settings-column-nonce').val();
+                       loc.find('input[type="submit"]').click(function() {
+                               loc.find('select').each(function() {
+                                       params[this.name] = $(this).val();
+                               });
+                               loc.find('.spinner').show();
+                               $.post( ajaxurl, params, function(r) {
+                                       loc.find('.spinner').hide();
+                               });
+                               return false;
+                       });
+               },
+
+               attachQuickSearchListeners : function() {
+                       var searchTimer;
+
+                       $('.quick-search').keypress(function(e){
+                               var t = $(this);
+
+                               if( 13 == e.which ) {
+                                       api.updateQuickSearchResults( t );
+                                       return false;
+                               }
+
+                               if( searchTimer ) clearTimeout(searchTimer);
+
+                               searchTimer = setTimeout(function(){
+                                       api.updateQuickSearchResults( t );
+                               }, 400);
+                       }).attr('autocomplete','off');
+               },
+
+               updateQuickSearchResults : function(input) {
+                       var panel, params,
+                       minSearchLength = 2,
+                       q = input.val();
+
+                       if( q.length < minSearchLength ) return;
+
+                       panel = input.parents('.tabs-panel');
+                       params = {
+                               'action': 'menu-quick-search',
+                               'response-format': 'markup',
+                               'menu': $('#menu').val(),
+                               'menu-settings-column-nonce': $('#menu-settings-column-nonce').val(),
+                               'q': q,
+                               'type': input.attr('name')
+                       };
+
+                       $('.spinner', panel).show();
+
+                       $.post( ajaxurl, params, function(menuMarkup) {
+                               api.processQuickSearchQueryResponse(menuMarkup, params, panel);
+                       });
+               },
+
+               addCustomLink : function( processMethod ) {
+                       var url = $('#custom-menu-item-url').val(),
+                               label = $('#custom-menu-item-name').val();
+
+                       processMethod = processMethod || api.addMenuItemToBottom;
+
+                       if ( '' == url || 'http://' == url )
+                               return false;
+
+                       // Show the ajax spinner
+                       $('.customlinkdiv .spinner').show();
+                       this.addLinkToMenu( url, label, processMethod, function() {
+                               // Remove the ajax spinner
+                               $('.customlinkdiv .spinner').hide();
+                               // Set custom link form back to defaults
+                               $('#custom-menu-item-name').val('').blur();
+                               $('#custom-menu-item-url').val('http://');
+                       });
+               },
+
+               addLinkToMenu : function(url, label, processMethod, callback) {
+                       processMethod = processMethod || api.addMenuItemToBottom;
+                       callback = callback || function(){};
+
+                       api.addItemToMenu({
+                               '-1': {
+                                       'menu-item-type': 'custom',
+                                       'menu-item-url': url,
+                                       'menu-item-title': label
+                               }
+                       }, processMethod, callback);
+               },
+
+               addItemToMenu : function(menuItem, processMethod, callback) {
+                       var menu = $('#menu').val(),
+                               nonce = $('#menu-settings-column-nonce').val();
+
+                       processMethod = processMethod || function(){};
+                       callback = callback || function(){};
+
+                       params = {
+                               'action': 'add-menu-item',
+                               'menu': menu,
+                               'menu-settings-column-nonce': nonce,
+                               'menu-item': menuItem
+                       };
+
+                       $.post( ajaxurl, params, function(menuMarkup) {
+                               var ins = $('#menu-instructions');
+                               processMethod(menuMarkup, params);
+                               if( ! ins.hasClass('menu-instructions-inactive') && ins.siblings().length )
+                                       ins.addClass('menu-instructions-inactive');
+                               callback();
+                       });
+               },
+
+               /**
+                * Process the add menu item request response into menu list item.
+                *
+                * @param string menuMarkup The text server response of menu item markup.
+                * @param object req The request arguments.
+                */
+               addMenuItemToBottom : function( menuMarkup, req ) {
+                       $(menuMarkup).hideAdvancedMenuItemFields().appendTo( api.targetList );
+               },
+
+               addMenuItemToTop : function( menuMarkup, req ) {
+                       $(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList );
+               },
+
+               attachUnsavedChangesListener : function() {
+                       $('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){
+                               api.registerChange();
+                       });
+
+                       if ( 0 != $('#menu-to-edit').length ) {
+                               window.onbeforeunload = function(){
+                                       if ( api.menusChanged )
+                                               return navMenuL10n.saveAlert;
+                               };
+                       } else {
+                               // Make the post boxes read-only, as they can't be used yet
+                               $('#menu-settings-column').find('input,select').prop('disabled', true).end().find('a').attr('href', '#').unbind('click');
+                       }
+               },
+
+               registerChange : function() {
+                       api.menusChanged = true;
+               },
+
+               attachTabsPanelListeners : function() {
+                       $('#menu-settings-column').bind('click', function(e) {
+                               var selectAreaMatch, panelId, wrapper, items,
+                                       target = $(e.target);
+
+                               if ( target.hasClass('nav-tab-link') ) {
+                                       panelId = /#(.*)$/.exec(e.target.href);
+                                       if ( panelId && panelId[1] )
+                                               panelId = panelId[1]
+                                       else
+                                               return false;
+
+                                       wrapper = target.parents('.inside').first();
+
+                                       // upon changing tabs, we want to uncheck all checkboxes
+                                       $('input', wrapper).removeAttr('checked');
+
+                                       $('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive');
+                                       $('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active');
+
+                                       $('.tabs', wrapper).removeClass('tabs');
+                                       target.parent().addClass('tabs');
+
+                                       // select the search bar
+                                       $('.quick-search', wrapper).focus();
+
+                                       return false;
+                               } else if ( target.hasClass('select-all') ) {
+                                       selectAreaMatch = /#(.*)$/.exec(e.target.href);
+                                       if ( selectAreaMatch && selectAreaMatch[1] ) {
+                                               items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .menu-item-title input');
+                                               if( items.length === items.filter(':checked').length )
+                                                       items.removeAttr('checked');
+                                               else
+                                                       items.prop('checked', true);
+                                               return false;
+                                       }
+                               } else if ( target.hasClass('submit-add-to-menu') ) {
+                                       api.registerChange();
+
+                                       if ( e.target.id && 'submit-customlinkdiv' == e.target.id )
+                                               api.addCustomLink( api.addMenuItemToBottom );
+                                       else if ( e.target.id && -1 != e.target.id.indexOf('submit-') )
+                                               $('#' + e.target.id.replace(/submit-/, '')).addSelectedToMenu( api.addMenuItemToBottom );
+                                       return false;
+                               } else if ( target.hasClass('page-numbers') ) {
+                                       $.post( ajaxurl, e.target.href.replace(/.*\?/, '').replace(/action=([^&]*)/, '') + '&action=menu-get-metabox',
+                                               function( resp ) {
+                                                       if ( -1 == resp.indexOf('replace-id') )
+                                                               return;
+
+                                                       var metaBoxData = $.parseJSON(resp),
+                                                       toReplace = document.getElementById(metaBoxData['replace-id']),
+                                                       placeholder = document.createElement('div'),
+                                                       wrap = document.createElement('div');
+
+                                                       if ( ! metaBoxData['markup'] || ! toReplace )
+                                                               return;
+
+                                                       wrap.innerHTML = metaBoxData['markup'] ? metaBoxData['markup'] : '';
+
+                                                       toReplace.parentNode.insertBefore( placeholder, toReplace );
+                                                       placeholder.parentNode.removeChild( toReplace );
+
+                                                       placeholder.parentNode.insertBefore( wrap, placeholder );
+
+                                                       placeholder.parentNode.removeChild( placeholder );
+
+                                               }
+                                       );
+
+                                       return false;
+                               }
+                       });
+               },
+
+               initTabManager : function() {
+                       var fixed = $('.nav-tabs-wrapper'),
+                               fluid = fixed.children('.nav-tabs'),
+                               active = fluid.children('.nav-tab-active'),
+                               tabs = fluid.children('.nav-tab'),
+                               tabsWidth = 0,
+                               fixedRight, fixedLeft,
+                               arrowLeft, arrowRight, resizeTimer, css = {},
+                               marginFluid = api.isRTL ? 'margin-right' : 'margin-left',
+                               marginFixed = api.isRTL ? 'margin-left' : 'margin-right',
+                               msPerPx = 2;
+
+                       /**
+                        * Refreshes the menu tabs.
+                        * Will show and hide arrows where necessary.
+                        * Scrolls to the active tab by default.
+                        *
+                        * @param savePosition {boolean} Optional. Prevents scrolling so
+                        *                that the current position is maintained. Default false.
+                        **/
+                       api.refreshMenuTabs = function( savePosition ) {
+                               var fixedWidth = fixed.width(),
+                                       margin = 0, css = {};
+                               fixedLeft = fixed.offset().left;
+                               fixedRight = fixedLeft + fixedWidth;
+
+                               if( !savePosition )
+                                       active.makeTabVisible();
+
+                               // Prevent space from building up next to the last tab if there's more to show
+                               if( tabs.last().isTabVisible() ) {
+                                       margin = fixed.width() - tabsWidth;
+                                       margin = margin > 0 ? 0 : margin;
+                                       css[marginFluid] = margin + 'px';
+                                       fluid.animate( css, 100, "linear" );
+                               }
+
+                               // Show the arrows only when necessary
+                               if( fixedWidth > tabsWidth )
+                                       arrowLeft.add( arrowRight ).hide();
+                               else
+                                       arrowLeft.add( arrowRight ).show();
+                       }
+
+                       $.fn.extend({
+                               makeTabVisible : function() {
+                                       var t = this.eq(0), left, right, css = {}, shift = 0;
+
+                                       if( ! t.length ) return this;
+
+                                       left = t.offset().left;
+                                       right = left + t.outerWidth();
+
+                                       if( right > fixedRight )
+                                               shift = fixedRight - right;
+                                       else if ( left < fixedLeft )
+                                               shift = fixedLeft - left;
+
+                                       if( ! shift ) return this;
+
+                                       css[marginFluid] = "+=" + api.negateIfRTL * shift + 'px';
+                                       fluid.animate( css, Math.abs( shift ) * msPerPx, "linear" );
+                                       return this;
+                               },
+                               isTabVisible : function() {
+                                       var t = this.eq(0),
+                                               left = t.offset().left,
+                                               right = left + t.outerWidth();
+                                       return ( right <= fixedRight && left >= fixedLeft ) ? true : false;
+                               }
+                       });
+
+                       // Find the width of all tabs
+                       tabs.each(function(){
+                               tabsWidth += $(this).outerWidth(true);
+                       });
+
+                       // Set up fixed margin for overflow, unset padding
+                       css['padding'] = 0;
+                       css[marginFixed] = (-1 * tabsWidth) + 'px';
+                       fluid.css( css );
+
+                       // Build tab navigation
+                       arrowLeft = $('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');
+                       arrowRight = $('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');
+                       // Attach to the document
+                       fixed.wrap('<div class="nav-tabs-nav"/>').parent().prepend( arrowLeft ).append( arrowRight );
+
+                       // Set the menu tabs
+                       api.refreshMenuTabs();
+                       // Make sure the tabs reset on resize
+                       $(window).resize(function() {
+                               if( resizeTimer ) clearTimeout(resizeTimer);
+                               resizeTimer = setTimeout( api.refreshMenuTabs, 200);
+                       });
+
+                       // Build arrow functions
+                       $.each([{
+                                       arrow : arrowLeft,
+                                       next : "next",
+                                       last : "first",
+                                       operator : "+="
+                               },{
+                                       arrow : arrowRight,
+                                       next : "prev",
+                                       last : "last",
+                                       operator : "-="
+                               }], function(){
+                               var that = this;
+                               this.arrow.mousedown(function(){
+                                       var marginFluidVal = Math.abs( parseInt( fluid.css(marginFluid) ) ),
+                                               shift = marginFluidVal,
+                                               css = {};
+
+                                       if( "-=" == that.operator )
+                                               shift = Math.abs( tabsWidth - fixed.width() ) - marginFluidVal;
+
+                                       if( ! shift ) return;
+
+                                       css[marginFluid] = that.operator + shift + 'px';
+                                       fluid.animate( css, shift * msPerPx, "linear" );
+                               }).mouseup(function(){
+                                       var tab, next;
+                                       fluid.stop(true);
+                                       tab = tabs[that.last]();
+                                       while( (next = tab[that.next]()) && next.length && ! next.isTabVisible() ) {
+                                               tab = next;
+                                       }
+                                       tab.makeTabVisible();
+                               });
+                       });
+               },
+
+               eventOnClickEditLink : function(clickedEl) {
+                       var settings, item,
+                       matchedSection = /#(.*)$/.exec(clickedEl.href);
+                       if ( matchedSection && matchedSection[1] ) {
+                               settings = $('#'+matchedSection[1]);
+                               item = settings.parent();
+                               if( 0 != item.length ) {
+                                       if( item.hasClass('menu-item-edit-inactive') ) {
+                                               if( ! settings.data('menu-item-data') ) {
+                                                       settings.data( 'menu-item-data', settings.getItemData() );
+                                               }
+                                               settings.slideDown('fast');
+                                               item.removeClass('menu-item-edit-inactive')
+                                                       .addClass('menu-item-edit-active');
+                                       } else {
+                                               settings.slideUp('fast');
+                                               item.removeClass('menu-item-edit-active')
+                                                       .addClass('menu-item-edit-inactive');
+                                       }
+                                       return false;
+                               }
+                       }
+               },
+
+               eventOnClickCancelLink : function(clickedEl) {
+                       var settings = $(clickedEl).closest('.menu-item-settings');
+                       settings.setItemData( settings.data('menu-item-data') );
+                       return false;
+               },
+
+               eventOnClickMenuSave : function(clickedEl) {
+                       var locs = '',
+                       menuName = $('#menu-name'),
+                       menuNameVal = menuName.val();
+                       // Cancel and warn if invalid menu name
+                       if( !menuNameVal || menuNameVal == menuName.attr('title') || !menuNameVal.replace(/\s+/, '') ) {
+                               menuName.parent().addClass('form-invalid');
+                               return false;
+                       }
+                       // Copy menu theme locations
+                       $('#nav-menu-theme-locations select').each(function() {
+                               locs += '<input type="hidden" name="' + this.name + '" value="' + $(this).val() + '" />';
+                       });
+                       $('#update-nav-menu').append( locs );
+                       // Update menu item position data
+                       api.menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } );
+                       window.onbeforeunload = null;
+
+                       return true;
+               },
+
+               eventOnClickMenuDelete : function(clickedEl) {
+                       // Delete warning AYS
+                       if ( confirm( navMenuL10n.warnDeleteMenu ) ) {
+                               window.onbeforeunload = null;
+                               return true;
+                       }
+                       return false;
+               },
+
+               eventOnClickMenuItemDelete : function(clickedEl) {
+                       var itemID = parseInt(clickedEl.id.replace('delete-', ''), 10);
+                       api.removeMenuItem( $('#menu-item-' + itemID) );
+                       api.registerChange();
+                       return false;
+               },
+
+               /**
+                * Process the quick search response into a search result
+                *
+                * @param string resp The server response to the query.
+                * @param object req The request arguments.
+                * @param jQuery panel The tabs panel we're searching in.
+                */
+               processQuickSearchQueryResponse : function(resp, req, panel) {
+                       var matched, newID,
+                       takenIDs = {},
+                       form = document.getElementById('nav-menu-meta'),
+                       pattern = new RegExp('menu-item\\[(\[^\\]\]*)', 'g'),
+                       $items = $('<div>').html(resp).find('li'),
+                       $item;
+
+                       if( ! $items.length ) {
+                               $('.categorychecklist', panel).html( '<li><p>' + navMenuL10n.noResultsFound + '</p></li>' );
+                               $('.spinner', panel).hide();
+                               return;
+                       }
+
+                       $items.each(function(){
+                               $item = $(this);
+
+                               // make a unique DB ID number
+                               matched = pattern.exec($item.html());
+
+                               if ( matched && matched[1] ) {
+                                       newID = matched[1];
+                                       while( form.elements['menu-item[' + newID + '][menu-item-type]'] || takenIDs[ newID ] ) {
+                                               newID--;
+                                       }
+
+                                       takenIDs[newID] = true;
+                                       if ( newID != matched[1] ) {
+                                               $item.html( $item.html().replace(new RegExp(
+                                                       'menu-item\\[' + matched[1] + '\\]', 'g'),
+                                                       'menu-item[' + newID + ']'
+                                               ) );
+                                       }
+                               }
+                       });
+
+                       $('.categorychecklist', panel).html( $items );
+                       $('.spinner', panel).hide();
+               },
+
+               removeMenuItem : function(el) {
+                       var children = el.childMenuItems();
+
+                       el.addClass('deleting').animate({
+                                       opacity : 0,
+                                       height: 0
+                               }, 350, function() {
+                                       var ins = $('#menu-instructions');
+                                       el.remove();
+                                       children.shiftDepthClass(-1).updateParentMenuItemDBId();
+                                       if( ! ins.siblings().length )
+                                               ins.removeClass('menu-instructions-inactive');
+                               });
+               },
+
+               depthToPx : function(depth) {
+                       return depth * api.options.menuItemDepthPerLevel;
+               },
+
+               pxToDepth : function(px) {
+                       return Math.floor(px / api.options.menuItemDepthPerLevel);
+               }
+
+       };
+
+       $(document).ready(function(){ wpNavMenu.init(); });
+
+})(jQuery);
diff --git a/wp-admin/js/nav-menu.min.js b/wp-admin/js/nav-menu.min.js
new file mode 100644 (file)
index 0000000..1f93603
--- /dev/null
@@ -0,0 +1 @@
+var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,isRTL:!!("undefined"!=typeof isRtl&&isRtl),negateIfRTL:("undefined"!=typeof isRtl&&isRtl)?-1:1,init:function(){a.menuList=b("#menu-to-edit");a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}this.initToggles();this.initTabManager()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=a.isRTL?this.eq(0).css("margin-right"):this.eq(0).css("margin-left");return a.pxToDepth(c&&-1!=c.indexOf("px")?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass("menu-item-depth-"+c).addClass("menu-item-depth-"+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass("menu-item-depth-"+e).addClass("menu-item-depth-"+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&&e.menuItemDepth()>f){c=c.add(e);e=e.next()}});return c},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(".menu-item-data-parent-id"),f=e.menuItemDepth(),d=e.prev();if(f==0){c.val(0)}else{while(!d[0]||!d[0].className||-1==d[0].className.indexOf("menu-item")||(d.menuItemDepth()!=f-1)){d=d.prev()}c.val(d.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(".hide-column-tog").not(":checked").each(function(){c.find(".field-"+b(this).val()).addClass("hidden-field")})})},addSelectedToMenu:function(c){if(0==b("#menu-to-edit").length){return false}return this.each(function(){var e=b(this),d={},g=e.find(".tabs-panel-active .categorychecklist li input:checked"),f=new RegExp("menu-item\\[([^\\]]*)");c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find(".spinner").show();b(g).each(function(){var i=b(this),h=f.exec(i.attr("name")),j="undefined"==typeof h[1]?0:parseInt(h[1],10);if(this.className&&-1!=this.className.indexOf("add-to-top")){c=a.addMenuItemToTop}d[j]=i.closest("li").getItemData("add-menu-item",j)});a.addItemToMenu(d,c,function(){g.removeAttr("checked");e.find(".spinner").hide()})})},getItemData:function(f,g){f=f||"menu-item";var d={},e,c=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"];if(!g&&f=="menu-item"){g=this.find(".menu-item-data-db-id").val()}if(!g){return d}this.find("input").each(function(){var h;e=c.length;while(e--){if(f=="menu-item"){h=c[e]+"["+g+"]"}else{if(f=="add-menu-item"){h="menu-item["+g+"]["+c[e]+"]"}}if(this.name&&h==this.name){d[c[e]]=this.value}}});return d},setItemData:function(c,d,e){d=d||"menu-item";if(!e&&d=="menu-item"){e=b(".menu-item-data-db-id",this).val()}if(!e){return this}this.find("input").each(function(){var f=b(this),g;b.each(c,function(h,i){if(d=="menu-item"){g=h+"["+e+"]"}else{if(d=="add-menu-item"){g="menu-item["+e+"]["+h+"]"}}if(g==f.attr("name")){f.val(i)}})});return this}})},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(c){b(".field-"+c).removeClass("hidden-field")};columns.unchecked=function(c){b(".field-"+c).addClass("hidden-field")};a.menuList.hideAdvancedMenuItemFields()},initSortables:function(){var p=0,e,t,d,l,o,f,c,i,s,m=a.menuList.offset().left,h=b("body"),q,n=r();m+=a.isRTL?a.menuList.width():0;a.menuList.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(A,z){var u,x,w,v,y;if(a.isRTL){z.item[0].style.right="auto"}s=z.item.children(".menu-item-transport");e=z.item.menuItemDepth();j(z,e);w=(z.item.next()[0]==z.placeholder[0])?z.item.next():z.item;v=w.childMenuItems();s.append(v);u=s.outerHeight();u+=(u>0)?(z.placeholder.css("margin-top").slice(0,-2)*1):0;u+=z.helper.outerHeight();i=u;u-=2;z.placeholder.height(u);q=e;v.each(function(){var B=b(this).menuItemDepth();q=(B>q)?B:q});x=z.helper.find(".menu-item-handle").outerWidth();x+=a.depthToPx(q-e);x-=2;z.placeholder.width(x);y=z.placeholder.next();y.css("margin-top",i+"px");z.placeholder.detach();b(this).sortable("refresh");z.item.after(z.placeholder);y.css("margin-top",0);k(z)},stop:function(x,w){var v,u=p-e;v=s.children().insertAfter(w.item);if(u!=0){w.item.updateDepthClass(p);v.shiftDepthClass(u);g(u)}a.registerChange();w.item.updateParentMenuItemDBId();w.item[0].style.top=0;if(a.isRTL){w.item[0].style.left="auto";w.item[0].style.right=0}a.refreshMenuTabs(true)},change:function(v,u){if(!u.placeholder.parent().hasClass("menu")){(l.length)?l.after(u.placeholder):a.menuList.prepend(u.placeholder)}k(u)},sort:function(w,v){var y=v.helper.offset(),u=a.isRTL?y.left+v.helper.width():y.left,x=a.negateIfRTL*a.pxToDepth(u-m);if(x>d||y.top<f){x=d}else{if(x<t){x=t}}if(x!=p){j(v,x)}if(c&&y.top+i>c){o.after(v.placeholder);k(v);b(this).sortable("refreshPositions")}}});function k(u){var v;l=u.placeholder.prev();o=u.placeholder.next();if(l[0]==u.item[0]){l=l.prev()}if(o[0]==u.item[0]){o=o.next()}f=(l.length)?l.offset().top+l.height():0;c=(o.length)?o.offset().top+o.height()/3:0;t=(o.length)?o.menuItemDepth():0;if(l.length){d=((v=l.menuItemDepth()+1)>a.options.globalMaxDepth)?a.options.globalMaxDepth:v}else{d=0}}function j(u,v){u.placeholder.updateDepthClass(v,p);p=v}function r(){if(!h[0].className){return 0}var u=h[0].className.match(/menu-max-depth-(\d+)/);return u&&u[1]?parseInt(u[1]):0}function g(u){var v,w=n;if(u===0){return}else{if(u>0){v=q+u;if(v>n){w=v}}else{if(u<0&&q==n){while(!b(".menu-item-depth-"+w,a.menuList).length&&w>0){w--}}}}h.removeClass("menu-max-depth-"+n).addClass("menu-max-depth-"+w);n=w}},attachMenuEditListeners:function(){var c=this;b("#update-nav-menu").bind("click",function(d){if(d.target&&d.target.className){if(-1!=d.target.className.indexOf("item-edit")){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf("menu-save")){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf("menu-delete")){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-delete")){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-cancel")){return c.eventOnClickCancelLink(d.target)}}}}}}});b('#add-custom-links input[type="text"]').keypress(function(d){if(d.keyCode===13){d.preventDefault();b("#submit-customlinkdiv").click()}})},setupInputWithDefaultTitle:function(){var c="input-with-default-title";b("."+c).each(function(){var f=b(this),e=f.attr("title"),d=f.val();f.data(c,e);if(""==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val("").removeClass(c)}}).blur(function(){var d=b(this);if(""==d.val()){d.addClass(c).val(d.data(c))}})},attachThemeLocationsListeners:function(){var d=b("#nav-menu-theme-locations"),c={};c.action="menu-locations-save";c["menu-settings-column-nonce"]=b("#menu-settings-column-nonce").val();d.find('input[type="submit"]').click(function(){d.find("select").each(function(){c[this.name]=b(this).val()});d.find(".spinner").show();b.post(ajaxurl,c,function(e){d.find(".spinner").hide()});return false})},attachQuickSearchListeners:function(){var c;b(".quick-search").keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr("autocomplete","off")},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length<e){return}c=d.parents(".tabs-panel");g={action:"menu-quick-search","response-format":"markup",menu:b("#menu").val(),"menu-settings-column-nonce":b("#menu-settings-column-nonce").val(),q:f,type:d.attr("name")};b(".spinner",c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b("#custom-menu-item-url").val(),d=b("#custom-menu-item-name").val();c=c||a.addMenuItemToBottom;if(""==e||"http://"==e){return false}b(".customlinkdiv .spinner").show();this.addLinkToMenu(e,d,c,function(){b(".customlinkdiv .spinner").hide();b("#custom-menu-item-name").val("").blur();b("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":e,"menu-item-title":d}},c,f)},addItemToMenu:function(e,c,g){var f=b("#menu").val(),d=b("#menu-settings-column-nonce").val();c=c||function(){};g=g||function(){};params={action:"add-menu-item",menu:f,"menu-settings-column-nonce":d,"menu-item":e};b.post(ajaxurl,params,function(h){var i=b("#menu-instructions");c(h,params);if(!i.hasClass("menu-instructions-inactive")&&i.siblings().length){i.addClass("menu-instructions-inactive")}g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList)},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList)},attachUnsavedChangesListener:function(){b("#menu-management input, #menu-management select, #menu-management, #menu-management textarea").change(function(){a.registerChange()});if(0!=b("#menu-to-edit").length){window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}}}else{b("#menu-settings-column").find("input,select").prop("disabled",true).end().find("a").attr("href","#").unbind("click")}},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b("#menu-settings-column").bind("click",function(h){var f,d,i,c,g=b(h.target);if(g.hasClass("nav-tab-link")){d=/#(.*)$/.exec(h.target.href);if(d&&d[1]){d=d[1]}else{return false}i=g.parents(".inside").first();b("input",i).removeAttr("checked");b(".tabs-panel-active",i).removeClass("tabs-panel-active").addClass("tabs-panel-inactive");b("#"+d,i).removeClass("tabs-panel-inactive").addClass("tabs-panel-active");b(".tabs",i).removeClass("tabs");g.parent().addClass("tabs");b(".quick-search",i).focus();return false}else{if(g.hasClass("select-all")){f=/#(.*)$/.exec(h.target.href);if(f&&f[1]){c=b("#"+f[1]+" .tabs-panel-active .menu-item-title input");if(c.length===c.filter(":checked").length){c.removeAttr("checked")}else{c.prop("checked",true)}return false}}else{if(g.hasClass("submit-add-to-menu")){a.registerChange();if(h.target.id&&"submit-customlinkdiv"==h.target.id){a.addCustomLink(a.addMenuItemToBottom)}else{if(h.target.id&&-1!=h.target.id.indexOf("submit-")){b("#"+h.target.id.replace(/submit-/,"")).addSelectedToMenu(a.addMenuItemToBottom)}}return false}else{if(g.hasClass("page-numbers")){b.post(ajaxurl,h.target.href.replace(/.*\?/,"").replace(/action=([^&]*)/,"")+"&action=menu-get-metabox",function(m){if(-1==m.indexOf("replace-id")){return}var l=b.parseJSON(m),e=document.getElementById(l["replace-id"]),k=document.createElement("div"),j=document.createElement("div");if(!l.markup||!e){return}j.innerHTML=l.markup?l.markup:"";e.parentNode.insertBefore(k,e);k.parentNode.removeChild(e);k.parentNode.insertBefore(j,k);k.parentNode.removeChild(k)});return false}}}}})},initTabManager:function(){var h=b(".nav-tabs-wrapper"),j=h.children(".nav-tabs"),g=j.children(".nav-tab-active"),m=j.children(".nav-tab"),e=0,o,f,l,d,k,i={},c=a.isRTL?"margin-right":"margin-left",p=a.isRTL?"margin-left":"margin-right",n=2;a.refreshMenuTabs=function(q){var t=h.width(),s=0,r={};f=h.offset().left;o=f+t;if(!q){g.makeTabVisible()}if(m.last().isTabVisible()){s=h.width()-e;s=s>0?0:s;r[c]=s+"px";j.animate(r,100,"linear")}if(t>e){l.add(d).hide()}else{l.add(d).show()}};b.fn.extend({makeTabVisible:function(){var u=this.eq(0),v,s,r={},q=0;if(!u.length){return this}v=u.offset().left;s=v+u.outerWidth();if(s>o){q=o-s}else{if(v<f){q=f-v}}if(!q){return this}r[c]="+="+a.negateIfRTL*q+"px";j.animate(r,Math.abs(q)*n,"linear");return this},isTabVisible:function(){var r=this.eq(0),s=r.offset().left,q=s+r.outerWidth();return(q<=o&&s>=f)?true:false}});m.each(function(){e+=b(this).outerWidth(true)});i.padding=0;i[p]=(-1*e)+"px";j.css(i);l=b('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');d=b('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');h.wrap('<div class="nav-tabs-nav"/>').parent().prepend(l).append(d);a.refreshMenuTabs();b(window).resize(function(){if(k){clearTimeout(k)}k=setTimeout(a.refreshMenuTabs,200)});b.each([{arrow:l,next:"next",last:"first",operator:"+="},{arrow:d,next:"prev",last:"last",operator:"-="}],function(){var q=this;this.arrow.mousedown(function(){var t=Math.abs(parseInt(j.css(c))),r=t,s={};if("-="==q.operator){r=Math.abs(e-h.width())-t}if(!r){return}s[c]=q.operator+r+"px";j.animate(s,r*n,"linear")}).mouseup(function(){var s,r;j.stop(true);s=m[q.last]();while((r=s[q.next]())&&r.length&&!r.isTabVisible()){s=r}s.makeTabVisible()})})},eventOnClickEditLink:function(d){var c,e,f=/#(.*)$/.exec(d.href);if(f&&f[1]){c=b("#"+f[1]);e=c.parent();if(0!=e.length){if(e.hasClass("menu-item-edit-inactive")){if(!c.data("menu-item-data")){c.data("menu-item-data",c.getItemData())}c.slideDown("fast");e.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{c.slideUp("fast");e.removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCancelLink:function(d){var c=b(d).closest(".menu-item-settings");c.setItemData(c.data("menu-item-data"));return false},eventOnClickMenuSave:function(e){var f="",c=b("#menu-name"),d=c.val();if(!d||d==c.attr("title")||!d.replace(/\s+/,"")){c.parent().addClass("form-invalid");return false}b("#nav-menu-theme-locations select").each(function(){f+='<input type="hidden" name="'+this.name+'" value="'+b(this).val()+'" />'});b("#update-nav-menu").append(f);a.menuList.find(".menu-item-data-position").val(function(g){return g+1});window.onbeforeunload=null;return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){window.onbeforeunload=null;return true}return false},eventOnClickMenuItemDelete:function(c){var d=parseInt(c.id.replace("delete-",""),10);a.removeMenuItem(b("#menu-item-"+d));a.registerChange();return false},processQuickSearchQueryResponse:function(g,k,c){var e,i,f={},d=document.getElementById("nav-menu-meta"),j=new RegExp("menu-item\\[([^\\]]*)","g"),h=b("<div>").html(g).find("li"),l;if(!h.length){b(".categorychecklist",c).html("<li><p>"+navMenuL10n.noResultsFound+"</p></li>");b(".spinner",c).hide();return}h.each(function(){l=b(this);e=j.exec(l.html());if(e&&e[1]){i=e[1];while(d.elements["menu-item["+i+"][menu-item-type]"]||f[i]){i--}f[i]=true;if(i!=e[1]){l.html(l.html().replace(new RegExp("menu-item\\["+e[1]+"\\]","g"),"menu-item["+i+"]"))}}});b(".categorychecklist",c).html(h);b(".spinner",c).hide()},removeMenuItem:function(d){var c=d.childMenuItems();d.addClass("deleting").animate({opacity:0,height:0},350,function(){var e=b("#menu-instructions");d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId();if(!e.siblings().length){e.removeClass("menu-instructions-inactive")}})},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/password-strength-meter.dev.js b/wp-admin/js/password-strength-meter.dev.js
deleted file mode 100644 (file)
index 0f07a93..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// Password strength meter
-function passwordStrength(password1, username, password2) {
-       var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score;
-
-       // password 1 != password 2
-       if ( (password1 != password2) && password2.length > 0)
-               return mismatch
-
-       //password < 4
-       if ( password1.length < 4 )
-               return shortPass
-
-       //password1 == username
-       if ( password1.toLowerCase() == username.toLowerCase() )
-               return badPass;
-
-       if ( password1.match(/[0-9]/) )
-               symbolSize +=10;
-       if ( password1.match(/[a-z]/) )
-               symbolSize +=26;
-       if ( password1.match(/[A-Z]/) )
-               symbolSize +=26;
-       if ( password1.match(/[^a-zA-Z0-9]/) )
-               symbolSize +=31;
-
-       natLog = Math.log( Math.pow(symbolSize, password1.length) );
-       score = natLog / Math.LN2;
-
-       if (score < 40 )
-               return badPass
-
-       if (score < 56 )
-               return goodPass
-
-    return strongPass;
-}
index 957d454a6e9d9151090427b42a0e1d54ed5d9150..0f07a93785dbf34daba8af50f40dab0930b6e2a8 100644 (file)
@@ -1 +1,36 @@
-function passwordStrength(f,i,d){var k=1,h=2,b=3,a=4,c=5,g=0,j,e;if((f!=d)&&d.length>0){return c}if(f.length<4){return k}if(f.toLowerCase()==i.toLowerCase()){return h}if(f.match(/[0-9]/)){g+=10}if(f.match(/[a-z]/)){g+=26}if(f.match(/[A-Z]/)){g+=26}if(f.match(/[^a-zA-Z0-9]/)){g+=31}j=Math.log(Math.pow(g,f.length));e=j/Math.LN2;if(e<40){return h}if(e<56){return b}return a};
\ No newline at end of file
+// Password strength meter
+function passwordStrength(password1, username, password2) {
+       var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score;
+
+       // password 1 != password 2
+       if ( (password1 != password2) && password2.length > 0)
+               return mismatch
+
+       //password < 4
+       if ( password1.length < 4 )
+               return shortPass
+
+       //password1 == username
+       if ( password1.toLowerCase() == username.toLowerCase() )
+               return badPass;
+
+       if ( password1.match(/[0-9]/) )
+               symbolSize +=10;
+       if ( password1.match(/[a-z]/) )
+               symbolSize +=26;
+       if ( password1.match(/[A-Z]/) )
+               symbolSize +=26;
+       if ( password1.match(/[^a-zA-Z0-9]/) )
+               symbolSize +=31;
+
+       natLog = Math.log( Math.pow(symbolSize, password1.length) );
+       score = natLog / Math.LN2;
+
+       if (score < 40 )
+               return badPass
+
+       if (score < 56 )
+               return goodPass
+
+    return strongPass;
+}
diff --git a/wp-admin/js/password-strength-meter.min.js b/wp-admin/js/password-strength-meter.min.js
new file mode 100644 (file)
index 0000000..957d454
--- /dev/null
@@ -0,0 +1 @@
+function passwordStrength(f,i,d){var k=1,h=2,b=3,a=4,c=5,g=0,j,e;if((f!=d)&&d.length>0){return c}if(f.length<4){return k}if(f.toLowerCase()==i.toLowerCase()){return h}if(f.match(/[0-9]/)){g+=10}if(f.match(/[a-z]/)){g+=26}if(f.match(/[A-Z]/)){g+=26}if(f.match(/[^a-zA-Z0-9]/)){g+=31}j=Math.log(Math.pow(g,f.length));e=j/Math.LN2;if(e<40){return h}if(e<56){return b}return a};
\ No newline at end of file
diff --git a/wp-admin/js/plugin-install.dev.js b/wp-admin/js/plugin-install.dev.js
deleted file mode 100644 (file)
index f32574a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Plugin Browser Thickbox related JS*/
-var tb_position;
-jQuery(document).ready(function($) {
-       tb_position = function() {
-               var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width, adminbar_height = 0;
-
-               if ( $('body.admin-bar').length )
-                       adminbar_height = 28;
-
-               if ( tbWindow.size() ) {
-                       tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
-                       $('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
-                       tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
-                       if ( typeof document.body.style.maxWidth != 'undefined' )
-                               tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
-               };
-
-               return $('a.thickbox').each( function() {
-                       var href = $(this).attr('href');
-                       if ( ! href )
-                               return;
-                       href = href.replace(/&width=[0-9]+/g, '');
-                       href = href.replace(/&height=[0-9]+/g, '');
-                       $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
-               });
-       };
-
-       $(window).resize(function(){ tb_position(); });
-
-        $('#dashboard_plugins a.thickbox, .plugins a.thickbox').click( function() {
-               tb_click.call(this);
-
-               $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
-               $('#TB_ajaxWindowTitle').html('<strong>' + plugininstallL10n.plugin_information + '</strong>&nbsp;' + $(this).attr('title') );
-               return false;
-       });
-
-       /* Plugin install related JS*/
-       $('#plugin-information #sidemenu a').click( function() {
-               var tab = $(this).attr('name');
-               //Flip the tab
-               $('#plugin-information-header a.current').removeClass('current');
-               $(this).addClass('current');
-               //Flip the content.
-               $('#section-holder div.section').hide(); //Hide 'em all
-               $('#section-' + tab).show();
-               return false;
-       });
-
-       $('a.install-now').click( function() {
-               return confirm( plugininstallL10n.ays );
-       });
-});
index 4d73265c8f2fdc2cd8e3cebed93df446a1c5a0a4..f32574abdb1773f5106e655e53d8a18ac74bfb8e 100644 (file)
@@ -1 +1,53 @@
-var tb_position;jQuery(document).ready(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a("#dashboard_plugins a.thickbox, .plugins a.thickbox").click(function(){tb_click.call(this);a("#TB_title").css({"background-color":"#222",color:"#cfcfcf"});a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).attr("title"));return false});a("#plugin-information #sidemenu a").click(function(){var b=a(this).attr("name");a("#plugin-information-header a.current").removeClass("current");a(this).addClass("current");a("#section-holder div.section").hide();a("#section-"+b).show();return false});a("a.install-now").click(function(){return confirm(plugininstallL10n.ays)})});
\ No newline at end of file
+/* Plugin Browser Thickbox related JS*/
+var tb_position;
+jQuery(document).ready(function($) {
+       tb_position = function() {
+               var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width, adminbar_height = 0;
+
+               if ( $('body.admin-bar').length )
+                       adminbar_height = 28;
+
+               if ( tbWindow.size() ) {
+                       tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
+                       $('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
+                       tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
+                       if ( typeof document.body.style.maxWidth != 'undefined' )
+                               tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
+               };
+
+               return $('a.thickbox').each( function() {
+                       var href = $(this).attr('href');
+                       if ( ! href )
+                               return;
+                       href = href.replace(/&width=[0-9]+/g, '');
+                       href = href.replace(/&height=[0-9]+/g, '');
+                       $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
+               });
+       };
+
+       $(window).resize(function(){ tb_position(); });
+
+        $('#dashboard_plugins a.thickbox, .plugins a.thickbox').click( function() {
+               tb_click.call(this);
+
+               $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
+               $('#TB_ajaxWindowTitle').html('<strong>' + plugininstallL10n.plugin_information + '</strong>&nbsp;' + $(this).attr('title') );
+               return false;
+       });
+
+       /* Plugin install related JS*/
+       $('#plugin-information #sidemenu a').click( function() {
+               var tab = $(this).attr('name');
+               //Flip the tab
+               $('#plugin-information-header a.current').removeClass('current');
+               $(this).addClass('current');
+               //Flip the content.
+               $('#section-holder div.section').hide(); //Hide 'em all
+               $('#section-' + tab).show();
+               return false;
+       });
+
+       $('a.install-now').click( function() {
+               return confirm( plugininstallL10n.ays );
+       });
+});
diff --git a/wp-admin/js/plugin-install.min.js b/wp-admin/js/plugin-install.min.js
new file mode 100644 (file)
index 0000000..4d73265
--- /dev/null
@@ -0,0 +1 @@
+var tb_position;jQuery(document).ready(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a("#dashboard_plugins a.thickbox, .plugins a.thickbox").click(function(){tb_click.call(this);a("#TB_title").css({"background-color":"#222",color:"#cfcfcf"});a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).attr("title"));return false});a("#plugin-information #sidemenu a").click(function(){var b=a(this).attr("name");a("#plugin-information-header a.current").removeClass("current");a(this).addClass("current");a("#section-holder div.section").hide();a("#section-"+b).show();return false});a("a.install-now").click(function(){return confirm(plugininstallL10n.ays)})});
\ No newline at end of file
diff --git a/wp-admin/js/post.dev.js b/wp-admin/js/post.dev.js
deleted file mode 100644 (file)
index fbebfa1..0000000
+++ /dev/null
@@ -1,663 +0,0 @@
-var tagBox, commentsBox, editPermalink, makeSlugeditClickable, WPSetThumbnailHTML, WPSetThumbnailID, WPRemoveThumbnail, wptitlehint;
-
-// return an array with any duplicate, whitespace or values removed
-function array_unique_noempty(a) {
-       var out = [];
-       jQuery.each( a, function(key, val) {
-               val = jQuery.trim(val);
-               if ( val && jQuery.inArray(val, out) == -1 )
-                       out.push(val);
-               } );
-       return out;
-}
-
-(function($){
-
-tagBox = {
-       clean : function(tags) {
-               var comma = postL10n.comma;
-               if ( ',' !== comma )
-                       tags = tags.replace(new RegExp(comma, 'g'), ',');
-               tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
-               if ( ',' !== comma )
-                       tags = tags.replace(/,/g, comma);
-               return tags;
-       },
-
-       parseTags : function(el) {
-               var id = el.id, num = id.split('-check-num-')[1], taxbox = $(el).closest('.tagsdiv'),
-                       thetags = taxbox.find('.the-tags'), comma = postL10n.comma,
-                       current_tags = thetags.val().split(comma), new_tags = [];
-               delete current_tags[num];
-
-               $.each( current_tags, function(key, val) {
-                       val = $.trim(val);
-                       if ( val ) {
-                               new_tags.push(val);
-                       }
-               });
-
-               thetags.val( this.clean( new_tags.join(comma) ) );
-
-               this.quickClicks(taxbox);
-               return false;
-       },
-
-       quickClicks : function(el) {
-               var thetags = $('.the-tags', el),
-                       tagchecklist = $('.tagchecklist', el),
-                       id = $(el).attr('id'),
-                       current_tags, disabled;
-
-               if ( !thetags.length )
-                       return;
-
-               disabled = thetags.prop('disabled');
-
-               current_tags = thetags.val().split(postL10n.comma);
-               tagchecklist.empty();
-
-               $.each( current_tags, function( key, val ) {
-                       var span, xbutton;
-
-                       val = $.trim( val );
-
-                       if ( ! val )
-                               return;
-
-                       // Create a new span, and ensure the text is properly escaped.
-                       span = $('<span />').text( val );
-
-                       // If tags editing isn't disabled, create the X button.
-                       if ( ! disabled ) {
-                               xbutton = $( '<a id="' + id + '-check-num-' + key + '" class="ntdelbutton">X</a>' );
-                               xbutton.click( function(){ tagBox.parseTags(this); });
-                               span.prepend('&nbsp;').prepend( xbutton );
-                       }
-
-                       // Append the span to the tag list.
-                       tagchecklist.append( span );
-               });
-       },
-
-       flushTags : function(el, a, f) {
-               a = a || false;
-               var tags = $('.the-tags', el),
-                       newtag = $('input.newtag', el),
-                       comma = postL10n.comma,
-                       newtags, text;
-
-               text = a ? $(a).text() : newtag.val();
-               tagsval = tags.val();
-               newtags = tagsval ? tagsval + comma + text : text;
-
-               newtags = this.clean( newtags );
-               newtags = array_unique_noempty( newtags.split(comma) ).join(comma);
-               tags.val(newtags);
-               this.quickClicks(el);
-
-               if ( !a )
-                       newtag.val('');
-               if ( 'undefined' == typeof(f) )
-                       newtag.focus();
-
-               return false;
-       },
-
-       get : function(id) {
-               var tax = id.substr(id.indexOf('-')+1);
-
-               $.post(ajaxurl, {'action':'get-tagcloud', 'tax':tax}, function(r, stat) {
-                       if ( 0 == r || 'success' != stat )
-                               r = wpAjax.broken;
-
-                       r = $('<p id="tagcloud-'+tax+'" class="the-tagcloud">'+r+'</p>');
-                       $('a', r).click(function(){
-                               tagBox.flushTags( $(this).closest('.inside').children('.tagsdiv'), this);
-                               return false;
-                       });
-
-                       $('#'+id).after(r);
-               });
-       },
-
-       init : function() {
-               var t = this, ajaxtag = $('div.ajaxtag');
-
-           $('.tagsdiv').each( function() {
-               tagBox.quickClicks(this);
-           });
-
-               $('input.tagadd', ajaxtag).click(function(){
-                       t.flushTags( $(this).closest('.tagsdiv') );
-               });
-
-               $('div.taghint', ajaxtag).click(function(){
-                       $(this).css('visibility', 'hidden').parent().siblings('.newtag').focus();
-               });
-
-               $('input.newtag', ajaxtag).blur(function() {
-                       if ( this.value == '' )
-                   $(this).parent().siblings('.taghint').css('visibility', '');
-           }).focus(function(){
-                       $(this).parent().siblings('.taghint').css('visibility', 'hidden');
-               }).keyup(function(e){
-                       if ( 13 == e.which ) {
-                               tagBox.flushTags( $(this).closest('.tagsdiv') );
-                               return false;
-                       }
-               }).keypress(function(e){
-                       if ( 13 == e.which ) {
-                               e.preventDefault();
-                               return false;
-                       }
-               }).each(function(){
-                       var tax = $(this).closest('div.tagsdiv').attr('id');
-                       $(this).suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: postL10n.comma + ' ' } );
-               });
-
-           // save tags on post save/publish
-           $('#post').submit(function(){
-                       $('div.tagsdiv').each( function() {
-                       tagBox.flushTags(this, false, 1);
-                       });
-               });
-
-               // tag cloud
-               $('a.tagcloud-link').click(function(){
-                       tagBox.get( $(this).attr('id') );
-                       $(this).unbind().click(function(){
-                               $(this).siblings('.the-tagcloud').toggle();
-                               return false;
-                       });
-                       return false;
-               });
-       }
-};
-
-commentsBox = {
-       st : 0,
-
-       get : function(total, num) {
-               var st = this.st, data;
-               if ( ! num )
-                       num = 20;
-
-               this.st += num;
-               this.total = total;
-               $('#commentsdiv img.waiting').show();
-
-               data = {
-                       'action' : 'get-comments',
-                       'mode' : 'single',
-                       '_ajax_nonce' : $('#add_comment_nonce').val(),
-                       'p' : $('#post_ID').val(),
-                       'start' : st,
-                       'number' : num
-               };
-
-               $.post(ajaxurl, data,
-                       function(r) {
-                               r = wpAjax.parseAjaxResponse(r);
-                               $('#commentsdiv .widefat').show();
-                               $('#commentsdiv img.waiting').hide();
-
-                               if ( 'object' == typeof r && r.responses[0] ) {
-                                       $('#the-comment-list').append( r.responses[0].data );
-
-                                       theList = theExtraList = null;
-                                       $("a[className*=':']").unbind();
-
-                                       if ( commentsBox.st > commentsBox.total )
-                                               $('#show-comments').hide();
-                                       else
-                                               $('#show-comments').show().children('a').html(postL10n.showcomm);
-
-                                       return;
-                               } else if ( 1 == r ) {
-                                       $('#show-comments').html(postL10n.endcomm);
-                                       return;
-                               }
-
-                               $('#the-comment-list').append('<tr><td colspan="2">'+wpAjax.broken+'</td></tr>');
-                       }
-               );
-
-               return false;
-       }
-};
-
-WPSetThumbnailHTML = function(html){
-       $('.inside', '#postimagediv').html(html);
-};
-
-WPSetThumbnailID = function(id){
-       var field = $('input[value="_thumbnail_id"]', '#list-table');
-       if ( field.size() > 0 ) {
-               $('#meta\\[' + field.attr('id').match(/[0-9]+/) + '\\]\\[value\\]').text(id);
-       }
-};
-
-WPRemoveThumbnail = function(nonce){
-       $.post(ajaxurl, {
-               action:"set-post-thumbnail", post_id: $('#post_ID').val(), thumbnail_id: -1, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie)
-       }, function(str){
-               if ( str == '0' ) {
-                       alert( setPostThumbnailL10n.error );
-               } else {
-                       WPSetThumbnailHTML(str);
-               }
-       }
-       );
-};
-
-})(jQuery);
-
-jQuery(document).ready( function($) {
-       var stamp, visibility, sticky = '', last = 0, co = $('#content');
-
-       postboxes.add_postbox_toggles(pagenow);
-
-       // multi-taxonomies
-       if ( $('#tagsdiv-post_tag').length ) {
-               tagBox.init();
-       } else {
-               $('#side-sortables, #normal-sortables, #advanced-sortables').children('div.postbox').each(function(){
-                       if ( this.id.indexOf('tagsdiv-') === 0 ) {
-                               tagBox.init();
-                               return false;
-                       }
-               });
-       }
-
-       // categories
-       $('.categorydiv').each( function(){
-               var this_id = $(this).attr('id'), noSyncChecks = false, syncChecks, catAddAfter, taxonomyParts, taxonomy, settingName;
-
-               taxonomyParts = this_id.split('-');
-               taxonomyParts.shift();
-               taxonomy = taxonomyParts.join('-');
-               settingName = taxonomy + '_tab';
-               if ( taxonomy == 'category' )
-                       settingName = 'cats';
-
-               // TODO: move to jQuery 1.3+, support for multiple hierarchical taxonomies, see wp-lists.dev.js
-               $('a', '#' + taxonomy + '-tabs').click( function(){
-                       var t = $(this).attr('href');
-                       $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
-                       $('#' + taxonomy + '-tabs').siblings('.tabs-panel').hide();
-                       $(t).show();
-                       if ( '#' + taxonomy + '-all' == t )
-                               deleteUserSetting(settingName);
-                       else
-                               setUserSetting(settingName, 'pop');
-                       return false;
-               });
-
-               if ( getUserSetting(settingName) )
-                       $('a[href="#' + taxonomy + '-pop"]', '#' + taxonomy + '-tabs').click();
-
-               // Ajax Cat
-               $('#new' + taxonomy).one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
-               $('#' + taxonomy + '-add-submit').click( function(){ $('#new' + taxonomy).focus(); });
-
-               syncChecks = function() {
-                       if ( noSyncChecks )
-                               return;
-                       noSyncChecks = true;
-                       var th = jQuery(this), c = th.is(':checked'), id = th.val().toString();
-                       $('#in-' + taxonomy + '-' + id + ', #in-' + taxonomy + '-category-' + id).prop( 'checked', c );
-                       noSyncChecks = false;
-               };
-
-               catAddBefore = function( s ) {
-                       if ( !$('#new'+taxonomy).val() )
-                               return false;
-                       s.data += '&' + $( ':checked', '#'+taxonomy+'checklist' ).serialize();
-                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', true );
-                       return s;
-               };
-
-               catAddAfter = function( r, s ) {
-                       var sup, drop = $('#new'+taxonomy+'_parent');
-
-                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', false );
-                       if ( 'undefined' != s.parsed.responses[0] && (sup = s.parsed.responses[0].supplemental.newcat_parent) ) {
-                               drop.before(sup);
-                               drop.remove();
-                       }
-               };
-
-               $('#' + taxonomy + 'checklist').wpList({
-                       alt: '',
-                       response: taxonomy + '-ajax-response',
-                       addBefore: catAddBefore,
-                       addAfter: catAddAfter
-               });
-
-               $('#' + taxonomy + '-add-toggle').click( function() {
-                       $('#' + taxonomy + '-adder').toggleClass( 'wp-hidden-children' );
-                       $('a[href="#' + taxonomy + '-all"]', '#' + taxonomy + '-tabs').click();
-                       $('#new'+taxonomy).focus();
-                       return false;
-               });
-
-               $('#' + taxonomy + 'checklist li.popular-category input[type="checkbox"], #' + taxonomy + 'checklist-pop input[type="checkbox"]').live( 'click', function(){
-                       var t = $(this), c = t.is(':checked'), id = t.val();
-                       if ( id && t.parents('#taxonomy-'+taxonomy).length )
-                               $('#in-' + taxonomy + '-' + id + ', #in-popular-' + taxonomy + '-' + id).prop( 'checked', c );
-               });
-
-       }); // end cats
-
-       // Custom Fields
-       if ( $('#postcustom').length ) {
-               $('#the-list').wpList( { addAfter: function( xml, s ) {
-                       $('table#list-table').show();
-               }, addBefore: function( s ) {
-                       s.data += '&post_id=' + $('#post_ID').val();
-                       return s;
-               }
-               });
-       }
-
-       // submitdiv
-       if ( $('#submitdiv').length ) {
-               stamp = $('#timestamp').html();
-               visibility = $('#post-visibility-display').html();
-
-               function updateVisibility() {
-                       var pvSelect = $('#post-visibility-select');
-                       if ( $('input:radio:checked', pvSelect).val() != 'public' ) {
-                               $('#sticky').prop('checked', false);
-                               $('#sticky-span').hide();
-                       } else {
-                               $('#sticky-span').show();
-                       }
-                       if ( $('input:radio:checked', pvSelect).val() != 'password' ) {
-                               $('#password-span').hide();
-                       } else {
-                               $('#password-span').show();
-                       }
-               }
-
-               function updateText() {
-                       var attemptedDate, originalDate, currentDate, publishOn, postStatus = $('#post_status'),
-                               optPublish = $('option[value="publish"]', postStatus), aa = $('#aa').val(),
-                               mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val();
-
-                       attemptedDate = new Date( aa, mm - 1, jj, hh, mn );
-                       originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val() );
-                       currentDate = new Date( $('#cur_aa').val(), $('#cur_mm').val() -1, $('#cur_jj').val(), $('#cur_hh').val(), $('#cur_mn').val() );
-
-                       if ( attemptedDate.getFullYear() != aa || (1 + attemptedDate.getMonth()) != mm || attemptedDate.getDate() != jj || attemptedDate.getMinutes() != mn ) {
-                               $('.timestamp-wrap', '#timestampdiv').addClass('form-invalid');
-                               return false;
-                       } else {
-                               $('.timestamp-wrap', '#timestampdiv').removeClass('form-invalid');
-                       }
-
-                       if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
-                               publishOn = postL10n.publishOnFuture;
-                               $('#publish').val( postL10n.schedule );
-                       } else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
-                               publishOn = postL10n.publishOn;
-                               $('#publish').val( postL10n.publish );
-                       } else {
-                               publishOn = postL10n.publishOnPast;
-                               $('#publish').val( postL10n.update );
-                       }
-                       if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
-                               $('#timestamp').html(stamp);
-                       } else {
-                               $('#timestamp').html(
-                                       publishOn + ' <b>' +
-                                       $('option[value="' + $('#mm').val() + '"]', '#mm').text() + ' ' +
-                                       jj + ', ' +
-                                       aa + ' @ ' +
-                                       hh + ':' +
-                                       mn + '</b> '
-                               );
-                       }
-
-                       if ( $('input:radio:checked', '#post-visibility-select').val() == 'private' ) {
-                               $('#publish').val( postL10n.update );
-                               if ( optPublish.length == 0 ) {
-                                       postStatus.append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
-                               } else {
-                                       optPublish.html( postL10n.privatelyPublished );
-                               }
-                               $('option[value="publish"]', postStatus).prop('selected', true);
-                               $('.edit-post-status', '#misc-publishing-actions').hide();
-                       } else {
-                               if ( $('#original_post_status').val() == 'future' || $('#original_post_status').val() == 'draft' ) {
-                                       if ( optPublish.length ) {
-                                               optPublish.remove();
-                                               postStatus.val($('#hidden_post_status').val());
-                                       }
-                               } else {
-                                       optPublish.html( postL10n.published );
-                               }
-                               if ( postStatus.is(':hidden') )
-                                       $('.edit-post-status', '#misc-publishing-actions').show();
-                       }
-                       $('#post-status-display').html($('option:selected', postStatus).text());
-                       if ( $('option:selected', postStatus).val() == 'private' || $('option:selected', postStatus).val() == 'publish' ) {
-                               $('#save-post').hide();
-                       } else {
-                               $('#save-post').show();
-                               if ( $('option:selected', postStatus).val() == 'pending' ) {
-                                       $('#save-post').show().val( postL10n.savePending );
-                               } else {
-                                       $('#save-post').show().val( postL10n.saveDraft );
-                               }
-                       }
-                       return true;
-               }
-
-               $('.edit-visibility', '#visibility').click(function () {
-                       if ($('#post-visibility-select').is(":hidden")) {
-                               updateVisibility();
-                               $('#post-visibility-select').slideDown('fast');
-                               $(this).hide();
-                       }
-                       return false;
-               });
-
-               $('.cancel-post-visibility', '#post-visibility-select').click(function () {
-                       $('#post-visibility-select').slideUp('fast');
-                       $('#visibility-radio-' + $('#hidden-post-visibility').val()).prop('checked', true);
-                       $('#post_password').val($('#hidden_post_password').val());
-                       $('#sticky').prop('checked', $('#hidden-post-sticky').prop('checked'));
-                       $('#post-visibility-display').html(visibility);
-                       $('.edit-visibility', '#visibility').show();
-                       updateText();
-                       return false;
-               });
-
-               $('.save-post-visibility', '#post-visibility-select').click(function () { // crazyhorse - multiple ok cancels
-                       var pvSelect = $('#post-visibility-select');
-
-                       pvSelect.slideUp('fast');
-                       $('.edit-visibility', '#visibility').show();
-                       updateText();
-
-                       if ( $('input:radio:checked', pvSelect).val() != 'public' ) {
-                               $('#sticky').prop('checked', false);
-                       } // WEAPON LOCKED
-
-                       if ( true == $('#sticky').prop('checked') ) {
-                               sticky = 'Sticky';
-                       } else {
-                               sticky = '';
-                       }
-
-                       $('#post-visibility-display').html(     postL10n[$('input:radio:checked', pvSelect).val() + sticky]     );
-                       return false;
-               });
-
-               $('input:radio', '#post-visibility-select').change(function() {
-                       updateVisibility();
-               });
-
-               $('#timestampdiv').siblings('a.edit-timestamp').click(function() {
-                       if ($('#timestampdiv').is(":hidden")) {
-                               $('#timestampdiv').slideDown('fast');
-                               $(this).hide();
-                       }
-                       return false;
-               });
-
-               $('.cancel-timestamp', '#timestampdiv').click(function() {
-                       $('#timestampdiv').slideUp('fast');
-                       $('#mm').val($('#hidden_mm').val());
-                       $('#jj').val($('#hidden_jj').val());
-                       $('#aa').val($('#hidden_aa').val());
-                       $('#hh').val($('#hidden_hh').val());
-                       $('#mn').val($('#hidden_mn').val());
-                       $('#timestampdiv').siblings('a.edit-timestamp').show();
-                       updateText();
-                       return false;
-               });
-
-               $('.save-timestamp', '#timestampdiv').click(function () { // crazyhorse - multiple ok cancels
-                       if ( updateText() ) {
-                               $('#timestampdiv').slideUp('fast');
-                               $('#timestampdiv').siblings('a.edit-timestamp').show();
-                       }
-                       return false;
-               });
-
-               $('#post-status-select').siblings('a.edit-post-status').click(function() {
-                       if ($('#post-status-select').is(":hidden")) {
-                               $('#post-status-select').slideDown('fast');
-                               $(this).hide();
-                       }
-                       return false;
-               });
-
-               $('.save-post-status', '#post-status-select').click(function() {
-                       $('#post-status-select').slideUp('fast');
-                       $('#post-status-select').siblings('a.edit-post-status').show();
-                       updateText();
-                       return false;
-               });
-
-               $('.cancel-post-status', '#post-status-select').click(function() {
-                       $('#post-status-select').slideUp('fast');
-                       $('#post_status').val($('#hidden_post_status').val());
-                       $('#post-status-select').siblings('a.edit-post-status').show();
-                       updateText();
-                       return false;
-               });
-       } // end submitdiv
-
-       // permalink
-       if ( $('#edit-slug-box').length ) {
-               editPermalink = function(post_id) {
-                       var i, c = 0, e = $('#editable-post-name'), revert_e = e.html(), real_slug = $('#post_name'), revert_slug = real_slug.val(), b = $('#edit-slug-buttons'), revert_b = b.html(), full = $('#editable-post-name-full').html();
-
-                       $('#view-post-btn').hide();
-                       b.html('<a href="#" class="save button">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+'</a>');
-                       b.children('.save').click(function() {
-                               var new_slug = e.children('input').val();
-                               if ( new_slug == $('#editable-post-name-full').text() ) {
-                                       return $('.cancel', '#edit-slug-buttons').click();
-                               }
-                               $.post(ajaxurl, {
-                                       action: 'sample-permalink',
-                                       post_id: post_id,
-                                       new_slug: new_slug,
-                                       new_title: $('#title').val(),
-                                       samplepermalinknonce: $('#samplepermalinknonce').val()
-                               }, function(data) {
-                                       $('#edit-slug-box').html(data);
-                                       b.html(revert_b);
-                                       real_slug.val(new_slug);
-                                       makeSlugeditClickable();
-                                       $('#view-post-btn').show();
-                               });
-                               return false;
-                       });
-
-                       $('.cancel', '#edit-slug-buttons').click(function() {
-                               $('#view-post-btn').show();
-                               e.html(revert_e);
-                               b.html(revert_b);
-                               real_slug.val(revert_slug);
-                               return false;
-                       });
-
-                       for ( i = 0; i < full.length; ++i ) {
-                               if ( '%' == full.charAt(i) )
-                                       c++;
-                       }
-
-                       slug_value = ( c > full.length / 4 ) ? '' : full;
-                       e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e){
-                               var key = e.keyCode || 0;
-                               // on enter, just save the new slug, don't save the post
-                               if ( 13 == key ) {
-                                       b.children('.save').click();
-                                       return false;
-                               }
-                               if ( 27 == key ) {
-                                       b.children('.cancel').click();
-                                       return false;
-                               }
-                               real_slug.val(this.value);
-                       }).focus();
-               }
-
-               makeSlugeditClickable = function() {
-                       $('#editable-post-name').click(function() {
-                               $('#edit-slug-buttons').children('.edit-slug').click();
-                       });
-               }
-               makeSlugeditClickable();
-       }
-
-       // word count
-       if ( typeof(wpWordCount) != 'undefined' ) {
-               $(document).triggerHandler('wpcountwords', [ co.val() ]);
-
-               co.keyup( function(e) {
-                       var k = e.keyCode || e.charCode;
-
-                       if ( k == last )
-                               return true;
-
-                       if ( 13 == k || 8 == last || 46 == last )
-                               $(document).triggerHandler('wpcountwords', [ co.val() ]);
-
-                       last = k;
-                       return true;
-               });
-       }
-
-       wptitlehint = function(id) {
-               id = id || 'title';
-
-               var title = $('#' + id), titleprompt = $('#' + id + '-prompt-text');
-
-               if ( title.val() == '' )
-                       titleprompt.css('visibility', '');
-
-               titleprompt.click(function(){
-                       $(this).css('visibility', 'hidden');
-                       title.focus();
-               });
-
-               title.blur(function(){
-                       if ( this.value == '' )
-                               titleprompt.css('visibility', '');
-               }).focus(function(){
-                       titleprompt.css('visibility', 'hidden');
-               }).keydown(function(e){
-                       titleprompt.css('visibility', 'hidden');
-                       $(this).unbind(e);
-               });
-       }
-
-       wptitlehint();
-});
index bbb83d859655f7687f2a5fb224a6ce42de07fc24..d08dc4ab0eedff4c7dd5074e3db05789dfb17b4b 100644 (file)
@@ -1 +1,768 @@
-var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}(function(a){tagBox={clean:function(c){var b=postL10n.comma;if(","!==b){c=c.replace(new RegExp(b,"g"),",")}c=c.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");if(","!==b){c=c.replace(/,/g,b)}return c},parseTags:function(f){var i=f.id,c=i.split("-check-num-")[1],e=a(f).closest(".tagsdiv"),h=e.find(".the-tags"),b=postL10n.comma,d=h.val().split(b),g=[];delete d[c];a.each(d,function(j,k){k=a.trim(k);if(k){g.push(k)}});h.val(this.clean(g.join(b)));this.quickClicks(e);return false},quickClicks:function(d){var g=a(".the-tags",d),e=a(".tagchecklist",d),f=a(d).attr("id"),b,c;if(!g.length){return}c=g.prop("disabled");b=g.val().split(postL10n.comma);e.empty();a.each(b,function(i,k){var j,h;k=a.trim(k);if(!k){return}j=a("<span />").text(k);if(!c){h=a('<a id="'+f+"-check-num-"+i+'" class="ntdelbutton">X</a>');h.click(function(){tagBox.parseTags(this)});j.prepend("&nbsp;").prepend(h)}e.append(j)})},flushTags:function(g,c,h){c=c||false;var d=a(".the-tags",g),j=a("input.newtag",g),b=postL10n.comma,e,i;i=c?a(c).text():j.val();tagsval=d.val();e=tagsval?tagsval+b+i:i;e=this.clean(e);e=array_unique_noempty(e.split(b)).join(b);d.val(e);this.quickClicks(g);if(!c){j.val("")}if("undefined"==typeof(h)){j.focus()}return false},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){tagBox.flushTags(a(this).closest(".inside").children(".tagsdiv"),this);return false});a("#"+c).after(e)})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)});a("input.tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))});a("div.taghint",c).click(function(){a(this).css("visibility","hidden").parent().siblings(".newtag").focus()});a("input.newtag",c).blur(function(){if(this.value==""){a(this).parent().siblings(".taghint").css("visibility","")}}).focus(function(){a(this).parent().siblings(".taghint").css("visibility","hidden")}).keyup(function(d){if(13==d.which){tagBox.flushTags(a(this).closest(".tagsdiv"));return false}}).keypress(function(d){if(13==d.which){d.preventDefault();return false}}).each(function(){var d=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+d,{delay:500,minchars:2,multiple:true,multipleSep:postL10n.comma+" "})});a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1)})});a("a.tagcloud-link").click(function(){tagBox.get(a(this).attr("id"));a(this).unbind().click(function(){a(this).siblings(".the-tagcloud").toggle();return false});return false})}};commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv img.waiting").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:b,number:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv img.waiting").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").show().children("a").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")});return false}};WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)};WPSetThumbnailID=function(c){var b=a('input[value="_thumbnail_id"]',"#list-table");if(b.size()>0){a("#meta\\["+b.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(c)}};WPRemoveThumbnail=function(b){a.post(ajaxurl,{action:"set-post-thumbnail",post_id:a("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(c){if(c=="0"){alert(setPostThumbnailL10n.error)}else{WPSetThumbnailHTML(c)}})}})(jQuery);jQuery(document).ready(function(f){var b,a,g="",e=0,h=f("#content");postboxes.add_postbox_toggles(pagenow);if(f("#tagsdiv-post_tag").length){tagBox.init()}else{f("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false}})}f(".categorydiv").each(function(){var n=f(this).attr("id"),j=false,m,o,l,i,k;l=n.split("-");l.shift();i=l.join("-");k=i+"_tab";if(i=="category"){k="cats"}f("a","#"+i+"-tabs").click(function(){var p=f(this).attr("href");f(this).parent().addClass("tabs").siblings("li").removeClass("tabs");f("#"+i+"-tabs").siblings(".tabs-panel").hide();f(p).show();if("#"+i+"-all"==p){deleteUserSetting(k)}else{setUserSetting(k,"pop")}return false});if(getUserSetting(k)){f('a[href="#'+i+'-pop"]',"#"+i+"-tabs").click()}f("#new"+i).one("focus",function(){f(this).val("").removeClass("form-input-tip")});f("#"+i+"-add-submit").click(function(){f("#new"+i).focus()});m=function(){if(j){return}j=true;var p=jQuery(this),r=p.is(":checked"),q=p.val().toString();f("#in-"+i+"-"+q+", #in-"+i+"-category-"+q).prop("checked",r);j=false};catAddBefore=function(p){if(!f("#new"+i).val()){return false}p.data+="&"+f(":checked","#"+i+"checklist").serialize();f("#"+i+"-add-submit").prop("disabled",true);return p};o=function(u,t){var q,p=f("#new"+i+"_parent");f("#"+i+"-add-submit").prop("disabled",false);if("undefined"!=t.parsed.responses[0]&&(q=t.parsed.responses[0].supplemental.newcat_parent)){p.before(q);p.remove()}};f("#"+i+"checklist").wpList({alt:"",response:i+"-ajax-response",addBefore:catAddBefore,addAfter:o});f("#"+i+"-add-toggle").click(function(){f("#"+i+"-adder").toggleClass("wp-hidden-children");f('a[href="#'+i+'-all"]',"#"+i+"-tabs").click();f("#new"+i).focus();return false});f("#"+i+'checklist li.popular-category input[type="checkbox"], #'+i+'checklist-pop input[type="checkbox"]').live("click",function(){var p=f(this),r=p.is(":checked"),q=p.val();if(q&&p.parents("#taxonomy-"+i).length){f("#in-"+i+"-"+q+", #in-popular-"+i+"-"+q).prop("checked",r)}})});if(f("#postcustom").length){f("#the-list").wpList({addAfter:function(i,j){f("table#list-table").show()},addBefore:function(i){i.data+="&post_id="+f("#post_ID").val();return i}})}if(f("#submitdiv").length){b=f("#timestamp").html();a=f("#post-visibility-display").html();function d(){var i=f("#post-visibility-select");if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false);f("#sticky-span").hide()}else{f("#sticky-span").show()}if(f("input:radio:checked",i).val()!="password"){f("#password-span").hide()}else{f("#password-span").show()}}function c(){var p,q,j,s,r=f("#post_status"),k=f('option[value="publish"]',r),i=f("#aa").val(),n=f("#mm").val(),o=f("#jj").val(),m=f("#hh").val(),l=f("#mn").val();p=new Date(i,n-1,o,m,l);q=new Date(f("#hidden_aa").val(),f("#hidden_mm").val()-1,f("#hidden_jj").val(),f("#hidden_hh").val(),f("#hidden_mn").val());j=new Date(f("#cur_aa").val(),f("#cur_mm").val()-1,f("#cur_jj").val(),f("#cur_hh").val(),f("#cur_mn").val());if(p.getFullYear()!=i||(1+p.getMonth())!=n||p.getDate()!=o||p.getMinutes()!=l){f(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{f(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}if(p>j&&f("#original_post_status").val()!="future"){s=postL10n.publishOnFuture;f("#publish").val(postL10n.schedule)}else{if(p<=j&&f("#original_post_status").val()!="publish"){s=postL10n.publishOn;f("#publish").val(postL10n.publish)}else{s=postL10n.publishOnPast;f("#publish").val(postL10n.update)}}if(q.toUTCString()==p.toUTCString()){f("#timestamp").html(b)}else{f("#timestamp").html(s+" <b>"+f('option[value="'+f("#mm").val()+'"]',"#mm").text()+" "+o+", "+i+" @ "+m+":"+l+"</b> ")}if(f("input:radio:checked","#post-visibility-select").val()=="private"){f("#publish").val(postL10n.update);if(k.length==0){r.append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}else{k.html(postL10n.privatelyPublished)}f('option[value="publish"]',r).prop("selected",true);f(".edit-post-status","#misc-publishing-actions").hide()}else{if(f("#original_post_status").val()=="future"||f("#original_post_status").val()=="draft"){if(k.length){k.remove();r.val(f("#hidden_post_status").val())}}else{k.html(postL10n.published)}if(r.is(":hidden")){f(".edit-post-status","#misc-publishing-actions").show()}}f("#post-status-display").html(f("option:selected",r).text());if(f("option:selected",r).val()=="private"||f("option:selected",r).val()=="publish"){f("#save-post").hide()}else{f("#save-post").show();if(f("option:selected",r).val()=="pending"){f("#save-post").show().val(postL10n.savePending)}else{f("#save-post").show().val(postL10n.saveDraft)}}return true}f(".edit-visibility","#visibility").click(function(){if(f("#post-visibility-select").is(":hidden")){d();f("#post-visibility-select").slideDown("fast");f(this).hide()}return false});f(".cancel-post-visibility","#post-visibility-select").click(function(){f("#post-visibility-select").slideUp("fast");f("#visibility-radio-"+f("#hidden-post-visibility").val()).prop("checked",true);f("#post_password").val(f("#hidden_post_password").val());f("#sticky").prop("checked",f("#hidden-post-sticky").prop("checked"));f("#post-visibility-display").html(a);f(".edit-visibility","#visibility").show();c();return false});f(".save-post-visibility","#post-visibility-select").click(function(){var i=f("#post-visibility-select");i.slideUp("fast");f(".edit-visibility","#visibility").show();c();if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false)}if(true==f("#sticky").prop("checked")){g="Sticky"}else{g=""}f("#post-visibility-display").html(postL10n[f("input:radio:checked",i).val()+g]);return false});f("input:radio","#post-visibility-select").change(function(){d()});f("#timestampdiv").siblings("a.edit-timestamp").click(function(){if(f("#timestampdiv").is(":hidden")){f("#timestampdiv").slideDown("fast");f(this).hide()}return false});f(".cancel-timestamp","#timestampdiv").click(function(){f("#timestampdiv").slideUp("fast");f("#mm").val(f("#hidden_mm").val());f("#jj").val(f("#hidden_jj").val());f("#aa").val(f("#hidden_aa").val());f("#hh").val(f("#hidden_hh").val());f("#mn").val(f("#hidden_mn").val());f("#timestampdiv").siblings("a.edit-timestamp").show();c();return false});f(".save-timestamp","#timestampdiv").click(function(){if(c()){f("#timestampdiv").slideUp("fast");f("#timestampdiv").siblings("a.edit-timestamp").show()}return false});f("#post-status-select").siblings("a.edit-post-status").click(function(){if(f("#post-status-select").is(":hidden")){f("#post-status-select").slideDown("fast");f(this).hide()}return false});f(".save-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post-status-select").siblings("a.edit-post-status").show();c();return false});f(".cancel-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post_status").val(f("#hidden_post_status").val());f("#post-status-select").siblings("a.edit-post-status").show();c();return false})}if(f("#edit-slug-box").length){editPermalink=function(j){var k,n=0,m=f("#editable-post-name"),o=m.html(),r=f("#post_name"),s=r.val(),p=f("#edit-slug-buttons"),q=p.html(),l=f("#editable-post-name-full").html();f("#view-post-btn").hide();p.html('<a href="#" class="save button">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");p.children(".save").click(function(){var i=m.children("input").val();if(i==f("#editable-post-name-full").text()){return f(".cancel","#edit-slug-buttons").click()}f.post(ajaxurl,{action:"sample-permalink",post_id:j,new_slug:i,new_title:f("#title").val(),samplepermalinknonce:f("#samplepermalinknonce").val()},function(t){f("#edit-slug-box").html(t);p.html(q);r.val(i);makeSlugeditClickable();f("#view-post-btn").show()});return false});f(".cancel","#edit-slug-buttons").click(function(){f("#view-post-btn").show();m.html(o);p.html(q);r.val(s);return false});for(k=0;k<l.length;++k){if("%"==l.charAt(k)){n++}}slug_value=(n>l.length/4)?"":l;m.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(t){var i=t.keyCode||0;if(13==i){p.children(".save").click();return false}if(27==i){p.children(".cancel").click();return false}r.val(this.value)}).focus()};makeSlugeditClickable=function(){f("#editable-post-name").click(function(){f("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()}if(typeof(wpWordCount)!="undefined"){f(document).triggerHandler("wpcountwords",[h.val()]);h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==e){return true}if(13==i||8==e||46==e){f(document).triggerHandler("wpcountwords",[h.val()])}e=i;return true})}wptitlehint=function(k){k=k||"title";var i=f("#"+k),j=f("#"+k+"-prompt-text");if(i.val()==""){j.css("visibility","")}j.click(function(){f(this).css("visibility","hidden");i.focus()});i.blur(function(){if(this.value==""){j.css("visibility","")}}).focus(function(){j.css("visibility","hidden")}).keydown(function(l){j.css("visibility","hidden");f(this).unbind(l)})};wptitlehint()});
\ No newline at end of file
+var tagBox, commentsBox, editPermalink, makeSlugeditClickable, WPSetThumbnailHTML, WPSetThumbnailID, WPRemoveThumbnail, wptitlehint;
+
+// return an array with any duplicate, whitespace or values removed
+function array_unique_noempty(a) {
+       var out = [];
+       jQuery.each( a, function(key, val) {
+               val = jQuery.trim(val);
+               if ( val && jQuery.inArray(val, out) == -1 )
+                       out.push(val);
+               } );
+       return out;
+}
+
+(function($){
+
+tagBox = {
+       clean : function(tags) {
+               var comma = postL10n.comma;
+               if ( ',' !== comma )
+                       tags = tags.replace(new RegExp(comma, 'g'), ',');
+               tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
+               if ( ',' !== comma )
+                       tags = tags.replace(/,/g, comma);
+               return tags;
+       },
+
+       parseTags : function(el) {
+               var id = el.id, num = id.split('-check-num-')[1], taxbox = $(el).closest('.tagsdiv'),
+                       thetags = taxbox.find('.the-tags'), comma = postL10n.comma,
+                       current_tags = thetags.val().split(comma), new_tags = [];
+               delete current_tags[num];
+
+               $.each( current_tags, function(key, val) {
+                       val = $.trim(val);
+                       if ( val ) {
+                               new_tags.push(val);
+                       }
+               });
+
+               thetags.val( this.clean( new_tags.join(comma) ) );
+
+               this.quickClicks(taxbox);
+               return false;
+       },
+
+       quickClicks : function(el) {
+               var thetags = $('.the-tags', el),
+                       tagchecklist = $('.tagchecklist', el),
+                       id = $(el).attr('id'),
+                       current_tags, disabled;
+
+               if ( !thetags.length )
+                       return;
+
+               disabled = thetags.prop('disabled');
+
+               current_tags = thetags.val().split(postL10n.comma);
+               tagchecklist.empty();
+
+               $.each( current_tags, function( key, val ) {
+                       var span, xbutton;
+
+                       val = $.trim( val );
+
+                       if ( ! val )
+                               return;
+
+                       // Create a new span, and ensure the text is properly escaped.
+                       span = $('<span />').text( val );
+
+                       // If tags editing isn't disabled, create the X button.
+                       if ( ! disabled ) {
+                               xbutton = $( '<a id="' + id + '-check-num-' + key + '" class="ntdelbutton">X</a>' );
+                               xbutton.click( function(){ tagBox.parseTags(this); });
+                               span.prepend('&nbsp;').prepend( xbutton );
+                       }
+
+                       // Append the span to the tag list.
+                       tagchecklist.append( span );
+               });
+       },
+
+       flushTags : function(el, a, f) {
+               a = a || false;
+               var tags = $('.the-tags', el),
+                       newtag = $('input.newtag', el),
+                       comma = postL10n.comma,
+                       newtags, text;
+
+               text = a ? $(a).text() : newtag.val();
+               tagsval = tags.val();
+               newtags = tagsval ? tagsval + comma + text : text;
+
+               newtags = this.clean( newtags );
+               newtags = array_unique_noempty( newtags.split(comma) ).join(comma);
+               tags.val(newtags);
+               this.quickClicks(el);
+
+               if ( !a )
+                       newtag.val('');
+               if ( 'undefined' == typeof(f) )
+                       newtag.focus();
+
+               return false;
+       },
+
+       get : function(id) {
+               var tax = id.substr(id.indexOf('-')+1);
+
+               $.post(ajaxurl, {'action':'get-tagcloud', 'tax':tax}, function(r, stat) {
+                       if ( 0 == r || 'success' != stat )
+                               r = wpAjax.broken;
+
+                       r = $('<p id="tagcloud-'+tax+'" class="the-tagcloud">'+r+'</p>');
+                       $('a', r).click(function(){
+                               tagBox.flushTags( $(this).closest('.inside').children('.tagsdiv'), this);
+                               return false;
+                       });
+
+                       $('#'+id).after(r);
+               });
+       },
+
+       init : function() {
+               var t = this, ajaxtag = $('div.ajaxtag');
+
+               $('.tagsdiv').each( function() {
+                       tagBox.quickClicks(this);
+               });
+
+               $('input.tagadd', ajaxtag).click(function(){
+                       t.flushTags( $(this).closest('.tagsdiv') );
+               });
+
+               $('div.taghint', ajaxtag).click(function(){
+                       $(this).css('visibility', 'hidden').parent().siblings('.newtag').focus();
+               });
+
+               $('input.newtag', ajaxtag).blur(function() {
+                       if ( this.value == '' )
+                               $(this).parent().siblings('.taghint').css('visibility', '');
+               }).focus(function(){
+                       $(this).parent().siblings('.taghint').css('visibility', 'hidden');
+               }).keyup(function(e){
+                       if ( 13 == e.which ) {
+                               tagBox.flushTags( $(this).closest('.tagsdiv') );
+                               return false;
+                       }
+               }).keypress(function(e){
+                       if ( 13 == e.which ) {
+                               e.preventDefault();
+                               return false;
+                       }
+               }).each(function(){
+                       var tax = $(this).closest('div.tagsdiv').attr('id');
+                       $(this).suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: postL10n.comma + ' ' } );
+               });
+
+               // save tags on post save/publish
+               $('#post').submit(function(){
+                       $('div.tagsdiv').each( function() {
+                               tagBox.flushTags(this, false, 1);
+                       });
+               });
+
+               // tag cloud
+               $('a.tagcloud-link').click(function(){
+                       if ( ! $('.the-tagcloud').length )
+                               tagBox.get( $(this).attr('id') );
+                       $(this).siblings('.the-tagcloud').toggle();
+                       return false;
+               });
+       }
+};
+
+commentsBox = {
+       st : 0,
+
+       get : function(total, num) {
+               var st = this.st, data;
+               if ( ! num )
+                       num = 20;
+
+               this.st += num;
+               this.total = total;
+               $('#commentsdiv .spinner').show();
+
+               data = {
+                       'action' : 'get-comments',
+                       'mode' : 'single',
+                       '_ajax_nonce' : $('#add_comment_nonce').val(),
+                       'p' : $('#post_ID').val(),
+                       'start' : st,
+                       'number' : num
+               };
+
+               $.post(ajaxurl, data,
+                       function(r) {
+                               r = wpAjax.parseAjaxResponse(r);
+                               $('#commentsdiv .widefat').show();
+                               $('#commentsdiv .spinner').hide();
+
+                               if ( 'object' == typeof r && r.responses[0] ) {
+                                       $('#the-comment-list').append( r.responses[0].data );
+
+                                       theList = theExtraList = null;
+                                       $("a[className*=':']").unbind();
+
+                                       if ( commentsBox.st > commentsBox.total )
+                                               $('#show-comments').hide();
+                                       else
+                                               $('#show-comments').show().children('a').html(postL10n.showcomm);
+
+                                       return;
+                               } else if ( 1 == r ) {
+                                       $('#show-comments').html(postL10n.endcomm);
+                                       return;
+                               }
+
+                               $('#the-comment-list').append('<tr><td colspan="2">'+wpAjax.broken+'</td></tr>');
+                       }
+               );
+
+               return false;
+       }
+};
+
+WPSetThumbnailHTML = function(html){
+       $('.inside', '#postimagediv').html(html);
+};
+
+WPSetThumbnailID = function(id){
+       var field = $('input[value="_thumbnail_id"]', '#list-table');
+       if ( field.size() > 0 ) {
+               $('#meta\\[' + field.attr('id').match(/[0-9]+/) + '\\]\\[value\\]').text(id);
+       }
+};
+
+WPRemoveThumbnail = function(nonce){
+       $.post(ajaxurl, {
+               action:"set-post-thumbnail", post_id: $('#post_ID').val(), thumbnail_id: -1, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie)
+       }, function(str){
+               if ( str == '0' ) {
+                       alert( setPostThumbnailL10n.error );
+               } else {
+                       WPSetThumbnailHTML(str);
+               }
+       }
+       );
+};
+
+})(jQuery);
+
+jQuery(document).ready( function($) {
+       var stamp, visibility, sticky = '', last = 0, co = $('#content');
+
+       postboxes.add_postbox_toggles(pagenow);
+
+       // multi-taxonomies
+       if ( $('#tagsdiv-post_tag').length ) {
+               tagBox.init();
+       } else {
+               $('#side-sortables, #normal-sortables, #advanced-sortables').children('div.postbox').each(function(){
+                       if ( this.id.indexOf('tagsdiv-') === 0 ) {
+                               tagBox.init();
+                               return false;
+                       }
+               });
+       }
+
+       // categories
+       $('.categorydiv').each( function(){
+               var this_id = $(this).attr('id'), noSyncChecks = false, syncChecks, catAddAfter, taxonomyParts, taxonomy, settingName;
+
+               taxonomyParts = this_id.split('-');
+               taxonomyParts.shift();
+               taxonomy = taxonomyParts.join('-');
+               settingName = taxonomy + '_tab';
+               if ( taxonomy == 'category' )
+                       settingName = 'cats';
+
+               // TODO: move to jQuery 1.3+, support for multiple hierarchical taxonomies, see wp-lists.js
+               $('a', '#' + taxonomy + '-tabs').click( function(){
+                       var t = $(this).attr('href');
+                       $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
+                       $('#' + taxonomy + '-tabs').siblings('.tabs-panel').hide();
+                       $(t).show();
+                       if ( '#' + taxonomy + '-all' == t )
+                               deleteUserSetting(settingName);
+                       else
+                               setUserSetting(settingName, 'pop');
+                       return false;
+               });
+
+               if ( getUserSetting(settingName) )
+                       $('a[href="#' + taxonomy + '-pop"]', '#' + taxonomy + '-tabs').click();
+
+               // Ajax Cat
+               $('#new' + taxonomy).one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
+
+               $('#new' + taxonomy).keypress( function(event){
+                       if( 13 === event.keyCode ) {
+                                event.preventDefault();
+                                $('#' + taxonomy + '-add-submit').click();
+                       }
+               });
+               $('#' + taxonomy + '-add-submit').click( function(){ $('#new' + taxonomy).focus(); });
+
+               syncChecks = function() {
+                       if ( noSyncChecks )
+                               return;
+                       noSyncChecks = true;
+                       var th = jQuery(this), c = th.is(':checked'), id = th.val().toString();
+                       $('#in-' + taxonomy + '-' + id + ', #in-' + taxonomy + '-category-' + id).prop( 'checked', c );
+                       noSyncChecks = false;
+               };
+
+               catAddBefore = function( s ) {
+                       if ( !$('#new'+taxonomy).val() )
+                               return false;
+                       s.data += '&' + $( ':checked', '#'+taxonomy+'checklist' ).serialize();
+                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', true );
+                       return s;
+               };
+
+               catAddAfter = function( r, s ) {
+                       var sup, drop = $('#new'+taxonomy+'_parent');
+
+                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', false );
+                       if ( 'undefined' != s.parsed.responses[0] && (sup = s.parsed.responses[0].supplemental.newcat_parent) ) {
+                               drop.before(sup);
+                               drop.remove();
+                       }
+               };
+
+               $('#' + taxonomy + 'checklist').wpList({
+                       alt: '',
+                       response: taxonomy + '-ajax-response',
+                       addBefore: catAddBefore,
+                       addAfter: catAddAfter
+               });
+
+               $('#' + taxonomy + '-add-toggle').click( function() {
+                       $('#' + taxonomy + '-adder').toggleClass( 'wp-hidden-children' );
+                       $('a[href="#' + taxonomy + '-all"]', '#' + taxonomy + '-tabs').click();
+                       $('#new'+taxonomy).focus();
+                       return false;
+               });
+
+               $('#' + taxonomy + 'checklist li.popular-category input[type="checkbox"], #' + taxonomy + 'checklist-pop input[type="checkbox"]').live( 'click', function(){
+                       var t = $(this), c = t.is(':checked'), id = t.val();
+                       if ( id && t.parents('#taxonomy-'+taxonomy).length )
+                               $('#in-' + taxonomy + '-' + id + ', #in-popular-' + taxonomy + '-' + id).prop( 'checked', c );
+               });
+
+       }); // end cats
+
+       // Custom Fields
+       if ( $('#postcustom').length ) {
+               $('#the-list').wpList( { addAfter: function( xml, s ) {
+                       $('table#list-table').show();
+               }, addBefore: function( s ) {
+                       s.data += '&post_id=' + $('#post_ID').val();
+                       return s;
+               }
+               });
+       }
+
+       // submitdiv
+       if ( $('#submitdiv').length ) {
+               stamp = $('#timestamp').html();
+               visibility = $('#post-visibility-display').html();
+
+               function updateVisibility() {
+                       var pvSelect = $('#post-visibility-select');
+                       if ( $('input:radio:checked', pvSelect).val() != 'public' ) {
+                               $('#sticky').prop('checked', false);
+                               $('#sticky-span').hide();
+                       } else {
+                               $('#sticky-span').show();
+                       }
+                       if ( $('input:radio:checked', pvSelect).val() != 'password' ) {
+                               $('#password-span').hide();
+                       } else {
+                               $('#password-span').show();
+                       }
+               }
+
+               function updateText() {
+
+                       if ( ! $('#timestampdiv').length )
+                               return true;
+
+                       var attemptedDate, originalDate, currentDate, publishOn, postStatus = $('#post_status'),
+                               optPublish = $('option[value="publish"]', postStatus), aa = $('#aa').val(),
+                               mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val();
+
+                       attemptedDate = new Date( aa, mm - 1, jj, hh, mn );
+                       originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val() );
+                       currentDate = new Date( $('#cur_aa').val(), $('#cur_mm').val() -1, $('#cur_jj').val(), $('#cur_hh').val(), $('#cur_mn').val() );
+
+                       if ( attemptedDate.getFullYear() != aa || (1 + attemptedDate.getMonth()) != mm || attemptedDate.getDate() != jj || attemptedDate.getMinutes() != mn ) {
+                               $('.timestamp-wrap', '#timestampdiv').addClass('form-invalid');
+                               return false;
+                       } else {
+                               $('.timestamp-wrap', '#timestampdiv').removeClass('form-invalid');
+                       }
+
+                       if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
+                               publishOn = postL10n.publishOnFuture;
+                               $('#publish').val( postL10n.schedule );
+                       } else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
+                               publishOn = postL10n.publishOn;
+                               $('#publish').val( postL10n.publish );
+                       } else {
+                               publishOn = postL10n.publishOnPast;
+                               $('#publish').val( postL10n.update );
+                       }
+                       if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
+                               $('#timestamp').html(stamp);
+                       } else {
+                               $('#timestamp').html(
+                                       publishOn + ' <b>' +
+                                       $('option[value="' + $('#mm').val() + '"]', '#mm').text() + ' ' +
+                                       jj + ', ' +
+                                       aa + ' @ ' +
+                                       hh + ':' +
+                                       mn + '</b> '
+                               );
+                       }
+
+                       if ( $('input:radio:checked', '#post-visibility-select').val() == 'private' ) {
+                               $('#publish').val( postL10n.update );
+                               if ( optPublish.length == 0 ) {
+                                       postStatus.append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
+                               } else {
+                                       optPublish.html( postL10n.privatelyPublished );
+                               }
+                               $('option[value="publish"]', postStatus).prop('selected', true);
+                               $('.edit-post-status', '#misc-publishing-actions').hide();
+                       } else {
+                               if ( $('#original_post_status').val() == 'future' || $('#original_post_status').val() == 'draft' ) {
+                                       if ( optPublish.length ) {
+                                               optPublish.remove();
+                                               postStatus.val($('#hidden_post_status').val());
+                                       }
+                               } else {
+                                       optPublish.html( postL10n.published );
+                               }
+                               if ( postStatus.is(':hidden') )
+                                       $('.edit-post-status', '#misc-publishing-actions').show();
+                       }
+                       $('#post-status-display').html($('option:selected', postStatus).text());
+                       if ( $('option:selected', postStatus).val() == 'private' || $('option:selected', postStatus).val() == 'publish' ) {
+                               $('#save-post').hide();
+                       } else {
+                               $('#save-post').show();
+                               if ( $('option:selected', postStatus).val() == 'pending' ) {
+                                       $('#save-post').show().val( postL10n.savePending );
+                               } else {
+                                       $('#save-post').show().val( postL10n.saveDraft );
+                               }
+                       }
+                       return true;
+               }
+
+               $('.edit-visibility', '#visibility').click(function () {
+                       if ($('#post-visibility-select').is(":hidden")) {
+                               updateVisibility();
+                               $('#post-visibility-select').slideDown('fast');
+                               $(this).hide();
+                       }
+                       return false;
+               });
+
+               $('.cancel-post-visibility', '#post-visibility-select').click(function () {
+                       $('#post-visibility-select').slideUp('fast');
+                       $('#visibility-radio-' + $('#hidden-post-visibility').val()).prop('checked', true);
+                       $('#post_password').val($('#hidden_post_password').val());
+                       $('#sticky').prop('checked', $('#hidden-post-sticky').prop('checked'));
+                       $('#post-visibility-display').html(visibility);
+                       $('.edit-visibility', '#visibility').show();
+                       updateText();
+                       return false;
+               });
+
+               $('.save-post-visibility', '#post-visibility-select').click(function () { // crazyhorse - multiple ok cancels
+                       var pvSelect = $('#post-visibility-select');
+
+                       pvSelect.slideUp('fast');
+                       $('.edit-visibility', '#visibility').show();
+                       updateText();
+
+                       if ( $('input:radio:checked', pvSelect).val() != 'public' ) {
+                               $('#sticky').prop('checked', false);
+                       } // WEAPON LOCKED
+
+                       if ( true == $('#sticky').prop('checked') ) {
+                               sticky = 'Sticky';
+                       } else {
+                               sticky = '';
+                       }
+
+                       $('#post-visibility-display').html(     postL10n[$('input:radio:checked', pvSelect).val() + sticky]     );
+                       return false;
+               });
+
+               $('input:radio', '#post-visibility-select').change(function() {
+                       updateVisibility();
+               });
+
+               $('#timestampdiv').siblings('a.edit-timestamp').click(function() {
+                       if ($('#timestampdiv').is(":hidden")) {
+                               $('#timestampdiv').slideDown('fast');
+                               $('#mm').focus();
+                               $(this).hide();
+                       }
+                       return false;
+               });
+
+               $('.cancel-timestamp', '#timestampdiv').click(function() {
+                       $('#timestampdiv').slideUp('fast');
+                       $('#mm').val($('#hidden_mm').val());
+                       $('#jj').val($('#hidden_jj').val());
+                       $('#aa').val($('#hidden_aa').val());
+                       $('#hh').val($('#hidden_hh').val());
+                       $('#mn').val($('#hidden_mn').val());
+                       $('#timestampdiv').siblings('a.edit-timestamp').show();
+                       updateText();
+                       return false;
+               });
+
+               $('.save-timestamp', '#timestampdiv').click(function () { // crazyhorse - multiple ok cancels
+                       if ( updateText() ) {
+                               $('#timestampdiv').slideUp('fast');
+                               $('#timestampdiv').siblings('a.edit-timestamp').show();
+                       }
+                       return false;
+               });
+
+               $('#post').on( 'submit', function(e){
+                       if ( ! updateText() ) {
+                               e.preventDefault();
+                               $('#timestampdiv').show();
+                               $('#publishing-action .spinner').hide();
+                               $('#publish').prop('disabled', false).removeClass('button-primary-disabled');
+                               return false;
+                       }
+               });
+
+               $('#post-status-select').siblings('a.edit-post-status').click(function() {
+                       if ($('#post-status-select').is(":hidden")) {
+                               $('#post-status-select').slideDown('fast');
+                               $(this).hide();
+                       }
+                       return false;
+               });
+
+               $('.save-post-status', '#post-status-select').click(function() {
+                       $('#post-status-select').slideUp('fast');
+                       $('#post-status-select').siblings('a.edit-post-status').show();
+                       updateText();
+                       return false;
+               });
+
+               $('.cancel-post-status', '#post-status-select').click(function() {
+                       $('#post-status-select').slideUp('fast');
+                       $('#post_status').val($('#hidden_post_status').val());
+                       $('#post-status-select').siblings('a.edit-post-status').show();
+                       updateText();
+                       return false;
+               });
+       } // end submitdiv
+
+       // permalink
+       if ( $('#edit-slug-box').length ) {
+               editPermalink = function(post_id) {
+                       var i, c = 0, e = $('#editable-post-name'), revert_e = e.html(), real_slug = $('#post_name'), revert_slug = real_slug.val(), b = $('#edit-slug-buttons'), revert_b = b.html(), full = $('#editable-post-name-full').html();
+
+                       $('#view-post-btn').hide();
+                       b.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+'</a>');
+                       b.children('.save').click(function() {
+                               var new_slug = e.children('input').val();
+                               if ( new_slug == $('#editable-post-name-full').text() ) {
+                                       return $('.cancel', '#edit-slug-buttons').click();
+                               }
+                               $.post(ajaxurl, {
+                                       action: 'sample-permalink',
+                                       post_id: post_id,
+                                       new_slug: new_slug,
+                                       new_title: $('#title').val(),
+                                       samplepermalinknonce: $('#samplepermalinknonce').val()
+                               }, function(data) {
+                                       $('#edit-slug-box').html(data);
+                                       b.html(revert_b);
+                                       real_slug.val(new_slug);
+                                       makeSlugeditClickable();
+                                       $('#view-post-btn').show();
+                               });
+                               return false;
+                       });
+
+                       $('.cancel', '#edit-slug-buttons').click(function() {
+                               $('#view-post-btn').show();
+                               e.html(revert_e);
+                               b.html(revert_b);
+                               real_slug.val(revert_slug);
+                               return false;
+                       });
+
+                       for ( i = 0; i < full.length; ++i ) {
+                               if ( '%' == full.charAt(i) )
+                                       c++;
+                       }
+
+                       slug_value = ( c > full.length / 4 ) ? '' : full;
+                       e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e){
+                               var key = e.keyCode || 0;
+                               // on enter, just save the new slug, don't save the post
+                               if ( 13 == key ) {
+                                       b.children('.save').click();
+                                       return false;
+                               }
+                               if ( 27 == key ) {
+                                       b.children('.cancel').click();
+                                       return false;
+                               }
+                               real_slug.val(this.value);
+                       }).focus();
+               }
+
+               makeSlugeditClickable = function() {
+                       $('#editable-post-name').click(function() {
+                               $('#edit-slug-buttons').children('.edit-slug').click();
+                       });
+               }
+               makeSlugeditClickable();
+       }
+
+       // word count
+       if ( typeof(wpWordCount) != 'undefined' ) {
+               $(document).triggerHandler('wpcountwords', [ co.val() ]);
+
+               co.keyup( function(e) {
+                       var k = e.keyCode || e.charCode;
+
+                       if ( k == last )
+                               return true;
+
+                       if ( 13 == k || 8 == last || 46 == last )
+                               $(document).triggerHandler('wpcountwords', [ co.val() ]);
+
+                       last = k;
+                       return true;
+               });
+       }
+
+       wptitlehint = function(id) {
+               id = id || 'title';
+
+               var title = $('#' + id), titleprompt = $('#' + id + '-prompt-text');
+
+               if ( title.val() == '' )
+                       titleprompt.removeClass('screen-reader-text');
+
+               titleprompt.click(function(){
+                       $(this).addClass('screen-reader-text');
+                       title.focus();
+               });
+
+               title.blur(function(){
+                       if ( this.value == '' )
+                               titleprompt.removeClass('screen-reader-text');
+               }).focus(function(){
+                       titleprompt.addClass('screen-reader-text');
+               }).keydown(function(e){
+                       titleprompt.addClass('screen-reader-text');
+                       $(this).unbind(e);
+               });
+       }
+
+       wptitlehint();
+
+       // resizable textarea#content
+       (function() {
+               var textarea = $('textarea#content'), offset = null, el;
+               // No point for touch devices
+               if ( 'ontouchstart' in window )
+                       return;
+
+               function dragging(e) {
+                       textarea.height( Math.max(50, offset + e.pageY) + 'px' );
+                       return false;
+               }
+
+               function endDrag(e) {
+                       var height = $('#wp-content-editor-container').height();
+
+                       textarea.focus();
+                       $(document).unbind('mousemove', dragging).unbind('mouseup', endDrag);
+
+                       height -= 33; // compensate for toolbars, padding...
+                       // sanity check
+                       if ( height > 50 && height < 5000 && height != getUserSetting( 'ed_size' ) )
+                               setUserSetting( 'ed_size', height );
+               }
+
+               textarea.css('resize', 'none');
+               el = $('<div id="content-resize-handle"><br></div>');
+               $('#wp-content-wrap').append(el);
+               el.on('mousedown', function(e) {
+                       offset = textarea.height() - e.pageY;
+                       textarea.blur();
+                       $(document).mousemove(dragging).mouseup(endDrag);
+                       return false;
+               });
+       })();
+
+       if ( typeof(tinymce) != 'undefined' ) {
+               tinymce.onAddEditor.add(function(mce, ed){
+                       // iOS expands the iframe to full height and the user cannot adjust it.
+                       if ( ed.id != 'content' || tinymce.isIOS5 )
+                               return;
+
+                       // resize TinyMCE to match the textarea height when switching Text -> Visual
+                       ed.onLoadContent.add( function(ed, o) {
+                               var ifr_height, height = parseInt( $('#content').css('height'), 10 ),
+                                       tb_height = $('#content_tbl tr.mceFirst').height();
+
+                               if ( height && !isNaN(height) && tb_height ) {
+                                       ifr_height = (height - tb_height) + 12; // compensate for padding in the textarea
+                                       // sanity check
+                                       if ( ifr_height > 50 && ifr_height < 5000 ) {
+                                               $('#content_tbl').css('height', '' );
+                                               $('#content_ifr').css('height', ifr_height + 'px' );
+                                       }
+                               }
+                       });
+
+                       // resize the textarea to match TinyMCE's height when switching Visual -> Text
+                       ed.onSaveContent.add( function(ed, o) {
+                               var height = $('#content_tbl').height();
+
+                               if ( height && height > 83 && height < 5000 ) {
+                                       height -= 33;
+
+                                       $('#content').css( 'height', height + 'px' );
+                               }
+                       });
+
+                       // save on resizing TinyMCE
+                       ed.onPostRender.add(function() {
+                               $('#content_resize').on('mousedown.wp-mce-resize', function(e){
+                                       $(document).on('mouseup.wp-mce-resize', function(e){
+                                               var height = $('#wp-content-editor-container').height();
+
+                                               height -= 33;
+                                               // sanity check
+                                               if ( height > 50 && height < 5000 && height != getUserSetting( 'ed_size' ) )
+                                                       setUserSetting( 'ed_size', height );
+
+                                               $(document).off('mouseup.wp-mce-resize');
+                                       });
+                               });
+                       });
+               });
+       }
+});
diff --git a/wp-admin/js/post.min.js b/wp-admin/js/post.min.js
new file mode 100644 (file)
index 0000000..33bf9b6
--- /dev/null
@@ -0,0 +1 @@
+var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}(function(a){tagBox={clean:function(c){var b=postL10n.comma;if(","!==b){c=c.replace(new RegExp(b,"g"),",")}c=c.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");if(","!==b){c=c.replace(/,/g,b)}return c},parseTags:function(f){var i=f.id,c=i.split("-check-num-")[1],e=a(f).closest(".tagsdiv"),h=e.find(".the-tags"),b=postL10n.comma,d=h.val().split(b),g=[];delete d[c];a.each(d,function(j,k){k=a.trim(k);if(k){g.push(k)}});h.val(this.clean(g.join(b)));this.quickClicks(e);return false},quickClicks:function(d){var g=a(".the-tags",d),e=a(".tagchecklist",d),f=a(d).attr("id"),b,c;if(!g.length){return}c=g.prop("disabled");b=g.val().split(postL10n.comma);e.empty();a.each(b,function(i,k){var j,h;k=a.trim(k);if(!k){return}j=a("<span />").text(k);if(!c){h=a('<a id="'+f+"-check-num-"+i+'" class="ntdelbutton">X</a>');h.click(function(){tagBox.parseTags(this)});j.prepend("&nbsp;").prepend(h)}e.append(j)})},flushTags:function(g,c,h){c=c||false;var d=a(".the-tags",g),j=a("input.newtag",g),b=postL10n.comma,e,i;i=c?a(c).text():j.val();tagsval=d.val();e=tagsval?tagsval+b+i:i;e=this.clean(e);e=array_unique_noempty(e.split(b)).join(b);d.val(e);this.quickClicks(g);if(!c){j.val("")}if("undefined"==typeof(h)){j.focus()}return false},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){tagBox.flushTags(a(this).closest(".inside").children(".tagsdiv"),this);return false});a("#"+c).after(e)})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)});a("input.tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))});a("div.taghint",c).click(function(){a(this).css("visibility","hidden").parent().siblings(".newtag").focus()});a("input.newtag",c).blur(function(){if(this.value==""){a(this).parent().siblings(".taghint").css("visibility","")}}).focus(function(){a(this).parent().siblings(".taghint").css("visibility","hidden")}).keyup(function(d){if(13==d.which){tagBox.flushTags(a(this).closest(".tagsdiv"));return false}}).keypress(function(d){if(13==d.which){d.preventDefault();return false}}).each(function(){var d=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+d,{delay:500,minchars:2,multiple:true,multipleSep:postL10n.comma+" "})});a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1)})});a("a.tagcloud-link").click(function(){if(!a(".the-tagcloud").length){tagBox.get(a(this).attr("id"))}a(this).siblings(".the-tagcloud").toggle();return false})}};commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv .spinner").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:b,number:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv .spinner").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").show().children("a").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")});return false}};WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)};WPSetThumbnailID=function(c){var b=a('input[value="_thumbnail_id"]',"#list-table");if(b.size()>0){a("#meta\\["+b.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(c)}};WPRemoveThumbnail=function(b){a.post(ajaxurl,{action:"set-post-thumbnail",post_id:a("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(c){if(c=="0"){alert(setPostThumbnailL10n.error)}else{WPSetThumbnailHTML(c)}})}})(jQuery);jQuery(document).ready(function(f){var b,a,g="",e=0,h=f("#content");postboxes.add_postbox_toggles(pagenow);if(f("#tagsdiv-post_tag").length){tagBox.init()}else{f("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false}})}f(".categorydiv").each(function(){var n=f(this).attr("id"),j=false,m,o,l,i,k;l=n.split("-");l.shift();i=l.join("-");k=i+"_tab";if(i=="category"){k="cats"}f("a","#"+i+"-tabs").click(function(){var p=f(this).attr("href");f(this).parent().addClass("tabs").siblings("li").removeClass("tabs");f("#"+i+"-tabs").siblings(".tabs-panel").hide();f(p).show();if("#"+i+"-all"==p){deleteUserSetting(k)}else{setUserSetting(k,"pop")}return false});if(getUserSetting(k)){f('a[href="#'+i+'-pop"]',"#"+i+"-tabs").click()}f("#new"+i).one("focus",function(){f(this).val("").removeClass("form-input-tip")});f("#new"+i).keypress(function(p){if(13===p.keyCode){p.preventDefault();f("#"+i+"-add-submit").click()}});f("#"+i+"-add-submit").click(function(){f("#new"+i).focus()});m=function(){if(j){return}j=true;var p=jQuery(this),r=p.is(":checked"),q=p.val().toString();f("#in-"+i+"-"+q+", #in-"+i+"-category-"+q).prop("checked",r);j=false};catAddBefore=function(p){if(!f("#new"+i).val()){return false}p.data+="&"+f(":checked","#"+i+"checklist").serialize();f("#"+i+"-add-submit").prop("disabled",true);return p};o=function(u,t){var q,p=f("#new"+i+"_parent");f("#"+i+"-add-submit").prop("disabled",false);if("undefined"!=t.parsed.responses[0]&&(q=t.parsed.responses[0].supplemental.newcat_parent)){p.before(q);p.remove()}};f("#"+i+"checklist").wpList({alt:"",response:i+"-ajax-response",addBefore:catAddBefore,addAfter:o});f("#"+i+"-add-toggle").click(function(){f("#"+i+"-adder").toggleClass("wp-hidden-children");f('a[href="#'+i+'-all"]',"#"+i+"-tabs").click();f("#new"+i).focus();return false});f("#"+i+'checklist li.popular-category input[type="checkbox"], #'+i+'checklist-pop input[type="checkbox"]').live("click",function(){var p=f(this),r=p.is(":checked"),q=p.val();if(q&&p.parents("#taxonomy-"+i).length){f("#in-"+i+"-"+q+", #in-popular-"+i+"-"+q).prop("checked",r)}})});if(f("#postcustom").length){f("#the-list").wpList({addAfter:function(i,j){f("table#list-table").show()},addBefore:function(i){i.data+="&post_id="+f("#post_ID").val();return i}})}if(f("#submitdiv").length){b=f("#timestamp").html();a=f("#post-visibility-display").html();function d(){var i=f("#post-visibility-select");if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false);f("#sticky-span").hide()}else{f("#sticky-span").show()}if(f("input:radio:checked",i).val()!="password"){f("#password-span").hide()}else{f("#password-span").show()}}function c(){if(!f("#timestampdiv").length){return true}var p,q,j,s,r=f("#post_status"),k=f('option[value="publish"]',r),i=f("#aa").val(),n=f("#mm").val(),o=f("#jj").val(),m=f("#hh").val(),l=f("#mn").val();p=new Date(i,n-1,o,m,l);q=new Date(f("#hidden_aa").val(),f("#hidden_mm").val()-1,f("#hidden_jj").val(),f("#hidden_hh").val(),f("#hidden_mn").val());j=new Date(f("#cur_aa").val(),f("#cur_mm").val()-1,f("#cur_jj").val(),f("#cur_hh").val(),f("#cur_mn").val());if(p.getFullYear()!=i||(1+p.getMonth())!=n||p.getDate()!=o||p.getMinutes()!=l){f(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{f(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}if(p>j&&f("#original_post_status").val()!="future"){s=postL10n.publishOnFuture;f("#publish").val(postL10n.schedule)}else{if(p<=j&&f("#original_post_status").val()!="publish"){s=postL10n.publishOn;f("#publish").val(postL10n.publish)}else{s=postL10n.publishOnPast;f("#publish").val(postL10n.update)}}if(q.toUTCString()==p.toUTCString()){f("#timestamp").html(b)}else{f("#timestamp").html(s+" <b>"+f('option[value="'+f("#mm").val()+'"]',"#mm").text()+" "+o+", "+i+" @ "+m+":"+l+"</b> ")}if(f("input:radio:checked","#post-visibility-select").val()=="private"){f("#publish").val(postL10n.update);if(k.length==0){r.append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}else{k.html(postL10n.privatelyPublished)}f('option[value="publish"]',r).prop("selected",true);f(".edit-post-status","#misc-publishing-actions").hide()}else{if(f("#original_post_status").val()=="future"||f("#original_post_status").val()=="draft"){if(k.length){k.remove();r.val(f("#hidden_post_status").val())}}else{k.html(postL10n.published)}if(r.is(":hidden")){f(".edit-post-status","#misc-publishing-actions").show()}}f("#post-status-display").html(f("option:selected",r).text());if(f("option:selected",r).val()=="private"||f("option:selected",r).val()=="publish"){f("#save-post").hide()}else{f("#save-post").show();if(f("option:selected",r).val()=="pending"){f("#save-post").show().val(postL10n.savePending)}else{f("#save-post").show().val(postL10n.saveDraft)}}return true}f(".edit-visibility","#visibility").click(function(){if(f("#post-visibility-select").is(":hidden")){d();f("#post-visibility-select").slideDown("fast");f(this).hide()}return false});f(".cancel-post-visibility","#post-visibility-select").click(function(){f("#post-visibility-select").slideUp("fast");f("#visibility-radio-"+f("#hidden-post-visibility").val()).prop("checked",true);f("#post_password").val(f("#hidden_post_password").val());f("#sticky").prop("checked",f("#hidden-post-sticky").prop("checked"));f("#post-visibility-display").html(a);f(".edit-visibility","#visibility").show();c();return false});f(".save-post-visibility","#post-visibility-select").click(function(){var i=f("#post-visibility-select");i.slideUp("fast");f(".edit-visibility","#visibility").show();c();if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false)}if(true==f("#sticky").prop("checked")){g="Sticky"}else{g=""}f("#post-visibility-display").html(postL10n[f("input:radio:checked",i).val()+g]);return false});f("input:radio","#post-visibility-select").change(function(){d()});f("#timestampdiv").siblings("a.edit-timestamp").click(function(){if(f("#timestampdiv").is(":hidden")){f("#timestampdiv").slideDown("fast");f("#mm").focus();f(this).hide()}return false});f(".cancel-timestamp","#timestampdiv").click(function(){f("#timestampdiv").slideUp("fast");f("#mm").val(f("#hidden_mm").val());f("#jj").val(f("#hidden_jj").val());f("#aa").val(f("#hidden_aa").val());f("#hh").val(f("#hidden_hh").val());f("#mn").val(f("#hidden_mn").val());f("#timestampdiv").siblings("a.edit-timestamp").show();c();return false});f(".save-timestamp","#timestampdiv").click(function(){if(c()){f("#timestampdiv").slideUp("fast");f("#timestampdiv").siblings("a.edit-timestamp").show()}return false});f("#post").on("submit",function(i){if(!c()){i.preventDefault();f("#timestampdiv").show();f("#publishing-action .spinner").hide();f("#publish").prop("disabled",false).removeClass("button-primary-disabled");return false}});f("#post-status-select").siblings("a.edit-post-status").click(function(){if(f("#post-status-select").is(":hidden")){f("#post-status-select").slideDown("fast");f(this).hide()}return false});f(".save-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post-status-select").siblings("a.edit-post-status").show();c();return false});f(".cancel-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post_status").val(f("#hidden_post_status").val());f("#post-status-select").siblings("a.edit-post-status").show();c();return false})}if(f("#edit-slug-box").length){editPermalink=function(j){var k,n=0,m=f("#editable-post-name"),o=m.html(),r=f("#post_name"),s=r.val(),p=f("#edit-slug-buttons"),q=p.html(),l=f("#editable-post-name-full").html();f("#view-post-btn").hide();p.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");p.children(".save").click(function(){var i=m.children("input").val();if(i==f("#editable-post-name-full").text()){return f(".cancel","#edit-slug-buttons").click()}f.post(ajaxurl,{action:"sample-permalink",post_id:j,new_slug:i,new_title:f("#title").val(),samplepermalinknonce:f("#samplepermalinknonce").val()},function(t){f("#edit-slug-box").html(t);p.html(q);r.val(i);makeSlugeditClickable();f("#view-post-btn").show()});return false});f(".cancel","#edit-slug-buttons").click(function(){f("#view-post-btn").show();m.html(o);p.html(q);r.val(s);return false});for(k=0;k<l.length;++k){if("%"==l.charAt(k)){n++}}slug_value=(n>l.length/4)?"":l;m.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(t){var i=t.keyCode||0;if(13==i){p.children(".save").click();return false}if(27==i){p.children(".cancel").click();return false}r.val(this.value)}).focus()};makeSlugeditClickable=function(){f("#editable-post-name").click(function(){f("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()}if(typeof(wpWordCount)!="undefined"){f(document).triggerHandler("wpcountwords",[h.val()]);h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==e){return true}if(13==i||8==e||46==e){f(document).triggerHandler("wpcountwords",[h.val()])}e=i;return true})}wptitlehint=function(k){k=k||"title";var i=f("#"+k),j=f("#"+k+"-prompt-text");if(i.val()==""){j.removeClass("screen-reader-text")}j.click(function(){f(this).addClass("screen-reader-text");i.focus()});i.blur(function(){if(this.value==""){j.removeClass("screen-reader-text")}}).focus(function(){j.addClass("screen-reader-text")}).keydown(function(l){j.addClass("screen-reader-text");f(this).unbind(l)})};wptitlehint();(function(){var i=f("textarea#content"),l=null,j;if("ontouchstart" in window){return}function k(n){i.height(Math.max(50,l+n.pageY)+"px");return false}function m(o){var n=f("#wp-content-editor-container").height();i.focus();f(document).unbind("mousemove",k).unbind("mouseup",m);n-=33;if(n>50&&n<5000&&n!=getUserSetting("ed_size")){setUserSetting("ed_size",n)}}i.css("resize","none");j=f('<div id="content-resize-handle"><br></div>');f("#wp-content-wrap").append(j);j.on("mousedown",function(n){l=i.height()-n.pageY;i.blur();f(document).mousemove(k).mouseup(m);return false})})();if(typeof(tinymce)!="undefined"){tinymce.onAddEditor.add(function(i,j){if(j.id!="content"||tinymce.isIOS5){return}j.onLoadContent.add(function(l,n){var p,k=parseInt(f("#content").css("height"),10),m=f("#content_tbl tr.mceFirst").height();if(k&&!isNaN(k)&&m){p=(k-m)+12;if(p>50&&p<5000){f("#content_tbl").css("height","");f("#content_ifr").css("height",p+"px")}}});j.onSaveContent.add(function(l,m){var k=f("#content_tbl").height();if(k&&k>83&&k<5000){k-=33;f("#content").css("height",k+"px")}});j.onPostRender.add(function(){f("#content_resize").on("mousedown.wp-mce-resize",function(k){f(document).on("mouseup.wp-mce-resize",function(m){var l=f("#wp-content-editor-container").height();l-=33;if(l>50&&l<5000&&l!=getUserSetting("ed_size")){setUserSetting("ed_size",l)}f(document).off("mouseup.wp-mce-resize")})})})})}});
\ No newline at end of file
diff --git a/wp-admin/js/postbox.dev.js b/wp-admin/js/postbox.dev.js
deleted file mode 100644 (file)
index 95b0cb3..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-var postboxes;
-
-(function($) {
-       postboxes = {
-               add_postbox_toggles : function(page, args) {
-                       var self = this;
-
-                       self.init(page, args);
-
-                       $('.postbox h3, .postbox .handlediv').bind('click.postboxes', function() {
-                               var p = $(this).parent('.postbox'), id = p.attr('id');
-
-                               if ( 'dashboard_browser_nag' == id )
-                                       return;
-
-                               p.toggleClass('closed');
-
-                               if ( page != 'press-this' )
-                                       self.save_state(page);
-
-                               if ( id ) {
-                                       if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
-                                               self.pbshow(id);
-                                       else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
-                                               self.pbhide(id);
-                               }
-                       });
-
-                       $('.postbox h3 a').click( function(e) {
-                               e.stopPropagation();
-                       });
-
-                       $('.postbox a.dismiss').bind('click.postboxes', function(e) {
-                               var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
-                               $( '#' + hide_id ).prop('checked', false).triggerHandler('click');
-                               return false;
-                       });
-
-                       $('.hide-postbox-tog').bind('click.postboxes', function() {
-                               var box = $(this).val();
-
-                               if ( $(this).prop('checked') ) {
-                                       $('#' + box).show();
-                                       if ( $.isFunction( postboxes.pbshow ) )
-                                               self.pbshow( box );
-                               } else {
-                                       $('#' + box).hide();
-                                       if ( $.isFunction( postboxes.pbhide ) )
-                                               self.pbhide( box );
-                               }
-                               self.save_state(page);
-                               self._mark_area();
-                       });
-
-                       $('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
-                               var n = parseInt($(this).val(), 10);
-
-                               if ( n ) {
-                                       self._pb_edit(n);
-                                       self.save_order(page);
-                               }
-                       });
-               },
-
-               init : function(page, args) {
-                       var isMobile = $(document.body).hasClass('mobile');
-
-                       $.extend( this, args || {} );
-                       $('#wpbody-content').css('overflow','hidden');
-                       $('.meta-box-sortables').sortable({
-                               placeholder: 'sortable-placeholder',
-                               connectWith: '.meta-box-sortables',
-                               items: '.postbox',
-                               handle: '.hndle',
-                               cursor: 'move',
-                               delay: ( isMobile ? 200 : 0 ),
-                               distance: 2,
-                               tolerance: 'pointer',
-                               forcePlaceholderSize: true,
-                               helper: 'clone',
-                               opacity: 0.65,
-                               stop: function(e,ui) {
-                                       if ( $(this).find('#dashboard_browser_nag').is(':visible') && 'dashboard_browser_nag' != this.firstChild.id ) {
-                                               $(this).sortable('cancel');
-                                               return;
-                                       }
-
-                                       postboxes.save_order(page);
-                               },
-                               receive: function(e,ui) {
-                                       if ( 'dashboard_browser_nag' == ui.item[0].id )
-                                               $(ui.sender).sortable('cancel');
-
-                                       postboxes._mark_area();
-                               }
-                       });
-
-                       if ( isMobile ) {
-                               $(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
-                               this._pb_change();
-                       }
-
-                       this._mark_area();
-               },
-
-               save_state : function(page) {
-                       var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
-                               hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
-
-                       $.post(ajaxurl, {
-                               action: 'closed-postboxes',
-                               closed: closed,
-                               hidden: hidden,
-                               closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
-                               page: page
-                       });
-               },
-
-               save_order : function(page) {
-                       var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
-
-                       postVars = {
-                               action: 'meta-box-order',
-                               _ajax_nonce: $('#meta-box-order-nonce').val(),
-                               page_columns: page_columns,
-                               page: page
-                       }
-                       $('.meta-box-sortables').each( function() {
-                               postVars["order[" + this.id.split('-')[0] + "]"] = $(this).sortable( 'toArray' ).join(',');
-                       } );
-                       $.post( ajaxurl, postVars );
-               },
-
-               _mark_area : function() {
-                       var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
-
-                       $('#dashboard-widgets .meta-box-sortables:visible').each(function(n, el){
-                               var t = $(this);
-
-                               if ( visible == 1 || t.children('.postbox:visible').length )
-                                       t.removeClass('empty-container');
-                               else
-                                       t.addClass('empty-container');
-                       });
-
-                       if ( side.length ) {
-                               if ( side.children('.postbox:visible').length )
-                                       side.removeClass('empty-container');
-                               else if ( $('#postbox-container-1').css('width') == '280px' )
-                                       side.addClass('empty-container');
-                       }
-               },
-
-               _pb_edit : function(n) {
-                       var el = $('.metabox-holder').get(0);
-                       el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
-               },
-
-               _pb_change : function() {
-                       switch ( window.orientation ) {
-                               case 90:
-                               case -90:
-                                       this._pb_edit(2);
-                                       break;
-                               case 0:
-                               case 180:
-                                       if ( $('#poststuff').length )
-                                               this._pb_edit(1);
-                                       else
-                                               this._pb_edit(2);
-                                       break;
-                       }
-               },
-
-               /* Callbacks */
-               pbshow : false,
-
-               pbhide : false
-       };
-
-}(jQuery));
index ba98f497cb9696bccc65635639591d0f4f211ee4..838db5d915c8add6428b05ca6cd44b944d2e3c16 100644 (file)
@@ -1 +1,186 @@
-var postboxes;(function(a){postboxes={add_postbox_toggles:function(d,c){var b=this;b.init(d,c);a(".postbox h3, .postbox .handlediv").bind("click.postboxes",function(){var e=a(this).parent(".postbox"),f=e.attr("id");if("dashboard_browser_nag"==f){return}e.toggleClass("closed");if(d!="press-this"){b.save_state(d)}if(f){if(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)){b.pbshow(f)}else{if(e.hasClass("closed")&&a.isFunction(postboxes.pbhide)){b.pbhide(f)}}}});a(".postbox h3 a").click(function(f){f.stopPropagation()});a(".postbox a.dismiss").bind("click.postboxes",function(g){var f=a(this).parents(".postbox").attr("id")+"-hide";a("#"+f).prop("checked",false).triggerHandler("click");return false});a(".hide-postbox-tog").bind("click.postboxes",function(){var e=a(this).val();if(a(this).prop("checked")){a("#"+e).show();if(a.isFunction(postboxes.pbshow)){b.pbshow(e)}}else{a("#"+e).hide();if(a.isFunction(postboxes.pbhide)){b.pbhide(e)}}b.save_state(d);b._mark_area()});a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var e=parseInt(a(this).val(),10);if(e){b._pb_edit(e);b.save_order(d)}})},init:function(d,c){var b=a(document.body).hasClass("mobile");a.extend(this,c||{});a("#wpbody-content").css("overflow","hidden");a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:(b?200:0),distance:2,tolerance:"pointer",forcePlaceholderSize:true,helper:"clone",opacity:0.65,stop:function(g,f){if(a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id){a(this).sortable("cancel");return}postboxes.save_order(d)},receive:function(g,f){if("dashboard_browser_nag"==f.item[0].id){a(f.sender).sortable("cancel")}postboxes._mark_area()}});if(b){a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()});this._pb_change()}this._mark_area()},save_state:function(d){var b=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),c=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:b,hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:d})},save_order:function(c){var b,d=a(".columns-prefs input:checked").val()||0;b={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:c};a(".meta-box-sortables").each(function(){b["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b)},_mark_area:function(){var c=a("div.postbox:visible").length,b=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(f,e){var d=a(this);if(c==1||d.children(".postbox:visible").length){d.removeClass("empty-container")}else{d.addClass("empty-container")}});if(b.length){if(b.children(".postbox:visible").length){b.removeClass("empty-container")}else{if(a("#postbox-container-1").css("width")=="280px"){b.addClass("empty-container")}}}},_pb_edit:function(c){var b=a(".metabox-holder").get(0);b.className=b.className.replace(/columns-\d+/,"columns-"+c)},_pb_change:function(){switch(window.orientation){case 90:case -90:this._pb_edit(2);break;case 0:case 180:if(a("#poststuff").length){this._pb_edit(1)}else{this._pb_edit(2)}break}},pbshow:false,pbhide:false}}(jQuery));
\ No newline at end of file
+var postboxes;
+
+(function($) {
+       postboxes = {
+               add_postbox_toggles : function(page, args) {
+                       var self = this;
+
+                       self.init(page, args);
+
+                       $('.postbox h3, .postbox .handlediv').bind('click.postboxes', function() {
+                               var p = $(this).parent('.postbox'), id = p.attr('id');
+
+                               if ( 'dashboard_browser_nag' == id )
+                                       return;
+
+                               p.toggleClass('closed');
+
+                               if ( page != 'press-this' )
+                                       self.save_state(page);
+
+                               if ( id ) {
+                                       if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
+                                               self.pbshow(id);
+                                       else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
+                                               self.pbhide(id);
+                               }
+                       });
+
+                       $('.postbox h3 a').click( function(e) {
+                               e.stopPropagation();
+                       });
+
+                       $('.postbox a.dismiss').bind('click.postboxes', function(e) {
+                               var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
+                               $( '#' + hide_id ).prop('checked', false).triggerHandler('click');
+                               return false;
+                       });
+
+                       $('.hide-postbox-tog').bind('click.postboxes', function() {
+                               var box = $(this).val();
+
+                               if ( $(this).prop('checked') ) {
+                                       $('#' + box).show();
+                                       if ( $.isFunction( postboxes.pbshow ) )
+                                               self.pbshow( box );
+                               } else {
+                                       $('#' + box).hide();
+                                       if ( $.isFunction( postboxes.pbhide ) )
+                                               self.pbhide( box );
+                               }
+                               self.save_state(page);
+                               self._mark_area();
+                       });
+
+                       $('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
+                               var n = parseInt($(this).val(), 10);
+
+                               if ( n ) {
+                                       self._pb_edit(n);
+                                       self.save_order(page);
+                               }
+                       });
+               },
+
+               init : function(page, args) {
+                       var isMobile = $(document.body).hasClass('mobile');
+
+                       $.extend( this, args || {} );
+                       $('#wpbody-content').css('overflow','hidden');
+                       $('.meta-box-sortables').sortable({
+                               placeholder: 'sortable-placeholder',
+                               connectWith: '.meta-box-sortables',
+                               items: '.postbox',
+                               handle: '.hndle',
+                               cursor: 'move',
+                               delay: ( isMobile ? 200 : 0 ),
+                               distance: 2,
+                               tolerance: 'pointer',
+                               forcePlaceholderSize: true,
+                               helper: 'clone',
+                               opacity: 0.65,
+                               stop: function(e,ui) {
+                                       if ( $(this).find('#dashboard_browser_nag').is(':visible') && 'dashboard_browser_nag' != this.firstChild.id ) {
+                                               $(this).sortable('cancel');
+                                               return;
+                                       }
+
+                                       postboxes.save_order(page);
+                               },
+                               receive: function(e,ui) {
+                                       if ( 'dashboard_browser_nag' == ui.item[0].id )
+                                               $(ui.sender).sortable('cancel');
+
+                                       postboxes._mark_area();
+                               }
+                       });
+
+                       if ( isMobile ) {
+                               $(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
+                               this._pb_change();
+                       }
+
+                       this._mark_area();
+               },
+
+               save_state : function(page) {
+                       var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
+                               hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
+
+                       $.post(ajaxurl, {
+                               action: 'closed-postboxes',
+                               closed: closed,
+                               hidden: hidden,
+                               closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
+                               page: page
+                       });
+               },
+
+               save_order : function(page) {
+                       var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
+
+                       postVars = {
+                               action: 'meta-box-order',
+                               _ajax_nonce: $('#meta-box-order-nonce').val(),
+                               page_columns: page_columns,
+                               page: page
+                       }
+                       $('.meta-box-sortables').each( function() {
+                               postVars["order[" + this.id.split('-')[0] + "]"] = $(this).sortable( 'toArray' ).join(',');
+                       } );
+                       $.post( ajaxurl, postVars );
+               },
+
+               _mark_area : function() {
+                       var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
+
+                       $('#dashboard-widgets .meta-box-sortables:visible').each(function(n, el){
+                               var t = $(this);
+
+                               if ( visible == 1 || t.children('.postbox:visible').length )
+                                       t.removeClass('empty-container');
+                               else
+                                       t.addClass('empty-container');
+                       });
+
+                       if ( side.length ) {
+                               if ( side.children('.postbox:visible').length )
+                                       side.removeClass('empty-container');
+                               else if ( $('#postbox-container-1').css('width') == '280px' )
+                                       side.addClass('empty-container');
+                       }
+               },
+
+               _pb_edit : function(n) {
+                       var el = $('.metabox-holder').get(0);
+                       el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
+               },
+
+               _pb_change : function() {
+                       var check = $( 'label.columns-prefs-1 input[type="radio"]' );
+
+                       switch ( window.orientation ) {
+                               case 90:
+                               case -90:
+                                       if ( !check.length || !check.is(':checked') )
+                                               this._pb_edit(2);
+                                       break;
+                               case 0:
+                               case 180:
+                                       if ( $('#poststuff').length ) {
+                                               this._pb_edit(1);
+                                       } else {
+                                               if ( !check.length || !check.is(':checked') )
+                                                       this._pb_edit(2);
+                                       }
+                                       break;
+                       }
+               },
+
+               /* Callbacks */
+               pbshow : false,
+
+               pbhide : false
+       };
+
+}(jQuery));
diff --git a/wp-admin/js/postbox.min.js b/wp-admin/js/postbox.min.js
new file mode 100644 (file)
index 0000000..0db8f61
--- /dev/null
@@ -0,0 +1 @@
+var postboxes;(function(a){postboxes={add_postbox_toggles:function(d,c){var b=this;b.init(d,c);a(".postbox h3, .postbox .handlediv").bind("click.postboxes",function(){var e=a(this).parent(".postbox"),f=e.attr("id");if("dashboard_browser_nag"==f){return}e.toggleClass("closed");if(d!="press-this"){b.save_state(d)}if(f){if(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)){b.pbshow(f)}else{if(e.hasClass("closed")&&a.isFunction(postboxes.pbhide)){b.pbhide(f)}}}});a(".postbox h3 a").click(function(f){f.stopPropagation()});a(".postbox a.dismiss").bind("click.postboxes",function(g){var f=a(this).parents(".postbox").attr("id")+"-hide";a("#"+f).prop("checked",false).triggerHandler("click");return false});a(".hide-postbox-tog").bind("click.postboxes",function(){var e=a(this).val();if(a(this).prop("checked")){a("#"+e).show();if(a.isFunction(postboxes.pbshow)){b.pbshow(e)}}else{a("#"+e).hide();if(a.isFunction(postboxes.pbhide)){b.pbhide(e)}}b.save_state(d);b._mark_area()});a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var e=parseInt(a(this).val(),10);if(e){b._pb_edit(e);b.save_order(d)}})},init:function(d,c){var b=a(document.body).hasClass("mobile");a.extend(this,c||{});a("#wpbody-content").css("overflow","hidden");a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:(b?200:0),distance:2,tolerance:"pointer",forcePlaceholderSize:true,helper:"clone",opacity:0.65,stop:function(g,f){if(a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id){a(this).sortable("cancel");return}postboxes.save_order(d)},receive:function(g,f){if("dashboard_browser_nag"==f.item[0].id){a(f.sender).sortable("cancel")}postboxes._mark_area()}});if(b){a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()});this._pb_change()}this._mark_area()},save_state:function(d){var b=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),c=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:b,hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:d})},save_order:function(c){var b,d=a(".columns-prefs input:checked").val()||0;b={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:c};a(".meta-box-sortables").each(function(){b["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b)},_mark_area:function(){var c=a("div.postbox:visible").length,b=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(f,e){var d=a(this);if(c==1||d.children(".postbox:visible").length){d.removeClass("empty-container")}else{d.addClass("empty-container")}});if(b.length){if(b.children(".postbox:visible").length){b.removeClass("empty-container")}else{if(a("#postbox-container-1").css("width")=="280px"){b.addClass("empty-container")}}}},_pb_edit:function(c){var b=a(".metabox-holder").get(0);b.className=b.className.replace(/columns-\d+/,"columns-"+c)},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case -90:if(!b.length||!b.is(":checked")){this._pb_edit(2)}break;case 0:case 180:if(a("#poststuff").length){this._pb_edit(1)}else{if(!b.length||!b.is(":checked")){this._pb_edit(2)}}break}},pbshow:false,pbhide:false}}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/set-post-thumbnail.dev.js b/wp-admin/js/set-post-thumbnail.dev.js
deleted file mode 100644 (file)
index e6ac875..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-function WPSetAsThumbnail(id, nonce){
-       var $link = jQuery('a#wp-post-thumbnail-' + id);
-
-       $link.text( setPostThumbnailL10n.saving );
-       jQuery.post(ajaxurl, {
-               action:"set-post-thumbnail", post_id: post_id, thumbnail_id: id, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie)
-       }, function(str){
-               var win = window.dialogArguments || opener || parent || top;
-               $link.text( setPostThumbnailL10n.setThumbnail );
-               if ( str == '0' ) {
-                       alert( setPostThumbnailL10n.error );
-               } else {
-                       jQuery('a.wp-post-thumbnail').show();
-                       $link.text( setPostThumbnailL10n.done );
-                       $link.fadeOut( 2000 );
-                       win.WPSetThumbnailID(id);
-                       win.WPSetThumbnailHTML(str);
-               }
-       }
-       );
-}
index ffe08d86ac09c72b9707563729f55caed001869a..e6ac87542c053229af4e76effe6cd9198eab5229 100644 (file)
@@ -1 +1,21 @@
-function WPSetAsThumbnail(c,b){var a=jQuery("a#wp-post-thumbnail-"+c);a.text(setPostThumbnailL10n.saving);jQuery.post(ajaxurl,{action:"set-post-thumbnail",post_id:post_id,thumbnail_id:c,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(e){var d=window.dialogArguments||opener||parent||top;a.text(setPostThumbnailL10n.setThumbnail);if(e=="0"){alert(setPostThumbnailL10n.error)}else{jQuery("a.wp-post-thumbnail").show();a.text(setPostThumbnailL10n.done);a.fadeOut(2000);d.WPSetThumbnailID(c);d.WPSetThumbnailHTML(e)}})};
\ No newline at end of file
+function WPSetAsThumbnail(id, nonce){
+       var $link = jQuery('a#wp-post-thumbnail-' + id);
+
+       $link.text( setPostThumbnailL10n.saving );
+       jQuery.post(ajaxurl, {
+               action:"set-post-thumbnail", post_id: post_id, thumbnail_id: id, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie)
+       }, function(str){
+               var win = window.dialogArguments || opener || parent || top;
+               $link.text( setPostThumbnailL10n.setThumbnail );
+               if ( str == '0' ) {
+                       alert( setPostThumbnailL10n.error );
+               } else {
+                       jQuery('a.wp-post-thumbnail').show();
+                       $link.text( setPostThumbnailL10n.done );
+                       $link.fadeOut( 2000 );
+                       win.WPSetThumbnailID(id);
+                       win.WPSetThumbnailHTML(str);
+               }
+       }
+       );
+}
diff --git a/wp-admin/js/set-post-thumbnail.min.js b/wp-admin/js/set-post-thumbnail.min.js
new file mode 100644 (file)
index 0000000..ffe08d8
--- /dev/null
@@ -0,0 +1 @@
+function WPSetAsThumbnail(c,b){var a=jQuery("a#wp-post-thumbnail-"+c);a.text(setPostThumbnailL10n.saving);jQuery.post(ajaxurl,{action:"set-post-thumbnail",post_id:post_id,thumbnail_id:c,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(e){var d=window.dialogArguments||opener||parent||top;a.text(setPostThumbnailL10n.setThumbnail);if(e=="0"){alert(setPostThumbnailL10n.error)}else{jQuery("a.wp-post-thumbnail").show();a.text(setPostThumbnailL10n.done);a.fadeOut(2000);d.WPSetThumbnailID(c);d.WPSetThumbnailHTML(e)}})};
\ No newline at end of file
diff --git a/wp-admin/js/tags.dev.js b/wp-admin/js/tags.dev.js
deleted file mode 100644 (file)
index e8ac151..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-jQuery(document).ready(function($) {
-
-       $('.delete-tag').live('click', function(e){
-               var t = $(this), tr = t.parents('tr'), r = true, data;
-               if ( 'undefined' != showNotice )
-                       r = showNotice.warn();
-               if ( r ) {
-                       data = t.attr('href').replace(/[^?]*\?/, '').replace(/action=delete/, 'action=delete-tag');
-                       $.post(ajaxurl, data, function(r){
-                               if ( '1' == r ) {
-                                       $('#ajax-response').empty();
-                                       tr.fadeOut('normal', function(){ tr.remove(); });
-                                       // Remove the term from the parent box and tag cloud
-                                       $('select#parent option[value="' + data.match(/tag_ID=(\d+)/)[1] + '"]').remove();
-                                       $('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove();
-                               } else if ( '-1' == r ) {
-                                       $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.noPerm + '</p></div>');
-                                       tr.children().css('backgroundColor', '');
-                               } else {
-                                       $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.broken + '</p></div>');
-                                       tr.children().css('backgroundColor', '');
-                               }
-                       });
-                       tr.children().css('backgroundColor', '#f33');
-               }
-               return false;
-       });
-
-       $('#submit').click(function(){
-               var form = $(this).parents('form');
-
-               if ( !validateForm( form ) )
-                       return false;
-
-               $.post(ajaxurl, $('#addtag').serialize(), function(r){
-                       $('#ajax-response').empty();
-                       var res = wpAjax.parseAjaxResponse(r, 'ajax-response');
-                       if ( ! res || res.errors )
-                               return;
-
-                       var parent = form.find('select#parent').val();
-
-                       if ( parent > 0 && $('#tag-' + parent ).length > 0 ) // If the parent exists on this page, insert it below. Else insert it at the top of the list.
-                               $('.tags #tag-' + parent).after( res.responses[0].supplemental['noparents'] ); // As the parent exists, Insert the version with - - - prefixed
-                       else
-                               $('.tags').prepend( res.responses[0].supplemental['parents'] ); // As the parent is not visible, Insert the version with Parent - Child - ThisTerm
-
-                       $('.tags .no-items').remove();
-
-                       if ( form.find('select#parent') ) {
-                               // Parents field exists, Add new term to the list.
-                               var term = res.responses[1].supplemental;
-
-                               // Create an indent for the Parent field
-                               var indent = '';
-                               for ( var i = 0; i < res.responses[1].position; i++ )
-                                       indent += '&nbsp;&nbsp;&nbsp;';
-
-                               form.find('select#parent option:selected').after('<option value="' + term['term_id'] + '">' + indent + term['name'] + '</option>');
-                       }
-
-                       $('input[type="text"]:visible, textarea:visible', form).val('');
-               });
-
-               return false;
-       });
-
-});
index b14c79ce2365480c253ae2c37f33fe581a5a071b..e8ac151a207cf25671dd1bd9e2c9f8d3dbf89eaa 100644 (file)
@@ -1 +1,68 @@
-jQuery(document).ready(function(a){a(".delete-tag").live("click",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f||f.errors){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
+jQuery(document).ready(function($) {
+
+       $('.delete-tag').live('click', function(e){
+               var t = $(this), tr = t.parents('tr'), r = true, data;
+               if ( 'undefined' != showNotice )
+                       r = showNotice.warn();
+               if ( r ) {
+                       data = t.attr('href').replace(/[^?]*\?/, '').replace(/action=delete/, 'action=delete-tag');
+                       $.post(ajaxurl, data, function(r){
+                               if ( '1' == r ) {
+                                       $('#ajax-response').empty();
+                                       tr.fadeOut('normal', function(){ tr.remove(); });
+                                       // Remove the term from the parent box and tag cloud
+                                       $('select#parent option[value="' + data.match(/tag_ID=(\d+)/)[1] + '"]').remove();
+                                       $('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove();
+                               } else if ( '-1' == r ) {
+                                       $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.noPerm + '</p></div>');
+                                       tr.children().css('backgroundColor', '');
+                               } else {
+                                       $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.broken + '</p></div>');
+                                       tr.children().css('backgroundColor', '');
+                               }
+                       });
+                       tr.children().css('backgroundColor', '#f33');
+               }
+               return false;
+       });
+
+       $('#submit').click(function(){
+               var form = $(this).parents('form');
+
+               if ( !validateForm( form ) )
+                       return false;
+
+               $.post(ajaxurl, $('#addtag').serialize(), function(r){
+                       $('#ajax-response').empty();
+                       var res = wpAjax.parseAjaxResponse(r, 'ajax-response');
+                       if ( ! res || res.errors )
+                               return;
+
+                       var parent = form.find('select#parent').val();
+
+                       if ( parent > 0 && $('#tag-' + parent ).length > 0 ) // If the parent exists on this page, insert it below. Else insert it at the top of the list.
+                               $('.tags #tag-' + parent).after( res.responses[0].supplemental['noparents'] ); // As the parent exists, Insert the version with - - - prefixed
+                       else
+                               $('.tags').prepend( res.responses[0].supplemental['parents'] ); // As the parent is not visible, Insert the version with Parent - Child - ThisTerm
+
+                       $('.tags .no-items').remove();
+
+                       if ( form.find('select#parent') ) {
+                               // Parents field exists, Add new term to the list.
+                               var term = res.responses[1].supplemental;
+
+                               // Create an indent for the Parent field
+                               var indent = '';
+                               for ( var i = 0; i < res.responses[1].position; i++ )
+                                       indent += '&nbsp;&nbsp;&nbsp;';
+
+                               form.find('select#parent option:selected').after('<option value="' + term['term_id'] + '">' + indent + term['name'] + '</option>');
+                       }
+
+                       $('input[type="text"]:visible, textarea:visible', form).val('');
+               });
+
+               return false;
+       });
+
+});
diff --git a/wp-admin/js/tags.min.js b/wp-admin/js/tags.min.js
new file mode 100644 (file)
index 0000000..b14c79c
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(a){a(".delete-tag").live("click",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f||f.errors){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
diff --git a/wp-admin/js/theme-preview.dev.js b/wp-admin/js/theme-preview.dev.js
deleted file mode 100644 (file)
index b7959c5..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-var thickDims, tbWidth, tbHeight;
-jQuery(document).ready(function($) {
-
-       thickDims = function() {
-               var tbWindow = $('#TB_window'), H = $(window).height(), W = $(window).width(), w, h;
-
-               w = (tbWidth && tbWidth < W - 90) ? tbWidth : W - 90;
-               h = (tbHeight && tbHeight < H - 60) ? tbHeight : H - 60;
-
-               if ( tbWindow.size() ) {
-                       tbWindow.width(w).height(h);
-                       $('#TB_iframeContent').width(w).height(h - 27);
-                       tbWindow.css({'margin-left': '-' + parseInt((w / 2),10) + 'px'});
-                       if ( typeof document.body.style.maxWidth != 'undefined' )
-                               tbWindow.css({'top':'30px','margin-top':'0'});
-               }
-       };
-
-       thickDims();
-       $(window).resize( function() { thickDims() } );
-
-       $('a.thickbox-preview').click( function() {
-               tb_click.call(this);
-
-               var alink = $(this).parents('.available-theme').find('.activatelink'), link = '', href = $(this).attr('href'), url, text;
-
-               if ( tbWidth = href.match(/&tbWidth=[0-9]+/) )
-                       tbWidth = parseInt(tbWidth[0].replace(/[^0-9]+/g, ''), 10);
-               else
-                       tbWidth = $(window).width() - 90;
-
-               if ( tbHeight = href.match(/&tbHeight=[0-9]+/) )
-                       tbHeight = parseInt(tbHeight[0].replace(/[^0-9]+/g, ''), 10);
-               else
-                       tbHeight = $(window).height() - 60;
-
-               if ( alink.length ) {
-                       url = alink.attr('href') || '';
-                       text = alink.attr('title') || '';
-                       link = '&nbsp; <a href="' + url + '" target="_top" class="tb-theme-preview-link">' + text + '</a>';
-               } else {
-                       text = $(this).attr('title') || '';
-                       link = '&nbsp; <span class="tb-theme-preview-link">' + text + '</span>';
-               }
-
-               $('#TB_title').css({'background-color':'#222','color':'#dfdfdf'});
-               $('#TB_closeAjaxWindow').css({'float':'left'});
-               $('#TB_ajaxWindowTitle').css({'float':'right'}).html(link);
-
-               $('#TB_iframeContent').width('100%');
-               thickDims();
-
-               return false;
-       } );
-});
index 78211901036984170c28fc6721f12f19ac45a377..b7959c501fb686b29f262145c45f203b1ec28677 100644 (file)
@@ -1 +1,56 @@
-var thickDims,tbWidth,tbHeight;jQuery(document).ready(function(a){thickDims=function(){var f=a("#TB_window"),d=a(window).height(),b=a(window).width(),c,e;c=(tbWidth&&tbWidth<b-90)?tbWidth:b-90;e=(tbHeight&&tbHeight<d-60)?tbHeight:d-60;if(f.size()){f.width(c).height(e);a("#TB_iframeContent").width(c).height(e-27);f.css({"margin-left":"-"+parseInt((c/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:"30px","margin-top":"0"})}}};thickDims();a(window).resize(function(){thickDims()});a("a.thickbox-preview").click(function(){tb_click.call(this);var d=a(this).parents(".available-theme").find(".activatelink"),e="",b=a(this).attr("href"),c,f;if(tbWidth=b.match(/&tbWidth=[0-9]+/)){tbWidth=parseInt(tbWidth[0].replace(/[^0-9]+/g,""),10)}else{tbWidth=a(window).width()-90}if(tbHeight=b.match(/&tbHeight=[0-9]+/)){tbHeight=parseInt(tbHeight[0].replace(/[^0-9]+/g,""),10)}else{tbHeight=a(window).height()-60}if(d.length){c=d.attr("href")||"";f=d.attr("title")||"";e='&nbsp; <a href="'+c+'" target="_top" class="tb-theme-preview-link">'+f+"</a>"}else{f=a(this).attr("title")||"";e='&nbsp; <span class="tb-theme-preview-link">'+f+"</span>"}a("#TB_title").css({"background-color":"#222",color:"#dfdfdf"});a("#TB_closeAjaxWindow").css({"float":"left"});a("#TB_ajaxWindowTitle").css({"float":"right"}).html(e);a("#TB_iframeContent").width("100%");thickDims();return false})});
\ No newline at end of file
+
+var thickDims, tbWidth, tbHeight;
+jQuery(document).ready(function($) {
+
+       thickDims = function() {
+               var tbWindow = $('#TB_window'), H = $(window).height(), W = $(window).width(), w, h;
+
+               w = (tbWidth && tbWidth < W - 90) ? tbWidth : W - 90;
+               h = (tbHeight && tbHeight < H - 60) ? tbHeight : H - 60;
+
+               if ( tbWindow.size() ) {
+                       tbWindow.width(w).height(h);
+                       $('#TB_iframeContent').width(w).height(h - 27);
+                       tbWindow.css({'margin-left': '-' + parseInt((w / 2),10) + 'px'});
+                       if ( typeof document.body.style.maxWidth != 'undefined' )
+                               tbWindow.css({'top':'30px','margin-top':'0'});
+               }
+       };
+
+       thickDims();
+       $(window).resize( function() { thickDims() } );
+
+       $('a.thickbox-preview').click( function() {
+               tb_click.call(this);
+
+               var alink = $(this).parents('.available-theme').find('.activatelink'), link = '', href = $(this).attr('href'), url, text;
+
+               if ( tbWidth = href.match(/&tbWidth=[0-9]+/) )
+                       tbWidth = parseInt(tbWidth[0].replace(/[^0-9]+/g, ''), 10);
+               else
+                       tbWidth = $(window).width() - 90;
+
+               if ( tbHeight = href.match(/&tbHeight=[0-9]+/) )
+                       tbHeight = parseInt(tbHeight[0].replace(/[^0-9]+/g, ''), 10);
+               else
+                       tbHeight = $(window).height() - 60;
+
+               if ( alink.length ) {
+                       url = alink.attr('href') || '';
+                       text = alink.attr('title') || '';
+                       link = '&nbsp; <a href="' + url + '" target="_top" class="tb-theme-preview-link">' + text + '</a>';
+               } else {
+                       text = $(this).attr('title') || '';
+                       link = '&nbsp; <span class="tb-theme-preview-link">' + text + '</span>';
+               }
+
+               $('#TB_title').css({'background-color':'#222','color':'#dfdfdf'});
+               $('#TB_closeAjaxWindow').css({'float':'left'});
+               $('#TB_ajaxWindowTitle').css({'float':'right'}).html(link);
+
+               $('#TB_iframeContent').width('100%');
+               thickDims();
+
+               return false;
+       } );
+});
diff --git a/wp-admin/js/theme-preview.min.js b/wp-admin/js/theme-preview.min.js
new file mode 100644 (file)
index 0000000..7821190
--- /dev/null
@@ -0,0 +1 @@
+var thickDims,tbWidth,tbHeight;jQuery(document).ready(function(a){thickDims=function(){var f=a("#TB_window"),d=a(window).height(),b=a(window).width(),c,e;c=(tbWidth&&tbWidth<b-90)?tbWidth:b-90;e=(tbHeight&&tbHeight<d-60)?tbHeight:d-60;if(f.size()){f.width(c).height(e);a("#TB_iframeContent").width(c).height(e-27);f.css({"margin-left":"-"+parseInt((c/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:"30px","margin-top":"0"})}}};thickDims();a(window).resize(function(){thickDims()});a("a.thickbox-preview").click(function(){tb_click.call(this);var d=a(this).parents(".available-theme").find(".activatelink"),e="",b=a(this).attr("href"),c,f;if(tbWidth=b.match(/&tbWidth=[0-9]+/)){tbWidth=parseInt(tbWidth[0].replace(/[^0-9]+/g,""),10)}else{tbWidth=a(window).width()-90}if(tbHeight=b.match(/&tbHeight=[0-9]+/)){tbHeight=parseInt(tbHeight[0].replace(/[^0-9]+/g,""),10)}else{tbHeight=a(window).height()-60}if(d.length){c=d.attr("href")||"";f=d.attr("title")||"";e='&nbsp; <a href="'+c+'" target="_top" class="tb-theme-preview-link">'+f+"</a>"}else{f=a(this).attr("title")||"";e='&nbsp; <span class="tb-theme-preview-link">'+f+"</span>"}a("#TB_title").css({"background-color":"#222",color:"#dfdfdf"});a("#TB_closeAjaxWindow").css({"float":"left"});a("#TB_ajaxWindowTitle").css({"float":"right"}).html(e);a("#TB_iframeContent").width("100%");thickDims();return false})});
\ No newline at end of file
diff --git a/wp-admin/js/theme.dev.js b/wp-admin/js/theme.dev.js
deleted file mode 100644 (file)
index ae779c6..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- * Theme Browsing
- *
- * Controls visibility of theme details on manage and install themes pages.
- */
-jQuery( function($) {
-       $('#availablethemes').on( 'click', '.theme-detail', function (event) {
-               var theme   = $(this).closest('.available-theme'),
-                       details = theme.find('.themedetaildiv');
-
-               if ( ! details.length ) {
-                       details = theme.find('.install-theme-info .theme-details');
-                       details = details.clone().addClass('themedetaildiv').appendTo( theme ).hide();
-               }
-
-               details.toggle();
-               event.preventDefault();
-       });
-});
-
-/**
- * Theme Install
- *
- * Displays theme previews on theme install pages.
- */
-jQuery( function($) {
-       if( ! window.postMessage )
-               return;
-
-       var preview = $('#theme-installer'),
-               info    = preview.find('.install-theme-info'),
-               panel   = preview.find('.wp-full-overlay-main'),
-               body    = $( document.body );
-
-       preview.on( 'click', '.close-full-overlay', function( event ) {
-               preview.fadeOut( 200, function() {
-                       panel.empty();
-                       body.removeClass('theme-installer-active full-overlay-active');
-               });
-               event.preventDefault();
-       });
-
-       preview.on( 'click', '.collapse-sidebar', function( event ) {
-               preview.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
-               event.preventDefault();
-       });
-
-       $('#availablethemes').on( 'click', '.install-theme-preview', function( event ) {
-               var src;
-
-               info.html( $(this).closest('.installable-theme').find('.install-theme-info').html() );
-               src = info.find( '.theme-preview-url' ).val();
-               panel.html( '<iframe src="' + src + '" />');
-               preview.fadeIn( 200, function() {
-                       body.addClass('theme-installer-active full-overlay-active');
-               });
-               event.preventDefault();
-       });
-});
-
-var ThemeViewer;
-
-(function($){
-       ThemeViewer = function( args ) {
-
-               function init() {
-                       $( '#filter-click, #mini-filter-click' ).unbind( 'click' ).click( function() {
-                               $( '#filter-click' ).toggleClass( 'current' );
-                               $( '#filter-box' ).slideToggle();
-                               $( '#current-theme' ).slideToggle( 300 );
-                               return false;
-                       });
-
-                       $( '#filter-box :checkbox' ).unbind( 'click' ).click( function() {
-                               var count = $( '#filter-box :checked' ).length,
-                                       text  = $( '#filter-click' ).text();
-
-                               if ( text.indexOf( '(' ) != -1 )
-                                       text = text.substr( 0, text.indexOf( '(' ) );
-
-                               if ( count == 0 )
-                                       $( '#filter-click' ).text( text );
-                               else
-                                       $( '#filter-click' ).text( text + ' (' + count + ')' );
-                       });
-
-                       /* $('#filter-box :submit').unbind( 'click' ).click(function() {
-                               var features = [];
-                               $('#filter-box :checked').each(function() {
-                                       features.push($(this).val());
-                               });
-
-                               listTable.update_rows({'features': features}, true, function() {
-                                       $( '#filter-click' ).toggleClass( 'current' );
-                                       $( '#filter-box' ).slideToggle();
-                                       $( '#current-theme' ).slideToggle( 300 );
-                               });
-
-                               return false;
-                       }); */
-               }
-
-               // These are the functions we expose
-               var api = {
-                       init: init
-               };
-
-       return api;
-       }
-})(jQuery);
-
-jQuery( document ).ready( function($) {
-       theme_viewer = new ThemeViewer();
-       theme_viewer.init();
-});
-
-
-/**
- * Class that provides infinite scroll for Themes admin screens
- *
- * @since 3.4
- *
- * @uses ajaxurl
- * @uses list_args
- * @uses theme_list_args
- * @uses $('#_ajax_fetch_list_nonce').val()
-* */
-var ThemeScroller;
-(function($){
-       ThemeScroller = {
-               querying: false,
-               scrollPollingDelay: 500,
-               failedRetryDelay: 4000,
-               outListBottomThreshold: 300,
-
-               /**
-                * Initializer
-                *
-                * @since 3.4
-                * @access private
-                */
-               init: function() {
-                       var self = this;
-
-                       // Get out early if we don't have the required arguments.
-                       if ( typeof ajaxurl === 'undefined' ||
-                                typeof list_args === 'undefined' ||
-                                typeof theme_list_args === 'undefined' ) {
-                                       $('.pagination-links').show();
-                                       return;
-                       }
-
-                       // Handle inputs
-                       this.nonce = $('#_ajax_fetch_list_nonce').val();
-                       this.nextPage = ( theme_list_args.paged + 1 );
-
-                       // Cache jQuery selectors
-                       this.$outList = $('#availablethemes');
-                       this.$spinner = $('div.tablenav.bottom').children( 'img.ajax-loading' );
-                       this.$window = $(window);
-                       this.$document = $(document);
-
-                       /**
-                        * If there are more pages to query, then start polling to track
-                        * when user hits the bottom of the current page
-                        */
-                       if ( theme_list_args.total_pages >= this.nextPage )
-                               this.pollInterval =
-                                       setInterval( function() {
-                                               return self.poll();
-                                       }, this.scrollPollingDelay );
-               },
-
-               /**
-                * Checks to see if user has scrolled to bottom of page.
-                * If so, requests another page of content from self.ajax().
-                *
-                * @since 3.4
-                * @access private
-                */
-               poll: function() {
-                       var bottom = this.$document.scrollTop() + this.$window.innerHeight();
-
-                       if ( this.querying ||
-                               ( bottom < this.$outList.height() - this.outListBottomThreshold ) )
-                               return;
-
-                       this.ajax();
-               },
-
-               /**
-                * Applies results passed from this.ajax() to $outList
-                *
-                * @since 3.4
-                * @access private
-                *
-                * @param results Array with results from this.ajax() query.
-                */
-               process: function( results ) {
-                       if ( results === undefined ) {
-                               clearInterval( this.pollInterval );
-                               return;
-                       }
-
-                       if ( this.nextPage > theme_list_args.total_pages )
-                               clearInterval( this.pollInterval );
-
-                       if ( this.nextPage <= ( theme_list_args.total_pages + 1 ) )
-                               this.$outList.append( results.rows );
-               },
-
-               /**
-                * Queries next page of themes
-                *
-                * @since 3.4
-                * @access private
-                */
-               ajax: function() {
-                       var self = this;
-
-                       this.querying = true;
-
-                       var query = {
-                               action: 'fetch-list',
-                               paged: this.nextPage,
-                               s: theme_list_args.search,
-                               tab: theme_list_args.tab,
-                               type: theme_list_args.type,
-                               _ajax_fetch_list_nonce: this.nonce,
-                               'features[]': theme_list_args.features,
-                               'list_args': list_args
-                       };
-
-                       this.$spinner.css( 'visibility', 'visible' );
-                       $.getJSON( ajaxurl, query )
-                               .done( function( response ) {
-                                       self.nextPage++;
-                                       self.process( response );
-                                       self.$spinner.css( 'visibility', 'hidden' );
-                                       self.querying = false;
-                               })
-                               .fail( function() {
-                                       self.$spinner.css( 'visibility', 'hidden' );
-                                       self.querying = false;
-                                       setTimeout( function() { self.ajax(); }, self.failedRetryDelay );
-                               });
-               }
-       }
-
-       $(document).ready( function($) {
-               ThemeScroller.init();
-       });
-
-})(jQuery);
index fcfd80904398d83fcce392ed7ffdda951e224a70..079c73b5e419614e7d9403849468ee8e4ad1c06b 100644 (file)
@@ -1 +1,254 @@
-jQuery(function(a){a("#availablethemes").on("click",".theme-detail",function(c){var d=a(this).closest(".available-theme"),b=d.find(".themedetaildiv");if(!b.length){b=d.find(".install-theme-info .theme-details");b=b.clone().addClass("themedetaildiv").appendTo(d).hide()}b.toggle();c.preventDefault()})});jQuery(function(c){if(!window.postMessage){return}var e=c("#theme-installer"),d=e.find(".install-theme-info"),b=e.find(".wp-full-overlay-main"),a=c(document.body);e.on("click",".close-full-overlay",function(f){e.fadeOut(200,function(){b.empty();a.removeClass("theme-installer-active full-overlay-active")});f.preventDefault()});e.on("click",".collapse-sidebar",function(f){e.toggleClass("collapsed").toggleClass("expanded");f.preventDefault()});c("#availablethemes").on("click",".install-theme-preview",function(f){var g;d.html(c(this).closest(".installable-theme").find(".install-theme-info").html());g=d.find(".theme-preview-url").val();b.html('<iframe src="'+g+'" />');e.fadeIn(200,function(){a.addClass("theme-installer-active full-overlay-active")});f.preventDefault()})});var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});var ThemeScroller;(function(a){ThemeScroller={querying:false,scrollPollingDelay:500,failedRetryDelay:4000,outListBottomThreshold:300,init:function(){var b=this;if(typeof ajaxurl==="undefined"||typeof list_args==="undefined"||typeof theme_list_args==="undefined"){a(".pagination-links").show();return}this.nonce=a("#_ajax_fetch_list_nonce").val();this.nextPage=(theme_list_args.paged+1);this.$outList=a("#availablethemes");this.$spinner=a("div.tablenav.bottom").children("img.ajax-loading");this.$window=a(window);this.$document=a(document);if(theme_list_args.total_pages>=this.nextPage){this.pollInterval=setInterval(function(){return b.poll()},this.scrollPollingDelay)}},poll:function(){var b=this.$document.scrollTop()+this.$window.innerHeight();if(this.querying||(b<this.$outList.height()-this.outListBottomThreshold)){return}this.ajax()},process:function(b){if(b===undefined){clearInterval(this.pollInterval);return}if(this.nextPage>theme_list_args.total_pages){clearInterval(this.pollInterval)}if(this.nextPage<=(theme_list_args.total_pages+1)){this.$outList.append(b.rows)}},ajax:function(){var b=this;this.querying=true;var c={action:"fetch-list",paged:this.nextPage,s:theme_list_args.search,tab:theme_list_args.tab,type:theme_list_args.type,_ajax_fetch_list_nonce:this.nonce,"features[]":theme_list_args.features,list_args:list_args};this.$spinner.css("visibility","visible");a.getJSON(ajaxurl,c).done(function(d){b.nextPage++;b.process(d);b.$spinner.css("visibility","hidden");b.querying=false}).fail(function(){b.$spinner.css("visibility","hidden");b.querying=false;setTimeout(function(){b.ajax()},b.failedRetryDelay)})}};a(document).ready(function(b){ThemeScroller.init()})})(jQuery);
\ No newline at end of file
+/**
+ * Theme Browsing
+ *
+ * Controls visibility of theme details on manage and install themes pages.
+ */
+jQuery( function($) {
+       $('#availablethemes').on( 'click', '.theme-detail', function (event) {
+               var theme   = $(this).closest('.available-theme'),
+                       details = theme.find('.themedetaildiv');
+
+               if ( ! details.length ) {
+                       details = theme.find('.install-theme-info .theme-details');
+                       details = details.clone().addClass('themedetaildiv').appendTo( theme ).hide();
+               }
+
+               details.toggle();
+               event.preventDefault();
+       });
+});
+
+/**
+ * Theme Install
+ *
+ * Displays theme previews on theme install pages.
+ */
+jQuery( function($) {
+       if( ! window.postMessage )
+               return;
+
+       var preview = $('#theme-installer'),
+               info    = preview.find('.install-theme-info'),
+               panel   = preview.find('.wp-full-overlay-main'),
+               body    = $( document.body );
+
+       preview.on( 'click', '.close-full-overlay', function( event ) {
+               preview.fadeOut( 200, function() {
+                       panel.empty();
+                       body.removeClass('theme-installer-active full-overlay-active');
+               });
+               event.preventDefault();
+       });
+
+       preview.on( 'click', '.collapse-sidebar', function( event ) {
+               preview.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
+               event.preventDefault();
+       });
+
+       $('#availablethemes').on( 'click', '.install-theme-preview', function( event ) {
+               var src;
+
+               info.html( $(this).closest('.installable-theme').find('.install-theme-info').html() );
+               src = info.find( '.theme-preview-url' ).val();
+               panel.html( '<iframe src="' + src + '" />');
+               preview.fadeIn( 200, function() {
+                       body.addClass('theme-installer-active full-overlay-active');
+               });
+               event.preventDefault();
+       });
+});
+
+var ThemeViewer;
+
+(function($){
+       ThemeViewer = function( args ) {
+
+               function init() {
+                       $( '#filter-click, #mini-filter-click' ).unbind( 'click' ).click( function() {
+                               $( '#filter-click' ).toggleClass( 'current' );
+                               $( '#filter-box' ).slideToggle();
+                               $( '#current-theme' ).slideToggle( 300 );
+                               return false;
+                       });
+
+                       $( '#filter-box :checkbox' ).unbind( 'click' ).click( function() {
+                               var count = $( '#filter-box :checked' ).length,
+                                       text  = $( '#filter-click' ).text();
+
+                               if ( text.indexOf( '(' ) != -1 )
+                                       text = text.substr( 0, text.indexOf( '(' ) );
+
+                               if ( count == 0 )
+                                       $( '#filter-click' ).text( text );
+                               else
+                                       $( '#filter-click' ).text( text + ' (' + count + ')' );
+                       });
+
+                       /* $('#filter-box :submit').unbind( 'click' ).click(function() {
+                               var features = [];
+                               $('#filter-box :checked').each(function() {
+                                       features.push($(this).val());
+                               });
+
+                               listTable.update_rows({'features': features}, true, function() {
+                                       $( '#filter-click' ).toggleClass( 'current' );
+                                       $( '#filter-box' ).slideToggle();
+                                       $( '#current-theme' ).slideToggle( 300 );
+                               });
+
+                               return false;
+                       }); */
+               }
+
+               // These are the functions we expose
+               var api = {
+                       init: init
+               };
+
+       return api;
+       }
+})(jQuery);
+
+jQuery( document ).ready( function($) {
+       theme_viewer = new ThemeViewer();
+       theme_viewer.init();
+});
+
+
+/**
+ * Class that provides infinite scroll for Themes admin screens
+ *
+ * @since 3.4
+ *
+ * @uses ajaxurl
+ * @uses list_args
+ * @uses theme_list_args
+ * @uses $('#_ajax_fetch_list_nonce').val()
+* */
+var ThemeScroller;
+(function($){
+       ThemeScroller = {
+               querying: false,
+               scrollPollingDelay: 500,
+               failedRetryDelay: 4000,
+               outListBottomThreshold: 300,
+
+               /**
+                * Initializer
+                *
+                * @since 3.4
+                * @access private
+                */
+               init: function() {
+                       var self = this;
+
+                       // Get out early if we don't have the required arguments.
+                       if ( typeof ajaxurl === 'undefined' ||
+                                typeof list_args === 'undefined' ||
+                                typeof theme_list_args === 'undefined' ) {
+                                       $('.pagination-links').show();
+                                       return;
+                       }
+
+                       // Handle inputs
+                       this.nonce = $('#_ajax_fetch_list_nonce').val();
+                       this.nextPage = ( theme_list_args.paged + 1 );
+
+                       // Cache jQuery selectors
+                       this.$outList = $('#availablethemes');
+                       this.$spinner = $('div.tablenav.bottom').children( '.spinner' );
+                       this.$window = $(window);
+                       this.$document = $(document);
+
+                       /**
+                        * If there are more pages to query, then start polling to track
+                        * when user hits the bottom of the current page
+                        */
+                       if ( theme_list_args.total_pages >= this.nextPage )
+                               this.pollInterval =
+                                       setInterval( function() {
+                                               return self.poll();
+                                       }, this.scrollPollingDelay );
+               },
+
+               /**
+                * Checks to see if user has scrolled to bottom of page.
+                * If so, requests another page of content from self.ajax().
+                *
+                * @since 3.4
+                * @access private
+                */
+               poll: function() {
+                       var bottom = this.$document.scrollTop() + this.$window.innerHeight();
+
+                       if ( this.querying ||
+                               ( bottom < this.$outList.height() - this.outListBottomThreshold ) )
+                               return;
+
+                       this.ajax();
+               },
+
+               /**
+                * Applies results passed from this.ajax() to $outList
+                *
+                * @since 3.4
+                * @access private
+                *
+                * @param results Array with results from this.ajax() query.
+                */
+               process: function( results ) {
+                       if ( results === undefined ) {
+                               clearInterval( this.pollInterval );
+                               return;
+                       }
+
+                       if ( this.nextPage > theme_list_args.total_pages )
+                               clearInterval( this.pollInterval );
+
+                       if ( this.nextPage <= ( theme_list_args.total_pages + 1 ) )
+                               this.$outList.append( results.rows );
+               },
+
+               /**
+                * Queries next page of themes
+                *
+                * @since 3.4
+                * @access private
+                */
+               ajax: function() {
+                       var self = this;
+
+                       this.querying = true;
+
+                       var query = {
+                               action: 'fetch-list',
+                               paged: this.nextPage,
+                               s: theme_list_args.search,
+                               tab: theme_list_args.tab,
+                               type: theme_list_args.type,
+                               _ajax_fetch_list_nonce: this.nonce,
+                               'features[]': theme_list_args.features,
+                               'list_args': list_args
+                       };
+
+                       this.$spinner.show();
+                       $.getJSON( ajaxurl, query )
+                               .done( function( response ) {
+                                       self.nextPage++;
+                                       self.process( response );
+                                       self.$spinner.hide();
+                                       self.querying = false;
+                               })
+                               .fail( function() {
+                                       self.$spinner.hide();
+                                       self.querying = false;
+                                       setTimeout( function() { self.ajax(); }, self.failedRetryDelay );
+                               });
+               }
+       }
+
+       $(document).ready( function($) {
+               ThemeScroller.init();
+       });
+
+})(jQuery);
diff --git a/wp-admin/js/theme.min.js b/wp-admin/js/theme.min.js
new file mode 100644 (file)
index 0000000..a67f9ba
--- /dev/null
@@ -0,0 +1 @@
+jQuery(function(a){a("#availablethemes").on("click",".theme-detail",function(c){var d=a(this).closest(".available-theme"),b=d.find(".themedetaildiv");if(!b.length){b=d.find(".install-theme-info .theme-details");b=b.clone().addClass("themedetaildiv").appendTo(d).hide()}b.toggle();c.preventDefault()})});jQuery(function(c){if(!window.postMessage){return}var e=c("#theme-installer"),d=e.find(".install-theme-info"),b=e.find(".wp-full-overlay-main"),a=c(document.body);e.on("click",".close-full-overlay",function(f){e.fadeOut(200,function(){b.empty();a.removeClass("theme-installer-active full-overlay-active")});f.preventDefault()});e.on("click",".collapse-sidebar",function(f){e.toggleClass("collapsed").toggleClass("expanded");f.preventDefault()});c("#availablethemes").on("click",".install-theme-preview",function(f){var g;d.html(c(this).closest(".installable-theme").find(".install-theme-info").html());g=d.find(".theme-preview-url").val();b.html('<iframe src="'+g+'" />');e.fadeIn(200,function(){a.addClass("theme-installer-active full-overlay-active")});f.preventDefault()})});var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});var ThemeScroller;(function(a){ThemeScroller={querying:false,scrollPollingDelay:500,failedRetryDelay:4000,outListBottomThreshold:300,init:function(){var b=this;if(typeof ajaxurl==="undefined"||typeof list_args==="undefined"||typeof theme_list_args==="undefined"){a(".pagination-links").show();return}this.nonce=a("#_ajax_fetch_list_nonce").val();this.nextPage=(theme_list_args.paged+1);this.$outList=a("#availablethemes");this.$spinner=a("div.tablenav.bottom").children(".spinner");this.$window=a(window);this.$document=a(document);if(theme_list_args.total_pages>=this.nextPage){this.pollInterval=setInterval(function(){return b.poll()},this.scrollPollingDelay)}},poll:function(){var b=this.$document.scrollTop()+this.$window.innerHeight();if(this.querying||(b<this.$outList.height()-this.outListBottomThreshold)){return}this.ajax()},process:function(b){if(b===undefined){clearInterval(this.pollInterval);return}if(this.nextPage>theme_list_args.total_pages){clearInterval(this.pollInterval)}if(this.nextPage<=(theme_list_args.total_pages+1)){this.$outList.append(b.rows)}},ajax:function(){var b=this;this.querying=true;var c={action:"fetch-list",paged:this.nextPage,s:theme_list_args.search,tab:theme_list_args.tab,type:theme_list_args.type,_ajax_fetch_list_nonce:this.nonce,"features[]":theme_list_args.features,list_args:list_args};this.$spinner.show();a.getJSON(ajaxurl,c).done(function(d){b.nextPage++;b.process(d);b.$spinner.hide();b.querying=false}).fail(function(){b.$spinner.hide();b.querying=false;setTimeout(function(){b.ajax()},b.failedRetryDelay)})}};a(document).ready(function(b){ThemeScroller.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/user-profile.dev.js b/wp-admin/js/user-profile.dev.js
deleted file mode 100644 (file)
index bd48855..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-(function($){
-
-       function check_pass_strength() {
-               var pass1 = $('#pass1').val(), user = $('#user_login').val(), pass2 = $('#pass2').val(), strength;
-
-               $('#pass-strength-result').removeClass('short bad good strong');
-               if ( ! pass1 ) {
-                       $('#pass-strength-result').html( pwsL10n.empty );
-                       return;
-               }
-
-               strength = passwordStrength(pass1, user, pass2);
-
-               switch ( strength ) {
-                       case 2:
-                               $('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] );
-                               break;
-                       case 3:
-                               $('#pass-strength-result').addClass('good').html( pwsL10n['good'] );
-                               break;
-                       case 4:
-                               $('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] );
-                               break;
-                       case 5:
-                               $('#pass-strength-result').addClass('short').html( pwsL10n['mismatch'] );
-                               break;
-                       default:
-                               $('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
-               }
-       }
-
-       $(document).ready( function() {
-               var select = $('#display_name');
-
-               $('#pass1').val('').keyup( check_pass_strength );
-               $('#pass2').val('').keyup( check_pass_strength );
-               $('#pass-strength-result').show();
-               $('.color-palette').click( function() {
-                       $(this).siblings('input[name="admin_color"]').prop('checked', true);
-               });
-
-               if ( select.length ) {
-                       $('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() {
-                               var dub = [],
-                                       inputs = {
-                                               display_nickname  : $('#nickname').val() || '',
-                                               display_username  : $('#user_login').val() || '',
-                                               display_firstname : $('#first_name').val() || '',
-                                               display_lastname  : $('#last_name').val() || ''
-                                       };
-
-                               if ( inputs.display_firstname && inputs.display_lastname ) {
-                                       inputs['display_firstlast'] = inputs.display_firstname + ' ' + inputs.display_lastname;
-                                       inputs['display_lastfirst'] = inputs.display_lastname + ' ' + inputs.display_firstname;
-                               }
-
-                               $.each( $('option', select), function( i, el ){
-                                       dub.push( el.value );
-                               });
-
-                               $.each(inputs, function( id, value ) {
-                                       if ( ! value )
-                                               return;
-
-                                       var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
-
-                                       if ( inputs[id].length && $.inArray( val, dub ) == -1 ) {
-                                               dub.push(val);
-                                               $('<option />', {
-                                                       'text': val
-                                               }).appendTo( select );
-                                       }
-                               });
-                       });
-               }
-       });
-
-})(jQuery);
index 9ae96482d25175133acf372abe72712a3f8fabd3..bd4885525015a85ce259dd1215de50a3527b4270 100644 (file)
@@ -1 +1,78 @@
-(function(a){function b(){var e=a("#pass1").val(),d=a("#user_login").val(),c=a("#pass2").val(),f;a("#pass-strength-result").removeClass("short bad good strong");if(!e){a("#pass-strength-result").html(pwsL10n.empty);return}f=passwordStrength(e,d,c);switch(f){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}a(document).ready(function(){var c=a("#display_name");a("#pass1").val("").keyup(b);a("#pass2").val("").keyup(b);a("#pass-strength-result").show();a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",true)});if(c.length){a("#first_name, #last_name, #nickname").bind("blur.user_profile",function(){var e=[],d={display_nickname:a("#nickname").val()||"",display_username:a("#user_login").val()||"",display_firstname:a("#first_name").val()||"",display_lastname:a("#last_name").val()||""};if(d.display_firstname&&d.display_lastname){d.display_firstlast=d.display_firstname+" "+d.display_lastname;d.display_lastfirst=d.display_lastname+" "+d.display_firstname}a.each(a("option",c),function(f,g){e.push(g.value)});a.each(d,function(h,f){if(!f){return}var g=f.replace(/<\/?[a-z][^>]*>/gi,"");if(d[h].length&&a.inArray(g,e)==-1){e.push(g);a("<option />",{text:g}).appendTo(c)}})})}})})(jQuery);
\ No newline at end of file
+(function($){
+
+       function check_pass_strength() {
+               var pass1 = $('#pass1').val(), user = $('#user_login').val(), pass2 = $('#pass2').val(), strength;
+
+               $('#pass-strength-result').removeClass('short bad good strong');
+               if ( ! pass1 ) {
+                       $('#pass-strength-result').html( pwsL10n.empty );
+                       return;
+               }
+
+               strength = passwordStrength(pass1, user, pass2);
+
+               switch ( strength ) {
+                       case 2:
+                               $('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] );
+                               break;
+                       case 3:
+                               $('#pass-strength-result').addClass('good').html( pwsL10n['good'] );
+                               break;
+                       case 4:
+                               $('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] );
+                               break;
+                       case 5:
+                               $('#pass-strength-result').addClass('short').html( pwsL10n['mismatch'] );
+                               break;
+                       default:
+                               $('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
+               }
+       }
+
+       $(document).ready( function() {
+               var select = $('#display_name');
+
+               $('#pass1').val('').keyup( check_pass_strength );
+               $('#pass2').val('').keyup( check_pass_strength );
+               $('#pass-strength-result').show();
+               $('.color-palette').click( function() {
+                       $(this).siblings('input[name="admin_color"]').prop('checked', true);
+               });
+
+               if ( select.length ) {
+                       $('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() {
+                               var dub = [],
+                                       inputs = {
+                                               display_nickname  : $('#nickname').val() || '',
+                                               display_username  : $('#user_login').val() || '',
+                                               display_firstname : $('#first_name').val() || '',
+                                               display_lastname  : $('#last_name').val() || ''
+                                       };
+
+                               if ( inputs.display_firstname && inputs.display_lastname ) {
+                                       inputs['display_firstlast'] = inputs.display_firstname + ' ' + inputs.display_lastname;
+                                       inputs['display_lastfirst'] = inputs.display_lastname + ' ' + inputs.display_firstname;
+                               }
+
+                               $.each( $('option', select), function( i, el ){
+                                       dub.push( el.value );
+                               });
+
+                               $.each(inputs, function( id, value ) {
+                                       if ( ! value )
+                                               return;
+
+                                       var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
+
+                                       if ( inputs[id].length && $.inArray( val, dub ) == -1 ) {
+                                               dub.push(val);
+                                               $('<option />', {
+                                                       'text': val
+                                               }).appendTo( select );
+                                       }
+                               });
+                       });
+               }
+       });
+
+})(jQuery);
diff --git a/wp-admin/js/user-profile.min.js b/wp-admin/js/user-profile.min.js
new file mode 100644 (file)
index 0000000..9ae9648
--- /dev/null
@@ -0,0 +1 @@
+(function(a){function b(){var e=a("#pass1").val(),d=a("#user_login").val(),c=a("#pass2").val(),f;a("#pass-strength-result").removeClass("short bad good strong");if(!e){a("#pass-strength-result").html(pwsL10n.empty);return}f=passwordStrength(e,d,c);switch(f){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}a(document).ready(function(){var c=a("#display_name");a("#pass1").val("").keyup(b);a("#pass2").val("").keyup(b);a("#pass-strength-result").show();a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",true)});if(c.length){a("#first_name, #last_name, #nickname").bind("blur.user_profile",function(){var e=[],d={display_nickname:a("#nickname").val()||"",display_username:a("#user_login").val()||"",display_firstname:a("#first_name").val()||"",display_lastname:a("#last_name").val()||""};if(d.display_firstname&&d.display_lastname){d.display_firstlast=d.display_firstname+" "+d.display_lastname;d.display_lastfirst=d.display_lastname+" "+d.display_firstname}a.each(a("option",c),function(f,g){e.push(g.value)});a.each(d,function(h,f){if(!f){return}var g=f.replace(/<\/?[a-z][^>]*>/gi,"");if(d[h].length&&a.inArray(g,e)==-1){e.push(g);a("<option />",{text:g}).appendTo(c)}})})}})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/user-suggest.dev.js b/wp-admin/js/user-suggest.dev.js
deleted file mode 100644 (file)
index 0bcfada..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-(function($) {
-       var id = 'undefined' !== typeof current_site_id ? '&site_id=' + current_site_id : '';
-       $(document).ready( function() {
-               $( '.wp-suggest-user' ).autocomplete({
-                       source:    ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
-                       delay:     500,
-                       minLength: 2,
-                       position:  ( 'undefined' !== typeof isRtl && isRtl ) ? { my: 'right top', at: 'right bottom', offset: '0, -1' } : { offset: '0, -1' },
-                       open:      function() { $(this).addClass('open'); },
-                       close:     function() { $(this).removeClass('open'); }
-               });
-       });
-})(jQuery);
\ No newline at end of file
index 5f17b528d1b94f28fceed34cc723693ee3f65888..0bcfada4ba0ea30ab8a5bb39ae70e01ee34d5b37 100644 (file)
@@ -1 +1,13 @@
-(function(a){var b="undefined"!==typeof current_site_id?"&site_id="+current_site_id:"";a(document).ready(function(){a(".wp-suggest-user").autocomplete({source:ajaxurl+"?action=autocomplete-user&autocomplete_type=add"+b,delay:500,minLength:2,position:("undefined"!==typeof isRtl&&isRtl)?{my:"right top",at:"right bottom",offset:"0, -1"}:{offset:"0, -1"},open:function(){a(this).addClass("open")},close:function(){a(this).removeClass("open")}})})})(jQuery);
\ No newline at end of file
+(function($) {
+       var id = 'undefined' !== typeof current_site_id ? '&site_id=' + current_site_id : '';
+       $(document).ready( function() {
+               $( '.wp-suggest-user' ).autocomplete({
+                       source:    ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
+                       delay:     500,
+                       minLength: 2,
+                       position:  ( 'undefined' !== typeof isRtl && isRtl ) ? { my: 'right top', at: 'right bottom', offset: '0, -1' } : { offset: '0, -1' },
+                       open:      function() { $(this).addClass('open'); },
+                       close:     function() { $(this).removeClass('open'); }
+               });
+       });
+})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/user-suggest.min.js b/wp-admin/js/user-suggest.min.js
new file mode 100644 (file)
index 0000000..5f17b52
--- /dev/null
@@ -0,0 +1 @@
+(function(a){var b="undefined"!==typeof current_site_id?"&site_id="+current_site_id:"";a(document).ready(function(){a(".wp-suggest-user").autocomplete({source:ajaxurl+"?action=autocomplete-user&autocomplete_type=add"+b,delay:500,minLength:2,position:("undefined"!==typeof isRtl&&isRtl)?{my:"right top",at:"right bottom",offset:"0, -1"}:{offset:"0, -1"},open:function(){a(this).addClass("open")},close:function(){a(this).removeClass("open")}})})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/widgets.dev.js b/wp-admin/js/widgets.dev.js
deleted file mode 100644 (file)
index 8e3a05d..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-var wpWidgets;
-(function($) {
-
-wpWidgets = {
-
-       init : function() {
-               var rem, sidebars = $('div.widgets-sortables'), isRTL = !! ( 'undefined' != typeof isRtl && isRtl ),
-                       margin = ( isRtl ? 'marginRight' : 'marginLeft' ), the_id;
-
-               $('#widgets-right').children('.widgets-holder-wrap').children('.sidebar-name').click(function(){
-                       var c = $(this).siblings('.widgets-sortables'), p = $(this).parent();
-                       if ( !p.hasClass('closed') ) {
-                               c.sortable('disable');
-                               p.addClass('closed');
-                       } else {
-                               p.removeClass('closed');
-                               c.sortable('enable').sortable('refresh');
-                       }
-               });
-
-               $('#widgets-left').children('.widgets-holder-wrap').children('.sidebar-name').click(function() {
-                       $(this).parent().toggleClass('closed');
-               });
-
-               sidebars.each(function(){
-                       if ( $(this).parent().hasClass('inactive') )
-                               return true;
-
-                       var h = 50, H = $(this).children('.widget').length;
-                       h = h + parseInt(H * 48, 10);
-                       $(this).css( 'minHeight', h + 'px' );
-               });
-
-               $('a.widget-action').live('click', function(){
-                       var css = {}, widget = $(this).closest('div.widget'), inside = widget.children('.widget-inside'), w = parseInt( widget.find('input.widget-width').val(), 10 );
-
-                       if ( inside.is(':hidden') ) {
-                               if ( w > 250 && inside.closest('div.widgets-sortables').length ) {
-                                       css['width'] = w + 30 + 'px';
-                                       if ( inside.closest('div.widget-liquid-right').length )
-                                               css[margin] = 235 - w + 'px';
-                                       widget.css(css);
-                               }
-                               wpWidgets.fixLabels(widget);
-                               inside.slideDown('fast');
-                       } else {
-                               inside.slideUp('fast', function() {
-                                       widget.css({'width':'', margin:''});
-                               });
-                       }
-                       return false;
-               });
-
-               $('input.widget-control-save').live('click', function(){
-                       wpWidgets.save( $(this).closest('div.widget'), 0, 1, 0 );
-                       return false;
-               });
-
-               $('a.widget-control-remove').live('click', function(){
-                       wpWidgets.save( $(this).closest('div.widget'), 1, 1, 0 );
-                       return false;
-               });
-
-               $('a.widget-control-close').live('click', function(){
-                       wpWidgets.close( $(this).closest('div.widget') );
-                       return false;
-               });
-
-               sidebars.children('.widget').each(function() {
-                       wpWidgets.appendTitle(this);
-                       if ( $('p.widget-error', this).length )
-                               $('a.widget-action', this).click();
-               });
-
-               $('#widget-list').children('.widget').draggable({
-                       connectToSortable: 'div.widgets-sortables',
-                       handle: '> .widget-top > .widget-title',
-                       distance: 2,
-                       helper: 'clone',
-                       zIndex: 5,
-                       containment: 'document',
-                       start: function(e,ui) {
-                               ui.helper.find('div.widget-description').hide();
-                               the_id = this.id;
-                       },
-                       stop: function(e,ui) {
-                               if ( rem )
-                                       $(rem).hide();
-
-                               rem = '';
-                       }
-               });
-
-               sidebars.sortable({
-                       placeholder: 'widget-placeholder',
-                       items: '> .widget',
-                       handle: '> .widget-top > .widget-title',
-                       cursor: 'move',
-                       distance: 2,
-                       containment: 'document',
-                       start: function(e,ui) {
-                               ui.item.children('.widget-inside').hide();
-                               ui.item.css({margin:'', 'width':''});
-                       },
-                       stop: function(e,ui) {
-                               if ( ui.item.hasClass('ui-draggable') && ui.item.data('draggable') )
-                                       ui.item.draggable('destroy');
-
-                               if ( ui.item.hasClass('deleting') ) {
-                                       wpWidgets.save( ui.item, 1, 0, 1 ); // delete widget
-                                       ui.item.remove();
-                                       return;
-                               }
-
-                               var add = ui.item.find('input.add_new').val(),
-                                       n = ui.item.find('input.multi_number').val(),
-                                       id = the_id,
-                                       sb = $(this).attr('id');
-
-                               ui.item.css({margin:'', 'width':''});
-                               the_id = '';
-
-                               if ( add ) {
-                                       if ( 'multi' == add ) {
-                                               ui.item.html( ui.item.html().replace(/<[^<>]+>/g, function(m){ return m.replace(/__i__|%i%/g, n); }) );
-                                               ui.item.attr( 'id', id.replace('__i__', n) );
-                                               n++;
-                                               $('div#' + id).find('input.multi_number').val(n);
-                                       } else if ( 'single' == add ) {
-                                               ui.item.attr( 'id', 'new-' + id );
-                                               rem = 'div#' + id;
-                                       }
-                                       wpWidgets.save( ui.item, 0, 0, 1 );
-                                       ui.item.find('input.add_new').val('');
-                                       ui.item.find('a.widget-action').click();
-                                       return;
-                               }
-                               wpWidgets.saveOrder(sb);
-                       },
-                       receive: function(e, ui) {
-                               var sender = $(ui.sender);
-
-                               if ( !$(this).is(':visible') || this.id.indexOf('orphaned_widgets') != -1 )
-                                       sender.sortable('cancel');
-
-                               if ( sender.attr('id').indexOf('orphaned_widgets') != -1 && !sender.children('.widget').length ) {
-                                       sender.parents('.orphan-sidebar').slideUp(400, function(){ $(this).remove(); });
-                               }
-                       }
-               }).sortable('option', 'connectWith', 'div.widgets-sortables').parent().filter('.closed').children('.widgets-sortables').sortable('disable');
-
-               $('#available-widgets').droppable({
-                       tolerance: 'pointer',
-                       accept: function(o){
-                               return $(o).parent().attr('id') != 'widget-list';
-                       },
-                       drop: function(e,ui) {
-                               ui.draggable.addClass('deleting');
-                               $('#removing-widget').hide().children('span').html('');
-                       },
-                       over: function(e,ui) {
-                               ui.draggable.addClass('deleting');
-                               $('div.widget-placeholder').hide();
-
-                               if ( ui.draggable.hasClass('ui-sortable-helper') )
-                                       $('#removing-widget').show().children('span')
-                                       .html( ui.draggable.find('div.widget-title').children('h4').html() );
-                       },
-                       out: function(e,ui) {
-                               ui.draggable.removeClass('deleting');
-                               $('div.widget-placeholder').show();
-                               $('#removing-widget').hide().children('span').html('');
-                       }
-               });
-       },
-
-       saveOrder : function(sb) {
-               if ( sb )
-                       $('#' + sb).closest('div.widgets-holder-wrap').find('img.ajax-feedback').css('visibility', 'visible');
-
-               var a = {
-                       action: 'widgets-order',
-                       savewidgets: $('#_wpnonce_widgets').val(),
-                       sidebars: []
-               };
-
-               $('div.widgets-sortables').each( function() {
-                       if ( $(this).sortable )
-                               a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
-               });
-
-               $.post( ajaxurl, a, function() {
-                       $('img.ajax-feedback').css('visibility', 'hidden');
-               });
-
-               this.resize();
-       },
-
-       save : function(widget, del, animate, order) {
-               var sb = widget.closest('div.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a;
-               widget = $(widget);
-               $('.ajax-feedback', widget).css('visibility', 'visible');
-
-               a = {
-                       action: 'save-widget',
-                       savewidgets: $('#_wpnonce_widgets').val(),
-                       sidebar: sb
-               };
-
-               if ( del )
-                       a['delete_widget'] = 1;
-
-               data += '&' + $.param(a);
-
-               $.post( ajaxurl, data, function(r){
-                       var id;
-
-                       if ( del ) {
-                               if ( !$('input.widget_number', widget).val() ) {
-                                       id = $('input.widget-id', widget).val();
-                                       $('#available-widgets').find('input.widget-id').each(function(){
-                                               if ( $(this).val() == id )
-                                                       $(this).closest('div.widget').show();
-                                       });
-                               }
-
-                               if ( animate ) {
-                                       order = 0;
-                                       widget.slideUp('fast', function(){
-                                               $(this).remove();
-                                               wpWidgets.saveOrder();
-                                       });
-                               } else {
-                                       widget.remove();
-                                       wpWidgets.resize();
-                               }
-                       } else {
-                               $('.ajax-feedback').css('visibility', 'hidden');
-                               if ( r && r.length > 2 ) {
-                                       $('div.widget-content', widget).html(r);
-                                       wpWidgets.appendTitle(widget);
-                                       wpWidgets.fixLabels(widget);
-                               }
-                       }
-                       if ( order )
-                               wpWidgets.saveOrder();
-               });
-       },
-
-       appendTitle : function(widget) {
-               var title = $('input[id*="-title"]', widget).val() || '';
-
-               if ( title )
-                       title = ': ' + title.replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-
-               $(widget).children('.widget-top').children('.widget-title').children()
-                               .children('.in-widget-title').html(title);
-
-       },
-
-       resize : function() {
-               $('div.widgets-sortables').each(function(){
-                       if ( $(this).parent().hasClass('inactive') )
-                               return true;
-
-                       var h = 50, H = $(this).children('.widget').length;
-                       h = h + parseInt(H * 48, 10);
-                       $(this).css( 'minHeight', h + 'px' );
-               });
-       },
-
-       fixLabels : function(widget) {
-               widget.children('.widget-inside').find('label').each(function(){
-                       var f = $(this).attr('for');
-                       if ( f && f == $('input', this).attr('id') )
-                               $(this).removeAttr('for');
-               });
-       },
-
-       close : function(widget) {
-               widget.children('.widget-inside').slideUp('fast', function(){
-                       widget.css({'width':'', margin:''});
-               });
-       }
-};
-
-$(document).ready(function($){ wpWidgets.init(); });
-
-})(jQuery);
index 5f741f691caa89c8b7f9d18773ed263c2640fef0..87be4ddfd52da0c3983d2ec9c7e459a6bf9ed5d2 100644 (file)
@@ -1 +1,289 @@
-var wpWidgets;(function(a){wpWidgets={init:function(){var f,d=a("div.widgets-sortables"),c=!!("undefined"!=typeof isRtl&&isRtl),e=(isRtl?"marginRight":"marginLeft"),b;a("#widgets-right").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){var h=a(this).siblings(".widgets-sortables"),g=a(this).parent();if(!g.hasClass("closed")){h.sortable("disable");g.addClass("closed")}else{g.removeClass("closed");h.sortable("enable").sortable("refresh")}});a("#widgets-left").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){a(this).parent().toggleClass("closed")});d.each(function(){if(a(this).parent().hasClass("inactive")){return true}var i=50,g=a(this).children(".widget").length;i=i+parseInt(g*48,10);a(this).css("minHeight",i+"px")});a("a.widget-action").live("click",function(){var i={},j=a(this).closest("div.widget"),g=j.children(".widget-inside"),h=parseInt(j.find("input.widget-width").val(),10);if(g.is(":hidden")){if(h>250&&g.closest("div.widgets-sortables").length){i.width=h+30+"px";if(g.closest("div.widget-liquid-right").length){i[e]=235-h+"px"}j.css(i)}wpWidgets.fixLabels(j);g.slideDown("fast")}else{g.slideUp("fast",function(){j.css({width:"",margin:""})})}return false});a("input.widget-control-save").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),0,1,0);return false});a("a.widget-control-remove").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),1,1,0);return false});a("a.widget-control-close").live("click",function(){wpWidgets.close(a(this).closest("div.widget"));return false});d.children(".widget").each(function(){wpWidgets.appendTitle(this);if(a("p.widget-error",this).length){a("a.widget-action",this).click()}});a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(h,g){g.helper.find("div.widget-description").hide();b=this.id},stop:function(h,g){if(f){a(f).hide()}f=""}});d.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"document",start:function(h,g){g.item.children(".widget-inside").hide();g.item.css({margin:"",width:""})},stop:function(i,g){if(g.item.hasClass("ui-draggable")&&g.item.data("draggable")){g.item.draggable("destroy")}if(g.item.hasClass("deleting")){wpWidgets.save(g.item,1,0,1);g.item.remove();return}var h=g.item.find("input.add_new").val(),l=g.item.find("input.multi_number").val(),k=b,j=a(this).attr("id");g.item.css({margin:"",width:""});b="";if(h){if("multi"==h){g.item.html(g.item.html().replace(/<[^<>]+>/g,function(n){return n.replace(/__i__|%i%/g,l)}));g.item.attr("id",k.replace("__i__",l));l++;a("div#"+k).find("input.multi_number").val(l)}else{if("single"==h){g.item.attr("id","new-"+k);f="div#"+k}}wpWidgets.save(g.item,0,0,1);g.item.find("input.add_new").val("");g.item.find("a.widget-action").click();return}wpWidgets.saveOrder(j)},receive:function(i,h){var g=a(h.sender);if(!a(this).is(":visible")||this.id.indexOf("orphaned_widgets")!=-1){g.sortable("cancel")}if(g.attr("id").indexOf("orphaned_widgets")!=-1&&!g.children(".widget").length){g.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()})}}}).sortable("option","connectWith","div.widgets-sortables").parent().filter(".closed").children(".widgets-sortables").sortable("disable");a("#available-widgets").droppable({tolerance:"pointer",accept:function(g){return a(g).parent().attr("id")!="widget-list"},drop:function(h,g){g.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(h,g){g.draggable.addClass("deleting");a("div.widget-placeholder").hide();if(g.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(g.draggable.find("div.widget-title").children("h4").html())}},out:function(h,g){g.draggable.removeClass("deleting");a("div.widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}})},saveOrder:function(c){if(c){a("#"+c).closest("div.widgets-holder-wrap").find("img.ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a("div.widgets-sortables").each(function(){if(a(this).sortable){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")}});a.post(ajaxurl,b,function(){a("img.ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.closest("div.widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);a(".ajax-feedback",g).css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a("input.widget_number",g).val()){j=a("input.widget-id",g).val();a("#available-widgets").find("input.widget-id").each(function(){if(a(this).val()==j){a(this).closest("div.widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a("div.widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){var c=a('input[id*="-title"]',b).val()||"";if(c){c=": "+c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;")}a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(c)},resize:function(){a("div.widgets-sortables").each(function(){if(a(this).parent().hasClass("inactive")){return true}var c=50,b=a(this).children(".widget").length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixLabels:function(b){b.children(".widget-inside").find("label").each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.children(".widget-inside").slideUp("fast",function(){b.css({width:"",margin:""})})}};a(document).ready(function(b){wpWidgets.init()})})(jQuery);
\ No newline at end of file
+var wpWidgets;
+(function($) {
+
+wpWidgets = {
+
+       init : function() {
+               var rem, sidebars = $('div.widgets-sortables'), isRTL = !! ( 'undefined' != typeof isRtl && isRtl ),
+                       margin = ( isRtl ? 'marginRight' : 'marginLeft' ), the_id;
+
+               $('#widgets-right').children('.widgets-holder-wrap').children('.sidebar-name').click(function(){
+                       var c = $(this).siblings('.widgets-sortables'), p = $(this).parent();
+                       if ( !p.hasClass('closed') ) {
+                               c.sortable('disable');
+                               p.addClass('closed');
+                       } else {
+                               p.removeClass('closed');
+                               c.sortable('enable').sortable('refresh');
+                       }
+               });
+
+               $('#widgets-left').children('.widgets-holder-wrap').children('.sidebar-name').click(function() {
+                       $(this).parent().toggleClass('closed');
+               });
+
+               sidebars.each(function(){
+                       if ( $(this).parent().hasClass('inactive') )
+                               return true;
+
+                       var h = 50, H = $(this).children('.widget').length;
+                       h = h + parseInt(H * 48, 10);
+                       $(this).css( 'minHeight', h + 'px' );
+               });
+
+               $(document.body).bind('click.widgets-toggle', function(e){
+                       var target = $(e.target), css = {}, widget, inside, w;
+
+                       if ( target.parents('.widget-top').length && ! target.parents('#available-widgets').length ) {
+                               widget = target.closest('div.widget');
+                               inside = widget.children('.widget-inside');
+                               w = parseInt( widget.find('input.widget-width').val(), 10 );
+
+                               if ( inside.is(':hidden') ) {
+                                       if ( w > 250 && inside.closest('div.widgets-sortables').length ) {
+                                               css['width'] = w + 30 + 'px';
+                                               if ( inside.closest('div.widget-liquid-right').length )
+                                                       css[margin] = 235 - w + 'px';
+                                               widget.css(css);
+                                       }
+                                       wpWidgets.fixLabels(widget);
+                                       inside.slideDown('fast');
+                               } else {
+                                       inside.slideUp('fast', function() {
+                                               widget.css({'width':'', margin:''});
+                                       });
+                               }
+                               e.preventDefault();
+                       } else if ( target.hasClass('widget-control-save') ) {
+                               wpWidgets.save( target.closest('div.widget'), 0, 1, 0 );
+                               e.preventDefault();
+                       } else if ( target.hasClass('widget-control-remove') ) {
+                               wpWidgets.save( target.closest('div.widget'), 1, 1, 0 );
+                               e.preventDefault();
+                       } else if ( target.hasClass('widget-control-close') ) {
+                               wpWidgets.close( target.closest('div.widget') );
+                               e.preventDefault();
+                       }
+               });
+
+               sidebars.children('.widget').each(function() {
+                       wpWidgets.appendTitle(this);
+                       if ( $('p.widget-error', this).length )
+                               $('a.widget-action', this).click();
+               });
+
+               $('#widget-list').children('.widget').draggable({
+                       connectToSortable: 'div.widgets-sortables',
+                       handle: '> .widget-top > .widget-title',
+                       distance: 2,
+                       helper: 'clone',
+                       zIndex: 100,
+                       containment: 'document',
+                       start: function(e,ui) {
+                               ui.helper.find('div.widget-description').hide();
+                               the_id = this.id;
+                       },
+                       stop: function(e,ui) {
+                               if ( rem )
+                                       $(rem).hide();
+
+                               rem = '';
+                       }
+               });
+
+               sidebars.sortable({
+                       placeholder: 'widget-placeholder',
+                       items: '> .widget',
+                       handle: '> .widget-top > .widget-title',
+                       cursor: 'move',
+                       distance: 2,
+                       containment: 'document',
+                       start: function(e,ui) {
+                               ui.item.children('.widget-inside').hide();
+                               ui.item.css({margin:'', 'width':''});
+                       },
+                       stop: function(e,ui) {
+                               if ( ui.item.hasClass('ui-draggable') && ui.item.data('draggable') )
+                                       ui.item.draggable('destroy');
+
+                               if ( ui.item.hasClass('deleting') ) {
+                                       wpWidgets.save( ui.item, 1, 0, 1 ); // delete widget
+                                       ui.item.remove();
+                                       return;
+                               }
+
+                               var add = ui.item.find('input.add_new').val(),
+                                       n = ui.item.find('input.multi_number').val(),
+                                       id = the_id,
+                                       sb = $(this).attr('id');
+
+                               ui.item.css({margin:'', 'width':''});
+                               the_id = '';
+
+                               if ( add ) {
+                                       if ( 'multi' == add ) {
+                                               ui.item.html( ui.item.html().replace(/<[^<>]+>/g, function(m){ return m.replace(/__i__|%i%/g, n); }) );
+                                               ui.item.attr( 'id', id.replace('__i__', n) );
+                                               n++;
+                                               $('div#' + id).find('input.multi_number').val(n);
+                                       } else if ( 'single' == add ) {
+                                               ui.item.attr( 'id', 'new-' + id );
+                                               rem = 'div#' + id;
+                                       }
+                                       wpWidgets.save( ui.item, 0, 0, 1 );
+                                       ui.item.find('input.add_new').val('');
+                                       ui.item.find('a.widget-action').click();
+                                       return;
+                               }
+                               wpWidgets.saveOrder(sb);
+                       },
+                       receive: function(e, ui) {
+                               var sender = $(ui.sender);
+
+                               if ( !$(this).is(':visible') || this.id.indexOf('orphaned_widgets') != -1 )
+                                       sender.sortable('cancel');
+
+                               if ( sender.attr('id').indexOf('orphaned_widgets') != -1 && !sender.children('.widget').length ) {
+                                       sender.parents('.orphan-sidebar').slideUp(400, function(){ $(this).remove(); });
+                               }
+                       }
+               }).sortable('option', 'connectWith', 'div.widgets-sortables').parent().filter('.closed').children('.widgets-sortables').sortable('disable');
+
+               $('#available-widgets').droppable({
+                       tolerance: 'pointer',
+                       accept: function(o){
+                               return $(o).parent().attr('id') != 'widget-list';
+                       },
+                       drop: function(e,ui) {
+                               ui.draggable.addClass('deleting');
+                               $('#removing-widget').hide().children('span').html('');
+                       },
+                       over: function(e,ui) {
+                               ui.draggable.addClass('deleting');
+                               $('div.widget-placeholder').hide();
+
+                               if ( ui.draggable.hasClass('ui-sortable-helper') )
+                                       $('#removing-widget').show().children('span')
+                                       .html( ui.draggable.find('div.widget-title').children('h4').html() );
+                       },
+                       out: function(e,ui) {
+                               ui.draggable.removeClass('deleting');
+                               $('div.widget-placeholder').show();
+                               $('#removing-widget').hide().children('span').html('');
+                       }
+               });
+       },
+
+       saveOrder : function(sb) {
+               if ( sb )
+                       $('#' + sb).closest('div.widgets-holder-wrap').find('.spinner').css('display', 'inline-block');
+
+               var a = {
+                       action: 'widgets-order',
+                       savewidgets: $('#_wpnonce_widgets').val(),
+                       sidebars: []
+               };
+
+               $('div.widgets-sortables').each( function() {
+                       if ( $(this).sortable )
+                               a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
+               });
+
+               $.post( ajaxurl, a, function() {
+                       $('.spinner').hide();
+               });
+
+               this.resize();
+       },
+
+       save : function(widget, del, animate, order) {
+               var sb = widget.closest('div.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a;
+               widget = $(widget);
+               $('.spinner', widget).show();
+
+               a = {
+                       action: 'save-widget',
+                       savewidgets: $('#_wpnonce_widgets').val(),
+                       sidebar: sb
+               };
+
+               if ( del )
+                       a['delete_widget'] = 1;
+
+               data += '&' + $.param(a);
+
+               $.post( ajaxurl, data, function(r){
+                       var id;
+
+                       if ( del ) {
+                               if ( !$('input.widget_number', widget).val() ) {
+                                       id = $('input.widget-id', widget).val();
+                                       $('#available-widgets').find('input.widget-id').each(function(){
+                                               if ( $(this).val() == id )
+                                                       $(this).closest('div.widget').show();
+                                       });
+                               }
+
+                               if ( animate ) {
+                                       order = 0;
+                                       widget.slideUp('fast', function(){
+                                               $(this).remove();
+                                               wpWidgets.saveOrder();
+                                       });
+                               } else {
+                                       widget.remove();
+                                       wpWidgets.resize();
+                               }
+                       } else {
+                               $('.spinner').hide();
+                               if ( r && r.length > 2 ) {
+                                       $('div.widget-content', widget).html(r);
+                                       wpWidgets.appendTitle(widget);
+                                       wpWidgets.fixLabels(widget);
+                               }
+                       }
+                       if ( order )
+                               wpWidgets.saveOrder();
+               });
+       },
+
+       appendTitle : function(widget) {
+               var title = $('input[id*="-title"]', widget).val() || '';
+
+               if ( title )
+                       title = ': ' + title.replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+
+               $(widget).children('.widget-top').children('.widget-title').children()
+                               .children('.in-widget-title').html(title);
+
+       },
+
+       resize : function() {
+               $('div.widgets-sortables').each(function(){
+                       if ( $(this).parent().hasClass('inactive') )
+                               return true;
+
+                       var h = 50, H = $(this).children('.widget').length;
+                       h = h + parseInt(H * 48, 10);
+                       $(this).css( 'minHeight', h + 'px' );
+               });
+       },
+
+       fixLabels : function(widget) {
+               widget.children('.widget-inside').find('label').each(function(){
+                       var f = $(this).attr('for');
+                       if ( f && f == $('input', this).attr('id') )
+                               $(this).removeAttr('for');
+               });
+       },
+
+       close : function(widget) {
+               widget.children('.widget-inside').slideUp('fast', function(){
+                       widget.css({'width':'', margin:''});
+               });
+       }
+};
+
+$(document).ready(function($){ wpWidgets.init(); });
+
+})(jQuery);
diff --git a/wp-admin/js/widgets.min.js b/wp-admin/js/widgets.min.js
new file mode 100644 (file)
index 0000000..fd1efba
--- /dev/null
@@ -0,0 +1 @@
+var wpWidgets;(function(a){wpWidgets={init:function(){var f,d=a("div.widgets-sortables"),c=!!("undefined"!=typeof isRtl&&isRtl),e=(isRtl?"marginRight":"marginLeft"),b;a("#widgets-right").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){var h=a(this).siblings(".widgets-sortables"),g=a(this).parent();if(!g.hasClass("closed")){h.sortable("disable");g.addClass("closed")}else{g.removeClass("closed");h.sortable("enable").sortable("refresh")}});a("#widgets-left").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){a(this).parent().toggleClass("closed")});d.each(function(){if(a(this).parent().hasClass("inactive")){return true}var i=50,g=a(this).children(".widget").length;i=i+parseInt(g*48,10);a(this).css("minHeight",i+"px")});a(document.body).bind("click.widgets-toggle",function(l){var k=a(l.target),i={},j,g,h;if(k.parents(".widget-top").length&&!k.parents("#available-widgets").length){j=k.closest("div.widget");g=j.children(".widget-inside");h=parseInt(j.find("input.widget-width").val(),10);if(g.is(":hidden")){if(h>250&&g.closest("div.widgets-sortables").length){i.width=h+30+"px";if(g.closest("div.widget-liquid-right").length){i[e]=235-h+"px"}j.css(i)}wpWidgets.fixLabels(j);g.slideDown("fast")}else{g.slideUp("fast",function(){j.css({width:"",margin:""})})}l.preventDefault()}else{if(k.hasClass("widget-control-save")){wpWidgets.save(k.closest("div.widget"),0,1,0);l.preventDefault()}else{if(k.hasClass("widget-control-remove")){wpWidgets.save(k.closest("div.widget"),1,1,0);l.preventDefault()}else{if(k.hasClass("widget-control-close")){wpWidgets.close(k.closest("div.widget"));l.preventDefault()}}}}});d.children(".widget").each(function(){wpWidgets.appendTitle(this);if(a("p.widget-error",this).length){a("a.widget-action",this).click()}});a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:100,containment:"document",start:function(h,g){g.helper.find("div.widget-description").hide();b=this.id},stop:function(h,g){if(f){a(f).hide()}f=""}});d.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"document",start:function(h,g){g.item.children(".widget-inside").hide();g.item.css({margin:"",width:""})},stop:function(i,g){if(g.item.hasClass("ui-draggable")&&g.item.data("draggable")){g.item.draggable("destroy")}if(g.item.hasClass("deleting")){wpWidgets.save(g.item,1,0,1);g.item.remove();return}var h=g.item.find("input.add_new").val(),l=g.item.find("input.multi_number").val(),k=b,j=a(this).attr("id");g.item.css({margin:"",width:""});b="";if(h){if("multi"==h){g.item.html(g.item.html().replace(/<[^<>]+>/g,function(n){return n.replace(/__i__|%i%/g,l)}));g.item.attr("id",k.replace("__i__",l));l++;a("div#"+k).find("input.multi_number").val(l)}else{if("single"==h){g.item.attr("id","new-"+k);f="div#"+k}}wpWidgets.save(g.item,0,0,1);g.item.find("input.add_new").val("");g.item.find("a.widget-action").click();return}wpWidgets.saveOrder(j)},receive:function(i,h){var g=a(h.sender);if(!a(this).is(":visible")||this.id.indexOf("orphaned_widgets")!=-1){g.sortable("cancel")}if(g.attr("id").indexOf("orphaned_widgets")!=-1&&!g.children(".widget").length){g.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()})}}}).sortable("option","connectWith","div.widgets-sortables").parent().filter(".closed").children(".widgets-sortables").sortable("disable");a("#available-widgets").droppable({tolerance:"pointer",accept:function(g){return a(g).parent().attr("id")!="widget-list"},drop:function(h,g){g.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(h,g){g.draggable.addClass("deleting");a("div.widget-placeholder").hide();if(g.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(g.draggable.find("div.widget-title").children("h4").html())}},out:function(h,g){g.draggable.removeClass("deleting");a("div.widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}})},saveOrder:function(c){if(c){a("#"+c).closest("div.widgets-holder-wrap").find(".spinner").css("display","inline-block")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a("div.widgets-sortables").each(function(){if(a(this).sortable){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")}});a.post(ajaxurl,b,function(){a(".spinner").hide()});this.resize()},save:function(g,d,e,b){var h=g.closest("div.widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);a(".spinner",g).show();c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a("input.widget_number",g).val()){j=a("input.widget-id",g).val();a("#available-widgets").find("input.widget-id").each(function(){if(a(this).val()==j){a(this).closest("div.widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".spinner").hide();if(i&&i.length>2){a("div.widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){var c=a('input[id*="-title"]',b).val()||"";if(c){c=": "+c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;")}a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(c)},resize:function(){a("div.widgets-sortables").each(function(){if(a(this).parent().hasClass("inactive")){return true}var c=50,b=a(this).children(".widget").length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixLabels:function(b){b.children(".widget-inside").find("label").each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.children(".widget-inside").slideUp("fast",function(){b.css({width:"",margin:""})})}};a(document).ready(function(b){wpWidgets.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/word-count.dev.js b/wp-admin/js/word-count.dev.js
deleted file mode 100644 (file)
index b42f5c3..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-(function($,undefined) {
-       wpWordCount = {
-
-               settings : {
-                       strip : /<[a-zA-Z\/][^<>]*>/g, // strip HTML tags
-                       clean : /[0-9.(),;:!?%#$¿'"_+=\\/-]+/g, // regexp to remove punctuation, etc.
-                       w : /\S\s+/g, // word-counting regexp
-                       c : /\S/g // char-counting regexp for asian languages
-               },
-
-               block : 0,
-
-               wc : function(tx, type) {
-                       var t = this, w = $('.word-count'), tc = 0;
-
-                       if ( type === undefined )
-                               type = wordCountL10n.type;
-                       if ( type !== 'w' && type !== 'c' )
-                               type = 'w';
-
-                       if ( t.block )
-                               return;
-
-                       t.block = 1;
-
-                       setTimeout( function() {
-                               if ( tx ) {
-                                       tx = tx.replace( t.settings.strip, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
-                                       tx = tx.replace( t.settings.clean, '' );
-                                       tx.replace( t.settings[type], function(){tc++;} );
-                               }
-                               w.html(tc.toString());
-
-                               setTimeout( function() { t.block = 0; }, 2000 );
-                       }, 1 );
-               }
-       }
-
-       $(document).bind( 'wpcountwords', function(e, txt) {
-               wpWordCount.wc(txt);
-       });
-}(jQuery));
index ad5db1bf8169f99966c968432694f59e8aa0c3c5..b42f5c3b49b554ec61b5fed8f56bc26f29bcea01 100644 (file)
@@ -1 +1,42 @@
-(function(a,b){wpWordCount={settings:{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,w:/\S\s+/g,c:/\S/g},block:0,wc:function(e,g){var f=this,d=a(".word-count"),c=0;if(g===b){g=wordCountL10n.type}if(g!=="w"&&g!=="c"){g="w"}if(f.block){return}f.block=1;setTimeout(function(){if(e){e=e.replace(f.settings.strip," ").replace(/&nbsp;|&#160;/gi," ");e=e.replace(f.settings.clean,"");e.replace(f.settings[g],function(){c++})}d.html(c.toString());setTimeout(function(){f.block=0},2000)},1)}};a(document).bind("wpcountwords",function(d,c){wpWordCount.wc(c)})}(jQuery));
\ No newline at end of file
+(function($,undefined) {
+       wpWordCount = {
+
+               settings : {
+                       strip : /<[a-zA-Z\/][^<>]*>/g, // strip HTML tags
+                       clean : /[0-9.(),;:!?%#$¿'"_+=\\/-]+/g, // regexp to remove punctuation, etc.
+                       w : /\S\s+/g, // word-counting regexp
+                       c : /\S/g // char-counting regexp for asian languages
+               },
+
+               block : 0,
+
+               wc : function(tx, type) {
+                       var t = this, w = $('.word-count'), tc = 0;
+
+                       if ( type === undefined )
+                               type = wordCountL10n.type;
+                       if ( type !== 'w' && type !== 'c' )
+                               type = 'w';
+
+                       if ( t.block )
+                               return;
+
+                       t.block = 1;
+
+                       setTimeout( function() {
+                               if ( tx ) {
+                                       tx = tx.replace( t.settings.strip, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
+                                       tx = tx.replace( t.settings.clean, '' );
+                                       tx.replace( t.settings[type], function(){tc++;} );
+                               }
+                               w.html(tc.toString());
+
+                               setTimeout( function() { t.block = 0; }, 2000 );
+                       }, 1 );
+               }
+       }
+
+       $(document).bind( 'wpcountwords', function(e, txt) {
+               wpWordCount.wc(txt);
+       });
+}(jQuery));
diff --git a/wp-admin/js/word-count.min.js b/wp-admin/js/word-count.min.js
new file mode 100644 (file)
index 0000000..ad5db1b
--- /dev/null
@@ -0,0 +1 @@
+(function(a,b){wpWordCount={settings:{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,w:/\S\s+/g,c:/\S/g},block:0,wc:function(e,g){var f=this,d=a(".word-count"),c=0;if(g===b){g=wordCountL10n.type}if(g!=="w"&&g!=="c"){g="w"}if(f.block){return}f.block=1;setTimeout(function(){if(e){e=e.replace(f.settings.strip," ").replace(/&nbsp;|&#160;/gi," ");e=e.replace(f.settings.clean,"");e.replace(f.settings[g],function(){c++})}d.html(c.toString());setTimeout(function(){f.block=0},2000)},1)}};a(document).bind("wpcountwords",function(d,c){wpWordCount.wc(c)})}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/wp-fullscreen.dev.js b/wp-admin/js/wp-fullscreen.dev.js
deleted file mode 100644 (file)
index 4d4d8c4..0000000
+++ /dev/null
@@ -1,731 +0,0 @@
-/**
- * PubSub
- *
- * A lightweight publish/subscribe implementation.
- * Private use only!
- */
-var PubSub, fullscreen, wptitlehint;
-
-PubSub = function() {
-       this.topics = {};
-};
-
-PubSub.prototype.subscribe = function( topic, callback ) {
-       if ( ! this.topics[ topic ] )
-               this.topics[ topic ] = [];
-
-       this.topics[ topic ].push( callback );
-       return callback;
-};
-
-PubSub.prototype.unsubscribe = function( topic, callback ) {
-       var i, l,
-               topics = this.topics[ topic ];
-
-       if ( ! topics )
-               return callback || [];
-
-       // Clear matching callbacks
-       if ( callback ) {
-               for ( i = 0, l = topics.length; i < l; i++ ) {
-                       if ( callback == topics[i] )
-                               topics.splice( i, 1 );
-               }
-               return callback;
-
-       // Clear all callbacks
-       } else {
-               this.topics[ topic ] = [];
-               return topics;
-       }
-};
-
-PubSub.prototype.publish = function( topic, args ) {
-       var i, l, broken,
-               topics = this.topics[ topic ];
-
-       if ( ! topics )
-               return;
-
-       args = args || [];
-
-       for ( i = 0, l = topics.length; i < l; i++ ) {
-               broken = ( topics[i].apply( null, args ) === false || broken );
-       }
-       return ! broken;
-};
-
-/**
- * Distraction Free Writing
- * (wp-fullscreen)
- *
- * Access the API globally using the fullscreen variable.
- */
-
-(function($){
-       var api, ps, bounder, s;
-
-       // Initialize the fullscreen/api object
-       fullscreen = api = {};
-
-       // Create the PubSub (publish/subscribe) interface.
-       ps = api.pubsub = new PubSub();
-       timer = 0;
-       block = false;
-
-       s = api.settings = { // Settings
-               visible : false,
-               mode : 'tinymce',
-               editor_id : 'content',
-               title_id : '',
-               timer : 0,
-               toolbar_shown : false
-       }
-
-       /**
-        * Bounder
-        *
-        * Creates a function that publishes start/stop topics.
-        * Used to throttle events.
-        */
-       bounder = api.bounder = function( start, stop, delay, e ) {
-               var y, top;
-
-               delay = delay || 1250;
-
-               if ( e ) {
-                       y = e.pageY || e.clientY || e.offsetY;
-                       top = $(document).scrollTop();
-
-                       if ( !e.isDefaultPrevented ) // test if e ic jQuery normalized
-                               y = 135 + y;
-
-                       if ( y - top > 120 )
-                               return;
-               }
-
-               if ( block )
-                       return;
-
-               block = true;
-
-               setTimeout( function() {
-                       block = false;
-               }, 400 );
-
-               if ( s.timer )
-                       clearTimeout( s.timer );
-               else
-                       ps.publish( start );
-
-               function timed() {
-                       ps.publish( stop );
-                       s.timer = 0;
-               }
-
-               s.timer = setTimeout( timed, delay );
-       };
-
-       /**
-        * on()
-        *
-        * Turns fullscreen on.
-        *
-        * @param string mode Optional. Switch to the given mode before opening.
-        */
-       api.on = function() {
-               if ( s.visible )
-                       return;
-
-               // Settings can be added or changed by defining "wp_fullscreen_settings" JS object.
-               if ( typeof(wp_fullscreen_settings) == 'object' )
-                       $.extend( s, wp_fullscreen_settings );
-
-               s.editor_id = wpActiveEditor || 'content';
-
-               if ( $('input#title').length && s.editor_id == 'content' )
-                       s.title_id = 'title';
-               else if ( $('input#' + s.editor_id + '-title').length ) // the title input field should have [editor_id]-title HTML ID to be auto detected
-                       s.title_id = s.editor_id + '-title';
-               else
-                       $('#wp-fullscreen-title, #wp-fullscreen-title-prompt-text').hide();
-
-               s.mode = $('#' + s.editor_id).is(':hidden') ? 'tinymce' : 'html';
-               s.qt_canvas = $('#' + s.editor_id).get(0);
-
-               if ( ! s.element )
-                       api.ui.init();
-
-               s.is_mce_on = s.has_tinymce && typeof( tinyMCE.get(s.editor_id) ) != 'undefined';
-
-               api.ui.fade( 'show', 'showing', 'shown' );
-       };
-
-       /**
-        * off()
-        *
-        * Turns fullscreen off.
-        */
-       api.off = function() {
-               if ( ! s.visible )
-                       return;
-
-               api.ui.fade( 'hide', 'hiding', 'hidden' );
-       };
-
-       /**
-        * switchmode()
-        *
-        * @return string - The current mode.
-        *
-        * @param string to - The fullscreen mode to switch to.
-        * @event switchMode
-        * @eventparam string to   - The new mode.
-        * @eventparam string from - The old mode.
-        */
-       api.switchmode = function( to ) {
-               var from = s.mode;
-
-               if ( ! to || ! s.visible || ! s.has_tinymce )
-                       return from;
-
-               // Don't switch if the mode is the same.
-               if ( from == to )
-                       return from;
-
-               ps.publish( 'switchMode', [ from, to ] );
-               s.mode = to;
-               ps.publish( 'switchedMode', [ from, to ] );
-
-               return to;
-       };
-
-       /**
-        * General
-        */
-
-       api.save = function() {
-               var hidden = $('#hiddenaction'), old = hidden.val(), spinner = $('#wp-fullscreen-save img'),
-                       message = $('#wp-fullscreen-save span');
-
-               spinner.show();
-               api.savecontent();
-
-               hidden.val('wp-fullscreen-save-post');
-
-               $.post( ajaxurl, $('form#post').serialize(), function(r){
-                       spinner.hide();
-                       message.show();
-
-                       setTimeout( function(){
-                               message.fadeOut(1000);
-                       }, 3000 );
-
-                       if ( r.last_edited )
-                               $('#wp-fullscreen-save input').attr( 'title',  r.last_edited );
-
-               }, 'json');
-
-               hidden.val(old);
-       }
-
-       api.savecontent = function() {
-               var ed, content;
-
-               if ( s.title_id )
-                       $('#' + s.title_id).val( $('#wp-fullscreen-title').val() );
-
-               if ( s.mode === 'tinymce' && (ed = tinyMCE.get('wp_mce_fullscreen')) ) {
-                       content = ed.save();
-               } else {
-                       content = $('#wp_mce_fullscreen').val();
-               }
-
-               $('#' + s.editor_id).val( content );
-               $(document).triggerHandler('wpcountwords', [ content ]);
-       }
-
-       set_title_hint = function( title ) {
-               if ( ! title.val().length )
-                       title.siblings('label').css( 'visibility', '' );
-               else
-                       title.siblings('label').css( 'visibility', 'hidden' );
-       }
-
-       api.dfw_width = function(n) {
-               var el = $('#wp-fullscreen-wrap'), w = el.width();
-
-               if ( !n ) { // reset to theme width
-                       el.width( $('#wp-fullscreen-central-toolbar').width() );
-                       deleteUserSetting('dfw_width');
-                       return;
-               }
-
-               w = n + w;
-
-               if ( w < 200 || w > 1200 ) // sanity check
-                       return;
-
-               el.width( w );
-               setUserSetting('dfw_width', w);
-       }
-
-       ps.subscribe( 'showToolbar', function() {
-               s.toolbars.removeClass('fade-1000').addClass('fade-300');
-               api.fade.In( s.toolbars, 300, function(){ ps.publish('toolbarShown'); }, true );
-               $('#wp-fullscreen-body').addClass('wp-fullscreen-focus');
-               s.toolbar_shown = true;
-       });
-
-       ps.subscribe( 'hideToolbar', function() {
-               s.toolbars.removeClass('fade-300').addClass('fade-1000');
-               api.fade.Out( s.toolbars, 1000, function(){ ps.publish('toolbarHidden'); }, true );
-               $('#wp-fullscreen-body').removeClass('wp-fullscreen-focus');
-       });
-
-       ps.subscribe( 'toolbarShown', function() {
-               s.toolbars.removeClass('fade-300');
-       });
-
-       ps.subscribe( 'toolbarHidden', function() {
-               s.toolbars.removeClass('fade-1000');
-               s.toolbar_shown = false;
-       });
-
-       ps.subscribe( 'show', function() { // This event occurs before the overlay blocks the UI.
-               var title;
-
-               if ( s.title_id ) {
-                       title = $('#wp-fullscreen-title').val( $('#' + s.title_id).val() );
-                       set_title_hint( title );
-               }
-
-               $('#wp-fullscreen-save input').attr( 'title',  $('#last-edit').text() );
-
-               s.textarea_obj.value = s.qt_canvas.value;
-
-               if ( s.has_tinymce && s.mode === 'tinymce' )
-                       tinyMCE.execCommand('wpFullScreenInit');
-
-               s.orig_y = $(window).scrollTop();
-       });
-
-       ps.subscribe( 'showing', function() { // This event occurs while the DFW overlay blocks the UI.
-               $( document.body ).addClass( 'fullscreen-active' );
-               api.refresh_buttons();
-
-               $( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
-               bounder( 'showToolbar', 'hideToolbar', 2000 );
-
-               api.bind_resize();
-               setTimeout( api.resize_textarea, 200 );
-
-               // scroll to top so the user is not disoriented
-               scrollTo(0, 0);
-
-               // needed it for IE7 and compat mode
-               $('#wpadminbar').hide();
-       });
-
-       ps.subscribe( 'shown', function() { // This event occurs after the DFW overlay is shown
-               var interim_init;
-
-               s.visible = true;
-
-               // init the standard TinyMCE instance if missing
-               if ( s.has_tinymce && ! s.is_mce_on ) {
-
-                       interim_init = function(mce, ed) {
-                               var el = ed.getElement(), old_val = el.value, settings = tinyMCEPreInit.mceInit[s.editor_id];
-
-                               if ( settings && settings.wpautop && typeof(switchEditors) != 'undefined' )
-                                       el.value = switchEditors.wpautop( el.value );
-
-                               ed.onInit.add(function(ed) {
-                                       ed.hide();
-                                       ed.getElement().value = old_val;
-                                       tinymce.onAddEditor.remove(interim_init);
-                               });
-                       };
-
-                       tinymce.onAddEditor.add(interim_init);
-                       tinyMCE.init(tinyMCEPreInit.mceInit[s.editor_id]);
-
-                       s.is_mce_on = true;
-               }
-
-               wpActiveEditor = 'wp_mce_fullscreen';
-       });
-
-       ps.subscribe( 'hide', function() { // This event occurs before the overlay blocks DFW.
-               var htmled_is_hidden = $('#' + s.editor_id).is(':hidden');
-               // Make sure the correct editor is displaying.
-               if ( s.has_tinymce && s.mode === 'tinymce' && !htmled_is_hidden ) {
-                       switchEditors.go(s.editor_id, 'tmce');
-               } else if ( s.mode === 'html' && htmled_is_hidden ) {
-                       switchEditors.go(s.editor_id, 'html');
-               }
-
-               // Save content must be after switchEditors or content will be overwritten. See #17229.
-               api.savecontent();
-
-               $( document ).unbind( '.fullscreen' );
-               $(s.textarea_obj).unbind('.grow');
-
-               if ( s.has_tinymce && s.mode === 'tinymce' )
-                       tinyMCE.execCommand('wpFullScreenSave');
-
-               if ( s.title_id )
-                       set_title_hint( $('#' + s.title_id) );
-
-               s.qt_canvas.value = s.textarea_obj.value;
-       });
-
-       ps.subscribe( 'hiding', function() { // This event occurs while the overlay blocks the DFW UI.
-
-               $( document.body ).removeClass( 'fullscreen-active' );
-               scrollTo(0, s.orig_y);
-               $('#wpadminbar').show();
-       });
-
-       ps.subscribe( 'hidden', function() { // This event occurs after DFW is removed.
-               s.visible = false;
-               $('#wp_mce_fullscreen, #wp-fullscreen-title').removeAttr('style');
-
-               if ( s.has_tinymce && s.is_mce_on )
-                       tinyMCE.execCommand('wpFullScreenClose');
-
-               s.textarea_obj.value = '';
-               api.oldheight = 0;
-               wpActiveEditor = s.editor_id;
-       });
-
-       ps.subscribe( 'switchMode', function( from, to ) {
-               var ed;
-
-               if ( !s.has_tinymce || !s.is_mce_on )
-                       return;
-
-               ed = tinyMCE.get('wp_mce_fullscreen');
-
-               if ( from === 'html' && to === 'tinymce' ) {
-
-                       if ( tinyMCE.get(s.editor_id).getParam('wpautop') && typeof(switchEditors) != 'undefined' )
-                               s.textarea_obj.value = switchEditors.wpautop( s.textarea_obj.value );
-
-                       if ( 'undefined' == typeof(ed) )
-                               tinyMCE.execCommand('wpFullScreenInit');
-                       else
-                               ed.show();
-
-               } else if ( from === 'tinymce' && to === 'html' ) {
-                       if ( ed )
-                               ed.hide();
-               }
-       });
-
-       ps.subscribe( 'switchedMode', function( from, to ) {
-               api.refresh_buttons(true);
-
-               if ( to === 'html' )
-                       setTimeout( api.resize_textarea, 200 );
-       });
-
-       /**
-        * Buttons
-        */
-       api.b = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('Bold');
-       }
-
-       api.i = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('Italic');
-       }
-
-       api.ul = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('InsertUnorderedList');
-       }
-
-       api.ol = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('InsertOrderedList');
-       }
-
-       api.link = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('WP_Link');
-               else
-                       wpLink.open();
-       }
-
-       api.unlink = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('unlink');
-       }
-
-       api.atd = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('mceWritingImprovementTool');
-       }
-
-       api.help = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('WP_Help');
-       }
-
-       api.blockquote = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode )
-                       tinyMCE.execCommand('mceBlockQuote');
-       }
-
-       api.medialib = function() {
-               if ( s.has_tinymce && 'tinymce' === s.mode ) {
-                       tinyMCE.execCommand('WP_Medialib');
-               } else {
-                       var href = $('#wp-' + s.editor_id + '-media-buttons a.thickbox').attr('href') || '';
-
-                       if ( href )
-                               tb_show('', href);
-               }
-       }
-
-       api.refresh_buttons = function( fade ) {
-               fade = fade || false;
-
-               if ( s.mode === 'html' ) {
-                       $('#wp-fullscreen-mode-bar').removeClass('wp-tmce-mode').addClass('wp-html-mode');
-
-                       if ( fade )
-                               $('#wp-fullscreen-button-bar').fadeOut( 150, function(){
-                                       $(this).addClass('wp-html-mode').fadeIn( 150 );
-                               });
-                       else
-                               $('#wp-fullscreen-button-bar').addClass('wp-html-mode');
-
-               } else if ( s.mode === 'tinymce' ) {
-                       $('#wp-fullscreen-mode-bar').removeClass('wp-html-mode').addClass('wp-tmce-mode');
-
-                       if ( fade )
-                               $('#wp-fullscreen-button-bar').fadeOut( 150, function(){
-                                       $(this).removeClass('wp-html-mode').fadeIn( 150 );
-                               });
-                       else
-                               $('#wp-fullscreen-button-bar').removeClass('wp-html-mode');
-               }
-       }
-
-       /**
-        * UI Elements
-        *
-        * Used for transitioning between states.
-        */
-       api.ui = {
-               init: function() {
-                       var topbar = $('#fullscreen-topbar'), txtarea = $('#wp_mce_fullscreen'), last = 0;
-
-                       s.toolbars = topbar.add( $('#wp-fullscreen-status') );
-                       s.element = $('#fullscreen-fader');
-                       s.textarea_obj = txtarea[0];
-                       s.has_tinymce = typeof(tinymce) != 'undefined';
-
-                       if ( !s.has_tinymce )
-                               $('#wp-fullscreen-mode-bar').hide();
-
-                       if ( wptitlehint && $('#wp-fullscreen-title').length )
-                               wptitlehint('wp-fullscreen-title');
-
-                       $(document).keyup(function(e){
-                               var c = e.keyCode || e.charCode, a, data;
-
-                               if ( !fullscreen.settings.visible )
-                                       return true;
-
-                               if ( navigator.platform && navigator.platform.indexOf('Mac') != -1 )
-                                       a = e.ctrlKey; // Ctrl key for Mac
-                               else
-                                       a = e.altKey; // Alt key for Win & Linux
-
-                               if ( 27 == c ) { // Esc
-                                       data = {
-                                               event: e,
-                                               what: 'dfw',
-                                               cb: fullscreen.off,
-                                               condition: function(){
-                                                       if ( $('#TB_window').is(':visible') || $('.wp-dialog').is(':visible') )
-                                                               return false;
-                                                       return true;
-                                               }
-                                       };
-
-                                       if ( ! jQuery(document).triggerHandler( 'wp_CloseOnEscape', [data] ) )
-                                               fullscreen.off();
-                               }
-
-                               if ( a && (61 == c || 107 == c || 187 == c) ) // +
-                                       api.dfw_width(25);
-
-                               if ( a && (45 == c || 109 == c || 189 == c) ) // -
-                                       api.dfw_width(-25);
-
-                               if ( a && 48 == c ) // 0
-                                       api.dfw_width(0);
-
-                               return false;
-                       });
-
-                       // word count in HTML mode
-                       if ( typeof(wpWordCount) != 'undefined' ) {
-
-                               txtarea.keyup( function(e) {
-                                       var k = e.keyCode || e.charCode;
-
-                                       if ( k == last )
-                                               return true;
-
-                                       if ( 13 == k || 8 == last || 46 == last )
-                                               $(document).triggerHandler('wpcountwords', [ txtarea.val() ]);
-
-                                       last = k;
-                                       return true;
-                               });
-                       }
-
-                       topbar.mouseenter(function(e){
-                               s.toolbars.addClass('fullscreen-make-sticky');
-                               $( document ).unbind( '.fullscreen' );
-                               clearTimeout( s.timer );
-                               s.timer = 0;
-                       }).mouseleave(function(e){
-                               s.toolbars.removeClass('fullscreen-make-sticky');
-
-                               if ( s.visible )
-                                       $( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
-                       });
-               },
-
-               fade: function( before, during, after ) {
-                       if ( ! s.element )
-                               api.ui.init();
-
-                       // If any callback bound to before returns false, bail.
-                       if ( before && ! ps.publish( before ) )
-                               return;
-
-                       api.fade.In( s.element, 600, function() {
-                               if ( during )
-                                       ps.publish( during );
-
-                               api.fade.Out( s.element, 600, function() {
-                                       if ( after )
-                                               ps.publish( after );
-                               })
-                       });
-               }
-       };
-
-       api.fade = {
-               transitionend: 'transitionend webkitTransitionEnd oTransitionEnd',
-
-               // Sensitivity to allow browsers to render the blank element before animating.
-               sensitivity: 100,
-
-               In: function( element, speed, callback, stop ) {
-
-                       callback = callback || $.noop;
-                       speed = speed || 400;
-                       stop = stop || false;
-
-                       if ( api.fade.transitions ) {
-                               if ( element.is(':visible') ) {
-                                       element.addClass( 'fade-trigger' );
-                                       return element;
-                               }
-
-                               element.show();
-                               element.first().one( this.transitionend, function() {
-                                       callback();
-                               });
-                               setTimeout( function() { element.addClass( 'fade-trigger' ); }, this.sensitivity );
-                       } else {
-                               if ( stop )
-                                       element.stop();
-
-                               element.css( 'opacity', 1 );
-                               element.first().fadeIn( speed, callback );
-
-                               if ( element.length > 1 )
-                                       element.not(':first').fadeIn( speed );
-                       }
-
-                       return element;
-               },
-
-               Out: function( element, speed, callback, stop ) {
-
-                       callback = callback || $.noop;
-                       speed = speed || 400;
-                       stop = stop || false;
-
-                       if ( ! element.is(':visible') )
-                               return element;
-
-                       if ( api.fade.transitions ) {
-                               element.first().one( api.fade.transitionend, function() {
-                                       if ( element.hasClass('fade-trigger') )
-                                               return;
-
-                                       element.hide();
-                                       callback();
-                               });
-                               setTimeout( function() { element.removeClass( 'fade-trigger' ); }, this.sensitivity );
-                       } else {
-                               if ( stop )
-                                       element.stop();
-
-                               element.first().fadeOut( speed, callback );
-
-                               if ( element.length > 1 )
-                                       element.not(':first').fadeOut( speed );
-                       }
-
-                       return element;
-               },
-
-               transitions: (function() { // Check if the browser supports CSS 3.0 transitions
-                       var s = document.documentElement.style;
-
-                       return ( typeof ( s.WebkitTransition ) == 'string' ||
-                               typeof ( s.MozTransition ) == 'string' ||
-                               typeof ( s.OTransition ) == 'string' ||
-                               typeof ( s.transition ) == 'string' );
-               })()
-       };
-
-       /**
-        * Resize API
-        *
-        * Automatically updates textarea height.
-        */
-
-       api.bind_resize = function() {
-               $(s.textarea_obj).bind('keypress.grow click.grow paste.grow', function(){
-                       setTimeout( api.resize_textarea, 200 );
-               });
-       }
-
-       api.oldheight = 0;
-       api.resize_textarea = function() {
-               var txt = s.textarea_obj, newheight;
-
-               newheight = txt.scrollHeight > 300 ? txt.scrollHeight : 300;
-
-               if ( newheight != api.oldheight ) {
-                       txt.style.height = newheight + 'px';
-                       api.oldheight = newheight;
-               }
-       };
-
-})(jQuery);
index ac7fb17a969297d240a570291aa75afbef83e1e9..4746b286a2b0046795f1eb1dc66fb3e646d47ba0 100644 (file)
@@ -1 +1,725 @@
-var PubSub,fullscreen,wptitlehint;PubSub=function(){this.topics={}};PubSub.prototype.subscribe=function(a,b){if(!this.topics[a]){this.topics[a]=[]}this.topics[a].push(b);return b};PubSub.prototype.unsubscribe=function(b,e){var c,a,d=this.topics[b];if(!d){return e||[]}if(e){for(c=0,a=d.length;c<a;c++){if(e==d[c]){d.splice(c,1)}}return e}else{this.topics[b]=[];return d}};PubSub.prototype.publish=function(c,b){var d,a,e,f=this.topics[c];if(!f){return}b=b||[];for(d=0,a=f.length;d<a;d++){e=(f[d].apply(null,b)===false||e)}return !e};(function(c){var b,e,d,a;fullscreen=b={};e=b.pubsub=new PubSub();timer=0;block=false;a=b.settings={visible:false,mode:"tinymce",editor_id:"content",title_id:"",timer:0,toolbar_shown:false};d=b.bounder=function(l,h,g,j){var k,i;g=g||1250;if(j){k=j.pageY||j.clientY||j.offsetY;i=c(document).scrollTop();if(!j.isDefaultPrevented){k=135+k}if(k-i>120){return}}if(block){return}block=true;setTimeout(function(){block=false},400);if(a.timer){clearTimeout(a.timer)}else{e.publish(l)}function f(){e.publish(h);a.timer=0}a.timer=setTimeout(f,g)};b.on=function(){if(a.visible){return}if(typeof(wp_fullscreen_settings)=="object"){c.extend(a,wp_fullscreen_settings)}a.editor_id=wpActiveEditor||"content";if(c("input#title").length&&a.editor_id=="content"){a.title_id="title"}else{if(c("input#"+a.editor_id+"-title").length){a.title_id=a.editor_id+"-title"}else{c("#wp-fullscreen-title, #wp-fullscreen-title-prompt-text").hide()}}a.mode=c("#"+a.editor_id).is(":hidden")?"tinymce":"html";a.qt_canvas=c("#"+a.editor_id).get(0);if(!a.element){b.ui.init()}a.is_mce_on=a.has_tinymce&&typeof(tinyMCE.get(a.editor_id))!="undefined";b.ui.fade("show","showing","shown")};b.off=function(){if(!a.visible){return}b.ui.fade("hide","hiding","hidden")};b.switchmode=function(g){var f=a.mode;if(!g||!a.visible||!a.has_tinymce){return f}if(f==g){return f}e.publish("switchMode",[f,g]);a.mode=g;e.publish("switchedMode",[f,g]);return g};b.save=function(){var h=c("#hiddenaction"),f=h.val(),i=c("#wp-fullscreen-save img"),g=c("#wp-fullscreen-save span");i.show();b.savecontent();h.val("wp-fullscreen-save-post");c.post(ajaxurl,c("form#post").serialize(),function(j){i.hide();g.show();setTimeout(function(){g.fadeOut(1000)},3000);if(j.last_edited){c("#wp-fullscreen-save input").attr("title",j.last_edited)}},"json");h.val(f)};b.savecontent=function(){var f,g;if(a.title_id){c("#"+a.title_id).val(c("#wp-fullscreen-title").val())}if(a.mode==="tinymce"&&(f=tinyMCE.get("wp_mce_fullscreen"))){g=f.save()}else{g=c("#wp_mce_fullscreen").val()}c("#"+a.editor_id).val(g);c(document).triggerHandler("wpcountwords",[g])};set_title_hint=function(f){if(!f.val().length){f.siblings("label").css("visibility","")}else{f.siblings("label").css("visibility","hidden")}};b.dfw_width=function(h){var g=c("#wp-fullscreen-wrap"),f=g.width();if(!h){g.width(c("#wp-fullscreen-central-toolbar").width());deleteUserSetting("dfw_width");return}f=h+f;if(f<200||f>1200){return}g.width(f);setUserSetting("dfw_width",f)};e.subscribe("showToolbar",function(){a.toolbars.removeClass("fade-1000").addClass("fade-300");b.fade.In(a.toolbars,300,function(){e.publish("toolbarShown")},true);c("#wp-fullscreen-body").addClass("wp-fullscreen-focus");a.toolbar_shown=true});e.subscribe("hideToolbar",function(){a.toolbars.removeClass("fade-300").addClass("fade-1000");b.fade.Out(a.toolbars,1000,function(){e.publish("toolbarHidden")},true);c("#wp-fullscreen-body").removeClass("wp-fullscreen-focus")});e.subscribe("toolbarShown",function(){a.toolbars.removeClass("fade-300")});e.subscribe("toolbarHidden",function(){a.toolbars.removeClass("fade-1000");a.toolbar_shown=false});e.subscribe("show",function(){var f;if(a.title_id){f=c("#wp-fullscreen-title").val(c("#"+a.title_id).val());set_title_hint(f)}c("#wp-fullscreen-save input").attr("title",c("#last-edit").text());a.textarea_obj.value=a.qt_canvas.value;if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenInit")}a.orig_y=c(window).scrollTop()});e.subscribe("showing",function(){c(document.body).addClass("fullscreen-active");b.refresh_buttons();c(document).bind("mousemove.fullscreen",function(f){d("showToolbar","hideToolbar",2000,f)});d("showToolbar","hideToolbar",2000);b.bind_resize();setTimeout(b.resize_textarea,200);scrollTo(0,0);c("#wpadminbar").hide()});e.subscribe("shown",function(){var f;a.visible=true;if(a.has_tinymce&&!a.is_mce_on){f=function(g,h){var k=h.getElement(),i=k.value,j=tinyMCEPreInit.mceInit[a.editor_id];if(j&&j.wpautop&&typeof(switchEditors)!="undefined"){k.value=switchEditors.wpautop(k.value)}h.onInit.add(function(l){l.hide();l.getElement().value=i;tinymce.onAddEditor.remove(f)})};tinymce.onAddEditor.add(f);tinyMCE.init(tinyMCEPreInit.mceInit[a.editor_id]);a.is_mce_on=true}wpActiveEditor="wp_mce_fullscreen"});e.subscribe("hide",function(){var f=c("#"+a.editor_id).is(":hidden");if(a.has_tinymce&&a.mode==="tinymce"&&!f){switchEditors.go(a.editor_id,"tmce")}else{if(a.mode==="html"&&f){switchEditors.go(a.editor_id,"html")}}b.savecontent();c(document).unbind(".fullscreen");c(a.textarea_obj).unbind(".grow");if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenSave")}if(a.title_id){set_title_hint(c("#"+a.title_id))}a.qt_canvas.value=a.textarea_obj.value});e.subscribe("hiding",function(){c(document.body).removeClass("fullscreen-active");scrollTo(0,a.orig_y);c("#wpadminbar").show()});e.subscribe("hidden",function(){a.visible=false;c("#wp_mce_fullscreen, #wp-fullscreen-title").removeAttr("style");if(a.has_tinymce&&a.is_mce_on){tinyMCE.execCommand("wpFullScreenClose")}a.textarea_obj.value="";b.oldheight=0;wpActiveEditor=a.editor_id});e.subscribe("switchMode",function(h,g){var f;if(!a.has_tinymce||!a.is_mce_on){return}f=tinyMCE.get("wp_mce_fullscreen");if(h==="html"&&g==="tinymce"){if(tinyMCE.get(a.editor_id).getParam("wpautop")&&typeof(switchEditors)!="undefined"){a.textarea_obj.value=switchEditors.wpautop(a.textarea_obj.value)}if("undefined"==typeof(f)){tinyMCE.execCommand("wpFullScreenInit")}else{f.show()}}else{if(h==="tinymce"&&g==="html"){if(f){f.hide()}}}});e.subscribe("switchedMode",function(g,f){b.refresh_buttons(true);if(f==="html"){setTimeout(b.resize_textarea,200)}});b.b=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Bold")}};b.i=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Italic")}};b.ul=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertUnorderedList")}};b.ol=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertOrderedList")}};b.link=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Link")}else{wpLink.open()}};b.unlink=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("unlink")}};b.atd=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceWritingImprovementTool")}};b.help=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Help")}};b.blockquote=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceBlockQuote")}};b.medialib=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Medialib")}else{var f=c("#wp-"+a.editor_id+"-media-buttons a.thickbox").attr("href")||"";if(f){tb_show("",f)}}};b.refresh_buttons=function(f){f=f||false;if(a.mode==="html"){c("#wp-fullscreen-mode-bar").removeClass("wp-tmce-mode").addClass("wp-html-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).addClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").addClass("wp-html-mode")}}else{if(a.mode==="tinymce"){c("#wp-fullscreen-mode-bar").removeClass("wp-html-mode").addClass("wp-tmce-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).removeClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").removeClass("wp-html-mode")}}}};b.ui={init:function(){var f=c("#fullscreen-topbar"),h=c("#wp_mce_fullscreen"),g=0;a.toolbars=f.add(c("#wp-fullscreen-status"));a.element=c("#fullscreen-fader");a.textarea_obj=h[0];a.has_tinymce=typeof(tinymce)!="undefined";if(!a.has_tinymce){c("#wp-fullscreen-mode-bar").hide()}if(wptitlehint&&c("#wp-fullscreen-title").length){wptitlehint("wp-fullscreen-title")}c(document).keyup(function(k){var l=k.keyCode||k.charCode,i,j;if(!fullscreen.settings.visible){return true}if(navigator.platform&&navigator.platform.indexOf("Mac")!=-1){i=k.ctrlKey}else{i=k.altKey}if(27==l){j={event:k,what:"dfw",cb:fullscreen.off,condition:function(){if(c("#TB_window").is(":visible")||c(".wp-dialog").is(":visible")){return false}return true}};if(!jQuery(document).triggerHandler("wp_CloseOnEscape",[j])){fullscreen.off()}}if(i&&(61==l||107==l||187==l)){b.dfw_width(25)}if(i&&(45==l||109==l||189==l)){b.dfw_width(-25)}if(i&&48==l){b.dfw_width(0)}return false});if(typeof(wpWordCount)!="undefined"){h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==g){return true}if(13==i||8==g||46==g){c(document).triggerHandler("wpcountwords",[h.val()])}g=i;return true})}f.mouseenter(function(i){a.toolbars.addClass("fullscreen-make-sticky");c(document).unbind(".fullscreen");clearTimeout(a.timer);a.timer=0}).mouseleave(function(i){a.toolbars.removeClass("fullscreen-make-sticky");if(a.visible){c(document).bind("mousemove.fullscreen",function(j){d("showToolbar","hideToolbar",2000,j)})}})},fade:function(g,f,h){if(!a.element){b.ui.init()}if(g&&!e.publish(g)){return}b.fade.In(a.element,600,function(){if(f){e.publish(f)}b.fade.Out(a.element,600,function(){if(h){e.publish(h)}})})}};b.fade={transitionend:"transitionend webkitTransitionEnd oTransitionEnd",sensitivity:100,In:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(b.fade.transitions){if(g.is(":visible")){g.addClass("fade-trigger");return g}g.show();g.first().one(this.transitionend,function(){i()});setTimeout(function(){g.addClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.css("opacity",1);g.first().fadeIn(h,i);if(g.length>1){g.not(":first").fadeIn(h)}}return g},Out:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(!g.is(":visible")){return g}if(b.fade.transitions){g.first().one(b.fade.transitionend,function(){if(g.hasClass("fade-trigger")){return}g.hide();i()});setTimeout(function(){g.removeClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.first().fadeOut(h,i);if(g.length>1){g.not(":first").fadeOut(h)}}return g},transitions:(function(){var f=document.documentElement.style;return(typeof(f.WebkitTransition)=="string"||typeof(f.MozTransition)=="string"||typeof(f.OTransition)=="string"||typeof(f.transition)=="string")})()};b.bind_resize=function(){c(a.textarea_obj).bind("keypress.grow click.grow paste.grow",function(){setTimeout(b.resize_textarea,200)})};b.oldheight=0;b.resize_textarea=function(){var f=a.textarea_obj,g;g=f.scrollHeight>300?f.scrollHeight:300;if(g!=b.oldheight){f.style.height=g+"px";b.oldheight=g}}})(jQuery);
\ No newline at end of file
+/**
+ * PubSub
+ *
+ * A lightweight publish/subscribe implementation.
+ * Private use only!
+ */
+var PubSub, fullscreen, wptitlehint;
+
+PubSub = function() {
+       this.topics = {};
+};
+
+PubSub.prototype.subscribe = function( topic, callback ) {
+       if ( ! this.topics[ topic ] )
+               this.topics[ topic ] = [];
+
+       this.topics[ topic ].push( callback );
+       return callback;
+};
+
+PubSub.prototype.unsubscribe = function( topic, callback ) {
+       var i, l,
+               topics = this.topics[ topic ];
+
+       if ( ! topics )
+               return callback || [];
+
+       // Clear matching callbacks
+       if ( callback ) {
+               for ( i = 0, l = topics.length; i < l; i++ ) {
+                       if ( callback == topics[i] )
+                               topics.splice( i, 1 );
+               }
+               return callback;
+
+       // Clear all callbacks
+       } else {
+               this.topics[ topic ] = [];
+               return topics;
+       }
+};
+
+PubSub.prototype.publish = function( topic, args ) {
+       var i, l, broken,
+               topics = this.topics[ topic ];
+
+       if ( ! topics )
+               return;
+
+       args = args || [];
+
+       for ( i = 0, l = topics.length; i < l; i++ ) {
+               broken = ( topics[i].apply( null, args ) === false || broken );
+       }
+       return ! broken;
+};
+
+/**
+ * Distraction Free Writing
+ * (wp-fullscreen)
+ *
+ * Access the API globally using the fullscreen variable.
+ */
+
+(function($){
+       var api, ps, bounder, s;
+
+       // Initialize the fullscreen/api object
+       fullscreen = api = {};
+
+       // Create the PubSub (publish/subscribe) interface.
+       ps = api.pubsub = new PubSub();
+       timer = 0;
+       block = false;
+
+       s = api.settings = { // Settings
+               visible : false,
+               mode : 'tinymce',
+               editor_id : 'content',
+               title_id : '',
+               timer : 0,
+               toolbar_shown : false
+       }
+
+       /**
+        * Bounder
+        *
+        * Creates a function that publishes start/stop topics.
+        * Used to throttle events.
+        */
+       bounder = api.bounder = function( start, stop, delay, e ) {
+               var y, top;
+
+               delay = delay || 1250;
+
+               if ( e ) {
+                       y = e.pageY || e.clientY || e.offsetY;
+                       top = $(document).scrollTop();
+
+                       if ( !e.isDefaultPrevented ) // test if e ic jQuery normalized
+                               y = 135 + y;
+
+                       if ( y - top > 120 )
+                               return;
+               }
+
+               if ( block )
+                       return;
+
+               block = true;
+
+               setTimeout( function() {
+                       block = false;
+               }, 400 );
+
+               if ( s.timer )
+                       clearTimeout( s.timer );
+               else
+                       ps.publish( start );
+
+               function timed() {
+                       ps.publish( stop );
+                       s.timer = 0;
+               }
+
+               s.timer = setTimeout( timed, delay );
+       };
+
+       /**
+        * on()
+        *
+        * Turns fullscreen on.
+        *
+        * @param string mode Optional. Switch to the given mode before opening.
+        */
+       api.on = function() {
+               if ( s.visible )
+                       return;
+
+               // Settings can be added or changed by defining "wp_fullscreen_settings" JS object.
+               if ( typeof(wp_fullscreen_settings) == 'object' )
+                       $.extend( s, wp_fullscreen_settings );
+
+               s.editor_id = wpActiveEditor || 'content';
+
+               if ( $('input#title').length && s.editor_id == 'content' )
+                       s.title_id = 'title';
+               else if ( $('input#' + s.editor_id + '-title').length ) // the title input field should have [editor_id]-title HTML ID to be auto detected
+                       s.title_id = s.editor_id + '-title';
+               else
+                       $('#wp-fullscreen-title, #wp-fullscreen-title-prompt-text').hide();
+
+               s.mode = $('#' + s.editor_id).is(':hidden') ? 'tinymce' : 'html';
+               s.qt_canvas = $('#' + s.editor_id).get(0);
+
+               if ( ! s.element )
+                       api.ui.init();
+
+               s.is_mce_on = s.has_tinymce && typeof( tinyMCE.get(s.editor_id) ) != 'undefined';
+
+               api.ui.fade( 'show', 'showing', 'shown' );
+       };
+
+       /**
+        * off()
+        *
+        * Turns fullscreen off.
+        */
+       api.off = function() {
+               if ( ! s.visible )
+                       return;
+
+               api.ui.fade( 'hide', 'hiding', 'hidden' );
+       };
+
+       /**
+        * switchmode()
+        *
+        * @return string - The current mode.
+        *
+        * @param string to - The fullscreen mode to switch to.
+        * @event switchMode
+        * @eventparam string to   - The new mode.
+        * @eventparam string from - The old mode.
+        */
+       api.switchmode = function( to ) {
+               var from = s.mode;
+
+               if ( ! to || ! s.visible || ! s.has_tinymce )
+                       return from;
+
+               // Don't switch if the mode is the same.
+               if ( from == to )
+                       return from;
+
+               ps.publish( 'switchMode', [ from, to ] );
+               s.mode = to;
+               ps.publish( 'switchedMode', [ from, to ] );
+
+               return to;
+       };
+
+       /**
+        * General
+        */
+
+       api.save = function() {
+               var hidden = $('#hiddenaction'), old = hidden.val(), spinner = $('#wp-fullscreen-save .spinner'),
+                       message = $('#wp-fullscreen-save span');
+
+               spinner.show();
+               api.savecontent();
+
+               hidden.val('wp-fullscreen-save-post');
+
+               $.post( ajaxurl, $('form#post').serialize(), function(r){
+                       spinner.hide();
+                       message.show();
+
+                       setTimeout( function(){
+                               message.fadeOut(1000);
+                       }, 3000 );
+
+                       if ( r.last_edited )
+                               $('#wp-fullscreen-save input').attr( 'title',  r.last_edited );
+
+               }, 'json');
+
+               hidden.val(old);
+       }
+
+       api.savecontent = function() {
+               var ed, content;
+
+               if ( s.title_id )
+                       $('#' + s.title_id).val( $('#wp-fullscreen-title').val() );
+
+               if ( s.mode === 'tinymce' && (ed = tinyMCE.get('wp_mce_fullscreen')) ) {
+                       content = ed.save();
+               } else {
+                       content = $('#wp_mce_fullscreen').val();
+               }
+
+               $('#' + s.editor_id).val( content );
+               $(document).triggerHandler('wpcountwords', [ content ]);
+       }
+
+       set_title_hint = function( title ) {
+               if ( ! title.val().length )
+                       title.siblings('label').css( 'visibility', '' );
+               else
+                       title.siblings('label').css( 'visibility', 'hidden' );
+       }
+
+       api.dfw_width = function(n) {
+               var el = $('#wp-fullscreen-wrap'), w = el.width();
+
+               if ( !n ) { // reset to theme width
+                       el.width( $('#wp-fullscreen-central-toolbar').width() );
+                       deleteUserSetting('dfw_width');
+                       return;
+               }
+
+               w = n + w;
+
+               if ( w < 200 || w > 1200 ) // sanity check
+                       return;
+
+               el.width( w );
+               setUserSetting('dfw_width', w);
+       }
+
+       ps.subscribe( 'showToolbar', function() {
+               s.toolbars.removeClass('fade-1000').addClass('fade-300');
+               api.fade.In( s.toolbars, 300, function(){ ps.publish('toolbarShown'); }, true );
+               $('#wp-fullscreen-body').addClass('wp-fullscreen-focus');
+               s.toolbar_shown = true;
+       });
+
+       ps.subscribe( 'hideToolbar', function() {
+               s.toolbars.removeClass('fade-300').addClass('fade-1000');
+               api.fade.Out( s.toolbars, 1000, function(){ ps.publish('toolbarHidden'); }, true );
+               $('#wp-fullscreen-body').removeClass('wp-fullscreen-focus');
+       });
+
+       ps.subscribe( 'toolbarShown', function() {
+               s.toolbars.removeClass('fade-300');
+       });
+
+       ps.subscribe( 'toolbarHidden', function() {
+               s.toolbars.removeClass('fade-1000');
+               s.toolbar_shown = false;
+       });
+
+       ps.subscribe( 'show', function() { // This event occurs before the overlay blocks the UI.
+               var title;
+
+               if ( s.title_id ) {
+                       title = $('#wp-fullscreen-title').val( $('#' + s.title_id).val() );
+                       set_title_hint( title );
+               }
+
+               $('#wp-fullscreen-save input').attr( 'title',  $('#last-edit').text() );
+
+               s.textarea_obj.value = s.qt_canvas.value;
+
+               if ( s.has_tinymce && s.mode === 'tinymce' )
+                       tinyMCE.execCommand('wpFullScreenInit');
+
+               s.orig_y = $(window).scrollTop();
+       });
+
+       ps.subscribe( 'showing', function() { // This event occurs while the DFW overlay blocks the UI.
+               $( document.body ).addClass( 'fullscreen-active' );
+               api.refresh_buttons();
+
+               $( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
+               bounder( 'showToolbar', 'hideToolbar', 2000 );
+
+               api.bind_resize();
+               setTimeout( api.resize_textarea, 200 );
+
+               // scroll to top so the user is not disoriented
+               scrollTo(0, 0);
+
+               // needed it for IE7 and compat mode
+               $('#wpadminbar').hide();
+       });
+
+       ps.subscribe( 'shown', function() { // This event occurs after the DFW overlay is shown
+               var interim_init;
+
+               s.visible = true;
+
+               // init the standard TinyMCE instance if missing
+               if ( s.has_tinymce && ! s.is_mce_on ) {
+
+                       interim_init = function(mce, ed) {
+                               var el = ed.getElement(), old_val = el.value, settings = tinyMCEPreInit.mceInit[s.editor_id];
+
+                               if ( settings && settings.wpautop && typeof(switchEditors) != 'undefined' )
+                                       el.value = switchEditors.wpautop( el.value );
+
+                               ed.onInit.add(function(ed) {
+                                       ed.hide();
+                                       ed.getElement().value = old_val;
+                                       tinymce.onAddEditor.remove(interim_init);
+                               });
+                       };
+
+                       tinymce.onAddEditor.add(interim_init);
+                       tinyMCE.init(tinyMCEPreInit.mceInit[s.editor_id]);
+
+                       s.is_mce_on = true;
+               }
+
+               wpActiveEditor = 'wp_mce_fullscreen';
+       });
+
+       ps.subscribe( 'hide', function() { // This event occurs before the overlay blocks DFW.
+               var htmled_is_hidden = $('#' + s.editor_id).is(':hidden');
+               // Make sure the correct editor is displaying.
+               if ( s.has_tinymce && s.mode === 'tinymce' && !htmled_is_hidden ) {
+                       switchEditors.go(s.editor_id, 'tmce');
+               } else if ( s.mode === 'html' && htmled_is_hidden ) {
+                       switchEditors.go(s.editor_id, 'html');
+               }
+
+               // Save content must be after switchEditors or content will be overwritten. See #17229.
+               api.savecontent();
+
+               $( document ).unbind( '.fullscreen' );
+               $(s.textarea_obj).unbind('.grow');
+
+               if ( s.has_tinymce && s.mode === 'tinymce' )
+                       tinyMCE.execCommand('wpFullScreenSave');
+
+               if ( s.title_id )
+                       set_title_hint( $('#' + s.title_id) );
+
+               s.qt_canvas.value = s.textarea_obj.value;
+       });
+
+       ps.subscribe( 'hiding', function() { // This event occurs while the overlay blocks the DFW UI.
+
+               $( document.body ).removeClass( 'fullscreen-active' );
+               scrollTo(0, s.orig_y);
+               $('#wpadminbar').show();
+       });
+
+       ps.subscribe( 'hidden', function() { // This event occurs after DFW is removed.
+               s.visible = false;
+               $('#wp_mce_fullscreen, #wp-fullscreen-title').removeAttr('style');
+
+               if ( s.has_tinymce && s.is_mce_on )
+                       tinyMCE.execCommand('wpFullScreenClose');
+
+               s.textarea_obj.value = '';
+               api.oldheight = 0;
+               wpActiveEditor = s.editor_id;
+       });
+
+       ps.subscribe( 'switchMode', function( from, to ) {
+               var ed;
+
+               if ( !s.has_tinymce || !s.is_mce_on )
+                       return;
+
+               ed = tinyMCE.get('wp_mce_fullscreen');
+
+               if ( from === 'html' && to === 'tinymce' ) {
+
+                       if ( tinyMCE.get(s.editor_id).getParam('wpautop') && typeof(switchEditors) != 'undefined' )
+                               s.textarea_obj.value = switchEditors.wpautop( s.textarea_obj.value );
+
+                       if ( 'undefined' == typeof(ed) )
+                               tinyMCE.execCommand('wpFullScreenInit');
+                       else
+                               ed.show();
+
+               } else if ( from === 'tinymce' && to === 'html' ) {
+                       if ( ed )
+                               ed.hide();
+               }
+       });
+
+       ps.subscribe( 'switchedMode', function( from, to ) {
+               api.refresh_buttons(true);
+
+               if ( to === 'html' )
+                       setTimeout( api.resize_textarea, 200 );
+       });
+
+       /**
+        * Buttons
+        */
+       api.b = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('Bold');
+       }
+
+       api.i = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('Italic');
+       }
+
+       api.ul = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('InsertUnorderedList');
+       }
+
+       api.ol = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('InsertOrderedList');
+       }
+
+       api.link = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('WP_Link');
+               else
+                       wpLink.open();
+       }
+
+       api.unlink = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('unlink');
+       }
+
+       api.atd = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('mceWritingImprovementTool');
+       }
+
+       api.help = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('WP_Help');
+       }
+
+       api.blockquote = function() {
+               if ( s.has_tinymce && 'tinymce' === s.mode )
+                       tinyMCE.execCommand('mceBlockQuote');
+       }
+
+       api.medialib = function() {
+               if ( typeof wp !== 'undefined' && wp.media && wp.media.editor )
+                       wp.media.editor.open(s.editor_id);
+       }
+
+       api.refresh_buttons = function( fade ) {
+               fade = fade || false;
+
+               if ( s.mode === 'html' ) {
+                       $('#wp-fullscreen-mode-bar').removeClass('wp-tmce-mode').addClass('wp-html-mode');
+
+                       if ( fade )
+                               $('#wp-fullscreen-button-bar').fadeOut( 150, function(){
+                                       $(this).addClass('wp-html-mode').fadeIn( 150 );
+                               });
+                       else
+                               $('#wp-fullscreen-button-bar').addClass('wp-html-mode');
+
+               } else if ( s.mode === 'tinymce' ) {
+                       $('#wp-fullscreen-mode-bar').removeClass('wp-html-mode').addClass('wp-tmce-mode');
+
+                       if ( fade )
+                               $('#wp-fullscreen-button-bar').fadeOut( 150, function(){
+                                       $(this).removeClass('wp-html-mode').fadeIn( 150 );
+                               });
+                       else
+                               $('#wp-fullscreen-button-bar').removeClass('wp-html-mode');
+               }
+       }
+
+       /**
+        * UI Elements
+        *
+        * Used for transitioning between states.
+        */
+       api.ui = {
+               init: function() {
+                       var topbar = $('#fullscreen-topbar'), txtarea = $('#wp_mce_fullscreen'), last = 0;
+
+                       s.toolbars = topbar.add( $('#wp-fullscreen-status') );
+                       s.element = $('#fullscreen-fader');
+                       s.textarea_obj = txtarea[0];
+                       s.has_tinymce = typeof(tinymce) != 'undefined';
+
+                       if ( !s.has_tinymce )
+                               $('#wp-fullscreen-mode-bar').hide();
+
+                       if ( wptitlehint && $('#wp-fullscreen-title').length )
+                               wptitlehint('wp-fullscreen-title');
+
+                       $(document).keyup(function(e){
+                               var c = e.keyCode || e.charCode, a, data;
+
+                               if ( !fullscreen.settings.visible )
+                                       return true;
+
+                               if ( navigator.platform && navigator.platform.indexOf('Mac') != -1 )
+                                       a = e.ctrlKey; // Ctrl key for Mac
+                               else
+                                       a = e.altKey; // Alt key for Win & Linux
+
+                               if ( 27 == c ) { // Esc
+                                       data = {
+                                               event: e,
+                                               what: 'dfw',
+                                               cb: fullscreen.off,
+                                               condition: function(){
+                                                       if ( $('#TB_window').is(':visible') || $('.wp-dialog').is(':visible') )
+                                                               return false;
+                                                       return true;
+                                               }
+                                       };
+
+                                       if ( ! jQuery(document).triggerHandler( 'wp_CloseOnEscape', [data] ) )
+                                               fullscreen.off();
+                               }
+
+                               if ( a && (61 == c || 107 == c || 187 == c) ) // +
+                                       api.dfw_width(25);
+
+                               if ( a && (45 == c || 109 == c || 189 == c) ) // -
+                                       api.dfw_width(-25);
+
+                               if ( a && 48 == c ) // 0
+                                       api.dfw_width(0);
+
+                               return false;
+                       });
+
+                       // word count in Text mode
+                       if ( typeof(wpWordCount) != 'undefined' ) {
+
+                               txtarea.keyup( function(e) {
+                                       var k = e.keyCode || e.charCode;
+
+                                       if ( k == last )
+                                               return true;
+
+                                       if ( 13 == k || 8 == last || 46 == last )
+                                               $(document).triggerHandler('wpcountwords', [ txtarea.val() ]);
+
+                                       last = k;
+                                       return true;
+                               });
+                       }
+
+                       topbar.mouseenter(function(e){
+                               s.toolbars.addClass('fullscreen-make-sticky');
+                               $( document ).unbind( '.fullscreen' );
+                               clearTimeout( s.timer );
+                               s.timer = 0;
+                       }).mouseleave(function(e){
+                               s.toolbars.removeClass('fullscreen-make-sticky');
+
+                               if ( s.visible )
+                                       $( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
+                       });
+               },
+
+               fade: function( before, during, after ) {
+                       if ( ! s.element )
+                               api.ui.init();
+
+                       // If any callback bound to before returns false, bail.
+                       if ( before && ! ps.publish( before ) )
+                               return;
+
+                       api.fade.In( s.element, 600, function() {
+                               if ( during )
+                                       ps.publish( during );
+
+                               api.fade.Out( s.element, 600, function() {
+                                       if ( after )
+                                               ps.publish( after );
+                               })
+                       });
+               }
+       };
+
+       api.fade = {
+               transitionend: 'transitionend webkitTransitionEnd oTransitionEnd',
+
+               // Sensitivity to allow browsers to render the blank element before animating.
+               sensitivity: 100,
+
+               In: function( element, speed, callback, stop ) {
+
+                       callback = callback || $.noop;
+                       speed = speed || 400;
+                       stop = stop || false;
+
+                       if ( api.fade.transitions ) {
+                               if ( element.is(':visible') ) {
+                                       element.addClass( 'fade-trigger' );
+                                       return element;
+                               }
+
+                               element.show();
+                               element.first().one( this.transitionend, function() {
+                                       callback();
+                               });
+                               setTimeout( function() { element.addClass( 'fade-trigger' ); }, this.sensitivity );
+                       } else {
+                               if ( stop )
+                                       element.stop();
+
+                               element.css( 'opacity', 1 );
+                               element.first().fadeIn( speed, callback );
+
+                               if ( element.length > 1 )
+                                       element.not(':first').fadeIn( speed );
+                       }
+
+                       return element;
+               },
+
+               Out: function( element, speed, callback, stop ) {
+
+                       callback = callback || $.noop;
+                       speed = speed || 400;
+                       stop = stop || false;
+
+                       if ( ! element.is(':visible') )
+                               return element;
+
+                       if ( api.fade.transitions ) {
+                               element.first().one( api.fade.transitionend, function() {
+                                       if ( element.hasClass('fade-trigger') )
+                                               return;
+
+                                       element.hide();
+                                       callback();
+                               });
+                               setTimeout( function() { element.removeClass( 'fade-trigger' ); }, this.sensitivity );
+                       } else {
+                               if ( stop )
+                                       element.stop();
+
+                               element.first().fadeOut( speed, callback );
+
+                               if ( element.length > 1 )
+                                       element.not(':first').fadeOut( speed );
+                       }
+
+                       return element;
+               },
+
+               transitions: (function() { // Check if the browser supports CSS 3.0 transitions
+                       var s = document.documentElement.style;
+
+                       return ( typeof ( s.WebkitTransition ) == 'string' ||
+                               typeof ( s.MozTransition ) == 'string' ||
+                               typeof ( s.OTransition ) == 'string' ||
+                               typeof ( s.transition ) == 'string' );
+               })()
+       };
+
+       /**
+        * Resize API
+        *
+        * Automatically updates textarea height.
+        */
+
+       api.bind_resize = function() {
+               $(s.textarea_obj).bind('keypress.grow click.grow paste.grow', function(){
+                       setTimeout( api.resize_textarea, 200 );
+               });
+       }
+
+       api.oldheight = 0;
+       api.resize_textarea = function() {
+               var txt = s.textarea_obj, newheight;
+
+               newheight = txt.scrollHeight > 300 ? txt.scrollHeight : 300;
+
+               if ( newheight != api.oldheight ) {
+                       txt.style.height = newheight + 'px';
+                       api.oldheight = newheight;
+               }
+       };
+
+})(jQuery);
diff --git a/wp-admin/js/wp-fullscreen.min.js b/wp-admin/js/wp-fullscreen.min.js
new file mode 100644 (file)
index 0000000..c1a317f
--- /dev/null
@@ -0,0 +1 @@
+var PubSub,fullscreen,wptitlehint;PubSub=function(){this.topics={}};PubSub.prototype.subscribe=function(a,b){if(!this.topics[a]){this.topics[a]=[]}this.topics[a].push(b);return b};PubSub.prototype.unsubscribe=function(b,e){var c,a,d=this.topics[b];if(!d){return e||[]}if(e){for(c=0,a=d.length;c<a;c++){if(e==d[c]){d.splice(c,1)}}return e}else{this.topics[b]=[];return d}};PubSub.prototype.publish=function(c,b){var d,a,e,f=this.topics[c];if(!f){return}b=b||[];for(d=0,a=f.length;d<a;d++){e=(f[d].apply(null,b)===false||e)}return !e};(function(c){var b,e,d,a;fullscreen=b={};e=b.pubsub=new PubSub();timer=0;block=false;a=b.settings={visible:false,mode:"tinymce",editor_id:"content",title_id:"",timer:0,toolbar_shown:false};d=b.bounder=function(l,h,g,j){var k,i;g=g||1250;if(j){k=j.pageY||j.clientY||j.offsetY;i=c(document).scrollTop();if(!j.isDefaultPrevented){k=135+k}if(k-i>120){return}}if(block){return}block=true;setTimeout(function(){block=false},400);if(a.timer){clearTimeout(a.timer)}else{e.publish(l)}function f(){e.publish(h);a.timer=0}a.timer=setTimeout(f,g)};b.on=function(){if(a.visible){return}if(typeof(wp_fullscreen_settings)=="object"){c.extend(a,wp_fullscreen_settings)}a.editor_id=wpActiveEditor||"content";if(c("input#title").length&&a.editor_id=="content"){a.title_id="title"}else{if(c("input#"+a.editor_id+"-title").length){a.title_id=a.editor_id+"-title"}else{c("#wp-fullscreen-title, #wp-fullscreen-title-prompt-text").hide()}}a.mode=c("#"+a.editor_id).is(":hidden")?"tinymce":"html";a.qt_canvas=c("#"+a.editor_id).get(0);if(!a.element){b.ui.init()}a.is_mce_on=a.has_tinymce&&typeof(tinyMCE.get(a.editor_id))!="undefined";b.ui.fade("show","showing","shown")};b.off=function(){if(!a.visible){return}b.ui.fade("hide","hiding","hidden")};b.switchmode=function(g){var f=a.mode;if(!g||!a.visible||!a.has_tinymce){return f}if(f==g){return f}e.publish("switchMode",[f,g]);a.mode=g;e.publish("switchedMode",[f,g]);return g};b.save=function(){var h=c("#hiddenaction"),f=h.val(),i=c("#wp-fullscreen-save .spinner"),g=c("#wp-fullscreen-save span");i.show();b.savecontent();h.val("wp-fullscreen-save-post");c.post(ajaxurl,c("form#post").serialize(),function(j){i.hide();g.show();setTimeout(function(){g.fadeOut(1000)},3000);if(j.last_edited){c("#wp-fullscreen-save input").attr("title",j.last_edited)}},"json");h.val(f)};b.savecontent=function(){var f,g;if(a.title_id){c("#"+a.title_id).val(c("#wp-fullscreen-title").val())}if(a.mode==="tinymce"&&(f=tinyMCE.get("wp_mce_fullscreen"))){g=f.save()}else{g=c("#wp_mce_fullscreen").val()}c("#"+a.editor_id).val(g);c(document).triggerHandler("wpcountwords",[g])};set_title_hint=function(f){if(!f.val().length){f.siblings("label").css("visibility","")}else{f.siblings("label").css("visibility","hidden")}};b.dfw_width=function(h){var g=c("#wp-fullscreen-wrap"),f=g.width();if(!h){g.width(c("#wp-fullscreen-central-toolbar").width());deleteUserSetting("dfw_width");return}f=h+f;if(f<200||f>1200){return}g.width(f);setUserSetting("dfw_width",f)};e.subscribe("showToolbar",function(){a.toolbars.removeClass("fade-1000").addClass("fade-300");b.fade.In(a.toolbars,300,function(){e.publish("toolbarShown")},true);c("#wp-fullscreen-body").addClass("wp-fullscreen-focus");a.toolbar_shown=true});e.subscribe("hideToolbar",function(){a.toolbars.removeClass("fade-300").addClass("fade-1000");b.fade.Out(a.toolbars,1000,function(){e.publish("toolbarHidden")},true);c("#wp-fullscreen-body").removeClass("wp-fullscreen-focus")});e.subscribe("toolbarShown",function(){a.toolbars.removeClass("fade-300")});e.subscribe("toolbarHidden",function(){a.toolbars.removeClass("fade-1000");a.toolbar_shown=false});e.subscribe("show",function(){var f;if(a.title_id){f=c("#wp-fullscreen-title").val(c("#"+a.title_id).val());set_title_hint(f)}c("#wp-fullscreen-save input").attr("title",c("#last-edit").text());a.textarea_obj.value=a.qt_canvas.value;if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenInit")}a.orig_y=c(window).scrollTop()});e.subscribe("showing",function(){c(document.body).addClass("fullscreen-active");b.refresh_buttons();c(document).bind("mousemove.fullscreen",function(f){d("showToolbar","hideToolbar",2000,f)});d("showToolbar","hideToolbar",2000);b.bind_resize();setTimeout(b.resize_textarea,200);scrollTo(0,0);c("#wpadminbar").hide()});e.subscribe("shown",function(){var f;a.visible=true;if(a.has_tinymce&&!a.is_mce_on){f=function(g,h){var k=h.getElement(),i=k.value,j=tinyMCEPreInit.mceInit[a.editor_id];if(j&&j.wpautop&&typeof(switchEditors)!="undefined"){k.value=switchEditors.wpautop(k.value)}h.onInit.add(function(l){l.hide();l.getElement().value=i;tinymce.onAddEditor.remove(f)})};tinymce.onAddEditor.add(f);tinyMCE.init(tinyMCEPreInit.mceInit[a.editor_id]);a.is_mce_on=true}wpActiveEditor="wp_mce_fullscreen"});e.subscribe("hide",function(){var f=c("#"+a.editor_id).is(":hidden");if(a.has_tinymce&&a.mode==="tinymce"&&!f){switchEditors.go(a.editor_id,"tmce")}else{if(a.mode==="html"&&f){switchEditors.go(a.editor_id,"html")}}b.savecontent();c(document).unbind(".fullscreen");c(a.textarea_obj).unbind(".grow");if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenSave")}if(a.title_id){set_title_hint(c("#"+a.title_id))}a.qt_canvas.value=a.textarea_obj.value});e.subscribe("hiding",function(){c(document.body).removeClass("fullscreen-active");scrollTo(0,a.orig_y);c("#wpadminbar").show()});e.subscribe("hidden",function(){a.visible=false;c("#wp_mce_fullscreen, #wp-fullscreen-title").removeAttr("style");if(a.has_tinymce&&a.is_mce_on){tinyMCE.execCommand("wpFullScreenClose")}a.textarea_obj.value="";b.oldheight=0;wpActiveEditor=a.editor_id});e.subscribe("switchMode",function(h,g){var f;if(!a.has_tinymce||!a.is_mce_on){return}f=tinyMCE.get("wp_mce_fullscreen");if(h==="html"&&g==="tinymce"){if(tinyMCE.get(a.editor_id).getParam("wpautop")&&typeof(switchEditors)!="undefined"){a.textarea_obj.value=switchEditors.wpautop(a.textarea_obj.value)}if("undefined"==typeof(f)){tinyMCE.execCommand("wpFullScreenInit")}else{f.show()}}else{if(h==="tinymce"&&g==="html"){if(f){f.hide()}}}});e.subscribe("switchedMode",function(g,f){b.refresh_buttons(true);if(f==="html"){setTimeout(b.resize_textarea,200)}});b.b=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Bold")}};b.i=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Italic")}};b.ul=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertUnorderedList")}};b.ol=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertOrderedList")}};b.link=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Link")}else{wpLink.open()}};b.unlink=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("unlink")}};b.atd=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceWritingImprovementTool")}};b.help=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Help")}};b.blockquote=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceBlockQuote")}};b.medialib=function(){if(typeof wp!=="undefined"&&wp.media&&wp.media.editor){wp.media.editor.open(a.editor_id)}};b.refresh_buttons=function(f){f=f||false;if(a.mode==="html"){c("#wp-fullscreen-mode-bar").removeClass("wp-tmce-mode").addClass("wp-html-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).addClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").addClass("wp-html-mode")}}else{if(a.mode==="tinymce"){c("#wp-fullscreen-mode-bar").removeClass("wp-html-mode").addClass("wp-tmce-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).removeClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").removeClass("wp-html-mode")}}}};b.ui={init:function(){var f=c("#fullscreen-topbar"),h=c("#wp_mce_fullscreen"),g=0;a.toolbars=f.add(c("#wp-fullscreen-status"));a.element=c("#fullscreen-fader");a.textarea_obj=h[0];a.has_tinymce=typeof(tinymce)!="undefined";if(!a.has_tinymce){c("#wp-fullscreen-mode-bar").hide()}if(wptitlehint&&c("#wp-fullscreen-title").length){wptitlehint("wp-fullscreen-title")}c(document).keyup(function(k){var l=k.keyCode||k.charCode,i,j;if(!fullscreen.settings.visible){return true}if(navigator.platform&&navigator.platform.indexOf("Mac")!=-1){i=k.ctrlKey}else{i=k.altKey}if(27==l){j={event:k,what:"dfw",cb:fullscreen.off,condition:function(){if(c("#TB_window").is(":visible")||c(".wp-dialog").is(":visible")){return false}return true}};if(!jQuery(document).triggerHandler("wp_CloseOnEscape",[j])){fullscreen.off()}}if(i&&(61==l||107==l||187==l)){b.dfw_width(25)}if(i&&(45==l||109==l||189==l)){b.dfw_width(-25)}if(i&&48==l){b.dfw_width(0)}return false});if(typeof(wpWordCount)!="undefined"){h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==g){return true}if(13==i||8==g||46==g){c(document).triggerHandler("wpcountwords",[h.val()])}g=i;return true})}f.mouseenter(function(i){a.toolbars.addClass("fullscreen-make-sticky");c(document).unbind(".fullscreen");clearTimeout(a.timer);a.timer=0}).mouseleave(function(i){a.toolbars.removeClass("fullscreen-make-sticky");if(a.visible){c(document).bind("mousemove.fullscreen",function(j){d("showToolbar","hideToolbar",2000,j)})}})},fade:function(g,f,h){if(!a.element){b.ui.init()}if(g&&!e.publish(g)){return}b.fade.In(a.element,600,function(){if(f){e.publish(f)}b.fade.Out(a.element,600,function(){if(h){e.publish(h)}})})}};b.fade={transitionend:"transitionend webkitTransitionEnd oTransitionEnd",sensitivity:100,In:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(b.fade.transitions){if(g.is(":visible")){g.addClass("fade-trigger");return g}g.show();g.first().one(this.transitionend,function(){i()});setTimeout(function(){g.addClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.css("opacity",1);g.first().fadeIn(h,i);if(g.length>1){g.not(":first").fadeIn(h)}}return g},Out:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(!g.is(":visible")){return g}if(b.fade.transitions){g.first().one(b.fade.transitionend,function(){if(g.hasClass("fade-trigger")){return}g.hide();i()});setTimeout(function(){g.removeClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.first().fadeOut(h,i);if(g.length>1){g.not(":first").fadeOut(h)}}return g},transitions:(function(){var f=document.documentElement.style;return(typeof(f.WebkitTransition)=="string"||typeof(f.MozTransition)=="string"||typeof(f.OTransition)=="string"||typeof(f.transition)=="string")})()};b.bind_resize=function(){c(a.textarea_obj).bind("keypress.grow click.grow paste.grow",function(){setTimeout(b.resize_textarea,200)})};b.oldheight=0;b.resize_textarea=function(){var f=a.textarea_obj,g;g=f.scrollHeight>300?f.scrollHeight:300;if(g!=b.oldheight){f.style.height=g+"px";b.oldheight=g}}})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/xfn.dev.js b/wp-admin/js/xfn.dev.js
deleted file mode 100644 (file)
index 6136db5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-jQuery(document).ready( function($) {
-       $('#link_rel').prop('readonly', true);
-       $('#linkxfndiv input').bind('click keyup', function() {
-               var isMe = $('#me').is(':checked'), inputs = '';
-               $('input.valinp').each( function() {
-                       if (isMe) {
-                               $(this).prop('disabled', true).parent().addClass('disabled');
-                       } else {
-                               $(this).removeAttr('disabled').parent().removeClass('disabled');
-                               if ( $(this).is(':checked') && $(this).val() != '')
-                                       inputs += $(this).val() + ' ';
-                       }
-               });
-               $('#link_rel').val( (isMe) ? 'me' : inputs.substr(0,inputs.length - 1) );
-       });
-});
index c9b7597c8849fbc6718b0c1ce75c5f7b1ba94dcf..6136db535f9ef7d757449a5e96843aa9606a7530 100644 (file)
@@ -1 +1,16 @@
-jQuery(document).ready(function(a){a("#link_rel").prop("readonly",true);a("#linkxfndiv input").bind("click keyup",function(){var c=a("#me").is(":checked"),b="";a("input.valinp").each(function(){if(c){a(this).prop("disabled",true).parent().addClass("disabled")}else{a(this).removeAttr("disabled").parent().removeClass("disabled");if(a(this).is(":checked")&&a(this).val()!=""){b+=a(this).val()+" "}}});a("#link_rel").val((c)?"me":b.substr(0,b.length-1))})});
\ No newline at end of file
+jQuery(document).ready( function($) {
+       $('#link_rel').prop('readonly', true);
+       $('#linkxfndiv input').bind('click keyup', function() {
+               var isMe = $('#me').is(':checked'), inputs = '';
+               $('input.valinp').each( function() {
+                       if (isMe) {
+                               $(this).prop('disabled', true).parent().addClass('disabled');
+                       } else {
+                               $(this).removeAttr('disabled').parent().removeClass('disabled');
+                               if ( $(this).is(':checked') && $(this).val() != '')
+                                       inputs += $(this).val() + ' ';
+                       }
+               });
+               $('#link_rel').val( (isMe) ? 'me' : inputs.substr(0,inputs.length - 1) );
+       });
+});
diff --git a/wp-admin/js/xfn.min.js b/wp-admin/js/xfn.min.js
new file mode 100644 (file)
index 0000000..c9b7597
--- /dev/null
@@ -0,0 +1 @@
+jQuery(document).ready(function(a){a("#link_rel").prop("readonly",true);a("#linkxfndiv input").bind("click keyup",function(){var c=a("#me").is(":checked"),b="";a("input.valinp").each(function(){if(c){a(this).prop("disabled",true).parent().addClass("disabled")}else{a(this).removeAttr("disabled").parent().removeClass("disabled");if(a(this).is(":checked")&&a(this).val()!=""){b+=a(this).val()+" "}}});a("#link_rel").val((c)?"me":b.substr(0,b.length-1))})});
\ No newline at end of file
index 9e2d6a86a6bf536b1e8f37198264c0b861f16d2e..d12d229ed83fe22f05f399289fc9c2d2a5c0e36e 100644 (file)
@@ -15,7 +15,7 @@ require_once ('admin.php');
 wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]'));
 
 if ( ! current_user_can('manage_links') )
-       wp_die( __('You do not have sufficient permissions to edit the links for this site.') );
+       wp_link_manager_disabled_message();
 
 if ( !empty($_POST['deletebookmarks']) )
        $action = 'deletebookmarks';
index 8cdb9f7ee058fb9e41819d5c11dccf0e6ff6ce4e..4d185ed53627751e83decc4f402a12a72f9b8867 100644 (file)
@@ -114,7 +114,11 @@ function get_file($path) {
        return @file_get_contents($path);
 }
 
-$load = preg_replace( '/[^a-z0-9,_-]+/i', '', $_GET['load'] );
+$load = $_GET['load'];
+if ( is_array( $load ) )
+       $load = implode( '', $load );
+
+$load = preg_replace( '/[^a-z0-9,_-]+/i', '', $load );
 $load = explode(',', $load);
 
 if ( empty($load) )
@@ -125,7 +129,7 @@ require(ABSPATH . WPINC . '/version.php');
 
 $compress = ( isset($_GET['c']) && $_GET['c'] );
 $force_gzip = ( $compress && 'gzip' == $_GET['c'] );
-$expires_offset = 31536000;
+$expires_offset = 31536000; // 1 year
 $out = '';
 
 $wp_scripts = new WP_Scripts();
index bdacc21ce364d2f0efb0ca664d6fcc16956368fc..8ff93f52e4d2e8a5e3503308b3adfaf3dd024dd1 100644 (file)
@@ -104,7 +104,7 @@ if ( empty($load) )
 $compress = ( isset($_GET['c']) && $_GET['c'] );
 $force_gzip = ( $compress && 'gzip' == $_GET['c'] );
 $rtl = ( isset($_GET['dir']) && 'rtl' == $_GET['dir'] );
-$expires_offset = 31536000;
+$expires_offset = 31536000; // 1 year
 $out = '';
 
 $wp_styles = new WP_Styles();
@@ -120,7 +120,7 @@ foreach( $load as $handle ) {
        $content = get_file($path) . "\n";
 
        if ( $rtl && isset($style->extra['rtl']) && $style->extra['rtl'] ) {
-               $rtl_path = is_bool($style->extra['rtl']) ? str_replace( '.css', '-rtl.css', $path ) : ABSPATH . $style->extra['rtl'];
+               $rtl_path = is_bool($style->extra['rtl']) ? str_replace( '.min.css', '-rtl.min.css', $path ) : ABSPATH . $style->extra['rtl'];
                $content .= get_file($rtl_path) . "\n";
        }
 
index e0c594e6abae282746a47ba818adbb85436a7cf6..2880169408b0a5fa686d140274d8e7c3de815038 100644 (file)
@@ -16,10 +16,12 @@ header( 'Content-Type: text/html; charset=utf-8' );
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php _e( 'WordPress &rsaquo; Database Repair' ); ?></title>
-       <?php wp_admin_css( 'install', true ); ?>
+       <?php
+       wp_admin_css( 'install', true );
+       ?>
 </head>
-<body>
-<h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png?ver=20120216" /></h1>
+<body class="wp-core-ui">
+<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php
 
@@ -102,9 +104,9 @@ if ( ! defined( 'WP_ALLOW_REPAIR' ) ) {
        else
                echo '<p>' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '</p>';
 ?>
-       <p class="step"><a class="button" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p>
+       <p class="step"><a class="button button-large" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p>
        <p><?php _e( 'WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing.' ); ?></p>
-       <p class="step"><a class="button" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p>
+       <p class="step"><a class="button button-large" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p>
 <?php
 }
 ?>
index 4b4f622d95289adfe612c7e346297ea880952a6c..c6a7ae141584e2df823d9e0ee64199c59a0975ef 100644 (file)
@@ -1,12 +1,85 @@
 <?php
 /**
- * Upload new media Administration Screen.
+ * Manage media uploaded file.
+ *
+ * There are many filters in here for media. Plugins can extend functionality
+ * by hooking into the filters.
  *
  * @package WordPress
  * @subpackage Administration
  */
 
-$_GET['inline'] = 'true';
-/** Administration bootstrap */
+/** Load WordPress Administration Bootstrap */
 require_once('./admin.php');
-require_once('./media-upload.php');
+
+if (!current_user_can('upload_files'))
+       wp_die(__('You do not have permission to upload files.'));
+
+wp_enqueue_script('plupload-handlers');
+
+$post_id = 0;
+if ( isset( $_REQUEST['post_id'] ) ) {
+       $post_id = absint( $_REQUEST['post_id'] );
+       if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) )
+               $post_id = 0;
+}
+
+if ( $_POST ) {
+       $location = 'upload.php';
+       if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+               check_admin_referer('media-form');
+               // Upload File button was clicked
+               $id = media_handle_upload( 'async-upload', $post_id );
+               if ( is_wp_error( $id ) )
+                       $location .= '?message=3';
+       }
+       wp_redirect( admin_url( $location ) );
+       exit;
+}
+
+$title = __('Upload New Media');
+$parent_file = 'upload.php';
+
+get_current_screen()->add_help_tab( array(
+'id'           => 'overview',
+'title'                => __('Overview'),
+'content'      =>
+       '<p>' . __('You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:') . '</p>' .
+       '<ul>' .
+               '<li>' . __('<strong>Drag and drop</strong> your files into the area below. Multiple files are allowed.') . '</li>' .
+               '<li>' . __('Clicking <strong>Select Files</strong> opens a navigation window showing you files in your operating system. Selecting <strong>Open</strong> after clicking on the file you want activates a progress bar on the uploader screen.') . '</li>' .
+               '<li>' . __('Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box.') . '</li>' .
+       '</ul>'
+) );
+get_current_screen()->set_help_sidebar(
+       '<p><strong>' . __('For more information:') . '</strong></p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Media_Add_New_Screen" target="_blank">Documentation on Uploading Media Files</a>') . '</p>' .
+       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+);
+
+require_once( ABSPATH . 'wp-admin/admin-header.php' );
+
+$form_class = 'media-upload-form type-form validate';
+
+if ( get_user_setting('uploader') || isset( $_GET['browser-uploader'] ) )
+       $form_class .= ' html-uploader';
+?>
+<div class="wrap">
+       <?php screen_icon(); ?>
+       <h2><?php echo esc_html( $title ); ?></h2>
+
+       <form enctype="multipart/form-data" method="post" action="<?php echo admin_url('media-new.php'); ?>" class="<?php echo $form_class; ?>" id="file-form">
+
+       <?php media_upload_form(); ?>
+
+       <script type="text/javascript">
+       var post_id = <?php echo $post_id; ?>, shortform = 3;
+       </script>
+       <input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" />
+       <?php wp_nonce_field('media-form'); ?>
+       <div id="media-items" class="hide-if-no-js"></div>
+       </form>
+</div>
+
+<?php
+include( ABSPATH . 'wp-admin/admin-footer.php' );
index 6246176b88399343f469276f4e8242223526f74d..96af66bb8d828e6e48da497505323a103ac4a842 100644 (file)
@@ -34,94 +34,6 @@ $post_id = isset($post_id)? (int) $post_id : 0;
 if ( isset($action) && $action == 'edit' && !$ID )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
-if ( isset($_GET['inline']) ) {
-       $errors = array();
-
-       if ( ! empty( $_REQUEST['post_id'] ) && ! current_user_can( 'edit_post' , $_REQUEST['post_id'] ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ) );
-
-       if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
-               check_admin_referer('media-form');
-               // Upload File button was clicked
-               $id = media_handle_upload('async-upload', $_REQUEST['post_id']);
-               unset($_FILES);
-               if ( is_wp_error($id) ) {
-                       $errors['upload_error'] = $id;
-                       $id = false;
-               }
-       }
-
-       if ( isset($_GET['upload-page-form']) ) {
-               $errors = array_merge($errors, (array) media_upload_form_handler());
-
-               $location = 'upload.php';
-               if ( $errors )
-                       $location .= '?message=3';
-
-               wp_redirect( admin_url($location) );
-               exit;
-       }
-
-       if ( isset( $_REQUEST['post_id'] ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ) );
-
-       $title = __('Upload New Media');
-       $parent_file = 'upload.php';
-       get_current_screen()->add_help_tab( array(
-       'id'            => 'overview',
-       'title'         => __('Overview'),
-       'content'       =>
-               '<p>' . __('You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:') . '</p>' .
-               '<ul>' .
-                       '<li>' . __('<strong>Drag and drop</strong> your files into the area below. Multiple files are allowed.') . '</li>' .
-                       '<li>' . __('Clicking <strong>Select Files</strong> opens a navigation window showing you files in your operating system. Selecting <strong>Open</strong> after clicking on the file you want activates a progress bar on the uploader screen.') . '</li>' .
-                       '<li>' . __('Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box.') . '</li>' .
-               '</ul>' .
-               '<p>' . __('Basic image editing is available after upload is complete. Make sure you click Save before leaving this screen.') . '</p>'
-       ) );
-       get_current_screen()->set_help_sidebar(
-               '<p><strong>' . __('For more information:') . '</strong></p>' .
-               '<p>' . __('<a href="http://codex.wordpress.org/Media_Add_New_Screen" target="_blank">Documentation on Uploading Media Files</a>') . '</p>' .
-               '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
-       );
-
-       require_once('./admin-header.php');
-
-       $form_class = 'media-upload-form type-form validate';
-
-       if ( get_user_setting('uploader') )
-               $form_class .= ' html-uploader';
-       ?>
-       <div class="wrap">
-       <?php screen_icon(); ?>
-       <h2><?php echo esc_html( $title ); ?></h2>
-
-       <form enctype="multipart/form-data" method="post" action="<?php echo admin_url('media-upload.php?inline=&amp;upload-page-form='); ?>" class="<?php echo $form_class; ?>" id="file-form">
-
-       <?php media_upload_form(); ?>
-
-       <script type="text/javascript">
-       jQuery(function($){
-               var preloaded = $(".media-item.preloaded");
-               if ( preloaded.length > 0 ) {
-                       preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
-               }
-               updateMediaForm();
-               post_id = 0;
-               shortform = 1;
-       });
-       </script>
-       <input type="hidden" name="post_id" id="post_id" value="0" />
-       <?php wp_nonce_field('media-form'); ?>
-       <div id="media-items" class="hide-if-no-js"></div>
-       <?php submit_button( __( 'Save all changes' ), 'button savebutton hidden', 'save' ); ?>
-       </form>
-       </div>
-
-<?php
-       include('./admin-footer.php');
-
-} else {
        if ( ! empty( $_REQUEST['post_id'] ) && ! current_user_can( 'edit_post' , $_REQUEST['post_id'] ) )
                wp_die( __( 'Cheatin&#8217; uh?' ) );
 
@@ -144,4 +56,3 @@ if ( isset($_GET['inline']) ) {
                do_action("media_upload_$type");
        else
                do_action("media_upload_$tab");
-}
index 017f676acfb88c55ff48c0baad5b04da79cd34a5..25ebaa00fa8db9fdf40613c6aa51612863110f26 100644 (file)
@@ -41,7 +41,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
        foreach ( $menu as $key => $item ) {
                $admin_is_parent = false;
                $class = array();
-               $aria_attributes = 'tabindex="1"';
+               $aria_attributes = '';
 
                if ( $first ) {
                        $class[] = 'wp-first-item';
@@ -59,7 +59,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                } else {
                        $class[] = 'wp-not-current-submenu';
                        if ( ! empty( $submenu_items ) )
-                               $aria_attributes .= ' aria-haspopup="true"';
+                               $aria_attributes .= 'aria-haspopup="true"';
                }
 
                if ( ! empty( $item[4] ) )
@@ -68,8 +68,10 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
                $id = ! empty( $item[5] ) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : '';
                $img = '';
+               // if the string 'none' (previously 'div') is passed instead of an URL, don't output the default menu image
+               // so an icon can be added to div.wp-menu-image as background with CSS.
                if ( ! empty( $item[6] ) )
-                       $img = ( 'div' === $item[6] ) ? '<br />' : '<img src="' . $item[6] . '" alt="" />';
+                       $img = ( 'none' === $item[6] || 'div' === $item[6] ) ? '<br />' : '<img src="' . $item[6] . '" alt="" />';
                $arrow = '<div class="wp-menu-arrow"><div></div></div>';
 
                $title = wptexturize( $item[0] );
@@ -87,9 +89,9 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
-                               echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+                               echo "<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>$title</div></a>";
                        } else {
-                               echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+                               echo "\n\t<a href='{$submenu_items[0][2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>$title</div></a>";
                        }
                } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) {
                        $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' );
@@ -98,21 +100,21 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
-                               echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+                               echo "\n\t<a href='admin.php?page={$item[2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>{$item[0]}</div></a>";
                        } else {
-                               echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+                               echo "\n\t<a href='{$item[2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>{$item[0]}</div></a>";
                        }
                }
 
                if ( ! empty( $submenu_items ) ) {
-                       echo "\n\t<div class='wp-submenu'><div class='wp-submenu-wrap'>";
-                       echo "<div class='wp-submenu-head'>{$item[0]}</div><ul>";
+                       echo "\n\t<ul class='wp-submenu wp-submenu-wrap'>";
+                       echo "<li class='wp-submenu-head'>{$item[0]}</li>";
+
                        $first = true;
                        foreach ( $submenu_items as $sub_key => $sub_item ) {
                                if ( ! current_user_can( $sub_item[1] ) )
                                        continue;
 
-                               $aria_attributes = 'tabindex="1"';
                                $class = array();
                                if ( $first ) {
                                        $class[] = 'wp-first-item';
@@ -156,12 +158,12 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                                                $sub_item_url = add_query_arg( array('page' => $sub_item[2]), 'admin.php' );
 
                                        $sub_item_url = esc_url( $sub_item_url );
-                                       echo "<li$class><a href='$sub_item_url'$class $aria_attributes>$title</a></li>";
+                                       echo "<li$class><a href='$sub_item_url'$class>$title</a></li>";
                                } else {
-                                       echo "<li$class><a href='{$sub_item[2]}'$class $aria_attributes>$title</a></li>";
+                                       echo "<li$class><a href='{$sub_item[2]}'$class>$title</a></li>";
                                }
                        }
-                       echo "</ul></div></div>";
+                       echo "</ul>";
                }
                echo "</li>";
        }
index 81947af5a833c3a5d4acef17bc93b4a682f8a9c9..90c585dbd9d909881e306596cc7564a5c96ce9fc 100644 (file)
@@ -22,7 +22,7 @@
  * @var array
  */
 
-$menu[2] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'div' );
+$menu[2] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'none' );
 
 $submenu[ 'index.php' ][0] = array( __('Home'), 'read', 'index.php' );
 
@@ -34,15 +34,22 @@ if ( ! is_multisite() || is_super_admin() )
        $update_data = wp_get_update_data();
 
 if ( ! is_multisite() ) {
-       $submenu[ 'index.php' ][10] = array( sprintf( __('Updates %s'), "<span class='update-plugins count-{$update_data['counts']['total']}' title='{$update_data['title']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), 'update_core',  'update-core.php');
+       if ( current_user_can( 'update_core' ) )
+               $cap = 'update_core';
+       elseif ( current_user_can( 'update_plugins' ) )
+               $cap = 'update_plugins';
+       else
+               $cap = 'update_themes';
+       $submenu[ 'index.php' ][10] = array( sprintf( __('Updates %s'), "<span class='update-plugins count-{$update_data['counts']['total']}' title='{$update_data['title']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), $cap, 'update-core.php');
+       unset( $cap );
 }
 
 $menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' );
 
-$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top menu-icon-post', 'menu-posts', 'div' );
+$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top menu-icon-post', 'menu-posts', 'none' );
        $submenu['edit.php'][5]  = array( __('All Posts'), 'edit_posts', 'edit.php' );
        /* translators: add new post */
-       $submenu['edit.php'][10]  = array( _x('Add New', 'post'), 'edit_posts', 'post-new.php' );
+       $submenu['edit.php'][10]  = array( _x('Add New', 'post'), get_post_type_object( 'post' )->cap->create_posts, 'post-new.php' );
 
        $i = 15;
        foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
@@ -53,21 +60,28 @@ $menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu
        }
        unset($tax);
 
-$menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'div' );
+$menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'none' );
        $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
        /* translators: add new file */
        $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
+       foreach ( get_taxonomies_for_attachments( 'objects' ) as $tax ) {
+               if ( ! $tax->show_ui )
+                       continue;
+
+               $submenu['upload.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&amp;post_type=attachment' );
+       }
+       unset($tax);
 
-$menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'div' );
+$menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'none' );
        $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' );
        /* translators: add new links */
        $submenu['link-manager.php'][10] = array( _x('Add New', 'link'), 'manage_links', 'link-add.php' );
        $submenu['link-manager.php'][15] = array( __('Link Categories'), 'manage_categories', 'edit-tags.php?taxonomy=link_category' );
 
-$menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'menu-top menu-icon-page', 'menu-pages', 'div' );
+$menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'menu-top menu-icon-page', 'menu-pages', 'none' );
        $submenu['edit.php?post_type=page'][5] = array( __('All Pages'), 'edit_pages', 'edit.php?post_type=page' );
        /* translators: add new page */
-       $submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), 'edit_pages', 'post-new.php?post_type=page' );
+       $submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), get_post_type_object( 'page' )->cap->create_posts, 'post-new.php?post_type=page' );
        $i = 15;
        foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
                if ( ! $tax->show_ui || ! in_array('page', (array) $tax->object_type, true) )
@@ -79,7 +93,7 @@ $menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'me
 
 $awaiting_mod = wp_count_comments();
 $awaiting_mod = $awaiting_mod->moderated;
-$menu[25] = array( sprintf( __('Comments %s'), "<span class='awaiting-mod count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), 'edit_posts', 'edit-comments.php', '', 'menu-top menu-icon-comments', 'menu-comments', 'div' );
+$menu[25] = array( sprintf( __('Comments %s'), "<span class='awaiting-mod count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), 'edit_posts', 'edit-comments.php', '', 'menu-top menu-icon-comments', 'menu-comments', 'none' );
 unset($awaiting_mod);
 
 $submenu[ 'edit-comments.php' ][0] = array( __('All Comments'), 'edit_posts', 'edit-comments.php' );
@@ -97,7 +111,7 @@ foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false,
                $menu_icon   = esc_url( $ptype_obj->menu_icon );
                $ptype_class = $ptype_for_id;
        } else {
-               $menu_icon   = 'div';
+               $menu_icon   = 'none';
                $ptype_class = 'post';
        }
 
@@ -108,7 +122,7 @@ foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false,
 
        $menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon );
        $submenu["edit.php?post_type=$ptype"][5]  = array( $ptype_obj->labels->all_items, $ptype_obj->cap->edit_posts,  "edit.php?post_type=$ptype");
-       $submenu["edit.php?post_type=$ptype"][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->edit_posts, "post-new.php?post_type=$ptype" );
+       $submenu["edit.php?post_type=$ptype"][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->create_posts, "post-new.php?post_type=$ptype" );
 
        $i = 15;
        foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
@@ -123,12 +137,12 @@ unset($ptype, $ptype_obj, $ptype_class, $ptype_for_id, $ptype_menu_position, $me
 $menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' );
 
 if ( current_user_can( 'switch_themes') ) {
-       $menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
+       $menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'none' );
                $submenu['themes.php'][5]  = array(__('Themes'), 'switch_themes', 'themes.php');
                if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
                        $submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php');
 } else {
-       $menu[60] = array( __('Appearance'), 'edit_theme_options', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
+       $menu[60] = array( __('Appearance'), 'edit_theme_options', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'none' );
                $submenu['themes.php'][5]  = array(__('Themes'), 'edit_theme_options', 'themes.php');
                if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
                        $submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php' );
@@ -142,31 +156,29 @@ function _add_themes_utility_last() {
        add_submenu_page('themes.php', _x('Editor', 'theme editor'), _x('Editor', 'theme editor'), 'edit_themes', 'theme-editor.php');
 }
 
-$menu_perms = get_site_option( 'menu_items', array() );
-if ( ! is_multisite() || is_super_admin() || ! empty( $menu_perms['plugins'] ) ) {
+$count = '';
+if ( ! is_multisite() && current_user_can( 'update_plugins' ) ) {
        if ( ! isset( $update_data ) )
                $update_data = wp_get_update_data();
+       $count = "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count'>" . number_format_i18n($update_data['counts']['plugins']) . "</span></span>";
+}
 
-       $count = '';
-       if ( ! is_multisite() && current_user_can( 'update_plugins' ) )
-               $count = "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count'>" . number_format_i18n($update_data['counts']['plugins']) . "</span></span>";
+$menu[65] = array( sprintf( __('Plugins %s'), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'none' );
 
-       $menu[65] = array( sprintf( __('Plugins %s'), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div' );
+$submenu['plugins.php'][5]  = array( __('Installed Plugins'), 'activate_plugins', 'plugins.php' );
 
-       $submenu['plugins.php'][5]  = array( __('Installed Plugins'), 'activate_plugins', 'plugins.php' );
+       if ( ! is_multisite() ) {
+               /* translators: add new plugin */
+               $submenu['plugins.php'][10] = array( _x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php' );
+               $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
+       }
 
-               if ( ! is_multisite() ) {
-                       /* translators: add new plugin */
-                       $submenu['plugins.php'][10] = array( _x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php' );
-                       $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
-               }
-}
-unset($menu_perms, $update_data);
+unset( $update_data );
 
 if ( current_user_can('list_users') )
-       $menu[70] = array( __('Users'), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'div' );
+       $menu[70] = array( __('Users'), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'none' );
 else
-       $menu[70] = array( __('Profile'), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'div' );
+       $menu[70] = array( __('Profile'), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'none' );
 
 if ( current_user_can('list_users') ) {
        $_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php.
@@ -186,7 +198,7 @@ if ( current_user_can('list_users') ) {
                $submenu['profile.php'][10] = array(__('Add New User'), 'promote_users', 'user-new.php');
 }
 
-$menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'div' );
+$menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'none' );
        $submenu['tools.php'][5] = array( __('Available Tools'), 'edit_posts', 'tools.php' );
        $submenu['tools.php'][10] = array( __('Import'), 'import', 'import.php' );
        $submenu['tools.php'][15] = array( __('Export'), 'export', 'export.php' );
@@ -195,13 +207,12 @@ $menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-ic
        if ( ! is_multisite() && defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE )
                $submenu['tools.php'][50] = array(__('Network Setup'), 'manage_options', 'network.php');
 
-$menu[80] = array( __('Settings'), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div' );
+$menu[80] = array( __('Settings'), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'none' );
        $submenu['options-general.php'][10] = array(_x('General', 'settings screen'), 'manage_options', 'options-general.php');
        $submenu['options-general.php'][15] = array(__('Writing'), 'manage_options', 'options-writing.php');
        $submenu['options-general.php'][20] = array(__('Reading'), 'manage_options', 'options-reading.php');
        $submenu['options-general.php'][25] = array(__('Discussion'), 'manage_options', 'options-discussion.php');
        $submenu['options-general.php'][30] = array(__('Media'), 'manage_options', 'options-media.php');
-       $submenu['options-general.php'][35] = array(__('Privacy'), 'manage_options', 'options-privacy.php');
        $submenu['options-general.php'][40] = array(__('Permalinks'), 'manage_options', 'options-permalink.php');
 
 $_wp_last_utility_menu = 80; // The index of the last top-level menu in the utility menu group
index 95f0aa091d3b09eed515b93d23ccb5bcf0fc1fb4..7d772c2658325d0cf0c2a8f9ea43de8a051c58f2 100644 (file)
@@ -25,6 +25,8 @@ if ( isset( $_GET['h'] ) && $_GET['h'] != '' && get_option( 'delete_blog_hash' )
        }
 }
 
+$blog = get_blog_details();
+
 $title = __( 'Delete Site' );
 $parent_file = 'tools.php';
 require_once( './admin-header.php' );
@@ -72,7 +74,7 @@ Webmaster
        <form method="post" name="deletedirect">
                <?php wp_nonce_field( 'delete-blog' ) ?>
                <input type="hidden" name="action" value="deleteblog" />
-               <p><input id="confirmdelete" type="checkbox" name="confirmdelete" value="1" /> <label for="confirmdelete"><strong><?php printf( __( "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." ), is_subdomain_install() ? $current_blog->domain : $current_blog->domain . $current_blog->path ); ?></strong></label></p>
+               <p><input id="confirmdelete" type="checkbox" name="confirmdelete" value="1" /> <label for="confirmdelete"><strong><?php printf( __( "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." ), is_subdomain_install() ? $blog->domain : $blog->domain . $blog->path ); ?></strong></label></p>
                <?php submit_button( __( 'Delete My Site Permanently' ) ); ?>
        </form>
        <?php
index 6b4b032389d13fc16f39e59eaa9f73dee6db7ef4..361d0f6cde93bb04b5d48f8448a64480cf43d5d3 100644 (file)
@@ -22,19 +22,8 @@ if ( ! current_theme_supports( 'menus' ) && ! current_theme_supports( 'widgets'
 if ( ! current_user_can('edit_theme_options') )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
-// jQuery
-wp_enqueue_script( 'jquery-ui-draggable' );
-wp_enqueue_script( 'jquery-ui-droppable' );
-wp_enqueue_script( 'jquery-ui-sortable' );
-
-// Nav Menu functions
 wp_enqueue_script( 'nav-menu' );
 
-// Metaboxes
-wp_enqueue_script( 'common' );
-wp_enqueue_script( 'wp-lists' );
-wp_enqueue_script( 'postbox' );
-
 if ( wp_is_mobile() )
        wp_enqueue_script( 'jquery-touch-punch' );
 
@@ -450,14 +439,14 @@ get_current_screen()->add_help_tab( array(
 'title'                => __('Overview'),
 'content'      =>
        '<p>' . __('This feature allows you to use a custom menu in place of your theme&#8217;s default menus.') . '</p>' .
-       '<p>' . __('Custom menus may contain links to pages, categories, custom links or other content types (use the Screen Options tab to decide which ones to show on the screen). You can specify a different navigation label for a menu item as well as other attributes. You can create multiple menus. If your theme includes more than one menu, you can choose which custom menu to associate with each. You can also use custom menus in conjunction with the Custom Menus widget.') . '</p>' .
-       '<p>' . __('If your theme does not support the custom menus feature yet (the default themes, Twenty Eleven and Twenty Ten, do), you can learn about adding this support by following the Documentation link to the side.') . '</p>'
+       '<p>' . __('Custom menus may contain links to pages, categories, custom links or other content types (use the Screen Options tab to decide which ones to show on the screen). You can specify a different navigation label for a menu item as well as other attributes. You can create multiple menus. If your theme includes more than one menu location, you can choose which custom menu to associate with each. You can also use custom menus in conjunction with the Custom Menus widget.') . '</p>' .
+       '<p>' . sprintf( __('If your theme does not support the custom menus feature (the default themes, %1$s and %2$s, do), you can learn about adding this support by following the Documentation link to the side.'), 'Twenty Twelve', 'Twenty Eleven' ) . '</p>'
 ) );
 get_current_screen()->add_help_tab( array(
 'id'           => 'create-menus',
 'title'                => __('Create Menus'),
 'content'      =>
-       '<p>' . __('To create a new custom menu, click on the + tab, give the menu a name, and click Create Menu. Next, add menu items from the appropriate boxes. You&#8217;ll be able to edit the information for each menu item, and can drag and drop to put them in order. You can also drag a menu item a little to the right to make it a submenu, to create menus with hierarchy. Drop the item into its new nested placement when the dotted rectangle target shifts over, also a little to the right. Don&#8217;t forget to click Save when you&#8217;re finished.') . '</p>'
+       '<p>' . __('To create a new custom menu, click on the + tab, give the menu a name, and click Create Menu. Next, add menu items from the appropriate boxes. You&#8217;ll be able to edit the information for each menu item, and can drag and drop to change their order. You can also drag a menu item a little to the right to make it a submenu. Don&#8217;t forget to click Save Menu when you&#8217;re finished.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
index 2931cbbc82a9dfbdfc210a6de3dba4de33c6f76a..f9a2f1d39d30c664681f35f9c86826a715dc56fa 100644 (file)
@@ -51,8 +51,8 @@ function network_domain_check() {
  * @return bool Whether subdomain install is allowed
  */
 function allow_subdomain_install() {
-       $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'siteurl' ) );
-       if( false !== strpos( $domain, '/' ) || 'localhost' == $domain || preg_match( '|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|', $domain ) )
+       $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) );
+       if( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) )
                return false;
 
        return true;
@@ -106,7 +106,7 @@ if ( is_network_admin() ) {
 $network_help = '<p>' . __('This screen allows you to configure a network as having subdomains (<code>site1.example.com</code>) or subdirectories (<code>example.com/site1</code>). Subdomains require wildcard subdomains to be enabled in Apache and DNS records, if your host allows it.') . '</p>' .
        '<p>' . __('Choose subdomains or subdirectories; this can only be switched afterwards by reconfiguring your install. Fill out the network details, and click install. If this does not work, you may have to add a wildcard DNS record (for subdomains) or change to another setting in Permalinks (for subdirectories).') . '</p>' .
        '<p>' . __('The next screen for Network Setup will give you individually-generated lines of code to add to your wp-config.php and .htaccess files. Make sure the settings of your FTP client make files starting with a dot visible, so that you can find .htaccess; you may have to create this file if it really is not there. Make backup copies of those two files.') . '</p>' .
-       '<p>' . __('Add a <code>blogs.dir</code> directory under <code>/wp-content</code> and add the designated lines of code to wp-config.php (just before <code>/*...stop editing...*/</code>) and <code>.htaccess</code> (replacing the existing WordPress rules).') . '</p>' .
+       '<p>' . __('Add the designated lines of code to wp-config.php (just before <code>/*...stop editing...*/</code>) and <code>.htaccess</code> (replacing the existing WordPress rules).') . '</p>' .
        '<p>' . __('Once you add this code and refresh your browser, multisite should be enabled. This screen, now in the Network Admin navigation menu, will keep an archive of the added code. You can toggle between Network Admin and Site Admin by clicking on the Network Admin or an individual site name under the My Sites dropdown in the Toolbar.') . '</p>' .
        '<p>' . __('The choice of subdirectory sites is disabled if this setup is more than a month old because of permalink problems with &#8220;/blog/&#8221; from the main site. This disabling will be addressed in a future version.') . '</p>' .
        '<p><strong>' . __('For more information:') . '</strong></p>' .
@@ -144,13 +144,6 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 function network_step1( $errors = false ) {
        global $is_apache;
 
-       if ( get_option( 'siteurl' ) != get_option( 'home' ) ) {
-               echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . sprintf( __( 'Your <strong>WordPress address</strong> must match your <strong>Site address</strong> before creating a Network. See <a href="%s">General Settings</a>.' ), esc_url( admin_url( 'options-general.php' ) ) ) . '</p></div>';
-               echo '</div>';
-               include ( ABSPATH . 'wp-admin/admin-footer.php' );
-               die();
-       }
-
        if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
                echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>';
                echo '</div>';
@@ -190,9 +183,6 @@ function network_step1( $errors = false ) {
                $error_codes = $errors->get_error_codes();
        }
 
-       if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' )
-               echo '<div class="error"><p><strong>' . __('Warning!') . '</strong> ' . __( 'Networks may not be fully compatible with custom wp-content directories.' ) . '</p></div>';
-
        $site_name = ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) ? $_POST['sitename'] : sprintf( _x('%s Sites', 'Default network name' ), get_option( 'blogname' ) );
        $admin_email = ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) ? $_POST['email'] : get_option( 'admin_email' );
        ?>
@@ -235,6 +225,9 @@ function network_step1( $errors = false ) {
 <?php
        endif;
 
+               if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' && ( allow_subdirectory_install() || ! allow_subdomain_install() ) )
+                       echo '<div class="error inline"><p><strong>' . __('Warning!') . '</strong> ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</p></div>';
+
                $is_www = ( 0 === strpos( $hostname, 'www.' ) );
                if ( $is_www ) :
                ?>
@@ -314,11 +307,20 @@ function network_step1( $errors = false ) {
  * @since 3.0.0
  */
 function network_step2( $errors = false ) {
-       global $base, $wpdb;
-       $hostname = get_clean_basedomain();
+       global $wpdb;
+
+       $hostname          = get_clean_basedomain();
+       $slashed_home      = trailingslashit( get_option( 'home' ) );
+       $base              = parse_url( $slashed_home, PHP_URL_PATH );
+       $wp_dir_from_root  = preg_replace( '#^' . preg_quote( $_SERVER['DOCUMENT_ROOT'], '#' ) . '#', '', ABSPATH );
+       $wp_siteurl_subdir = trailingslashit( '/' . preg_replace( '#^' . preg_quote( $base, '#' ) . '#', '', $wp_dir_from_root ) );
+       $rewrite_base      = ! empty( $wp_siteurl_subdir ) ? ltrim( trailingslashit( $wp_siteurl_subdir ), '/' ) : '';
 
-       if ( ! isset( $base ) )
-               $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
+       $home_path         = get_home_path();
+
+       $location_of_wp_config = ABSPATH;
+       if ( ! file_exists( ABSPATH . 'wp-config.php' ) && file_exists( dirname( ABSPATH ) . '/wp-config.php' ) )
+               $location_of_wp_config = trailingslashit( dirname( ABSPATH ) );
 
        // Wildcard DNS message.
        if ( is_wp_error( $errors ) )
@@ -344,14 +346,18 @@ function network_step2( $errors = false ) {
                }
        }
 
+       $subdir_match          = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
+       $subdir_replacement_01 = $subdomain_install ? '' : '$1';
+       $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
+
        if ( $_POST || ! is_multisite() ) {
 ?>
                <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
                <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p>
                <div class="updated inline"><p><?php
-                       if ( file_exists( ABSPATH . '.htaccess' ) )
+                       if ( file_exists( $home_path . '.htaccess' ) )
                                printf( __( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.' ), '.htaccess' );
-                       elseif ( file_exists( ABSPATH . 'web.config' ) )
+                       elseif ( file_exists( $home_path . 'web.config' ) )
                                printf( __( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.' ), 'web.config' );
                        else
                                _e( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.' );
@@ -360,26 +366,22 @@ function network_step2( $errors = false ) {
        }
 ?>
                <ol>
-                       <li><p><?php
-                               printf( __( 'Create a <code>blogs.dir</code> directory at <code>%s/blogs.dir</code>. This directory is used to store uploaded media for your additional sites and must be writeable by the web server.' ), WP_CONTENT_DIR );
-                               if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' )
-                                       echo ' <strong>' . __('Warning:') . ' ' . __( 'Networks may not be fully compatible with custom wp-content directories.' ) . '</strong>';
-                       ?></p></li>
-                       <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), ABSPATH ); ?></p>
-                               <textarea class="code" readonly="readonly" cols="100" rows="7">
+                       <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), $location_of_wp_config ); ?></p>
+                               <textarea class="code" readonly="readonly" cols="100" rows="6">
 define('MULTISITE', true);
 define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
-$base = '<?php echo $base; ?>';
 define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
 define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
 define('SITE_ID_CURRENT_SITE', 1);
-define('BLOG_ID_CURRENT_SITE', 1);</textarea>
+define('BLOG_ID_CURRENT_SITE', 1);
+</textarea>
 <?php
        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
        foreach ( $keys_salts as $c => $v ) {
                if ( defined( $c ) )
                        unset( $keys_salts[ $c ] );
        }
+
        if ( ! empty( $keys_salts ) ) {
                $keys_salts_str = '';
                $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
@@ -404,10 +406,13 @@ define('BLOG_ID_CURRENT_SITE', 1);</textarea>
 </li>
 <?php
        if ( iis7_supports_permalinks() ) :
+               // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
+               $iis_subdir_match = ltrim( $base, '/' ) . $subdir_match;
+               $iis_rewrite_base = ltrim( $base, '/' ) . $rewrite_base;
+               $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
 
-                       if ( $subdomain_install ) {
-                               $web_config_file =
-'<?xml version="1.0" encoding="UTF-8"?>
+               $web_config_file = <<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <system.webServer>
         <rewrite>
@@ -415,10 +420,18 @@ define('BLOG_ID_CURRENT_SITE', 1);</textarea>
                 <rule name="WordPress Rule 1" stopProcessing="true">
                     <match url="^index\.php$" ignoreCase="false" />
                     <action type="None" />
-                </rule>
+                </rule>';
+                               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
+                                       $web_config_file .= '
+                <rule name="WordPress Rule for Files" stopProcessing="true">
+                    <match url="^{$iis_subdir_match}files/(.+)" ignoreCase="false" />
+                    <action type="Rewrite" url="{$iis_rewrite_base}wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
+                </rule>';
+                }
+                $web_config_file .= '
                 <rule name="WordPress Rule 2" stopProcessing="true">
-                    <match url="^files/(.+)" ignoreCase="false" />
-                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
+                    <match url="^{$iis_subdir_match}wp-admin$" ignoreCase="false" />
+                    <action type="Redirect" url="{$iis_subdir_replacement}wp-admin/" redirectType="Permanent" />
                 </rule>
                 <rule name="WordPress Rule 3" stopProcessing="true">
                     <match url="^" ignoreCase="false" />
@@ -429,89 +442,64 @@ define('BLOG_ID_CURRENT_SITE', 1);</textarea>
                     <action type="None" />
                 </rule>
                 <rule name="WordPress Rule 4" stopProcessing="true">
-                    <match url="." ignoreCase="false" />
-                    <action type="Rewrite" url="index.php" />
-                </rule>
-            </rules>
-        </rewrite>
-    </system.webServer>
-</configuration>';
-                       } else {
-                               $web_config_file =
-'<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <system.webServer>
-        <rewrite>
-            <rules>
-                <rule name="WordPress Rule 1" stopProcessing="true">
-                    <match url="^index\.php$" ignoreCase="false" />
-                    <action type="None" />
-                </rule>
-                <rule name="WordPress Rule 2" stopProcessing="true">
-                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
-                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
-                </rule>
-                <rule name="WordPress Rule 3" stopProcessing="true">
-                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
-                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
-                </rule>
-                <rule name="WordPress Rule 4" stopProcessing="true">
-                    <match url="^" ignoreCase="false" />
-                    <conditions logicalGrouping="MatchAny">
-                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
-                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
-                    </conditions>
-                    <action type="None" />
+                    <match url="^{$iis_subdir_match}(wp-(content|admin|includes).*)" ignoreCase="false" />
+                    <action type="Rewrite" url="{$iis_rewrite_base}{R:1}" />
                 </rule>
                 <rule name="WordPress Rule 5" stopProcessing="true">
-                    <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" />
-                    <action type="Rewrite" url="{R:1}" />
+                    <match url="^{$iis_subdir_match}([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
+                    <action type="Rewrite" url="{$iis_rewrite_base}{R:2}" />
                 </rule>
                 <rule name="WordPress Rule 6" stopProcessing="true">
-                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
-                    <action type="Rewrite" url="{R:2}" />
-                </rule>
-                <rule name="WordPress Rule 7" stopProcessing="true">
                     <match url="." ignoreCase="false" />
                     <action type="Rewrite" url="index.php" />
                 </rule>
             </rules>
         </rewrite>
     </system.webServer>
-</configuration>';
-                       }
+</configuration>
+EOF;
+
        ?>
-               <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
-               <textarea class="code" readonly="readonly" cols="100" rows="20">
-               <?php echo esc_textarea( $web_config_file ); ?>
+               <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), $home_path ); ?></p>
+               <?php
+               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
+                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
+               ?>
+               <textarea class="code" readonly="readonly" cols="100" rows="20"><?php echo esc_textarea( $web_config_file ); ?>
                </textarea></li>
                </ol>
 
        <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead:
 
-               $htaccess_file = 'RewriteEngine On
-RewriteBase ' . $base . '
-RewriteRule ^index\.php$ - [L]
-
-# uploaded files
-RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n";
+               $ms_files_rewriting = '';
+               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
+                       $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
+                       $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}wp-includes/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
+               }
 
-               if ( ! $subdomain_install )
-                       $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n";
+               $htaccess_file = <<<EOF
+RewriteEngine On
+RewriteBase {$base}
+RewriteRule ^index\.php$ - [L]
+{$ms_files_rewriting}
+# add a trailing slash to /wp-admin
+RewriteRule ^{$subdir_match}wp-admin$ {$subdir_replacement_01}wp-admin/ [R=301,L]
 
-               $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR]
+RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
-RewriteRule ^ - [L]';
-
-               // @todo custom content dir.
-               if ( ! $subdomain_install )
-                       $htaccess_file .= "\nRewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]\nRewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]";
-
-               $htaccess_file .= "\nRewriteRule . index.php [L]";
+RewriteRule ^ - [L]
+RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
+RewriteRule ^{$subdir_match}(.*\.php)$ {$rewrite_base}$subdir_replacement_12 [L]
+RewriteRule . index.php [L]
+EOF;
 
                ?>
-               <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
-               <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>">
+               <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), $home_path ); ?></p>
+               <?php
+               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
+                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
+               ?>
+               <textarea class="code" readonly="readonly" cols="100" rows="<?php echo substr_count( $htaccess_file, "\n" ) + 1; ?>">
 <?php echo esc_textarea( $htaccess_file ); ?></textarea></li>
                </ol>
 
@@ -525,14 +513,12 @@ RewriteRule ^ - [L]';
 
 if ( $_POST ) {
 
-       $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
-
        check_admin_referer( 'install-network-1' );
 
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        // create network tables
        install_network();
-       $hostname = get_clean_basedomain();
+       $base              = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH );
        $subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false;
        if ( ! network_domain_check() ) {
                $result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install );
index a35a2802e78e643a3ca9a0ea33749f9854d6f7cb..68cf7e494c20b8beaf5836976c86c62d22b17cbf 100644 (file)
@@ -38,7 +38,7 @@ if ( current_user_can( 'update_plugins' ) ) {
        $menu[20] = array( __('Plugins'), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div' );
 }
 $submenu['plugins.php'][5]  = array( __('Installed Plugins'), 'manage_network_plugins', 'plugins.php' );
-$submenu['plugins.php'][10] = array( _x('Add New', 'plugin editor'), 'install_plugins', 'plugin-install.php' );
+$submenu['plugins.php'][10] = array( _x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php' );
 $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
 
 $menu[25] = array(__('Settings'), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div');
index e75d95fc799039576a47f73df58fa516cec5d2b2..b3a0f897f4d1579df039cba2e5b076de7b0120c3 100644 (file)
@@ -44,53 +44,20 @@ if ( $_POST ) {
 
        check_admin_referer( 'siteoptions' );
 
-       if ( isset( $_POST['WPLANG'] ) && ( '' === $_POST['WPLANG'] || in_array( $_POST['WPLANG'], get_available_languages() ) ) )
-               update_site_option( 'WPLANG', $_POST['WPLANG'] );
-
-       if ( is_email( $_POST['admin_email'] ) )
-               update_site_option( 'admin_email', $_POST['admin_email'] );
-
-       $illegal_names = explode( ' ', $_POST['illegal_names'] );
-       foreach ( (array) $illegal_names as $name ) {
-               $name = trim( $name );
-               if ( $name != '' )
-                       $names[] = trim( $name );
-       }
-       update_site_option( 'illegal_names', $names );
-
-       if ( $_POST['limited_email_domains'] != '' ) {
-               $limited_email_domains = str_replace( ' ', "\n", $_POST['limited_email_domains'] );
-               $limited_email_domains = explode( "\n", stripslashes( $limited_email_domains ) );
-               $limited_email = array();
-               foreach ( (array) $limited_email_domains as $domain ) {
-                       $domain = trim( $domain );
-                       if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
-                               $limited_email[] = trim( $domain );
-               }
-               update_site_option( 'limited_email_domains', $limited_email );
-       } else {
-               update_site_option( 'limited_email_domains', '' );
-       }
-
-       if ( $_POST['banned_email_domains'] != '' ) {
-               $banned_email_domains = explode( "\n", stripslashes( $_POST['banned_email_domains'] ) );
-               $banned = array();
-               foreach ( (array) $banned_email_domains as $domain ) {
-                       $domain = trim( $domain );
-                       if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
-                               $banned[] = trim( $domain );
-               }
-               update_site_option( 'banned_email_domains', $banned );
-       } else {
-               update_site_option( 'banned_email_domains', '' );
-       }
-
-       $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled' );
        $checked_options = array( 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
        foreach ( $checked_options as $option_name => $option_unchecked_value ) {
                if ( ! isset( $_POST[$option_name] ) )
                        $_POST[$option_name] = $option_unchecked_value;
        }
+
+       $options = array(
+               'registrationnotification', 'registration', 'add_new_users', 'menu_items',
+               'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name',
+               'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author',
+               'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled',
+               'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'admin_email',
+       );
+
        foreach ( $options as $option_name ) {
                if ( ! isset($_POST[$option_name]) )
                        continue;
index ff78e83bb3b9b1d3436a07f5523b1add1ae7fcdf..bcc71f9f18057fb5e3a78cbec2426f3c14870c19 100644 (file)
@@ -135,10 +135,15 @@ if ( ! empty( $messages ) ) {
                        <th scope="row"><?php _e( 'Path' ) ?></th>
                        <?php if ( $is_main_site ) { ?>
                        <td><code><?php echo esc_attr( $details->path ) ?></code></td>
-                       <?php } else { ?>
+                       <?php
+                       } else {
+                               switch_to_blog( $id );
+                       ?>
                        <td><input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" size="40" style='margin-bottom:5px;' />
-                       <br /><input type="checkbox" style="width:20px;" name="update_home_url" value="update" <?php if ( get_blog_option( $id, 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_blog_option( $id, 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></td>
-                       <?php } ?>
+                       <br /><input type="checkbox" style="width:20px;" name="update_home_url" value="update" <?php if ( get_option( 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_option( 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></td>
+                       <?php
+                               restore_current_blog();
+                       } ?>
                </tr>
                <tr class="form-field">
                        <th scope="row"><?php _ex( 'Registered', 'site' ) ?></th>
index b3cc84e5048e4677f95570fa5fe25cb15825ba72..db2e1f74c081dfcaa68603861ff1f248df64c2e4 100644 (file)
@@ -62,10 +62,10 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
 
        if ( is_subdomain_install() ) {
                $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain );
-               $path = $base;
+               $path      = $current_site->path;
        } else {
                $newdomain = $current_site->domain;
-               $path = $base . $domain . '/';
+               $path      = $current_site->path . $domain . '/';
        }
 
        $password = 'N/A';
@@ -85,7 +85,10 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
        if ( !is_wp_error( $id ) ) {
                if ( !is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) )
                        update_user_option( $user_id, 'primary_blog', $id, true );
-               $content_mail = sprintf( __( "New site created by %1s\n\nAddress: %2s\nName: %3s"), $current_user->user_login , get_site_url( $id ), stripslashes( $title ) );
+               $content_mail = sprintf( __( 'New site created by %1$s
+
+Address: %2$s
+Name: %3$s' ), $current_user->user_login , get_site_url( $id ), stripslashes( $title ) );
                wp_mail( get_site_option('admin_email'), sprintf( __( '[%s] New Site Created' ), $current_site->site_name ), $content_mail, 'From: "Site Admin" <' . get_site_option( 'admin_email' ) . '>' );
                wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
                wp_redirect( add_query_arg( array( 'update' => 'added', 'id' => $id ), 'site-new.php' ) );
@@ -127,7 +130,7 @@ if ( ! empty( $messages ) ) {
                        <?php } else {
                                echo $current_site->domain . $current_site->path ?><input name="blog[domain]" class="regular-text" type="text" title="<?php esc_attr_e( 'Domain' ) ?>"/>
                        <?php }
-                       echo '<p>' . __( 'Only the characters a-z and 0-9 recommended.' ) . '</p>';
+                       echo '<p>' . __( 'Only lowercase letters (a-z) and numbers are allowed.' ) . '</p>';
                        ?>
                        </td>
                </tr>
index 279456936822d7834453475639f5efbaa9fc0b94..b47a0c694a662ddbe139a62966fde818c0548903 100644 (file)
@@ -13,11 +13,6 @@ require_once( './admin.php' );
 if ( ! is_multisite() )
        wp_die( __( 'Multisite support is not enabled.' ) );
 
-$menu_perms = get_site_option( 'menu_items', array() );
-
-if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
-       wp_die( __( 'Cheatin&#8217; uh?' ) );
-
 if ( ! current_user_can( 'manage_sites' ) )
        wp_die( __( 'You do not have sufficient permissions to manage themes for this site.' ) );
 
@@ -177,7 +172,6 @@ if ( isset( $_GET['enabled'] ) ) {
 <?php $wp_list_table->views(); ?>
 
 <form method="post" action="site-themes.php?action=update-site">
-       <?php wp_nonce_field( 'edit-site' ); ?>
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
 <?php $wp_list_table->display(); ?>
index 58796b258d36157a217abbe969cc15e593d048c5..2064a763b59289a18284a37680b74bedcb51a8ee 100644 (file)
@@ -45,33 +45,26 @@ if ( ! $id )
        wp_die( __('Invalid site ID.') );
 
 $details = get_blog_details( $id );
-if ( !can_edit_network( $details->site_id ) )
+if ( ! can_edit_network( $details->site_id ) )
        wp_die( __( 'You do not have permission to access this page.' ) );
 
 $is_main_site = is_main_site( $id );
 
-// get blog prefix
-$blog_prefix = $wpdb->get_blog_prefix( $id );
+switch_to_blog( $id );
 
-// @todo This is a hack. Eventually, add API to WP_Roles allowing retrieval of roles for a particular blog.
-if ( ! empty($wp_roles->use_db) ) {
-       $editblog_roles = get_blog_option( $id, "{$blog_prefix}user_roles" );
-} else {
-       // Roles are stored in memory, not the DB.
-       $editblog_roles = $wp_roles->roles;
-}
-$default_role = get_blog_option( $id, 'default_role' );
+$editblog_roles = $wp_roles->roles;
+
+$default_role = get_option( 'default_role' );
 
 $action = $wp_list_table->current_action();
 
 if ( $action ) {
-       switch_to_blog( $id );
 
        switch ( $action ) {
                case 'newuser':
                        check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
                        $user = $_POST['user'];
-                       if ( !is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
+                       if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
                                $update = 'err_new';
                        } else {
                                $password = wp_generate_password( 12, false);
@@ -94,6 +87,7 @@ if ( $action ) {
                                $newuser = $_POST['newuser'];
                                $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
                                if ( $userid ) {
+                                       $blog_prefix = $wpdb->get_blog_prefix( $id );
                                        $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
                                        if ( $user == false )
                                                add_user_to_blog( $id, $userid, $_POST['new_role'] );
@@ -108,7 +102,7 @@ if ( $action ) {
                        break;
 
                case 'remove':
-                       if ( !current_user_can('remove_users')  )
+                       if ( ! current_user_can( 'remove_users' )  )
                                die(__('You can&#8217;t remove users.'));
                        check_admin_referer( 'bulk-users' );
 
@@ -143,7 +137,7 @@ if ( $action ) {
                                        if ( !is_user_member_of_blog( $user_id ) )
                                                wp_die(__('Cheatin&#8217; uh?'));
 
-                                       $user = new WP_User( $user_id );
+                                       $user = get_userdata( $user_id );
                                        $user->set_role( $_REQUEST['new_role'] );
                                }
                        } else {
@@ -152,11 +146,12 @@ if ( $action ) {
                        break;
        }
 
-       restore_current_blog();
        wp_safe_redirect( add_query_arg( 'update', $update, $referer ) );
        exit();
 }
 
+restore_current_blog();
+
 if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
        wp_safe_redirect( $referer );
        exit();
@@ -244,7 +239,6 @@ endif; ?>
 <?php $wp_list_table->views(); ?>
 
 <form method="post" action="site-users.php?action=update-site">
-       <?php wp_nonce_field( 'edit-site' ); ?>
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
 <?php $wp_list_table->display(); ?>
@@ -254,15 +248,8 @@ endif; ?>
 <?php do_action( 'network_site_users_after_list_table', '' );?>
 
 <?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
-<h4 id="add-user"><?php _e('Add User to This Site') ?></h4>
-       <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
-<p><?php _e( 'You may add from existing network users, or set up a new user to add to this site.' ); ?></p>
-       <?php else : ?>
-<p><?php _e( 'You may add from existing network users to this site.' ); ?></p>
-       <?php endif; ?>
-<h5 id="add-existing-user"><?php _e('Add Existing User') ?></h5>
+<h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
 <form action="site-users.php?action=adduser" id="adduser" method="post">
-       <?php wp_nonce_field( 'edit-site' ); ?>
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
        <table class="form-table">
                <tr>
@@ -270,28 +257,26 @@ endif; ?>
                        <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
                </tr>
                <tr>
-                       <th scope="row"><?php _e( 'Role'); ?></th>
+                       <th scope="row"><?php _e( 'Role' ); ?></th>
                        <td><select name="new_role" id="new_role_0">
                        <?php
                        reset( $editblog_roles );
-                       foreach ( $editblog_roles as $role => $role_assoc ){
+                       foreach ( $editblog_roles as $role => $role_assoc ) {
                                $name = translate_user_role( $role_assoc['name'] );
-                               $selected = ( $role == $default_role ) ? 'selected="selected"' : '';
-                               echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
+                               echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
                        }
                        ?>
                        </select></td>
                </tr>
        </table>
        <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
-       <?php submit_button( __('Add User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-existing-user' ) ); ?>
+       <?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?>
 </form>
 <?php endif; ?>
 
 <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
-<h5 id="add-new-user"><?php _e('Add New User') ?></h5>
+<h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
-       <?php wp_nonce_field( 'edit-site' ); ?>
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
        <table class="form-table">
                <tr>
@@ -303,14 +288,13 @@ endif; ?>
                        <td><input type="text" class="regular-text" name="user[email]" /></td>
                </tr>
                <tr>
-                       <th scope="row"><?php _e( 'Role'); ?></th>
+                       <th scope="row"><?php _e( 'Role' ); ?></th>
                        <td><select name="new_role" id="new_role_0">
                        <?php
                        reset( $editblog_roles );
-                       foreach ( $editblog_roles as $role => $role_assoc ){
+                       foreach ( $editblog_roles as $role => $role_assoc ) {
                                $name = translate_user_role( $role_assoc['name'] );
-                               $selected = ( $role == $default_role ) ? 'selected="selected"' : '';
-                               echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
+                               echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
                        }
                        ?>
                        </select></td>
@@ -320,7 +304,7 @@ endif; ?>
                </tr>
        </table>
        <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?>
-       <?php submit_button( __('Add New User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-user' ) ); ?>
+       <?php submit_button( __( 'Add New User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-user' ) ); ?>
 </form>
 <?php endif; ?>
 </div>
index 4bee9e1afdb0ff0eccdf070d4252dcc69a0e0fd4..e9b314da1d8891aa0f036a48c1a3c7cf9382a182 100644 (file)
@@ -16,13 +16,13 @@ if ( ! is_multisite() )
 if ( ! current_user_can( 'manage_sites' ) )
        wp_die( __( 'You do not have permission to access this page.' ) );
 
-$wp_list_table = _get_list_table('WP_MS_Sites_List_Table');
+$wp_list_table = _get_list_table( 'WP_MS_Sites_List_Table' );
 $pagenum = $wp_list_table->get_pagenum();
 
 $title = __( 'Sites' );
 $parent_file = 'sites.php';
 
-add_screen_option( 'per_page', array('label' => _x( 'Sites', 'sites per page (screen options)' )) );
+add_screen_option( 'per_page', array( 'label' => _x( 'Sites', 'sites per page (screen options)' ) ) );
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
@@ -51,35 +51,70 @@ $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
 if ( isset( $_GET['action'] ) ) {
        do_action( 'wpmuadminedit' , '' );
 
+       if ( 'confirm' === $_GET['action'] ) {
+               check_admin_referer( 'confirm' );
+
+               if ( ! headers_sent() ) {
+                       nocache_headers();
+                       header( 'Content-Type: text/html; charset=utf-8' );
+               }
+               if ( $current_site->blog_id == $id )
+                       wp_die( __( 'You are not allowed to change the current site.' ) );
+               ?>
+               <!DOCTYPE html>
+               <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+                       <head>
+                               <title><?php _e( 'WordPress &rsaquo; Confirm your action' ); ?></title>
+
+                               <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+                               <?php
+                               wp_admin_css( 'install', true );
+                               wp_admin_css( 'ie', true );
+                               ?>
+                       </head>
+                       <body class="wp-core-ui">
+                               <h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
+                               <form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
+                                       <input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
+                                       <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
+                                       <input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
+                                       <?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
+                                       <p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
+                                       <?php submit_button( __('Confirm'), 'button' ); ?>
+                               </form>
+                       </body>
+               </html>
+               <?php
+               exit();
+       }
+
+       $updated_action = '';
+
+       $manage_actions = array( 'deleteblog', 'allblogs', 'archiveblog', 'unarchiveblog', 'activateblog', 'deactivateblog', 'unspamblog', 'spamblog', 'unmatureblog', 'matureblog' );
+       if ( in_array( $_GET['action'], $manage_actions ) ) {
+               $action = $_GET['action'];
+               if ( 'allblogs' === $action )
+                       $action = 'bulk-sites';
+
+               check_admin_referer( $action );
+       }
+
        switch ( $_GET['action'] ) {
-               case 'updateblog':
-                       // No longer used.
-               break;
 
                case 'deleteblog':
-                       check_admin_referer('deleteblog');
-                       if ( ! ( current_user_can( 'manage_sites' ) && current_user_can( 'delete_sites' ) ) )
+                       if ( ! current_user_can( 'delete_sites' ) )
                                wp_die( __( 'You do not have permission to access this page.' ) );
 
+                       $updated_action = 'not_deleted';
                        if ( $id != '0' && $id != $current_site->blog_id && current_user_can( 'delete_site', $id ) ) {
                                wpmu_delete_blog( $id, true );
-                               wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'delete' ), wp_get_referer() ) );
-                       } else {
-                               wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'not_deleted' ), wp_get_referer() ) );
+                               $updated_action = 'delete';
                        }
-
-                       exit();
                break;
 
                case 'allblogs':
                        if ( ( isset( $_POST['action'] ) || isset( $_POST['action2'] ) ) && isset( $_POST['allblogs'] ) ) {
-                               check_admin_referer( 'bulk-sites' );
-
-                               if ( ! current_user_can( 'manage_sites' ) )
-                                       wp_die( __( 'You do not have permission to access this page.' ) );
-
                                $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
-                               $blogfunction = '';
 
                                foreach ( (array) $_POST['allblogs'] as $key => $val ) {
                                        if ( $val != '0' && $val != $current_site->blog_id ) {
@@ -87,158 +122,65 @@ if ( isset( $_GET['action'] ) ) {
                                                        case 'delete':
                                                                if ( ! current_user_can( 'delete_site', $val ) )
                                                                        wp_die( __( 'You are not allowed to delete the site.' ) );
-                                                               $blogfunction = 'all_delete';
+
+                                                               $updated_action = 'all_delete';
                                                                wpmu_delete_blog( $val, true );
                                                        break;
 
                                                        case 'spam':
-                                                               $blogfunction = 'all_spam';
-                                                               update_blog_status( $val, 'spam', '1' );
-                                                               set_time_limit( 60 );
-                                                       break;
-
                                                        case 'notspam':
-                                                               $blogfunction = 'all_notspam';
-                                                               update_blog_status( $val, 'spam', '0' );
-                                                               set_time_limit( 60 );
+                                                               $updated_action = ( 'spam' === $doaction ) ? 'all_spam' : 'all_notspam';
+                                                               update_blog_status( $val, 'spam', ( 'spam' === $doaction ) ? '1' : '0' );
                                                        break;
                                                }
                                        } else {
                                                wp_die( __( 'You are not allowed to change the current site.' ) );
                                        }
                                }
-
-                               wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $blogfunction ), wp_get_referer() ) );
                        } else {
                                wp_redirect( network_admin_url( 'sites.php' ) );
+                               exit();
                        }
-                       exit();
                break;
 
                case 'archiveblog':
-                       check_admin_referer( 'archiveblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'archived', '1' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'archive' ), wp_get_referer() ) );
-                       exit();
-               break;
-
                case 'unarchiveblog':
-                       check_admin_referer( 'unarchiveblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'archived', '0' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unarchive' ), wp_get_referer() ) );
-                       exit();
+                       update_blog_status( $id, 'archived', ( 'archiveblog' === $_GET['action'] ) ? '1' : '0' );
                break;
 
                case 'activateblog':
-                       check_admin_referer( 'activateblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
                        update_blog_status( $id, 'deleted', '0' );
                        do_action( 'activate_blog', $id );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'activate' ), wp_get_referer() ) );
-                       exit();
                break;
 
                case 'deactivateblog':
-                       check_admin_referer( 'deactivateblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
                        do_action( 'deactivate_blog', $id );
                        update_blog_status( $id, 'deleted', '1' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'deactivate' ), wp_get_referer() ) );
-                       exit();
                break;
 
                case 'unspamblog':
-                       check_admin_referer( 'unspamblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'spam', '0' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unspam' ), wp_get_referer() ) );
-                       exit();
-               break;
-
                case 'spamblog':
-                       check_admin_referer( 'spamblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'spam', '1' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'spam' ), wp_get_referer() ) );
-                       exit();
+                       update_blog_status( $id, 'spam', ( 'spamblog' === $_GET['action'] ) ? '1' : '0' );
                break;
 
                case 'unmatureblog':
-                       check_admin_referer( 'unmatureblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'mature', '0' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unmature' ), wp_get_referer() ) );
-                       exit();
-               break;
-
                case 'matureblog':
-                       check_admin_referer( 'matureblog' );
-                       if ( ! current_user_can( 'manage_sites' ) )
-                               wp_die( __( 'You do not have permission to access this page.' ) );
-
-                       update_blog_status( $id, 'mature', '1' );
-                       wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'mature' ), wp_get_referer() ) );
-                       exit();
+                       update_blog_status( $id, 'mature', ( 'matureblog' === $_GET['action'] ) ? '1' : '0' );
                break;
+       }
 
-               // Common
-               case 'confirm':
-                       check_admin_referer( 'confirm' );
-                       if ( !headers_sent() ) {
-                               nocache_headers();
-                               header( 'Content-Type: text/html; charset=utf-8' );
-                       }
-                       if ( $current_site->blog_id == $id )
-                               wp_die( __( 'You are not allowed to change the current site.' ) );
-                       ?>
-                       <!DOCTYPE html>
-                       <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
-                               <head>
-                                       <title><?php _e( 'WordPress &rsaquo; Confirm your action' ); ?></title>
-
-                                       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-                                       <?php
-                                       wp_admin_css( 'install', true );
-                                       wp_admin_css( 'ie', true );
-                                       ?>
-                               </head>
-                               <body>
-                                       <h1 id="logo"><img alt="WordPress" src="<?php echo esc_attr( admin_url( 'images/wordpress-logo.png?ver=20120216' ) ); ?>" /></h1>
-                                       <form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
-                                               <input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
-                                               <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
-                                               <input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
-                                               <?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
-                                               <p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
-                                               <?php submit_button( __('Confirm'), 'button' ); ?>
-                                       </form>
-                               </body>
-                       </html>
-                       <?php
-                       exit();
-               break;
+       if ( empty( $updated_action ) && in_array( $_GET['action'], $manage_actions ) )
+               $updated_action = $_GET['action'];
+
+       if ( ! empty( $updated_action ) ) {
+               wp_safe_redirect( add_query_arg( array( 'updated' => $updated_action ), wp_get_referer() ) );
+               exit();
        }
 }
 
 $msg = '';
-if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
-       switch ( $_REQUEST['action'] ) {
+if ( isset( $_GET['updated'] ) ) {
+       switch ( $_GET['updated'] ) {
                case 'all_notspam':
                        $msg = __( 'Sites removed from spam.' );
                break;
@@ -254,29 +196,30 @@ if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty(
                case 'not_deleted':
                        $msg = __( 'You do not have permission to delete that site.' );
                break;
-               case 'archive':
+               case 'archiveblog':
                        $msg = __( 'Site archived.' );
                break;
-               case 'unarchive':
+               case 'unarchiveblog':
                        $msg = __( 'Site unarchived.' );
                break;
-               case 'activate':
+               case 'activateblog':
                        $msg = __( 'Site activated.' );
                break;
-               case 'deactivate':
+               case 'deactivateblog':
                        $msg = __( 'Site deactivated.' );
                break;
-               case 'unspam':
+               case 'unspamblog':
                        $msg = __( 'Site removed from spam.' );
                break;
-               case 'spam':
+               case 'spamblog':
                        $msg = __( 'Site marked as spam.' );
                break;
                default:
-                       $msg = apply_filters( 'network_sites_updated_message_' . $_REQUEST['action'] , __( 'Settings saved.' ) );
+                       $msg = apply_filters( 'network_sites_updated_message_' . $_GET['updated'], __( 'Settings saved.' ) );
                break;
        }
-       if ( $msg )
+
+       if ( ! empty( $msg ) )
                $msg = '<div class="updated" id="message"><p>' . $msg . '</p></div>';
 }
 
@@ -286,11 +229,11 @@ require_once( '../admin-header.php' );
 ?>
 
 <div class="wrap">
-<?php screen_icon('ms-admin'); ?>
-<h2><?php _e('Sites') ?>
-<?php echo $msg; ?>
+<?php screen_icon( 'ms-admin' ); ?>
+<h2><?php _e( 'Sites' ) ?>
+
 <?php if ( current_user_can( 'create_sites') ) : ?>
-        <a href="<?php echo network_admin_url('site-new.php'); ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'site' ); ?></a>
+       <a href="<?php echo network_admin_url('site-new.php'); ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'site' ); ?></a>
 <?php endif; ?>
 
 <?php if ( isset( $_REQUEST['s'] ) && $_REQUEST['s'] ) {
@@ -298,6 +241,8 @@ require_once( '../admin-header.php' );
 } ?>
 </h2>
 
+<?php echo $msg; ?>
+
 <form action="" method="get" id="ms-search">
 <?php $wp_list_table->search_box( __( 'Search Sites' ), 'site' ); ?>
 <input type="hidden" name="action" value="blogs" />
index ba56a4a483e9eab02dc2a274fe267747d7ceafc3..04840ee1109d585099d9663160d33254e8747e1c 100644 (file)
@@ -13,11 +13,6 @@ require_once( './admin.php' );
 if ( ! is_multisite() )
        wp_die( __( 'Multisite support is not enabled.' ) );
 
-$menu_perms = get_site_option( 'menu_items', array() );
-
-if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
-       wp_die( __( 'Cheatin&#8217; uh?' ) );
-
 if ( !current_user_can('manage_network_themes') )
        wp_die( __( 'You do not have sufficient permissions to manage network themes.' ) );
 
@@ -181,10 +176,21 @@ if ( $action ) {
                                exit;
                        } // Endif verify-delete
 
-                       foreach ( $themes as $theme )
-                               $delete_result = delete_theme( $theme, esc_url( add_query_arg( array('verify-delete' => 1), $_SERVER['REQUEST_URI'] ) ) );
+                       foreach ( $themes as $theme ) {
+                               $delete_result = delete_theme( $theme, esc_url( add_query_arg( array(
+                                       'verify-delete' => 1,
+                                       'action' => 'delete-selected',
+                                       'checked' => $_REQUEST['checked'],
+                                       '_wpnonce' => $_REQUEST['_wpnonce']
+                               ), network_admin_url( 'themes.php' ) ) ) );
+                       }
+                       
                        $paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
-                       wp_redirect( network_admin_url( "themes.php?deleted=".count( $themes )."&paged=$paged&s=$s" ) );
+                       wp_redirect( add_query_arg( array(
+                               'deleted' => count( $themes ),
+                               'paged' => $paged,
+                               's' => $s
+                       ), network_admin_url( 'themes.php' ) ) );
                        exit;
                        break;
        }
index d556e13cdab80ab674fee17dae33b3031c5e9f17..cfbf4002ace24c56214675050b8abdbe26c58551 100644 (file)
@@ -60,9 +60,12 @@ switch ( $action ) {
                }
                echo "<ul>";
                foreach ( (array) $blogs as $details ) {
-                       $siteurl = get_blog_option( $details['blog_id'], 'siteurl' );
+                       switch_to_blog( $details['blog_id'] );
+                       $siteurl = site_url();
+                       $upgrade_url = admin_url( 'upgrade.php?step=upgrade_db' );
+                       restore_current_blog();
                        echo "<li>$siteurl</li>";
-                       $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=upgrade_db", array( 'timeout' => 120, 'httpversion' => '1.1' ) );
+                       $response = wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1' ) );
                        if ( is_wp_error( $response ) )
                                wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: <em>%2$s</em>' ), $siteurl, $response->get_error_message() ) );
                        do_action( 'after_mu_upgrade', $response );
index 98246c3fbfb6727c4dbc91d3d772dbf8153a1b88..1318355448add4d3eaf4a33e0bc729dafef80d1e 100644 (file)
@@ -24,7 +24,7 @@ function confirm_delete_users( $users ) {
        screen_icon();
        ?>
        <h2><?php esc_html_e( 'Users' ); ?></h2>
-       <p><?php _e( 'Transfer or delete posts and links before deleting users.' ); ?></p>
+       <p><?php _e( 'Transfer or delete posts before deleting users.' ); ?></p>
        <form action="users.php?action=dodelete" method="post">
        <input type="hidden" name="dodelete" />
        <?php
@@ -34,7 +34,7 @@ function confirm_delete_users( $users ) {
 
        foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) {
                if ( $val != '' && $val != '0' ) {
-                       $delete_user = new WP_User( $val );
+                       $delete_user = get_userdata( $val );
 
                        if ( ! current_user_can( 'delete_user', $delete_user->ID ) )
                                wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
@@ -47,7 +47,7 @@ function confirm_delete_users( $users ) {
 
                        if ( !empty( $blogs ) ) {
                                ?>
-                               <br /><fieldset><p><legend><?php printf( __( "What should be done with posts and links owned by <em>%s</em>?" ), $delete_user->user_login ); ?></legend></p>
+                               <br /><fieldset><p><legend><?php printf( __( "What should be done with posts owned by <em>%s</em>?" ), $delete_user->user_login ); ?></legend></p>
                                <?php
                                foreach ( (array) $blogs as $key => $details ) {
                                        $blog_users = get_users( array( 'blog_id' => $details->userblog_id ) );
@@ -67,9 +67,9 @@ function confirm_delete_users( $users ) {
                                                <ul style="list-style:none;">
                                                        <li><?php printf( __( 'Site: %s' ), $user_site ); ?></li>
                                                        <li><label><input type="radio" id="delete_option0" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="delete" checked="checked" />
-                                                       <?php _e( 'Delete all posts and links.' ); ?></label></li>
+                                                       <?php _e( 'Delete all posts.' ); ?></label></li>
                                                        <li><label><input type="radio" id="delete_option1" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="reassign" />
-                                                       <?php echo __( 'Attribute all posts and links to:' ) . '</label>' . $user_dropdown; ?></li>
+                                                       <?php echo __( 'Attribute all posts to:' ) . '</label>' . $user_dropdown; ?></li>
                                                </ul>
                                                <?php
                                        }
@@ -139,8 +139,8 @@ if ( isset( $_GET['action'] ) ) {
                                                        break;
 
                                                        case 'spam':
-                                                               $user = new WP_User( $val );
-                                                               if ( in_array( $user->user_login, get_super_admins() ) )
+                                                               $user = get_userdata( $val );
+                                                               if ( is_super_admin( $user->ID ) )
                                                                        wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) );
 
                                                                $userfunction = 'all_spam';
index 22039fd4271a2cf5054e55779b4d142b45f15b15..df14d51aab79cbc2432093689a50d33ff3debbd6 100644 (file)
@@ -71,7 +71,8 @@ include('./admin-header.php');
 
 <label for="close_comments_for_old_posts">
 <input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked('1', get_option('close_comments_for_old_posts')); ?> />
-<?php printf( __('Automatically close comments on articles older than %s days'), '</label><input name="close_comments_days_old" type="number" min="0" step="1" id="close_comments_days_old" value="' . esc_attr(get_option('close_comments_days_old')) . '" class="small-text" />'); ?>
+<?php printf( __('Automatically close comments on articles older than %s days'), '</label><label for="close_comments_days_old"><input name="close_comments_days_old" type="number" min="0" step="1" id="close_comments_days_old" value="' . esc_attr(get_option('close_comments_days_old')) . '" class="small-text" />'); ?>
+</label>
 <br />
 <label for="thread_comments">
 <input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked('1', get_option('thread_comments')); ?> />
@@ -79,7 +80,7 @@ include('./admin-header.php');
 
 $maxdeep = (int) apply_filters( 'thread_comments_depth_max', 10 );
 
-$thread_comments_depth = '</label><select name="thread_comments_depth" id="thread_comments_depth">';
+$thread_comments_depth = '</label><label for="thread_comments_depth"><select name="thread_comments_depth" id="thread_comments_depth">';
 for ( $i = 2; $i <= $maxdeep; $i++ ) {
        $thread_comments_depth .= "<option value='" . esc_attr($i) . "'";
        if ( get_option('thread_comments_depth') == $i ) $thread_comments_depth .= " selected='selected'";
@@ -89,7 +90,8 @@ $thread_comments_depth .= '</select>';
 
 printf( __('Enable threaded (nested) comments %s levels deep'), $thread_comments_depth );
 
-?><br />
+?></label>
+<br />
 <label for="page_comments">
 <input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked('1', get_option('page_comments')); ?> />
 <?php
@@ -172,13 +174,10 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <tr valign="top">
 <th scope="row"><?php _e('Avatar Display'); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Avatar Display'); ?></span></legend>
-<?php
-       $yesorno = array( 0 => __( 'Don&#8217;t show Avatars' ), 1 => __( 'Show Avatars' ) );
-       foreach ( $yesorno as $key => $value) {
-               $selected = (get_option('show_avatars') == $key) ? 'checked="checked"' : '';
-               echo "\n\t<label><input type='radio' name='show_avatars' value='" . esc_attr($key) . "' $selected/> $value</label><br />";
-       }
-?>
+       <label for="show_avatars">
+               <input type="checkbox" id="show_avatars" name="show_avatars" value="1" <?php checked( get_option('show_avatars'), 1 ); ?> />
+               <?php _e( 'Show Avatars' ); ?>
+       </label>
 </fieldset></td>
 </tr>
 <tr valign="top">
index d8a8b805ff96e414a9ee7d0196f3e6eb9e368b13..fdae33a60b14a1fb6833ab196c4f8df411eb3951 100644 (file)
@@ -20,10 +20,9 @@ $timezone_format = _x('Y-m-d G:i:s', 'timezone date format');
 /**
  * Display JavaScript on the page.
  *
- * @package WordPress
- * @subpackage General_Settings_Screen
+ * @since 3.5.0
  */
-function add_js() {
+function options_general_add_js() {
 ?>
 <script type="text/javascript">
 //<![CDATA[
@@ -45,18 +44,18 @@ function add_js() {
                });
                $("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
                        var format = $(this);
-                       format.siblings('img').css('visibility','visible');
+                       format.siblings('.spinner').css('display', 'inline-block'); // show(); can't be used here
                        $.post(ajaxurl, {
                                        action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
                                        date : format.val()
-                               }, function(d) { format.siblings('img').css('visibility','hidden'); format.siblings('.example').text(d); } );
+                               }, function(d) { format.siblings('.spinner').hide(); format.siblings('.example').text(d); } );
                });
        });
 //]]>
 </script>
 <?php
 }
-add_action('admin_head', 'add_js');
+add_action('admin_head', 'options_general_add_js');
 
 $options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
        '<p>' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.') . '</p>';
@@ -231,12 +230,12 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
        <fieldset><legend class="screen-reader-text"><span><?php _e('Date Format') ?></span></legend>
 <?php
 
-       $date_formats = apply_filters( 'date_formats', array(
+       $date_formats = array_unique( apply_filters( 'date_formats', array(
                __('F j, Y'),
                'Y/m/d',
                'm/d/Y',
                'd/m/Y',
-       ) );
+       ) ) );
 
        $custom = true;
 
@@ -251,7 +250,7 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
 
        echo '  <label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
        checked( $custom );
-       echo '/> ' . __('Custom:') . ' </label><input type="text" name="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('date_format') ) . "</span> <img class='ajax-loading' src='" . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . "' />\n";
+       echo '/> ' . __('Custom:') . ' </label><input type="text" name="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('date_format') ) . "</span> <span class='spinner'></span>\n";
 
        echo "\t<p>" . __('<a href="http://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
 ?>
@@ -264,11 +263,11 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
        <fieldset><legend class="screen-reader-text"><span><?php _e('Time Format') ?></span></legend>
 <?php
 
-       $time_formats = apply_filters( 'time_formats', array(
+       $time_formats = array_unique( apply_filters( 'time_formats', array(
                __('g:i a'),
                'g:i A',
                'H:i',
-       ) );
+       ) ) );
 
        $custom = true;
 
@@ -283,7 +282,7 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
 
        echo '  <label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
        checked( $custom );
-       echo '/> ' . __('Custom:') . ' </label><input type="text" name="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('time_format') ) . "</span> <img class='ajax-loading' src='" . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . "' />\n";
+       echo '/> ' . __('Custom:') . ' </label><input type="text" name="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('time_format') ) . "</span> <span class='spinner'></span>\n";
        ;
 ?>
        </fieldset>
index ee3240107de072c0f456c84a560c754a9cf5a955..71d4292c6c509ce94c89a5448313d36b31856d5c 100644 (file)
@@ -15,15 +15,9 @@ if ( ! current_user_can( 'manage_options' ) )
 $title = __('Media Settings');
 $parent_file = 'options-general.php';
 
-$media_options_help = '<p>' . __('You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size.') . '</p>' .
-       '<p>' . __('The Embed option allows you embed a video, image, or other media content into your content automatically by typing the URL (of the web page where the file lives) on its own line when you create your content.');
+$media_options_help = '<p>' . __('You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size.') . '</p>';
 
-if ( ! empty( $content_width ) )
-       $media_options_help .= ' ' . __( 'If you do not set the maximum embed size, it will be automatically sized to fit into your content area.' );
-
-$media_options_help .= '</p>';
-
-if ( ! is_multisite() ) {
+if ( ! is_multisite() && ( get_option('upload_url_path') || ( get_option('upload_path') != 'wp-content/uploads' && get_option('upload_path') ) ) ) {
        $media_options_help .= '<p>' . __('Uploading Files allows you to choose the folder and path for storing your uploaded files.') . '</p>';
 }
 
@@ -91,36 +85,20 @@ include('./admin-header.php');
 <?php do_settings_fields('media', 'default'); ?>
 </table>
 
+<?php if ( isset( $GLOBALS['wp_settings']['media']['embeds'] ) ) : ?>
 <h3><?php _e('Embeds') ?></h3>
-
 <table class="form-table">
-
-<tr valign="top">
-<th scope="row"><?php _e('Auto-embeds'); ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube.'); ?></span></legend>
-<label for="embed_autourls"><input name="embed_autourls" type="checkbox" id="embed_autourls" value="1" <?php checked( '1', get_option('embed_autourls') ); ?>/> <?php _e('When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube.'); ?></label>
-</fieldset></td>
-</tr>
-
-<tr valign="top">
-<th scope="row"><?php _e('Maximum embed size') ?></th>
-<td>
-<label for="embed_size_w"><?php _e('Width'); ?></label>
-<input name="embed_size_w" type="number" step="1" min="0" id="embed_size_w" value="<?php form_option('embed_size_w'); ?>" class="small-text" />
-<label for="embed_size_h"><?php _e('Height'); ?></label>
-<input name="embed_size_h" type="number" step="1" min="0" id="embed_size_h" value="<?php form_option('embed_size_h'); ?>" class="small-text" />
-<?php if ( ! empty( $content_width ) )
-       echo '<p class="description">' . __( 'If the width value is left blank, embeds will default to the max width of your theme.' ) . '</p>';
-?>
-</td>
-</tr>
-
-<?php do_settings_fields('media', 'embeds'); ?>
+<?php do_settings_fields( 'media', 'embeds' ); ?>
 </table>
+<?php endif; ?>
 
 <?php if ( !is_multisite() ) : ?>
 <h3><?php _e('Uploading Files'); ?></h3>
 <table class="form-table">
+<?php
+// If upload_url_path is not the default (empty), and upload_path is not the default ('wp-content/uploads' or empty)
+if ( get_option('upload_url_path') || ( get_option('upload_path') != 'wp-content/uploads' && get_option('upload_path') ) ) :
+?>
 <tr valign="top">
 <th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
 <td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
@@ -134,7 +112,7 @@ include('./admin-header.php');
 <p class="description"><?php _e('Configuring this is optional. By default, it should be blank.'); ?></p>
 </td>
 </tr>
-
+<?php endif; ?>
 <tr>
 <th scope="row" colspan="2" class="th-full">
 <label for="uploads_use_yearmonth_folders">
index 9ccb62f263753ecee97cd24fdcf5d1ff2b86dcc5..906361e8a8fac0bbb2835cd7786f83104a334991 100644 (file)
@@ -49,15 +49,14 @@ get_current_screen()->set_help_sidebar(
 /**
  * Display JavaScript on the page.
  *
- * @package WordPress
- * @subpackage Permalink_Settings_Screen
+ * @since 3.5.0
  */
-function add_js() {
+function options_permalink_add_js() {
        ?>
 <script type="text/javascript">
 //<![CDATA[
 jQuery(document).ready(function() {
-       jQuery('input:radio.tog').change(function() {
+       jQuery('.permalink-structure input:radio').change(function() {
                if ( 'custom' == this.value )
                        return;
                jQuery('#permalink_structure').val( this.value );
@@ -70,7 +69,7 @@ jQuery(document).ready(function() {
 </script>
 <?php
 }
-add_filter('admin_head', 'add_js');
+add_filter('admin_head', 'options_permalink_add_js');
 
 include('./admin-header.php');
 
@@ -190,35 +189,35 @@ $structures = array(
 );
 ?>
 <h3><?php _e('Common Settings'); ?></h3>
-<table class="form-table">
+<table class="form-table permalink-structure">
        <tr>
-               <th><label><input name="selection" type="radio" value="" class="tog" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
                <td><code><?php echo get_option('home'); ?>/?p=123</code></td>
        </tr>
        <tr>
-               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[1]); ?>" class="tog" <?php checked($structures[1], $permalink_structure); ?> /> <?php _e('Day and name'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[1]); ?>" <?php checked($structures[1], $permalink_structure); ?> /> <?php _e('Day and name'); ?></label></th>
                <td><code><?php echo get_option('home') . $blog_prefix . $prefix . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td>
        </tr>
        <tr>
-               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[2]); ?>" class="tog" <?php checked($structures[2], $permalink_structure); ?> /> <?php _e('Month and name'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[2]); ?>" <?php checked($structures[2], $permalink_structure); ?> /> <?php _e('Month and name'); ?></label></th>
                <td><code><?php echo get_option('home') . $blog_prefix . $prefix . '/' . date('Y') . '/' . date('m') . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td>
        </tr>
        <tr>
-               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[3]); ?>" class="tog" <?php checked($structures[3], $permalink_structure); ?> /> <?php _e('Numeric'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[3]); ?>" <?php checked($structures[3], $permalink_structure); ?> /> <?php _e('Numeric'); ?></label></th>
                <td><code><?php echo get_option('home') . $blog_prefix . $prefix . '/' . _x( 'archives', 'sample permalink base' ) . '/123'; ?></code></td>
        </tr>
        <tr>
-               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[4]); ?>" class="tog" <?php checked($structures[4], $permalink_structure); ?> /> <?php _e('Post name'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[4]); ?>" <?php checked($structures[4], $permalink_structure); ?> /> <?php _e('Post name'); ?></label></th>
                <td><code><?php echo get_option('home') . $blog_prefix . $prefix . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td>
        </tr>
        <tr>
                <th>
-                       <label><input name="selection" id="custom_selection" type="radio" value="custom" class="tog" <?php checked( !in_array($permalink_structure, $structures) ); ?> />
+                       <label><input name="selection" id="custom_selection" type="radio" value="custom" <?php checked( !in_array($permalink_structure, $structures) ); ?> />
                        <?php _e('Custom Structure'); ?>
                        </label>
                </th>
                <td>
-                       <?php echo $blog_prefix; ?>
+                       <code><?php echo get_option('home') . $blog_prefix; ?></code>
                        <input name="permalink_structure" id="permalink_structure" type="text" value="<?php echo esc_attr($permalink_structure); ?>" class="regular-text code" />
                </td>
        </tr>
diff --git a/wp-admin/options-privacy.php b/wp-admin/options-privacy.php
deleted file mode 100644 (file)
index d0d4336..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- * Privacy Options Settings Administration Screen.
- *
- * @package WordPress
- * @subpackage Administration
- */
-
-/** Load WordPress Administration Bootstrap */
-require_once('./admin.php');
-
-if ( ! current_user_can( 'manage_options' ) )
-       wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) );
-
-$title = __('Privacy Settings');
-$parent_file = 'options-general.php';
-
-get_current_screen()->add_help_tab( array(
-       'id'      => 'overview',
-       'title'   => __('Overview'),
-       'content' => '<p>' . __('You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the radio button next to &#8220;Ask search engines not to index this site&#8221; and click the Save Changes button at the bottom of the screen. Note that your privacy is not complete; your site is still visible on the web.') . '</p>' .
-               '<p>' . __('When this setting is in effect a reminder is shown in the Right Now box of the Dashboard that says, &#8220;Search Engines Blocked,&#8221; to remind you that your site is not being crawled.') . '</p>',
-) );
-
-get_current_screen()->set_help_sidebar(
-       '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Settings_Privacy_Screen" target="_blank">Documentation on Privacy Settings</a>') . '</p>' .
-       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
-);
-
-include('./admin-header.php');
-?>
-
-<div class="wrap">
-<?php screen_icon(); ?>
-<h2><?php echo esc_html( $title ); ?></h2>
-
-<form method="post" action="options.php">
-<?php settings_fields('privacy'); ?>
-
-<table class="form-table">
-<tr valign="top">
-<th scope="row"><?php _e( 'Site Visibility' ); ?> </th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Site Visibility' ); ?> </span></legend>
-<input id="blog-public" type="radio" name="blog_public" value="1" <?php checked('1', get_option('blog_public')); ?> />
-<label for="blog-public"><?php _e( 'Allow search engines to index this site.' );?></label><br/>
-<input id="blog-norobots" type="radio" name="blog_public" value="0" <?php checked('0', get_option('blog_public')); ?> />
-<label for="blog-norobots"><?php _e( 'Ask search engines not to index this site.' ); ?></label>
-<p class="description"><?php _e( 'Note: Neither of these options blocks access to your site &mdash; it is up to search engines to honor your request.' ); ?></p>
-<?php do_action('blog_privacy_selector'); ?>
-</fieldset></td>
-</tr>
-<?php do_settings_fields('privacy', 'default'); ?>
-</table>
-
-<?php do_settings_sections('privacy'); ?>
-
-<?php submit_button(); ?>
-</form>
-
-</div>
-
-<?php include('./admin-footer.php') ?>
index 28897c18d0a73785ec815cedd94d1407600ab46b..3ca10df9bb5ac460d3023f0b06438188b607c618 100644 (file)
@@ -18,10 +18,9 @@ $parent_file = 'options-general.php';
 /**
  * Display JavaScript on the page.
  *
- * @package WordPress
- * @subpackage Reading_Settings_Screen
+ * @since 3.5.0
  */
-function add_js() {
+function options_reading_add_js() {
 ?>
 <script type="text/javascript">
 //<![CDATA[
@@ -39,17 +38,34 @@ function add_js() {
 </script>
 <?php
 }
-add_action('admin_head', 'add_js');
+add_action('admin_head', 'options_reading_add_js');
+
+/**
+ * Render the blog charset setting.
+ *
+ * @since 3.5.0
+ */
+function options_reading_blog_charset() {
+       echo '<input name="blog_charset" type="text" id="blog_charset" value="' . esc_attr( get_option( 'blog_charset' ) ) . '" class="regular-text" />';
+       echo '<p class="description">' . __( 'The <a href="http://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended)' ) . '</p>';
+}
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
        'content' => '<p>' . __('This screen contains the settings that affect the display of your content.') . '</p>' .
                '<p>' . sprintf(__('You can choose what&#8217;s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two <a href="%s">Pages</a>. One will become the front page, and the other will be where your posts are displayed.'), 'post-new.php?post_type=page') . '</p>' .
-               '<p>' . __('You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display, whether to show full text or a summary, and the character set encoding.') . '</p>' .
+               '<p>' . __('You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display and whether to show full text or a summary.') . '</p>' .
                '<p>' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '</p>',
 ) );
 
+get_current_screen()->add_help_tab( array(
+       'id'      => 'site-visibility',
+       'title'   => has_action( 'blog_privacy_selector' ) ? __( 'Site Visibility' ) : __( 'Search Engine Visibility' ),
+       'content' => '<p>' . __( 'You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to &#8220;Discourage search engines from indexing this site&#8221; and click the Save Changes button at the bottom of the screen. Note that your privacy is not complete; your site is still visible on the web.' ) . '</p>' .
+               '<p>' . __( 'When this setting is in effect, a reminder is shown in the Right Now box of the Dashboard that says, &#8220;Search Engines Discouraged,&#8221; to remind you that your site is not being crawled.' ) . '</p>',
+) );
+
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
        '<p>' . __('<a href="http://codex.wordpress.org/Settings_Reading_Screen" target="_blank">Documentation on Reading Settings</a>') . '</p>' .
@@ -63,8 +79,13 @@ include( './admin-header.php' );
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?></h2>
 
-<form name="form1" method="post" action="options.php">
-<?php settings_fields( 'reading' ); ?>
+<form method="post" action="options.php">
+<?php
+settings_fields( 'reading' );
+
+if ( ! in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) )
+       add_settings_field( 'blog_charset', __( 'Encoding for pages and feeds' ), 'options_reading_blog_charset', 'reading', 'default', array( 'label_for' => 'blog_charset' ) );
+?>
 
 <?php if ( ! get_pages() ) : ?>
 <input name="show_on_front" type="hidden" value="posts" />
@@ -120,11 +141,24 @@ else :
 </fieldset></td>
 </tr>
 
-<tr valign="top">
-<th scope="row"><label for="blog_charset"><?php _e( 'Encoding for pages and feeds' ); ?></label></th>
-<td><input name="blog_charset" type="text" id="blog_charset" value="<?php form_option( 'blog_charset' ); ?>" class="regular-text" />
-<p class="description"><?php _e( 'The <a href="http://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended, if you are adventurous there are some <a href="http://en.wikipedia.org/wiki/Character_set">other encodings</a>)' ); ?></p></td>
+<tr valign="top" class="option-site-visibility">
+<th scope="row"><?php has_action( 'blog_privacy_selector' ) ? _e( 'Site Visibility' ) : _e( 'Search Engine Visibility' ); ?> </th>
+<td><fieldset><legend class="screen-reader-text"><span><?php has_action( 'blog_privacy_selector' ) ? _e( 'Site Visibility' ) : _e( 'Search Engine Visibility' ); ?> </span></legend>
+<?php if ( has_action( 'blog_privacy_selector' ) ) : ?>
+       <input id="blog-public" type="radio" name="blog_public" value="1" <?php checked('1', get_option('blog_public')); ?> />
+       <label for="blog-public"><?php _e( 'Allow search engines to index this site' );?></label><br/>
+       <input id="blog-norobots" type="radio" name="blog_public" value="0" <?php checked('0', get_option('blog_public')); ?> />
+       <label for="blog-norobots"><?php _e( 'Discourage search engines from indexing this site' ); ?></label>
+       <p class="description"><?php _e( 'Note: Neither of these options blocks access to your site &mdash; it is up to search engines to honor your request.' ); ?></p>
+       <?php do_action('blog_privacy_selector'); ?>
+<?php else : ?>
+       <label for="blog_public"><input name="blog_public" type="checkbox" id="blog_public" value="0" <?php checked( '0', get_option( 'blog_public' ) ); ?> />
+       <?php _e( 'Discourage search engines from indexing this site' ); ?></label>
+       <p class="description"><?php _e( 'It is up to search engines to honor this request.' ); ?></p>
+<?php endif; ?>
+</fieldset></td>
 </tr>
+
 <?php do_settings_fields( 'reading', 'default' ); ?>
 </table>
 
index fdf3a08f78d67844201c67db6a0104ded87fd254..53647fd6dd05be47002c66be6659a52bff141aa9 100644 (file)
@@ -28,29 +28,21 @@ get_current_screen()->add_help_tab( array(
        'content' => '<p>' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you&#8217;ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '</p>',
 ) );
 
-if ( is_multisite() ) {
-       $post_email_help = '<p>' . __('Due to security issues, you cannot use Post By Email on Multisite Installs.') . '</p>';
-} else {
-       $post_email_help = '<p>' . __('Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.') . '</p>';
+if ( apply_filters( 'enable_post_by_email_configuration', true ) ) {
+       get_current_screen()->add_help_tab( array(
+               'id'      => 'options-postemail',
+               'title'   => __( 'Post Via Email' ),
+               'content' => '<p>' . __( 'Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.' ) . '</p>',
+       ) );
 }
 
-get_current_screen()->add_help_tab( array(
-       'id'      => 'options-postemail',
-       'title'   => __('Post Via Email'),
-       'content' => $post_email_help,
-) );
-
-get_current_screen()->add_help_tab( array(
-       'id'      => 'options-remote',
-       'title'   => __('Remote Publishing'),
-       'content' => '<p>' . __('Remote Publishing allows you to use an external editor (like the iOS or Android app) to write your posts.') . '</p>',
-) );
-
-get_current_screen()->add_help_tab( array(
-       'id'      => 'options-services',
-       'title'   => __('Update Services'),
-       'content' => '<p>' . __('If desired, WordPress will automatically alert various services of your new posts.') . '</p>',
-) );
+if ( apply_filters( 'enable_update_services_configuration', true ) ) {
+       get_current_screen()->add_help_tab( array(
+               'id'      => 'options-services',
+               'title'   => __( 'Update Services' ),
+               'content' => '<p>' . __( 'If desired, WordPress will automatically alert various services of your new posts.' ) . '</p>',
+       ) );
+}
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
@@ -70,11 +62,6 @@ include('./admin-header.php');
 
 <table class="form-table">
 <tr valign="top">
-<th scope="row"><label for="default_post_edit_rows"> <?php _e('Size of the post box') ?></label></th>
-<td><input name="default_post_edit_rows" type="text" id="default_post_edit_rows" value="<?php form_option('default_post_edit_rows'); ?>" class="small-text" />
-<?php _e('lines') ?></td>
-</tr>
-<tr valign="top">
 <th scope="row"><?php _e('Formatting') ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Formatting') ?></span></legend>
 <label for="use_smilies">
@@ -107,7 +94,10 @@ if ( current_theme_supports( 'post-formats' ) ) :
        </select>
 </td>
 </tr>
-<?php endif; endif; ?>
+<?php endif; endif;
+
+if ( get_option( 'link_manager_enabled' ) ) :
+?>
 <tr valign="top">
 <th scope="row"><label for="default_link_category"><?php _e('Default Link Category') ?></label></th>
 <td>
@@ -116,7 +106,12 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_link_category
 ?>
 </td>
 </tr>
-<?php do_settings_fields('writing', 'default'); ?>
+<?php endif; ?>
+
+<?php
+do_settings_fields('writing', 'default');
+do_settings_fields('writing', 'remote_publishing'); // A deprecated section.
+?>
 </table>
 
 <h3 class="title"><?php _e('Press This') ?></h3>
@@ -163,28 +158,6 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_categor
 </table>
 <?php } ?>
 
-<h3><?php _e('Remote Publishing') ?></h3>
-<p><?php printf(__('To post to WordPress from a desktop blogging client or remote website that uses the Atom Publishing Protocol or one of the XML-RPC publishing interfaces you must enable them below.')) ?></p>
-<table class="form-table">
-<tr valign="top">
-<th scope="row"><?php _e('Atom Publishing Protocol') ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('Atom Publishing Protocol') ?></span></legend>
-<label for="enable_app">
-<input name="enable_app" type="checkbox" id="enable_app" value="1" <?php checked('1', get_option('enable_app')); ?> />
-<?php _e('Enable the Atom Publishing Protocol.') ?></label><br />
-</fieldset></td>
-</tr>
-<tr valign="top">
-<th scope="row"><?php _e('XML-RPC') ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('XML-RPC') ?></span></legend>
-<label for="enable_xmlrpc">
-<input name="enable_xmlrpc" type="checkbox" id="enable_xmlrpc" value="1" <?php checked('1', get_option('enable_xmlrpc')); ?> />
-<?php _e('Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols.') ?></label><br />
-</fieldset></td>
-</tr>
-<?php do_settings_fields('writing', 'remote_publishing'); ?>
-</table>
-
 <?php if ( apply_filters( 'enable_update_services_configuration', true ) ) { ?>
 <h3><?php _e('Update Services') ?></h3>
 
@@ -196,7 +169,7 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_categor
 
 <?php else : ?>
 
-       <p><?php printf(__('WordPress is not notifying any <a href="http://codex.wordpress.org/Update_Services">Update Services</a> because of your site&#8217;s <a href="%s">privacy settings</a>.'), 'options-privacy.php'); ?></p>
+       <p><?php printf(__('WordPress is not notifying any <a href="http://codex.wordpress.org/Update_Services">Update Services</a> because of your site&#8217;s <a href="%s">visibility settings</a>.'), 'options-reading.php'); ?></p>
 
 <?php endif; ?>
 <?php } // multisite ?>
index e141995cef94318b960198453f72bd60ab99ca8a..92ae917bf7d4760c7945fba2a4d892136f6d2775 100644 (file)
@@ -61,14 +61,16 @@ if ( is_multisite() && !is_super_admin() && 'update' != $action )
 $whitelist_options = array(
        'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ),
        'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
-       'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type', 'embed_autourls', 'embed_size_w', 'embed_size_h' ),
-       'privacy' => array( 'blog_public' ),
-       'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'blog_charset', 'show_on_front', 'page_on_front', 'page_for_posts' ),
-       'writing' => array( 'default_post_edit_rows', 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format', 'enable_app', 'enable_xmlrpc' ),
-       'options' => array( '' ) );
+       'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ),
+       'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'page_on_front', 'page_for_posts', 'blog_public' ),
+       'writing' => array( 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format' )
+);
+$whitelist_options['misc'] = $whitelist_options['options'] = $whitelist_options['privacy'] = array();
 
 $mail_options = array('mailserver_url', 'mailserver_port', 'mailserver_login', 'mailserver_pass');
-$uploads_options = array('uploads_use_yearmonth_folders', 'upload_path', 'upload_url_path');
+
+if ( ! in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) )
+       $whitelist_options['reading'][] = 'blog_charset';
 
 if ( !is_multisite() ) {
        if ( !defined( 'WP_SITEURL' ) )
@@ -83,16 +85,19 @@ if ( !is_multisite() ) {
        $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options);
        $whitelist_options['writing'][] = 'ping_sites';
 
-       $whitelist_options['media'] = array_merge($whitelist_options['media'], $uploads_options);
+       $whitelist_options['media'][] = 'uploads_use_yearmonth_folders';
+
+       // If upload_url_path and upload_path are both default values, they're locked.
+       if ( get_option( 'upload_url_path' ) || ( get_option('upload_path') != 'wp-content/uploads' && get_option('upload_path') ) ) {
+               $whitelist_options['media'][] = 'upload_path';
+               $whitelist_options['media'][] = 'upload_url_path';
+       }
 } else {
        $whitelist_options['general'][] = 'new_admin_email';
        $whitelist_options['general'][] = 'WPLANG';
-       $whitelist_options['general'][] = 'language';
 
        if ( apply_filters( 'enable_post_by_email_configuration', true ) )
                $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options);
-
-       $whitelist_options[ 'misc' ] = array();
 }
 
 $whitelist_options = apply_filters( 'whitelist_options', $whitelist_options );
@@ -139,14 +144,15 @@ if ( 'update' == $action ) {
                        if ( $unregistered )
                                _deprecated_argument( 'options.php', '2.7', sprintf( __( 'The <code>%1$s</code> setting is unregistered. Unregistered settings are deprecated. See http://codex.wordpress.org/Settings_API' ), $option, $option_page ) );
 
-                       $option = trim($option);
+                       $option = trim( $option );
                        $value = null;
-                       if ( isset($_POST[$option]) )
-                               $value = $_POST[$option];
-                       if ( !is_array($value) )
-                               $value = trim($value);
-                       $value = stripslashes_deep($value);
-                       update_option($option, $value);
+                       if ( isset( $_POST[ $option ] ) ) {
+                               $value = $_POST[ $option ];
+                               if ( ! is_array( $value ) )
+                                       $value = trim( $value );
+                               $value = stripslashes_deep( $value );
+                       }
+                       update_option( $option, $value );
                }
        }
 
index b7758d225d7d61da226a43c0a9732aae08d9da98..3ab0225061b096aa7cd4c9e21504b2c941fe645b 100644 (file)
@@ -118,6 +118,7 @@ default:
                '<p>' . __('You can use the editor to make changes to any of your plugins&#8217; individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.') . '</p>' .
                '<p>' . __('Choose a plugin to edit from the menu in the upper right and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don&#8217;t forget to save your changes (Update File) when you&#8217;re finished.') . '</p>' .
                '<p>' . __('The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Lookup takes you to a web page about that particular function.') . '</p>' .
+               '<p id="newcontent-description">' . __('In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.') . '</p>' .
                '<p>' . __('If you want to make changes but don&#8217;t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.') . '</p>' .
                ( is_network_admin() ? '<p>' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '</p>' : '' )
        ) );
@@ -226,7 +227,7 @@ foreach ( $plugin_files as $plugin_file ) :
 </div>
 <form name="template" id="template" action="plugin-editor.php" method="post">
        <?php wp_nonce_field('edit-plugin_' . $file) ?>
-               <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
+               <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" aria-describedby="newcontent-description"><?php echo $content; ?></textarea>
                <input type="hidden" name="action" value="update" />
                <input type="hidden" name="file" value="<?php echo esc_attr($file) ?>" />
                <input type="hidden" name="plugin" value="<?php echo esc_attr($plugin) ?>" />
@@ -243,9 +244,9 @@ foreach ( $plugin_files as $plugin_file ) :
        <?php
                if ( isset($_GET['phperror']) ) {
                        echo "<input type='hidden' name='phperror' value='1' />";
-                       submit_button( __( 'Update File and Attempt to Reactivate' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) );
+                       submit_button( __( 'Update File and Attempt to Reactivate' ), 'primary', 'submit', false );
                } else {
-                       submit_button( __( 'Update File' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) );
+                       submit_button( __( 'Update File' ), 'primary', 'submit', false );
                }
        ?>
        </p>
@@ -256,12 +257,10 @@ foreach ( $plugin_files as $plugin_file ) :
 <br class="clear" />
 </div>
 <script type="text/javascript">
-/* <![CDATA[ */
 jQuery(document).ready(function($){
        $('#template').submit(function(){ $('#scrollto').val( $('#newcontent').scrollTop() ); });
        $('#newcontent').scrollTop( $('#scrollto').val() );
 });
-/* ]]> */
 </script>
 <?php
        break;
index d341541ce3f0679444d2bdf6a5d94ca8c1c4ae17..cd64d63c9e5ad146a64fc29664791da46736d730 100644 (file)
@@ -45,9 +45,10 @@ get_current_screen()->add_help_tab( array(
 'id'           => 'adding-plugins',
 'title'                => __('Adding Plugins'),
 'content'      =>
-       '<p>' . __('If you know what you&#8217;re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '</p>' .
+       '<p>' . __('If you know what you&#8217;re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '</p>' .
        '<p>' . __('If you just want to get an idea of what&#8217;s available, you can browse Featured, Popular, and Newest plugins by using the links in the upper left of the screen. These sections rotate regularly.') . '</p>' .
-       '<p>' . __('If you want to install a plugin that you&#8217;ve downloaded elsewhere, click the Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '</p>'
+       '<p>' . __('You can also browse a user&#8217;s favorite plugins, by using the Favorites link in the upper left of the screen and entering their WordPress.org username.') . '</p>' .
+       '<p>' . __('If you want to install a plugin that you&#8217;ve downloaded elsewhere, click the Upload link in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -59,7 +60,7 @@ get_current_screen()->set_help_sidebar(
 include(ABSPATH . 'wp-admin/admin-header.php');
 ?>
 <div class="wrap">
-<?php screen_icon(); ?>
+<?php screen_icon( 'plugins' ); ?>
 <h2><?php echo esc_html( $title ); ?></h2>
 
 <?php $wp_list_table->views(); ?>
index e9fb3b16d9c0482b1422bc134df7d13a5a795bb7..7fc30363d3cb3a1a25249b304d4172115b8aaa18 100644 (file)
@@ -9,14 +9,7 @@
 /** WordPress Administration Bootstrap */
 require_once('./admin.php');
 
-if ( is_multisite() ) {
-       $menu_perms = get_site_option( 'menu_items', array() );
-
-       if ( empty( $menu_perms['plugins'] ) && ! current_user_can( 'manage_network_plugins' ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ) );
-}
-
-if ( !current_user_can('activate_plugins') )
+if ( ! current_user_can('activate_plugins') )
        wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) );
 
 $wp_list_table = _get_list_table('WP_Plugins_List_Table');
@@ -37,6 +30,11 @@ if ( $action ) {
                        if ( ! current_user_can('activate_plugins') )
                                wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
 
+                       if ( is_multisite() && ! is_network_admin() && is_network_only_plugin( $plugin ) ) {
+                               wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
+                               exit;
+                       }
+
                        check_admin_referer('activate-plugin_' . $plugin);
 
                        $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
@@ -51,11 +49,6 @@ if ( $action ) {
                        }
 
                        if ( ! is_network_admin() ) {
-                               if ( is_network_only_plugin( $plugin ) ) {
-                                       wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
-                                       exit;
-                               }
-
                                $recent = (array) get_option( 'recently_activated' );
                                unset( $recent[ $plugin ] );
                                update_option( 'recently_activated', $recent );
index deb41907e27a15a4217b929e39254f80d9b91c9b..8fbe7a228a5d021da38c9cac4e5d8a6e9406813d 100644 (file)
@@ -21,6 +21,9 @@ $post_type_object = get_post_type_object( $post_type );
 if ( 'post' == $post_type ) {
        $parent_file = 'edit.php';
        $submenu_file = 'post-new.php';
+} elseif ( 'attachment' == $post_type ) {
+       wp_redirect( admin_url( 'media-new.php' ) );
+       exit;
 } else {
        $submenu_file = "post-new.php?post_type=$post_type";
        if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true ) {
@@ -36,14 +39,14 @@ $title = $post_type_object->labels->add_new_item;
 
 $editing = true;
 
-if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
+if ( ! current_user_can( $post_type_object->cap->edit_posts ) || ! current_user_can( $post_type_object->cap->create_posts ) )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 // Schedule auto-draft cleanup
 if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) )
        wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' );
 
-wp_enqueue_script('autosave');
+wp_enqueue_script( 'autosave' );
 
 // Show post form.
 $post = get_default_post_to_edit( $post_type, true );
index 035a185540a119ad5afef3e5d40a3c2797a27294..c638c18d397efcda5260819d243bd977dd748f24 100644 (file)
@@ -85,8 +85,12 @@ $sendback = wp_get_referer();
 if ( ! $sendback ||
      strpos( $sendback, 'post.php' ) !== false ||
      strpos( $sendback, 'post-new.php' ) !== false ) {
-       $sendback = admin_url( 'edit.php' );
-       $sendback .= ( ! empty( $post_type ) ) ? '?post_type=' . $post_type : '';
+       if ( 'attachment' == $post_type ) {
+               $sendback = admin_url( 'upload.php' );
+       } else {
+               $sendback = admin_url( 'edit.php' );
+               $sendback .= ( ! empty( $post_type ) ) ? '?post_type=' . $post_type : '';
+       }
 } else {
        $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), $sendback );
 }
@@ -148,6 +152,10 @@ case 'edit':
                $parent_file = "edit.php";
                $submenu_file = "edit.php";
                $post_new_file = "post-new.php";
+       } elseif ( 'attachment' == $post_type ) {
+               $parent_file = 'upload.php';
+               $submenu_file = 'upload.php';
+               $post_new_file = 'media-new.php';
        } else {
                if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true )
                        $parent_file = $post_type_object->show_in_menu;
@@ -161,11 +169,13 @@ case 'edit':
                add_action('admin_notices', '_admin_notice_post_locked' );
        } else {
                $active_post_lock = wp_set_post_lock( $post->ID );
-               wp_enqueue_script('autosave');
+
+               if ( 'attachment' !== $post_type )
+                       wp_enqueue_script('autosave');
        }
 
        $title = $post_type_object->labels->edit_item;
-       $post = get_post_to_edit($post_id);
+       $post = get_post($post_id, OBJECT, 'edit');
 
        if ( post_type_supports($post_type, 'comments') ) {
                wp_enqueue_script('admin-comments');
@@ -177,7 +187,7 @@ case 'edit':
        break;
 
 case 'editattachment':
-       check_admin_referer('update-attachment_' . $post_id);
+       check_admin_referer('update-post_' . $post_id);
 
        // Don't let these be changed
        unset($_POST['guid']);
@@ -190,7 +200,7 @@ case 'editattachment':
        wp_update_attachment_metadata( $post_id, $newmeta );
 
 case 'editpost':
-       check_admin_referer('update-' . $post_type . '_' . $post_id);
+       check_admin_referer('update-post_' . $post_id);
 
        $post_id = edit_post();
 
@@ -200,9 +210,9 @@ case 'editpost':
        break;
 
 case 'trash':
-       check_admin_referer('trash-' . $post_type . '_' . $post_id);
+       check_admin_referer('trash-post_' . $post_id);
 
-       $post = get_post($post_id);
+       $post = get_post($post_id);
 
        if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
                wp_die( __('You are not allowed to move this item to the Trash.') );
@@ -215,7 +225,7 @@ case 'trash':
        break;
 
 case 'untrash':
-       check_admin_referer('untrash-' . $post_type . '_' . $post_id);
+       check_admin_referer('untrash-post_' . $post_id);
 
        if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
                wp_die( __('You are not allowed to move this item out of the Trash.') );
@@ -228,7 +238,7 @@ case 'untrash':
        break;
 
 case 'delete':
-       check_admin_referer('delete-' . $post_type . '_' . $post_id);
+       check_admin_referer('delete-post_' . $post_id);
 
        if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
                wp_die( __('You are not allowed to delete this item.') );
index facae8a86d33c443f0493e92eed7140ae5cf0019..6542fa31e85975e2ea019053c8ccf122a2c255f7 100644 (file)
@@ -13,7 +13,7 @@ require_once('./admin.php');
 
 header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
 
-if ( ! current_user_can('edit_posts') )
+if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 /**
@@ -110,7 +110,7 @@ $image = isset($_GET['i']) ? $_GET['i'] : '';
 if ( !empty($_REQUEST['ajax']) ) {
        switch ($_REQUEST['ajax']) {
                case 'video': ?>
-                       <script type="text/javascript" charset="utf-8">
+                       <script type="text/javascript">
                        /* <![CDATA[ */
                                jQuery('.select').click(function() {
                                        append_editor(jQuery('#embed-code').val());
@@ -133,7 +133,7 @@ if ( !empty($_REQUEST['ajax']) ) {
                        <?php break;
 
                case 'photo_thickbox': ?>
-                       <script type="text/javascript" charset="utf-8">
+                       <script type="text/javascript">
                                /* <![CDATA[ */
                                jQuery('.cancel').click(function() {
                                        tb_remove();
@@ -172,7 +172,7 @@ if ( !empty($_REQUEST['ajax']) ) {
                 */
                function get_images_from_uri($uri) {
                        $uri = preg_replace('/\/#.+?$/','', $uri);
-                       if ( preg_match('/\.(jpg|jpe|jpeg|png|gif)$/', $uri) && !strpos($uri,'blogger.com') )
+                       if ( preg_match( '/\.(jpe?g|jpe|gif|png)\b/i', $uri ) && !strpos( $uri, 'blogger.com' ) )
                                return "'" . esc_attr( html_entity_decode($uri) ) . "'";
                        $content = wp_remote_fopen($uri);
                        if ( false === $content )
@@ -288,7 +288,7 @@ if ( !empty($_REQUEST['ajax']) ) {
                        return false;
                }
 
-               jQuery('#extra-fields').html('<div class="postbox"><h2><?php _e( 'Add Photos' ); ?> <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul class="actions"><li><a href="#" id="photo-add-url" class="button"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
+               jQuery('#extra-fields').html('<div class="postbox"><h2><?php _e( 'Add Photos' ); ?> <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul class="actions"><li><a href="#" id="photo-add-url" class="button button-small"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
                jQuery('#img_container').html(strtoappend);
                <?php break;
 }
@@ -414,7 +414,7 @@ var photostorage = false;
        }
        jQuery(document).ready(function($) {
                //resize screen
-               window.resizeTo(720,580);
+               window.resizeTo(740,580);
                // set button actions
                jQuery('#photo_button').click(function() { show('photo'); return false; });
                jQuery('#video_button').click(function() { show('video'); return false; });
@@ -427,7 +427,7 @@ var photostorage = false;
                        show('photo');
                <?php } ?>
                jQuery('#title').unbind();
-               jQuery('#publish, #save').click(function() { jQuery('#saving').css('display', 'inline'); });
+               jQuery('#publish, #save').click(function() { jQuery('.press-this #publishing-actions .spinner').css('display', 'inline-block'); });
 
                $('#tagsdiv-post_tag, #categorydiv').children('h3, .handlediv').click(function(){
                        $(this).siblings('.inside').toggle();
@@ -439,7 +439,7 @@ var photostorage = false;
 $admin_body_class = ( is_rtl() ) ? 'rtl' : '';
 $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
 ?>
-<body class="press-this wp-admin <?php echo $admin_body_class; ?>">
+<body class="press-this wp-admin wp-core-ui <?php echo $admin_body_class; ?>">
 <form action="press-this.php?action=post" method="post">
 <div id="poststuff" class="metabox-holder">
        <div id="side-sortables" class="press-this-sidebar">
@@ -467,7 +467,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                                                        echo '<br /><br />';
                                                        submit_button( __( 'Submit for Review' ), 'primary', 'review', false );
                                                } ?>
-                                               <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" id="saving" style="display:none;" />
+                                               <span class="spinner" style="display: none;"></span>
                                        </p>
                                        <?php if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) :
                                                        $post_formats = get_theme_support( 'post-formats' );
@@ -495,8 +495,8 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                                <div id="taxonomy-category" class="categorydiv">
 
                                        <ul id="category-tabs" class="category-tabs">
-                                               <li class="tabs"><a href="#category-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li>
-                                               <li class="hide-if-no-js"><a href="#category-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
+                                               <li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
+                                               <li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
                                        </ul>
 
                                        <div id="category-pop" class="tabs-panel" style="display: none;">
@@ -506,7 +506,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                                        </div>
 
                                        <div id="category-all" class="tabs-panel">
-                                               <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+                                               <ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
                                                        <?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
                                                </ul>
                                        </div>
@@ -517,18 +517,18 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                                        <?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
                                                <div id="category-adder" class="wp-hidden-children">
                                                        <h4>
-                                                               <a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3">
+                                                               <a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
                                                                        <?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
                                                                </a>
                                                        </h4>
                                                        <p id="category-add" class="category-add wp-hidden-child">
                                                                <label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
-                                                               <input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/>
+                                                               <input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
                                                                <label class="screen-reader-text" for="newcategory_parent">
                                                                        <?php echo $tax->labels->parent_item_colon; ?>
                                                                </label>
-                                                               <?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
-                                                               <input type="button" id="category-add-submit" class="add:categorychecklist:category-add button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
+                                                               <?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
+                                                               <input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
                                                                <?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
                                                                <span id="category-ajax-response"></span>
                                                        </p>
@@ -548,7 +548,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                                                        <input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
                                                        <div class="ajaxtag">
                                                                <input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
-                                                               <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" />
+                                                               <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
                                                        </div>
                                                </div>
                                                <div class="tagchecklist"></div>
@@ -586,7 +586,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
                        </div>
                </div>
 
-               <div id="waiting" style="display: none"><img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> <?php esc_html_e( 'Loading...' ); ?></div>
+               <div id="waiting" style="display: none"><span class="spinner"></span> <span><?php esc_html_e( 'Loading...' ); ?></span></div>
 
                <div id="extra-fields" style="display: none"></div>
 
index 5bf19ad1ce5ceb583f6d7a2ae4515e814ca6c539..7409d010ffff3eeba4eef1e71eb04d2addfdd52b 100644 (file)
@@ -85,7 +85,7 @@ $step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0;
  * @package WordPress
  * @subpackage Installer_WP_Config
  */
-function display_header() {
+function setup_config_display_header() {
        global $wp_version;
 
        header( 'Content-Type: text/html; charset=utf-8' );
@@ -96,16 +96,17 @@ function display_header() {
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title><?php _e( 'WordPress &rsaquo; Setup Configuration File' ); ?></title>
 <link rel="stylesheet" href="css/install.css?ver=<?php echo preg_replace( '/[^0-9a-z\.-]/i', '', $wp_version ); ?>" type="text/css" />
+<link rel="stylesheet" href="../wp-includes/css/buttons.css?ver=<?php echo preg_replace( '/[^0-9a-z\.-]/i', '', $wp_version ); ?>" type="text/css" />
 
 </head>
-<body<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
+<body class="wp-core-ui<?php if ( is_rtl() ) echo ' rtl'; ?>">
+<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 <?php
-}//end function display_header();
+} // end function setup_config_display_header();
 
 switch($step) {
        case 0:
-               display_header();
+               setup_config_display_header();
 ?>
 
 <p><?php _e( 'Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.' ) ?></p>
@@ -116,18 +117,18 @@ switch($step) {
        <li><?php _e( 'Database host' ); ?></li>
        <li><?php _e( 'Table prefix (if you want to run more than one WordPress in a single database)' ); ?></li>
 </ol>
-<p><strong><?php _e( "If for any reason this automatic file creation doesn't work, don't worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>." ); ?></strong></p>
+<p><strong><?php _e( "If for any reason this automatic file creation doesn&#8217;t work, don&#8217;t worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>." ); ?></strong></p>
 <p><?php _e( "In all likelihood, these items were supplied to you by your Web Host. If you do not have this information, then you will need to contact them before you can continue. If you&#8217;re all ready&hellip;" ); ?></p>
 
-<p class="step"><a href="setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&amp;noapi'; ?>" class="button"><?php _e( 'Let&#8217;s go!' ); ?></a></p>
+<p class="step"><a href="setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&amp;noapi'; ?>" class="button button-large"><?php _e( 'Let&#8217;s go!' ); ?></a></p>
 <?php
        break;
 
        case 1:
-               display_header();
+               setup_config_display_header();
        ?>
 <form method="post" action="setup-config.php?step=2">
-       <p><?php _e( "Below you should enter your database connection details. If you're not sure about these, contact your host." ); ?></p>
+       <p><?php _e( "Below you should enter your database connection details. If you&#8217;re not sure about these, contact your host." ); ?></p>
        <table class="form-table">
                <tr>
                        <th scope="row"><label for="dbname"><?php _e( 'Database Name' ); ?></label></th>
@@ -156,7 +157,7 @@ switch($step) {
                </tr>
        </table>
        <?php if ( isset( $_GET['noapi'] ) ) { ?><input name="noapi" type="hidden" value="1" /><?php } ?>
-       <p class="step"><input name="submit" type="submit" value="<?php echo htmlspecialchars( __( 'Submit' ), ENT_QUOTES ); ?>" class="button" /></p>
+       <p class="step"><input name="submit" type="submit" value="<?php echo htmlspecialchars( __( 'Submit' ), ENT_QUOTES ); ?>" class="button button-large" /></p>
 </form>
 <?php
        break;
@@ -165,7 +166,7 @@ switch($step) {
        foreach ( array( 'dbname', 'uname', 'pwd', 'dbhost', 'prefix' ) as $key )
                $$key = trim( stripslashes( $_POST[ $key ] ) );
 
-       $tryagain_link = '</p><p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">' . __( 'Try Again' ) . '</a>';
+       $tryagain_link = '</p><p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button button-large">' . __( 'Try again' ) . '</a>';
 
        if ( empty( $prefix ) )
                wp_die( __( '<strong>ERROR</strong>: "Table Prefix" must not be empty.' . $tryagain_link ) );
@@ -254,17 +255,24 @@ switch($step) {
        unset( $line );
 
        if ( ! is_writable(ABSPATH) ) :
-               display_header();
+               setup_config_display_header();
 ?>
-<p><?php _e( "Sorry, but I can't write the <code>wp-config.php</code> file." ); ?></p>
+<p><?php _e( "Sorry, but I can&#8217;t write the <code>wp-config.php</code> file." ); ?></p>
 <p><?php _e( 'You can create the <code>wp-config.php</code> manually and paste the following text into it.' ); ?></p>
-<textarea cols="98" rows="15" class="code"><?php
+<textarea id="wp-config" cols="98" rows="15" class="code" readonly="readonly"><?php
                foreach( $config_file as $line ) {
                        echo htmlentities($line, ENT_COMPAT, 'UTF-8');
                }
 ?></textarea>
-<p><?php _e( 'After you\'ve done that, click "Run the install."' ); ?></p>
-<p class="step"><a href="install.php" class="button"><?php _e( 'Run the install' ); ?></a></p>
+<p><?php _e( 'After you&#8217;ve done that, click &#8220;Run the install.&#8221;' ); ?></p>
+<p class="step"><a href="install.php" class="button button-large"><?php _e( 'Run the install' ); ?></a></p>
+<script>
+(function(){
+var el=document.getElementById('wp-config');
+el.focus();
+el.select();
+})();
+</script>
 <?php
        else :
                $handle = fopen(ABSPATH . 'wp-config.php', 'w');
@@ -273,11 +281,11 @@ switch($step) {
                }
                fclose($handle);
                chmod(ABSPATH . 'wp-config.php', 0666);
-               display_header();
+               setup_config_display_header();
 ?>
-<p><?php _e( "All right sparky! You've made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;" ); ?></p>
+<p><?php _e( "All right sparky! You&#8217;ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;" ); ?></p>
 
-<p class="step"><a href="install.php" class="button"><?php _e( 'Run the install' ); ?></a></p>
+<p class="step"><a href="install.php" class="button button-large"><?php _e( 'Run the install' ); ?></a></p>
 <?php
        endif;
        break;
index 8eab0751d315fdab26e295dbaaada4ef4279b8b2..c9adabe0cd4b21a289efc727a0b59afd912bfca9 100644 (file)
@@ -27,6 +27,7 @@ get_current_screen()->add_help_tab( array(
        '<p>' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '</p>
        <p>' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '</p>
        <p>' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '</p>
+       <p id="newcontent-description">' . __('In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.') . '</p>
        <p>' . __('After typing in your edits, click Update File.') . '</p>
        <p>' . __('<strong>Advice:</strong> think very carefully about your site crashing if you are live-editing the theme currently in use.') . '</p>
        <p>' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a <a href="http://codex.wordpress.org/Child_Themes" target="_blank">child theme</a> instead.') . '</p>' .
@@ -45,7 +46,7 @@ get_current_screen()->set_help_sidebar(
 wp_reset_vars( array( 'action', 'error', 'file', 'theme' ) );
 
 if ( $theme )
-       $stylesheet = urldecode( $theme );
+       $stylesheet = $theme;
 else
        $stylesheet = get_stylesheet();
 
@@ -67,7 +68,7 @@ if ( empty( $file ) ) {
        $relative_file = 'style.css';
        $file = $allowed_files['style.css'];
 } else {
-       $relative_file = urldecode( stripslashes( $file ) );
+       $relative_file = stripslashes( $file );
        $file = $theme->get_stylesheet_directory() . '/' . $relative_file;
 }
 
@@ -198,12 +199,12 @@ if ( $allowed_files ) :
 else : ?>
        <form name="template" id="template" action="theme-editor.php" method="post">
        <?php wp_nonce_field( 'edit-theme_' . $file . $stylesheet ); ?>
-                <div><textarea cols="70" rows="30" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
-                <input type="hidden" name="action" value="update" />
-                <input type="hidden" name="file" value="<?php echo esc_attr( $relative_file ); ?>" />
-                <input type="hidden" name="theme" value="<?php echo esc_attr( $theme->get_stylesheet() ); ?>" />
-                <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" />
-                </div>
+               <div><textarea cols="70" rows="30" name="newcontent" id="newcontent" aria-describedby="newcontent-description"><?php echo $content; ?></textarea>
+               <input type="hidden" name="action" value="update" />
+               <input type="hidden" name="file" value="<?php echo esc_attr( $relative_file ); ?>" />
+               <input type="hidden" name="theme" value="<?php echo esc_attr( $theme->get_stylesheet() ); ?>" />
+               <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" />
+               </div>
        <?php if ( ! empty( $functions ) ) : ?>
                <div id="documentation" class="hide-if-no-js">
                <label for="docs-list"><?php _e('Documentation:') ?></label>
@@ -219,7 +220,7 @@ else : ?>
                <?php endif; ?>
 <?php
        if ( is_writeable( $file ) ) :
-               submit_button( __( 'Update File' ), 'primary', 'submit', true, array( 'tabindex' => '2' ) );
+               submit_button( __( 'Update File' ), 'primary', 'submit', true );
        else : ?>
 <p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p>
 <?php endif; ?>
index 8680a54668f88cdfe4bf4f5e46a3739d6e10338f..0825c0e4b79d4ae2f7d06c8ebfa2a38806005984 100644 (file)
@@ -49,7 +49,7 @@ get_current_screen()->add_help_tab( array(
 
 $help_installing =
        '<p>' . __('Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you&#8217;re interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look.') . '</p>' .
-       '<p>' . __('To install the theme so you can preview it with your site&#8217;s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Installed Themes page and clicking the "Live Preview" link under any installed theme&#8217;s thumbnail image.') . '</p>';
+       '<p>' . __('To install the theme so you can preview it with your site&#8217;s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Manage Themes screen and clicking the "Live Preview" link under any installed theme&#8217;s thumbnail image.') . '</p>';
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'installing',
index cbcde87cad97217fa92f742422e85d103220db4d..7852a721364af2c6ccd91be7a942ed4e17b5df61 100644 (file)
@@ -20,7 +20,7 @@ if ( current_user_can( 'switch_themes' ) && isset($_GET['action'] ) ) {
                $theme = wp_get_theme( $_GET['stylesheet'] );
                if ( ! $theme->exists() || ! $theme->is_allowed() )
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
-               switch_theme( $theme->get_template(), $theme->get_stylesheet() );
+               switch_theme( $theme->get_stylesheet() );
                wp_redirect( admin_url('themes.php?activated=true') );
                exit;
        } elseif ( 'delete' == $_GET['action'] ) {
@@ -108,10 +108,8 @@ if ( ! validate_current_theme() || isset( $_GET['broken'] ) ) : ?>
 <div id="message1" class="updated"><p><?php _e('The active theme is broken. Reverting to the default theme.'); ?></p></div>
 <?php elseif ( isset($_GET['activated']) ) :
                if ( isset( $_GET['previewed'] ) ) { ?>
-               <div id="message2" class="updated"><p><?php printf( __( 'Settings saved and theme activated. <a href="%s">Visit site</a>.' ), home_url( '/' ) ); ?></p></div>
-               <?php } elseif ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) && current_user_can('edit_theme_options') ) { ?>
-<div id="message2" class="updated"><p><?php printf( __('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings</a> screen to configure them.'), admin_url( 'widgets.php' ) ); ?></p></div><?php
-               } else { ?>
+               <div id="message2" class="updated"><p><?php printf( __( 'Settings saved and theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) ); ?></p></div>
+               <?php } else { ?>
 <div id="message2" class="updated"><p><?php printf( __( 'New theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) ); ?></p></div><?php
                }
        elseif ( isset($_GET['deleted']) ) : ?>
@@ -147,6 +145,11 @@ $customize_title = sprintf( __( 'Customize &#8220;%s&#8221;' ), $ct->display('Na
                        <li><?php printf( __('Version %s'), $ct->display('Version') ); ?></li>
                </ul>
                <p class="theme-description"><?php echo $ct->display('Description'); ?></p>
+               <?php if ( $ct->parent() ) {
+                       printf( ' <p class="howto">' . __( 'This <a href="%1$s">child theme</a> requires its parent theme, %2$s.' ) . '</p>',
+                               __( 'http://codex.wordpress.org/Child_Themes' ),
+                               $ct->parent()->display( 'Name' ) );
+               } ?>
                <?php theme_update_available( $ct ); ?>
        </div>
 
@@ -169,7 +172,10 @@ $customize_title = sprintf( __( 'Customize &#8220;%s&#8221;' ), $ct->display('Na
                                else
                                        $options[] = "<a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
                        } else if ( current_user_can($item[1]) ) {
-                               if ( file_exists(ABSPATH . 'wp-admin/' . $item[2]) ) {
+                               $menu_file = $item[2];
+                               if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
+                                       $menu_file = substr( $menu_file, 0, $pos );
+                               if ( file_exists( ABSPATH . "wp-admin/$menu_file" ) ) {
                                        $options[] = "<a href='{$item[2]}'$class>{$item[0]}</a>";
                                } else {
                                        $options[] = "<a href='themes.php?page={$item[2]}'$class>{$item[0]}</a>";
@@ -193,9 +199,11 @@ $customize_title = sprintf( __( 'Customize &#8220;%s&#8221;' ), $ct->display('Na
                                <li><?php echo $option; ?></li>
                        <?php endforeach; ?>
                </ul>
+               <?php
+               endif; // options
+               ?>
        </div>
        <?php
-               endif; // options
        endif; // options || edit_theme_options
        ?>
 
index 360bb91adb8273b55b96eda3639b80e1f996cae1..a45b9be988431f171d6aa28423121c30a2882aba 100644 (file)
@@ -18,7 +18,7 @@ if ( is_multisite() && ! is_network_admin() ) {
        exit();
 }
 
-if ( ! current_user_can( 'update_core' ) )
+if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_themes' ) && ! current_user_can( 'update_plugins' ) )
        wp_die( __( 'You do not have sufficient permissions to update this site.' ) );
 
 function list_core_update( $update ) {
@@ -74,7 +74,7 @@ function list_core_update( $update ) {
        echo '<input name="locale" value="'. esc_attr($update->locale) .'" type="hidden"/>';
        if ( $show_buttons ) {
                if ( $first_pass ) {
-                       submit_button( $submit, $current ? 'button' : 'primary', 'upgrade', false );
+                       submit_button( $submit, $current ? 'button' : 'primary regular', 'upgrade', false );
                        $first_pass = false;
                } else {
                        submit_button( $submit, 'button', 'upgrade', false );
@@ -131,28 +131,9 @@ function dismissed_updates() {
  * @return null
  */
 function core_upgrade_preamble() {
-       global $upgrade_error, $wp_version;
+       global $wp_version;
 
        $updates = get_core_updates();
-?>
-       <div class="wrap">
-       <?php screen_icon('tools'); ?>
-       <h2><?php _e('WordPress Updates'); ?></h2>
-<?php
-       if ( $upgrade_error ) {
-               echo '<div class="error"><p>';
-               if ( $upgrade_error == 'themes' )
-                       _e('Please select one or more themes to update.');
-               else
-                       _e('Please select one or more plugins to update.');
-               echo '</p></div>';
-       }
-
-       echo '<p>';
-       /* translators: %1 date, %2 time. */
-       printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) );
-       echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
-       echo '</p>';
 
        if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
                echo '<h3>';
@@ -183,13 +164,6 @@ function core_upgrade_preamble() {
                echo '<p>' . sprintf( __( '<a href="%s">Learn more about WordPress %s</a>.' ), esc_url( self_admin_url( 'about.php' ) ), $normalized_version ) . '</p>';
        }
        dismissed_updates();
-
-       if ( current_user_can( 'update_plugins' ) )
-               list_plugin_updates();
-       if ( current_user_can( 'update_themes' ) )
-               list_theme_updates();
-       do_action('core_upgrade_preamble');
-       echo '</div>';
 }
 
 function list_plugin_updates() {
@@ -380,7 +354,7 @@ function do_core_upgrade( $reinstall = false ) {
        }
 
        show_message( __('WordPress updated successfully') );
-       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%2$s">here</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        ?>
        </div>
@@ -454,10 +428,41 @@ if ( 'upgrade-core' == $action ) {
 
        wp_version_check();
        require_once(ABSPATH . 'wp-admin/admin-header.php');
-       core_upgrade_preamble();
+       ?>
+       <div class="wrap">
+       <?php screen_icon('tools'); ?>
+       <h2><?php _e('WordPress Updates'); ?></h2>
+       <?php
+       if ( $upgrade_error ) {
+               echo '<div class="error"><p>';
+               if ( $upgrade_error == 'themes' )
+                       _e('Please select one or more themes to update.');
+               else
+                       _e('Please select one or more plugins to update.');
+               echo '</p></div>';
+       }
+
+       echo '<p>';
+       /* translators: %1 date, %2 time. */
+       printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) );
+       echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
+       echo '</p>';
+
+       if ( current_user_can( 'update_core' ) )
+               core_upgrade_preamble();
+       if ( current_user_can( 'update_plugins' ) )
+               list_plugin_updates();
+       if ( current_user_can( 'update_themes' ) )
+               list_theme_updates();
+       do_action('core_upgrade_preamble');
+       echo '</div>';
        include(ABSPATH . 'wp-admin/admin-footer.php');
 
 } elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
+
+       if ( ! current_user_can( 'update_core' ) )
+               wp_die( __( 'You do not have sufficient permissions to update this site.' ) );
+
        check_admin_referer('upgrade-core');
 
        // do the (un)dismiss actions before headers,
index 4fdf2064c79441181fb4580f1d04339562ce2a37..687142e2187058e05e3d9671b581f97efbc21024 100644 (file)
@@ -90,7 +90,7 @@ if ( isset($_GET['action']) ) {
        } elseif ( 'install-plugin' == $action ) {
 
                if ( ! current_user_can('install_plugins') )
-                       wp_die(__('You do not have sufficient permissions to install plugins for this site.'));
+                       wp_die( __( 'You do not have sufficient permissions to install plugins on this site.' ) );
 
                include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; //for plugins_api..
 
@@ -121,7 +121,7 @@ if ( isset($_GET['action']) ) {
        } elseif ( 'upload-plugin' == $action ) {
 
                if ( ! current_user_can('install_plugins') )
-                       wp_die(__('You do not have sufficient permissions to install plugins for this site.'));
+                       wp_die( __( 'You do not have sufficient permissions to install plugins on this site.' ) );
 
                check_admin_referer('plugin-upload');
 
@@ -194,7 +194,7 @@ if ( isset($_GET['action']) ) {
        } elseif ( 'install-theme' == $action ) {
 
                if ( ! current_user_can('install_themes') )
-                       wp_die(__('You do not have sufficient permissions to install themes for this site.'));
+                       wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) );
 
                include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api..
 
@@ -224,7 +224,7 @@ if ( isset($_GET['action']) ) {
        } elseif ( 'upload-theme' == $action ) {
 
                if ( ! current_user_can('install_themes') )
-                       wp_die(__('You do not have sufficient permissions to install themes for this site.'));
+                       wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) );
 
                check_admin_referer('theme-upload');
 
index 6e5d3b8116f1545b0d72427c4297180a3eba3c56..9a632ef05c8fc4be81cfc3dd04ea9f3ccae72fa1 100644 (file)
@@ -17,6 +17,8 @@ define( 'WP_INSTALLING', true );
 /** Load WordPress Bootstrap */
 require( '../wp-load.php' );
 
+nocache_headers();
+
 timer_start();
 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
 
@@ -55,14 +57,14 @@ else
        wp_admin_css( 'ie', true );
        ?>
 </head>
-<body>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
+<body class="wp-core-ui">
+<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
 
 <h2><?php _e( 'No Update Required' ); ?></h2>
 <p><?php _e( 'Your WordPress database is already up-to-date!' ); ?></p>
-<p class="step"><a class="button" href="<?php echo get_option( 'home' ); ?>/"><?php _e( 'Continue' ); ?></a></p>
+<p class="step"><a class="button button-large" href="<?php echo get_option( 'home' ); ?>/"><?php _e( 'Continue' ); ?></a></p>
 
 <?php elseif ( !$php_compat || !$mysql_compat ) :
        if ( !$mysql_compat && !$php_compat )
@@ -82,7 +84,7 @@ switch ( $step ) :
 <h2><?php _e( 'Database Update Required' ); ?></h2>
 <p><?php _e( 'WordPress has been updated! Before we send you on your way, we have to update your database to the newest version.' ); ?></p>
 <p><?php _e( 'The update process may take a little while, so please be patient.' ); ?></p>
-<p class="step"><a class="button" href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e( 'Update WordPress Database' ); ?></a></p>
+<p class="step"><a class="button button-large" href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e( 'Update WordPress Database' ); ?></a></p>
 <?php
                break;
        case 1:
@@ -94,7 +96,7 @@ switch ( $step ) :
 ?>
 <h2><?php _e( 'Update Complete' ); ?></h2>
        <p><?php _e( 'Your WordPress database has been successfully updated!' ); ?></p>
-       <p class="step"><a class="button" href="<?php echo $backto; ?>"><?php _e( 'Continue' ); ?></a></p>
+       <p class="step"><a class="button button-large" href="<?php echo $backto; ?>"><?php _e( 'Continue' ); ?></a></p>
 
 <!--
 <pre>
index d1723274740b3c0a10181641cf6bc606279f2769..7d50d5290daba823ee12f12a1b922bbb26ed4ae5 100644 (file)
@@ -57,7 +57,7 @@ if ( $doaction ) {
                        if ( !$parent_id )
                                return;
 
-                       $parent = &get_post( $parent_id );
+                       $parent = get_post( $parent_id );
                        if ( !current_user_can( 'edit_post', $parent_id ) )
                                wp_die( __( 'You are not allowed to edit this post.' ) );
 
@@ -69,12 +69,14 @@ if ( $doaction ) {
                                        continue;
 
                                $attach[] = $att_id;
-                               clean_attachment_cache( $att_id );
                        }
 
                        if ( ! empty( $attach ) ) {
-                               $attach = implode( ',', $attach );
-                               $attached = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $attach )", $parent_id ) );
+                               $attach_string = implode( ',', $attach );
+                               $attached = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $attach_string )", $parent_id ) );
+                               foreach ( $attach as $att_id ) {
+                                       clean_attachment_cache( $att_id );
+                               }
                        }
 
                        if ( isset( $attached ) ) {
index dfc878dd98a6fb6f740262bd75fa81b28476aad7..eadc1f08eb139797f5461c473c31a80440914cf0 100644 (file)
@@ -82,11 +82,12 @@ if ( is_multisite() && ! current_user_can( 'manage_network_users' ) && $user_id
 if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) {
        $new_email = get_option( $current_user->ID . '_new_email' );
        if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) {
+               $user = new stdClass;
                $user->ID = $current_user->ID;
                $user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) );
                if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $current_user->user_login ) ) )
                        $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, $current_user->user_login ) );
-               wp_update_user( get_object_vars( $user ) );
+               wp_update_user( $user );
                delete_option( $current_user->ID . '_new_email' );
                wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) );
                die();
@@ -139,7 +140,7 @@ if ( !is_multisite() ) {
 }
 
 if ( !is_wp_error( $errors ) ) {
-       $redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true";
+       $redirect = add_query_arg( 'updated', true, get_edit_user_link( $user_id ) );
        if ( $wp_http_referer )
                $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect);
        wp_redirect($redirect);
@@ -245,13 +246,13 @@ if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?>
        </tr>
 
 <?php if ( !IS_PROFILE_PAGE && !is_network_admin() ) : ?>
-<tr><th><label for="role"><?php _e('Role:') ?></label></th>
+<tr><th><label for="role"><?php _e('Role') ?></label></th>
 <td><select name="role" id="role">
 <?php
-// Get the highest/primary role for this user
+// Compare user role against currently editable roles
 // TODO: create a function that does this: wp_get_user_role()
-$user_roles = $profileuser->roles;
-$user_role = array_shift($user_roles);
+$user_roles = array_intersect( array_values( $profileuser->roles ), array_keys( get_editable_roles() ) );
+$user_role  = array_shift( $user_roles );
 
 // print the full list of roles with the primary one selected.
 wp_dropdown_roles($user_role);
@@ -266,9 +267,9 @@ else
 <?php endif; //!IS_PROFILE_PAGE
 
 if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_can( 'manage_network_options' ) && !isset($super_admins) ) { ?>
-<tr><th><label for="role"><?php _e('Super Admin'); ?></label></th>
+<tr><th><?php _e('Super Admin'); ?></th>
 <td>
-<?php if ( $profileuser->user_email != get_site_option( 'admin_email' ) ) : ?>
+<?php if ( $profileuser->user_email != get_site_option( 'admin_email' ) || ! is_super_admin( $profileuser->ID ) ) : ?>
 <p><label><input type="checkbox" id="super_admin" name="super_admin"<?php checked( is_super_admin( $profileuser->ID ) ); ?> /> <?php _e( 'Grant this user super admin privileges for the Network.' ); ?></label></p>
 <?php else : ?>
 <p><?php _e( 'Super admin privileges cannot be removed because this user has the network admin email.' ); ?></p>
@@ -423,7 +424,7 @@ if ( $show_password_fields ) :
 break;
 }
 ?>
-<script type="text/javascript" charset="utf-8">
+<script type="text/javascript">
        if (window.location.hash == '#password') {
                document.getElementById('pass1').focus();
        }
index 3119eb5720edcc316aea37279a38bea940ac1214..f9616a2c850d392e8847de6d430c41f01f95f081 100644 (file)
@@ -18,6 +18,8 @@ if ( is_multisite() ) {
 
 if ( is_multisite() ) {
        function admin_created_user_email( $text ) {
+               $roles = get_editable_roles();
+               $role = $roles[ $_REQUEST['role'] ];
                /* translators: 1: Site name, 2: site URL, 3: role */
                return sprintf( __( 'Hi,
 You\'ve been invited to join \'%1$s\' at
@@ -26,7 +28,7 @@ If you do not want to join this site please ignore
 this email. This invitation will expire in a few days.
 
 Please click the following link to activate your user account:
-%%s' ), get_bloginfo('name'), home_url(), esc_html( $_REQUEST[ 'role' ] ) );
+%%s' ), get_bloginfo( 'name' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ) );
        }
        add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
 
@@ -72,6 +74,9 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
                } else {
                        $newuser_key = substr( md5( $user_id ), 0, 5 );
                        add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) );
+
+                       $roles = get_editable_roles();
+                       $role = $roles[ $_REQUEST['role'] ];
                        /* translators: 1: Site name, 2: site URL, 3: role, 4: activation URL */
                        $message = __( 'Hi,
 
@@ -80,7 +85,7 @@ You\'ve been invited to join \'%1$s\' at
 
 Please click the following link to confirm the invite:
 %4$s' );
-                       wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf($message, get_option('blogname'), home_url(), $_REQUEST[ 'role' ], home_url("/newbloguser/$newuser_key/")));
+                       wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf( $message, get_option( 'blogname' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ), home_url( "/newbloguser/$newuser_key/" ) ) );
                        $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' );
                }
        }
@@ -122,7 +127,7 @@ Please click the following link to confirm the invite:
                                wpmu_activate_signup( $key );
                                $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
                        } else {
-                               $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' );
+                               $redirect = add_query_arg( array('update' => 'newuserconfirmation'), 'user-new.php' );
                        }
                        wp_redirect( $redirect );
                        die();
@@ -189,7 +194,7 @@ if ( isset($_GET['update']) ) {
        $messages = array();
        if ( is_multisite() ) {
                switch ( $_GET['update'] ) {
-                       case "newuserconfimation":
+                       case "newuserconfirmation":
                                $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.');
                                break;
                        case "add":
@@ -262,7 +267,7 @@ if ( is_multisite() ) {
                $label = __('E-mail or Username');
        }
 ?>
-<form action="" method="post" name="adduser" id="adduser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
+<form action="" method="post" name="adduser" id="adduser" class="validate"<?php do_action('user_new_form_tag');?>>
 <input name="action" type="hidden" value="adduser" />
 <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
 
@@ -295,7 +300,7 @@ if ( current_user_can( 'create_users') ) {
                echo '<h3 id="create-new-user">' . __( 'Add New User' ) . '</h3>';
 ?>
 <p><?php _e('Create a brand new user and add it to this site.'); ?></p>
-<form action="" method="post" name="createuser" id="createuser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
+<form action="" method="post" name="createuser" id="createuser" class="validate"<?php do_action('user_new_form_tag');?>>
 <input name="action" type="hidden" value="createuser" />
 <?php wp_nonce_field( 'create-user', '_wpnonce_create-user' ) ?>
 <?php
index f26255fca65dd35677e331dfcd2193c18b2e3457..6ea17657c15d4f3fd748cceafb7238c8211c3b5f 100644 (file)
@@ -75,6 +75,22 @@ if ( empty($_REQUEST) ) {
 
 $update = '';
 
+/**
+ * @since 3.5.0
+ * @access private
+ */
+function delete_users_add_js() { ?>
+<script>
+jQuery(document).ready( function($) {
+       var submit = $('#submit').prop('disabled', true);
+       $('input[name=delete_option]').one('change', function() {
+               submit.prop('disabled', false);
+       });
+});
+</script>
+<?php
+}
+
 switch ( $wp_list_table->current_action() ) {
 
 /* Bulk Dropdown menu Role changes */
@@ -111,7 +127,7 @@ case 'promote':
                if ( is_multisite() && !is_user_member_of_blog( $id ) )
                        wp_die(__('Cheatin&#8217; uh?'));
 
-               $user = new WP_User($id);
+               $user = get_userdata( $id );
                $user->set_role($_REQUEST['new_role']);
        }
 
@@ -131,16 +147,22 @@ case 'dodelete':
                exit();
        }
 
+       $userids = array_map( 'intval', (array) $_REQUEST['users'] );
+
+       if ( empty( $_REQUEST['delete_option'] ) ) {
+               $url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $userids ) . '&error=true' );
+               $url = str_replace( '&amp;', '&', wp_nonce_url( $url, 'bulk-users' ) );
+               wp_redirect( $url );
+               exit;
+       }
+
        if ( ! current_user_can( 'delete_users' ) )
                wp_die(__('You can&#8217;t delete users.'));
 
-       $userids = $_REQUEST['users'];
        $update = 'del';
        $delete_count = 0;
 
-       foreach ( (array) $userids as $id) {
-               $id = (int) $id;
-
+       foreach ( $userids as $id ) {
                if ( ! current_user_can( 'delete_user', $id ) )
                        wp_die(__( 'You can&#8217;t delete that user.' ) );
 
@@ -150,12 +172,10 @@ case 'dodelete':
                }
                switch ( $_REQUEST['delete_option'] ) {
                case 'delete':
-                       if ( current_user_can('delete_user', $id) )
-                               wp_delete_user($id);
+                       wp_delete_user( $id );
                        break;
                case 'reassign':
-                       if ( current_user_can('delete_user', $id) )
-                               wp_delete_user($id, $_REQUEST['reassign_user']);
+                       wp_delete_user( $id, $_REQUEST['reassign_user'] );
                        break;
                }
                ++$delete_count;
@@ -182,9 +202,11 @@ case 'delete':
                $errors = new WP_Error( 'edit_users', __( 'You can&#8217;t delete users.' ) );
 
        if ( empty($_REQUEST['users']) )
-               $userids = array(intval($_REQUEST['user']));
+               $userids = array( intval( $_REQUEST['user'] ) );
        else
-               $userids = (array) $_REQUEST['users'];
+               $userids = array_map( 'intval', (array) $_REQUEST['users'] );
+
+       add_action( 'admin_head', 'delete_users_add_js' );
 
        include ('admin-header.php');
 ?>
@@ -195,29 +217,33 @@ case 'delete':
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php _e('Delete Users'); ?></h2>
+<?php if ( isset( $_REQUEST['error'] ) ) : ?>
+<div class="error">
+       <p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
+</div>
+<?php endif; ?>
 <p><?php echo _n( 'You have specified this user for deletion:', 'You have specified these users for deletion:', count( $userids ) ); ?></p>
 <ul>
 <?php
        $go_delete = 0;
        foreach ( $userids as $id ) {
-               $id = (int) $id;
-               $user = new WP_User($id);
+               $user = get_userdata( $id );
                if ( $id == $current_user->ID ) {
-                       echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
+                       echo "<li>" . sprintf(__('ID #%1$s: %2$s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
                } else {
-                       echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
+                       echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1$s: %2$s'), $id, $user->user_login) . "</li>\n";
                        $go_delete++;
                }
        }
        ?>
        </ul>
 <?php if ( $go_delete ) : ?>
-       <fieldset><p><legend><?php echo _n( 'What should be done with posts and links owned by this user?', 'What should be done with posts and links owned by these users?', $go_delete ); ?></legend></p>
+       <fieldset><p><legend><?php echo _n( 'What should be done with posts owned by this user?', 'What should be done with posts owned by these users?', $go_delete ); ?></legend></p>
        <ul style="list-style:none;">
-               <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
-               <?php _e('Delete all posts and links.'); ?></label></li>
+               <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
+               <?php _e('Delete all posts.'); ?></label></li>
                <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
-               <?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>';
+               <?php echo '<label for="delete_option1">' . __( 'Attribute all posts to:' ) . '</label> ';
                wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
        </ul></fieldset>
        <input type="hidden" name="action" value="dodelete" />
@@ -302,13 +328,13 @@ case 'remove':
        $go_remove = false;
        foreach ( $userids as $id ) {
                $id = (int) $id;
-               $user = new WP_User($id);
+               $user = get_userdata( $id );
                if ( $id == $current_user->ID && !is_super_admin() ) {
-                       echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n";
+                       echo "<li>" . sprintf(__('ID #%1$s: %2$s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n";
                } elseif ( !current_user_can('remove_user', $id) ) {
-                       echo "<li>" . sprintf(__('ID #%1s: %2s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n";
+                       echo "<li>" . sprintf(__('ID #%1$s: %2$s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n";
                } else {
-                       echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
+                       echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1$s: %2$s'), $id, $user->user_login) . "</li>\n";
                        $go_remove = true;
                }
        }
index 9df98fbe29db1e9afd620d207a0ac5d61550a1c1..3e0b14621da8d6e16771d8c802318cfb9945e8bf 100644 (file)
@@ -59,7 +59,7 @@ get_current_screen()->add_help_tab( array(
 'title'                => __('Missing Widgets'),
 'content'      =>
        '<p>' . __('Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area.') . '</p>' .
-               '<p>' . __('When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive area, where all your widgets and their settings will have been saved.') . '</p>'
+               '<p>' . __('When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -68,23 +68,8 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-if ( empty($wp_registered_sidebars) ) {
-       // the theme has no sidebars, die.
-       require_once( './admin-header.php' );
-?>
-
-       <div class="wrap">
-       <?php screen_icon(); ?>
-       <h2><?php echo esc_html( $title ); ?></h2>
-               <div class="error">
-                       <p><?php _e( 'No Sidebars Defined' ); ?></p>
-               </div>
-               <p><?php _e( 'The theme you are currently using isn&#8217;t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please <a href="http://codex.wordpress.org/Widgetizing_Themes">follow these instructions</a>.' ); ?></p>
-       </div>
-
-<?php
-       require_once( './admin-footer.php' );
-       exit;
+if ( ! current_theme_supports( 'widgets' ) ) {
+       wp_die( __( 'The theme you are currently using isn&#8217;t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please <a href="http://codex.wordpress.org/Widgetizing_Themes">follow these instructions</a>.' ) );
 }
 
 // These are the widgets grouped by sidebar
@@ -360,12 +345,12 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                        <div class="sidebar-name">
                                <div class="sidebar-name-arrow"><br /></div>
                                <h3><?php echo esc_html( $registered_sidebar['name'] ); ?>
-                                       <span><img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback" title="" alt="" /></span>
+                                       <span class="spinner"></span>
                                </h3>
                        </div>
                        <div class="widget-holder inactive">
                                <?php wp_list_widget_controls( $registered_sidebar['id'] ); ?>
-                               <br class="clear" />
+                               <div class="clear"></div>
                        </div>
                </div>
 <?php
@@ -395,7 +380,7 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
        <div class="sidebar-name">
        <div class="sidebar-name-arrow"><br /></div>
        <h3><?php echo esc_html( $registered_sidebar['name'] ); ?>
-       <span><img src="<?php echo esc_url( admin_url( 'images/wpspin_dark.gif' ) ); ?>" class="ajax-feedback" title="" alt="" /></span></h3></div>
+       <span class="spinner"></span></h3></div>
        <?php wp_list_widget_controls( $sidebar ); // Show the control forms for each of the widgets in this sidebar ?>
        </div>
 <?php
diff --git a/wp-app.php b/wp-app.php
deleted file mode 100644 (file)
index 217ee7b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Atom Publishing Protocol support for WordPress
- *
- * @version 1.0.5-dc
- */
-
-/**
- * WordPress is handling an Atom Publishing Protocol request.
- *
- * @var bool
- */
-define('APP_REQUEST', true);
-
-/** Set up WordPress environment */
-require_once('./wp-load.php');
-
-/** Atom Publishing Protocol Class */
-require_once(ABSPATH . WPINC . '/atomlib.php');
-
-/** Atom Server **/
-require_once(ABSPATH . WPINC . '/class-wp-atom-server.php');
-
-/** Admin Image API for metadata updating */
-require_once(ABSPATH . '/wp-admin/includes/image.php');
-
-$_SERVER['PATH_INFO'] = preg_replace( '/.*\/wp-app\.php/', '', $_SERVER['REQUEST_URI'] );
-
-// Allow for a plugin to insert a different class to handle requests.
-$wp_atom_server_class = apply_filters('wp_atom_server_class', 'wp_atom_server');
-$wp_atom_server = new $wp_atom_server_class;
-
-// Handle the request
-$wp_atom_server->handle_request();
-
-exit;
-
-/**
- * Writes logging info to a file.
- *
- * @since 2.2.0
- * @deprecated 3.4.0
- * @deprecated Use error_log()
- * @link http://www.php.net/manual/en/function.error-log.php
- *
- * @param string $label Type of logging
- * @param string $msg Information describing logging reason.
- */
-function log_app( $label, $msg ) {
-       _deprecated_function( __FUNCTION__, '3.4', 'error_log()' );
-       if ( ! empty( $GLOBALS['app_logging'] ) )
-               error_log( $label . ' - ' . $msg );
-}
index b9dacce23817c23fb870c9add406021daa9ecb1a..63b809fd65b4854804713843271d12f50fa904ef 100644 (file)
@@ -35,13 +35,13 @@ ins {
        background: #00063f;
 }
 input[type=text],
-.post-password-required input[type=password],
+input[type=password],
+input[type=email],
+input[type=url],
+input[type=number],
 textarea {
        border: 1px solid #222;
 }
-input[type=text]:focus,
-textarea:focus {
-}
 input#s {
        background-color: #ddd;
 }
index 359b001c6c50b15281b6455950597c486451a58e..6b77feeacc4ccc88e1529d462966efb3f3c59645 100644 (file)
                </nav>
                <?php endif; // check for comment navigation ?>
 
-       <?php
+               <?php
                /* If there are no comments and comments are closed, let's leave a little note, shall we?
-                * But we don't want the note on pages or post types that do not support comments.
+                * But we only want the note on posts and pages that had comments in the first place.
                 */
-               elseif ( ! comments_open() && ! is_page() && post_type_supports( get_post_type(), 'comments' ) ) :
-       ?>
-               <p class="nocomments"><?php _e( 'Comments are closed.', 'twentyeleven' ); ?></p>
-       <?php endif; ?>
+               if ( ! comments_open() && get_comments_number() ) : ?>
+               <p class="nocomments"><?php _e( 'Comments are closed.' , 'twentyeleven' ); ?></p>
+               <?php endif; ?>
+
+       <?php endif; // have_comments() ?>
 
        <?php comment_form(); ?>
 
index a70638ab71ac31647efcb9207bd069d1efeae648..f6df40bdb13e45b4b81da2653700e9fd23488799 100644 (file)
@@ -13,7 +13,7 @@
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <header class="entry-header">
                        <hgroup>
-                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                <h3 class="entry-format"><?php _e( 'Aside', 'twentyeleven' ); ?></h3>
                        </hgroup>
 
@@ -42,5 +42,5 @@
                        <span class="comments-link"><?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?></span>
                        <?php endif; ?>
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index ce926410970387b46eaaf391a18d44ff122e76cf..7144a491fd3b31f37374235ac3c2a2c9ca347d9c 100644 (file)
@@ -11,7 +11,7 @@ global $feature_class;
 ?>
 <article id="post-<?php the_ID(); ?>" <?php post_class( $feature_class ); ?>>
        <header class="entry-header">
-               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
 
                <div class="entry-meta">
                        <?php twentyeleven_posted_on(); ?>
index 1b3e8c933896748601e83fde4b55dafdf2dd7c82..9976cf10eab0df195e3537be8dfd8f978d0572d9 100644 (file)
@@ -13,7 +13,7 @@
 <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <header class="entry-header">
                <hgroup>
-                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                        <h3 class="entry-format"><?php _e( 'Gallery', 'twentyeleven' ); ?></h3>
                </hgroup>
 
@@ -45,7 +45,7 @@
                                </figure><!-- .gallery-thumb -->
 
                                <p><em><?php printf( _n( 'This gallery contains <a %1$s>%2$s photo</a>.', 'This gallery contains <a %1$s>%2$s photos</a>.', $total_images, 'twentyeleven' ),
-                                               'href="' . esc_url( get_permalink() ) . '" title="' . sprintf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) . '" rel="bookmark"',
+                                               'href="' . esc_url( get_permalink() ) . '" title="' . esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ) . '" rel="bookmark"',
                                                number_format_i18n( $total_images )
                                        ); ?></em></p>
                        <?php endif; ?>
@@ -88,5 +88,5 @@
                <?php endif; // End if comments_open() ?>
 
                <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-       </footer><!-- #entry-meta -->
+       </footer><!-- .entry-meta -->
 </article><!-- #post-<?php the_ID(); ?> -->
index c26eb637dc88ca64b19677aacf8ee90a7f9dc42a..e5973f98e89d3365261035609bdb5aa76ec93be0 100644 (file)
@@ -12,7 +12,7 @@
        <article id="post-<?php the_ID(); ?>" <?php post_class( 'indexed' ); ?>>
                <header class="entry-header">
                        <hgroup>
-                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                <h3 class="entry-format"><?php _e( 'Image', 'twentyeleven' ); ?></h3>
                        </hgroup>
 
@@ -31,7 +31,7 @@
                <footer class="entry-meta">
                        <div class="entry-meta">
                                <?php
-                                       printf( __( '<a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s" pubdate>%3$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%4$s" title="%5$s" rel="author">%6$s</a></span></span>', 'twentyeleven' ),
+                                       printf( __( '<a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%4$s" title="%5$s" rel="author">%6$s</a></span></span>', 'twentyeleven' ),
                                                esc_url( get_permalink() ),
                                                get_the_date( 'c' ),
                                                get_the_date(),
@@ -66,5 +66,5 @@
                        </div><!-- .entry-meta -->
 
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index 4981ec60d43006dab5c2126e7bac570aeadeb9c6..2e447ce810849b3a1b6aebe7b0884d4645a9984d 100644 (file)
@@ -13,7 +13,7 @@
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <header class="entry-header">
                        <hgroup>
-                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                <h3 class="entry-format"><?php _e( 'Link', 'twentyeleven' ); ?></h3>
                        </hgroup>
 
@@ -42,5 +42,5 @@
                        <span class="comments-link"><?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?></span>
                        <?php endif; ?>
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index a4d600aa6b726f2ea6b31aed6660b252ce981783..89a0c2947e051e271bdc97c6ed03d0e3fba18907 100644 (file)
@@ -11,7 +11,7 @@
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <header class="entry-header">
                        <hgroup>
-                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                <h3 class="entry-format"><?php _e( 'Quote', 'twentyeleven' ); ?></h3>
                        </hgroup>
 
@@ -70,5 +70,5 @@
                        <?php endif; // End if comments_open() ?>
 
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index c6b2e808faa050894e0d011ec266faaddedea7d1..6cd0bad08043929d32f6a5c3d19c533c0b747108 100644 (file)
@@ -12,7 +12,7 @@
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <header class="entry-header">
                        <hgroup>
-                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                               <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                <h3 class="entry-format"><?php _e( 'Status', 'twentyeleven' ); ?></h3>
                        </hgroup>
 
@@ -43,5 +43,5 @@
                        <span class="comments-link"><?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?></span>
                        <?php endif; ?>
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index 3631e786fc8e76bc5beb13bab222e6c74b004d8e..f245ebf5bffd14647cd69f0bf37699ac2faa8a60 100644 (file)
                <header class="entry-header">
                        <?php if ( is_sticky() ) : ?>
                                <hgroup>
-                                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+                                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                        <h3 class="entry-format"><?php _e( 'Featured', 'twentyeleven' ); ?></h3>
                                </hgroup>
                        <?php else : ?>
-                       <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
+                       <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
                        <?php endif; ?>
 
                        <?php if ( 'post' == get_post_type() ) : ?>
@@ -45,7 +45,7 @@
 
                <footer class="entry-meta">
                        <?php $show_sep = false; ?>
-                       <?php if ( 'post' == get_post_type() ) : // Hide category and tag text for pages on Search ?>
+                       <?php if ( is_object_in_taxonomy( get_post_type(), 'category' ) ) : // Hide category text when not supported ?>
                        <?php
                                /* translators: used between list items, there is a space after the comma */
                                $categories_list = get_the_category_list( __( ', ', 'twentyeleven' ) );
@@ -56,6 +56,8 @@
                                $show_sep = true; ?>
                        </span>
                        <?php endif; // End if categories ?>
+                       <?php endif; // End if is_object_in_taxonomy( get_post_type(), 'category' ) ?>
+                       <?php if ( is_object_in_taxonomy( get_post_type(), 'post_tag' ) ) : // Hide tag text when not supported ?>
                        <?php
                                /* translators: used between list items, there is a space after the comma */
                                $tags_list = get_the_tag_list( '', __( ', ', 'twentyeleven' ) );
@@ -68,7 +70,7 @@
                                $show_sep = true; ?>
                        </span>
                        <?php endif; // End if $tags_list ?>
-                       <?php endif; // End if 'post' == get_post_type() ?>
+                       <?php endif; // End if is_object_in_taxonomy( get_post_type(), 'post_tag' ) ?>
 
                        <?php if ( comments_open() ) : ?>
                        <?php if ( $show_sep ) : ?>
@@ -78,5 +80,5 @@
                        <?php endif; // End if comments_open() ?>
 
                        <?php edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?>
-               </footer><!-- #entry-meta -->
+               </footer><!-- .entry-meta -->
        </article><!-- #post-<?php the_ID(); ?> -->
index e866925a944f8e33452951c6d819724267f1f002..234bb9c2165dc43292d747d6ec69a67a49f693c7 100644 (file)
@@ -254,7 +254,8 @@ p img,
 .wp-caption {
        margin-top: 0.4em;
 }
-img {
+img,
+.editor-attachment {
        border: 1px solid #ddd;
        padding: 6px;
 }
index da9a70a89bfaa8c45b2627034d8cf9f210a40ebf..9cb702caf869a028df2394011420f8178bcda026 100644 (file)
@@ -24,7 +24,7 @@
 
                        <div id="site-generator">
                                <?php do_action( 'twentyeleven_credits' ); ?>
-                               <a href="<?php echo esc_url( __( 'http://wordpress.org/', 'twentyeleven' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentyeleven' ); ?>" rel="generator"><?php printf( __( 'Proudly powered by %s', 'twentyeleven' ), 'WordPress' ); ?></a>
+                               <a href="<?php echo esc_url( __( 'http://wordpress.org/', 'twentyeleven' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentyeleven' ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyeleven' ), 'WordPress' ); ?></a>
                        </div>
        </footer><!-- #colophon -->
 </div><!-- #page -->
index e9d97ed2765a63742a951bc8dba0eccddf888467..1fc8e659e7840dc4a8a1769558a2dff7bbf33d15 100644 (file)
@@ -101,7 +101,7 @@ function twentyeleven_setup() {
        if ( 'dark' == $theme_options['color_scheme'] )
                $default_background_color = '1d1d1d';
        else
-               $default_background_color = 'f1f1f1';
+               $default_background_color = 'e2e2e2';
 
        // Add support for custom backgrounds.
        add_theme_support( 'custom-background', array(
@@ -131,7 +131,7 @@ function twentyeleven_setup() {
                // Callback used to display the header preview in the admin.
                'admin-preview-callback' => 'twentyeleven_admin_header_image',
        );
-       
+
        add_theme_support( 'custom-header', $custom_header_support );
 
        if ( ! function_exists( 'get_custom_header' ) ) {
@@ -221,7 +221,7 @@ function twentyeleven_header_style() {
        // If no custom options for text are set, let's bail.
        if ( $text_color == HEADER_TEXTCOLOR )
                return;
-               
+
        // If we get this far, we have custom styles. Let's do this.
        ?>
        <style type="text/css">
@@ -337,12 +337,14 @@ function twentyeleven_excerpt_length( $length ) {
 }
 add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );
 
+if ( ! function_exists( 'twentyeleven_continue_reading_link' ) ) :
 /**
  * Returns a "Continue Reading" link for excerpts
  */
 function twentyeleven_continue_reading_link() {
        return ' <a href="'. esc_url( get_permalink() ) . '">' . __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyeleven' ) . '</a>';
 }
+endif; // twentyeleven_continue_reading_link
 
 /**
  * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and twentyeleven_continue_reading_link().
@@ -373,7 +375,8 @@ add_filter( 'get_the_excerpt', 'twentyeleven_custom_excerpt_more' );
  * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
  */
 function twentyeleven_page_menu_args( $args ) {
-       $args['show_home'] = true;
+       if ( ! isset( $args['show_home'] ) )
+               $args['show_home'] = true;
        return $args;
 }
 add_filter( 'wp_page_menu_args', 'twentyeleven_page_menu_args' );
@@ -442,11 +445,11 @@ if ( ! function_exists( 'twentyeleven_content_nav' ) ) :
 /**
  * Display navigation to next/previous pages when applicable
  */
-function twentyeleven_content_nav( $nav_id ) {
+function twentyeleven_content_nav( $html_id ) {
        global $wp_query;
 
        if ( $wp_query->max_num_pages > 1 ) : ?>
-               <nav id="<?php echo $nav_id; ?>">
+               <nav id="<?php echo esc_attr( $html_id ); ?>">
                        <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
                        <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyeleven' ) ); ?></div>
                        <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyeleven' ) ); ?></div>
@@ -538,7 +541,7 @@ function twentyeleven_comment( $comment, $args, $depth ) {
                                                /* translators: 1: comment author, 2: date and time */
                                                printf( __( '%1$s on %2$s <span class="says">said:</span>', 'twentyeleven' ),
                                                        sprintf( '<span class="fn">%s</span>', get_comment_author_link() ),
-                                                       sprintf( '<a href="%1$s"><time pubdate datetime="%2$s">%3$s</time></a>',
+                                                       sprintf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
                                                                esc_url( get_comment_link( $comment->comment_ID ) ),
                                                                get_comment_time( 'c' ),
                                                                /* translators: 1: date, 2: time */
@@ -578,7 +581,7 @@ if ( ! function_exists( 'twentyeleven_posted_on' ) ) :
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_posted_on() {
-       printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'twentyeleven' ),
+       printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'twentyeleven' ),
                esc_url( get_permalink() ),
                esc_attr( get_the_time() ),
                esc_attr( get_the_date( 'c' ) ),
index 3a43135ded872846746d03fdb526f785df14758f..f8c5061eb87c1fb28d136174c3dbf615e13df565 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/comment-bubble-dark-rtl.png and b/wp-content/themes/twentyeleven/images/comment-bubble-dark-rtl.png differ
index 6bf8797940cd1af1c819597b0f9f5ef52ffcf505..2d1ca1a269d0090b649754e474302a6004ed9d8d 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/comment-bubble-dark.png and b/wp-content/themes/twentyeleven/images/comment-bubble-dark.png differ
index bdfde17ad14125829fdd95b81c75179177578f8c..55ff63fbbe37f117cc66b9b3000998fe3106c9a9 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/comment-bubble-rtl.png and b/wp-content/themes/twentyeleven/images/comment-bubble-rtl.png differ
index 19011948bbb693b979585bf9654a6c84964a3628..1798846a5ade6ecd60dae9c1bfee1d145f41f8b2 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/comment-bubble.png and b/wp-content/themes/twentyeleven/images/comment-bubble.png differ
index 4fd9377c3ce1c8ba819711493aa99b5e59804cd6..831961fff53ef0849391f1bbd99d6dfe8da982f7 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/chessboard.jpg and b/wp-content/themes/twentyeleven/images/headers/chessboard.jpg differ
index 37d73f19b220eb13c49f9047d66ce306137647af..5b0fa3fb87575337376bb8bc3cd8f4f73d617b31 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/hanoi.jpg and b/wp-content/themes/twentyeleven/images/headers/hanoi.jpg differ
index 1713f371e7966590bbdcab1b64301d5f5f362b03..3790f96caaf13a7211355d89343dd7b5245583fd 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/lanterns-thumbnail.jpg and b/wp-content/themes/twentyeleven/images/headers/lanterns-thumbnail.jpg differ
index 3a25db4afb64883ef7062de69a552eb7c7642560..f71ce8f8cdf2d79cede95891293d0b115325dbb3 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/lanterns.jpg and b/wp-content/themes/twentyeleven/images/headers/lanterns.jpg differ
index b70bf7c67c3ec64bdae12fd5a294898dd31a9f31..e55ce97f1d63bfa020e97a0c3e4552a18d4e3f9f 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/pine-cone.jpg and b/wp-content/themes/twentyeleven/images/headers/pine-cone.jpg differ
index 237563069fb8d85017d249f548b7c940f51d9551..71a8c54fed14b81aa89e43a37c48615a4bf3cc2e 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/shore.jpg and b/wp-content/themes/twentyeleven/images/headers/shore.jpg differ
index 61c8956fc21e73b1b366cac47e02a416db64df55..110a764e5b6434338b2afb0d7d91548401dfba32 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/trolley.jpg and b/wp-content/themes/twentyeleven/images/headers/trolley.jpg differ
index a6155ff122140ed71244da90b467992336c999aa..c5b98789a81b18deabeffe0fdda1cb1f57ef4b7e 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/wheel.jpg and b/wp-content/themes/twentyeleven/images/headers/wheel.jpg differ
index 61bd538b1ac75f388d3ae22e8cddbda590cacd45..e867cc43df474206c649186d73b7b95265ece817 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/headers/willow.jpg and b/wp-content/themes/twentyeleven/images/headers/willow.jpg differ
index 1f9d8288bcd369aec1561e625cf2d87caca62f39..5036704b959b1c5dafbe3c668165703cd2ba4459 100644 (file)
Binary files a/wp-content/themes/twentyeleven/images/search.png and b/wp-content/themes/twentyeleven/images/search.png differ
index f4d4794712d0264a2e960d46b2328a2979b19181..71a23f7347ba91b13ea9ce724f35fbca5c57e5fa 100644 (file)
Binary files a/wp-content/themes/twentyeleven/inc/images/content-sidebar.png and b/wp-content/themes/twentyeleven/inc/images/content-sidebar.png differ
index 6cf1da4aacaa8aad7cec2551c720ef9117456f05..301a2946b3ec2b3f35a2d8eb5b8b024ba154a10c 100644 (file)
Binary files a/wp-content/themes/twentyeleven/inc/images/content.png and b/wp-content/themes/twentyeleven/inc/images/content.png differ
index 55eda6679807a1657550b7f5ce03e97d47bd4edc..76b8dad493daccb02358b9fe623354d600be4e4c 100644 (file)
Binary files a/wp-content/themes/twentyeleven/inc/images/dark.png and b/wp-content/themes/twentyeleven/inc/images/dark.png differ
index 51b1b7a80af9e43f33b09d45f337b985635848a2..42d8925a34cb2c0aa279421f53bdbc420277555f 100644 (file)
Binary files a/wp-content/themes/twentyeleven/inc/images/light.png and b/wp-content/themes/twentyeleven/inc/images/light.png differ
index de520237019aeb2a2756f96e3796dff0a8ec8f0f..579b9fdbcd33389f1b4b2b62f081cc61fdc027c9 100644 (file)
Binary files a/wp-content/themes/twentyeleven/inc/images/sidebar-content.png and b/wp-content/themes/twentyeleven/inc/images/sidebar-content.png differ
index aac42f06b061746adf493f93c1289f4cdbebb919..b39fc729b324d2c8618da522cb0168af71c0e5a1 100644 (file)
@@ -86,7 +86,7 @@ class Twenty_Eleven_Ephemera_Widget extends WP_Widget {
                                <?php if ( 'link' != get_post_format() ) : ?>
 
                                <li class="widget-entry-title">
-                                       <a href="<?php echo esc_url( get_permalink() ); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
+                                       <a href="<?php echo esc_url( get_permalink() ); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
                                        <span class="comments-link">
                                                <?php comments_popup_link( __( '0 <span class="reply">comments &rarr;</span>', 'twentyeleven' ), __( '1 <span class="reply">comment &rarr;</span>', 'twentyeleven' ), __( '% <span class="reply">comments &rarr;</span>', 'twentyeleven' ) ); ?>
                                        </span>
@@ -102,7 +102,7 @@ class Twenty_Eleven_Ephemera_Widget extends WP_Widget {
                                                if ( empty( $link_url ) )
                                                        $link_url = get_permalink();
                                        ?>
-                                       <a href="<?php echo esc_url( $link_url ); ?>" title="<?php printf( esc_attr__( 'Link to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?>&nbsp;<span>&rarr;</span></a>
+                                       <a href="<?php echo esc_url( $link_url ); ?>" title="<?php echo esc_attr( sprintf( __( 'Link to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?>&nbsp;<span>&rarr;</span></a>
                                        <span class="comments-link">
                                                <?php comments_popup_link( __( '0 <span class="reply">comments &rarr;</span>', 'twentyeleven' ), __( '1 <span class="reply">comment &rarr;</span>', 'twentyeleven' ), __( '% <span class="reply">comments &rarr;</span>', 'twentyeleven' ) ); ?>
                                        </span>
index 6dd03a4ce4dda310479810641b48d8815372b7f9..fabcb85ec3bfd6ae6ec5d88b86b0ba0498e2a530 100644 (file)
@@ -1,3 +1,6 @@
-// html5shiv MIT @rem remysharp.com/html5-enabling-script
-// iepp v1.6.2 MIT @jon_neal iecss.com/print-protector
-/*@cc_on(function(a,b){function r(a){var b=-1;while(++b<f)a.createElement(e[b])}if(!(!window.attachEvent||!b.createStyleSheet||!function(){var a=document.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}())){a.iepp=a.iepp||{};var c=a.iepp,d=c.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",e=d.split("|"),f=e.length,g=new RegExp("(^|\\s)("+d+")","gi"),h=new RegExp("<(/*)("+d+")","gi"),i=/^\s*[\{\}]\s*$/,j=new RegExp("(^|[^\\n]*?\\s)("+d+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),k=b.createDocumentFragment(),l=b.documentElement,m=l.firstChild,n=b.createElement("body"),o=b.createElement("style"),p=/print|all/,q;c.getCSS=function(a,b){if(a+""===undefined)return"";var d=-1,e=a.length,f,g=[];while(++d<e){f=a[d];if(f.disabled)continue;b=f.media||b,p.test(b)&&g.push(c.getCSS(f.imports,b),f.cssText),b="all"}return g.join("")},c.parseCSS=function(a){var b=[],c;while((c=j.exec(a))!=null)b.push(((i.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(g,"$1.iepp_$2")+c[4]);return b.join("\n")},c.writeHTML=function(){var a=-1;q=q||b.body;while(++a<f){var c=b.getElementsByTagName(e[a]),d=c.length,g=-1;while(++g<d)c[g].className.indexOf("iepp_")<0&&(c[g].className+=" iepp_"+e[a])}k.appendChild(q),l.appendChild(n),n.className=q.className,n.id=q.id,n.innerHTML=q.innerHTML.replace(h,"<$1font")},c._beforePrint=function(){o.styleSheet.cssText=c.parseCSS(c.getCSS(b.styleSheets,"all")),c.writeHTML()},c.restoreHTML=function(){n.innerHTML="",l.removeChild(n),l.appendChild(q)},c._afterPrint=function(){c.restoreHTML(),o.styleSheet.cssText=""},r(b),r(k);if(c.disablePP)return;m.insertBefore(o,m.firstChild),o.media="print",o.className="iepp-printshim",a.attachEvent("onbeforeprint",c._beforePrint),a.attachEvent("onafterprint",c._afterPrint)}})(this,document)@*/
\ No newline at end of file
+/*! HTML5 Shiv v3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");
+var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,
+b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
\ No newline at end of file
index 46e3e16b590ef69a3ac96f01f4e6303f75887e93..14f662074caef3004ef003ef2dbd5fcb186ba08d 100644 (file)
@@ -2,9 +2,9 @@
 # This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Eleven 1.4\n"
+"Project-Id-Version: Twenty Eleven 1.5\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyeleven\n"
-"POT-Creation-Date: 2012-06-10 15:18:15+00:00\n"
+"POT-Creation-Date: 2012-12-07 21:19:12+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -103,7 +103,7 @@ msgstr ""
 msgid "Newer Comments &rarr;"
 msgstr ""
 
-#: comments.php:72
+#: comments.php:71
 msgid "Comments are closed."
 msgstr ""
 
@@ -137,7 +137,7 @@ msgstr ""
 
 #: content-aside.php:33 content-gallery.php:32 content-image.php:27
 #: content-link.php:33 content-quote.php:35 content-status.php:34
-#: content.php:41 functions.php:344
+#: content.php:41 functions.php:345
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
@@ -150,26 +150,26 @@ msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:201
+#: content.php:79 showcase.php:201
 msgid "Leave a reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:201
+#: content.php:79 showcase.php:201
 msgid "<b>1</b> Reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:201
+#: content.php:79 showcase.php:201
 msgid "<b>%</b> Replies"
 msgstr ""
 
 #: content-aside.php:44 content-featured.php:45 content-gallery.php:90
 #: content-image.php:68 content-intro.php:19 content-link.php:44
 #: content-page.php:21 content-quote.php:72 content-single.php:52
-#: content-status.php:45 content.php:80 functions.php:522 functions.php:550
+#: content-status.php:45 content.php:82 functions.php:525 functions.php:553
 #: image.php:41
 msgid "Edit"
 msgstr ""
@@ -178,7 +178,7 @@ msgstr ""
 #: content-featured.php:29 content-featured.php:38 content-gallery.php:62
 #: content-gallery.php:72 content-image.php:47 content-image.php:56
 #: content-quote.php:44 content-quote.php:54 content-single.php:30
-#: content-single.php:33 content.php:51 content.php:61
+#: content-single.php:33 content.php:51 content.php:63
 msgid ", "
 msgstr ""
 
@@ -210,7 +210,7 @@ msgid "<span class=\"%1$s\">Posted in</span> %2$s"
 msgstr ""
 
 #: content-gallery.php:78 content-image.php:59 content-quote.php:60
-#: content.php:67
+#: content.php:69
 msgid "<span class=\"%1$s\">Tagged</span> %2$s"
 msgstr ""
 
@@ -221,12 +221,12 @@ msgstr ""
 #: content-image.php:34
 msgid ""
 "<a href=\"%1$s\" rel=\"bookmark\"><time class=\"entry-date\" datetime=\"%2$s"
-"\" pubdate>%3$s</time></a><span class=\"by-author\"> <span class=\"sep\"> by "
-"</span> <span class=\"author vcard\"><a class=\"url fn n\" href=\"%4$s\" "
-"title=\"%5$s\" rel=\"author\">%6$s</a></span></span>"
+"\">%3$s</time></a><span class=\"by-author\"> <span class=\"sep\"> by </span> "
+"<span class=\"author vcard\"><a class=\"url fn n\" href=\"%4$s\" title=\"%5$s"
+"\" rel=\"author\">%6$s</a></span></span>"
 msgstr ""
 
-#: content-image.php:39 functions.php:587
+#: content-image.php:39 functions.php:590
 msgid "View all posts by %s"
 msgstr ""
 
@@ -269,7 +269,7 @@ msgstr ""
 msgid "Featured"
 msgstr ""
 
-#. #-#-#-#-#  twentyeleven.pot (Twenty Eleven 1.4)  #-#-#-#-#
+#. #-#-#-#-#  twentyeleven.pot (Twenty Eleven 1.5)  #-#-#-#-#
 #. Author URI of the plugin/theme
 #: footer.php:27
 msgid "http://wordpress.org/"
@@ -327,75 +327,75 @@ msgstr ""
 msgid "Hanoi Plant"
 msgstr ""
 
-#: functions.php:391
+#: functions.php:394
 msgid "Main Sidebar"
 msgstr ""
 
-#: functions.php:400
+#: functions.php:403
 msgid "Showcase Sidebar"
 msgstr ""
 
-#: functions.php:402
+#: functions.php:405
 msgid "The sidebar for the optional Showcase Template"
 msgstr ""
 
-#: functions.php:410
+#: functions.php:413
 msgid "Footer Area One"
 msgstr ""
 
-#: functions.php:412 functions.php:422 functions.php:432
+#: functions.php:415 functions.php:425 functions.php:435
 msgid "An optional widget area for your site footer"
 msgstr ""
 
-#: functions.php:420
+#: functions.php:423
 msgid "Footer Area Two"
 msgstr ""
 
-#: functions.php:430
+#: functions.php:433
 msgid "Footer Area Three"
 msgstr ""
 
-#: functions.php:450 single.php:18
+#: functions.php:453 single.php:18
 msgid "Post navigation"
 msgstr ""
 
-#: functions.php:451
+#: functions.php:454
 msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
 msgstr ""
 
-#: functions.php:452
+#: functions.php:455
 msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#: functions.php:522
+#: functions.php:525
 msgid "Pingback:"
 msgstr ""
 
 #. translators: 1: comment author, 2: date and time
-#: functions.php:539
+#: functions.php:542
 msgid "%1$s on %2$s <span class=\"says\">said:</span>"
 msgstr ""
 
 #. translators: 1: date, 2: time
-#: functions.php:545
+#: functions.php:548
 msgid "%1$s at %2$s"
 msgstr ""
 
-#: functions.php:554
+#: functions.php:557
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
-#: functions.php:563
+#: functions.php:566
 msgid "Reply <span>&darr;</span>"
 msgstr ""
 
-#: functions.php:581
+#: functions.php:584
 msgid ""
 "<span class=\"sep\">Posted on </span><a href=\"%1$s\" title=\"%2$s\" rel="
-"\"bookmark\"><time class=\"entry-date\" datetime=\"%3$s\" pubdate>%4$s</"
-"time></a><span class=\"by-author\"> <span class=\"sep\"> by </span> <span "
-"class=\"author vcard\"><a class=\"url fn n\" href=\"%5$s\" title=\"%6$s\" "
-"rel=\"author\">%7$s</a></span></span>"
+"\"bookmark\"><time class=\"entry-date\" datetime=\"%3$s\">%4$s</time></"
+"a><span class=\"by-author\"> <span class=\"sep\"> by </span> <span class="
+"\"author vcard\"><a class=\"url fn n\" href=\"%5$s\" title=\"%6$s\" rel="
+"\"author\">%7$s</a></span></span>"
 msgstr ""
 
 #: header.php:45
@@ -651,15 +651,6 @@ msgstr ""
 msgid "the WordPress team"
 msgstr ""
 
-#. Tags of the plugin/theme
-msgid ""
-"dark, light, white, black, gray, one-column, two-columns, left-sidebar, "
-"right-sidebar, fixed-width, flexible-width, custom-background, custom-"
-"colors, custom-header, custom-menu, editor-style, featured-image-header, "
-"featured-images, full-width-template, microformats, post-formats, rtl-"
-"language-support, sticky-post, theme-options, translation-ready"
-msgstr ""
-
 #. Template Name of the plugin/theme
 msgid "Showcase Template"
 msgstr ""
index b1fb07f4b3b167988786e95e7c16663e04806264..8f120d8d5b99216f81f4e534eec2f05b7c7de2d2 100644 (file)
Binary files a/wp-content/themes/twentyeleven/screenshot.png and b/wp-content/themes/twentyeleven/screenshot.png differ
index f5d2a3eeb0a276621a942ddd635fc17eaca61c5a..9bc57fc3b7930fada9686c829119ec0b160a1f8e 100644 (file)
@@ -117,7 +117,7 @@ get_header(); ?>
                                                                else
                                                                        $thumbnail_size = 'small-feature';
                                                                ?>
-                                                               <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_post_thumbnail( $thumbnail_size ); ?></a>
+                                                               <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_post_thumbnail( $thumbnail_size ); ?></a>
                                                                <?php
                                                        }
                                                ?>
@@ -147,7 +147,7 @@ get_header(); ?>
                                                        else
                                                                $class = '';
                                        ?>
-                                               <li><a href="#featured-post-<?php echo $counter_slider; ?>" title="<?php printf( esc_attr__( 'Featuring: %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" <?php echo $class; ?>></a></li>
+                                               <li><a href="#featured-post-<?php echo $counter_slider; ?>" title="<?php echo esc_attr( sprintf( __( 'Featuring: %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" <?php echo $class; ?>></a></li>
                                        <?php endwhile; ?>
                                        </ul>
                                </nav>
@@ -196,7 +196,7 @@ get_header(); ?>
                                        while ( $recent->have_posts() ) : $recent->the_post(); ?>
 
                                                <li class="entry-title">
-                                                       <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
+                                                       <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
                                                        <span class="comments-link">
                                                                <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?>
                                                        </span>
index 01ab46041f9bf391a19d779fba6f0dab24afa489..92a533eb9c3e54258443a7a5743ca042652f881a 100644 (file)
@@ -20,7 +20,7 @@ get_header(); ?>
                                                <span class="nav-next"><?php next_post_link( '%link', __( 'Next <span class="meta-nav">&rarr;</span>', 'twentyeleven' ) ); ?></span>
                                        </nav><!-- #nav-single -->
 
-                                       <?php get_template_part( 'content', 'single' ); ?>
+                                       <?php get_template_part( 'content-single', get_post_format() ); ?>
 
                                        <?php comments_template( '', true ); ?>
 
index aec75804fb74e4f742efa03fc126b6028bff66e2..62091805015d47523e1f3722742c2d7880b3f6ee 100644 (file)
@@ -4,10 +4,10 @@ Theme URI: http://wordpress.org/extend/themes/twentyeleven
 Author: the WordPress team
 Author URI: http://wordpress.org/
 Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.
-Version: 1.4
+Version: 1.5
 License: GNU General Public License v2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
-Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
+Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
 Text Domain: twentyeleven
 */
 
@@ -431,10 +431,16 @@ sup {
 sub {
        top: .5ex;
 }
+small {
+       font-size: smaller;
+}
 
 /* Forms */
 input[type=text],
 input[type=password],
+input[type=email],
+input[type=url],
+input[type=number],
 textarea {
        background: #fafafa;
        -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.1);
@@ -444,6 +450,10 @@ textarea {
        color: #888;
 }
 input[type=text]:focus,
+input[type=password]:focus,
+input[type=email]:focus,
+input[type=url]:focus,
+input[type=number]:focus,
 textarea:focus {
        color: #373737;
 }
@@ -451,7 +461,11 @@ textarea {
        padding-left: 3px;
        width: 98%;
 }
-input[type=text] {
+input[type=text],
+input[type=password],
+input[type=email],
+input[type=url],
+input[type=number] {
        padding: 3px;
 }
 input#s {
@@ -530,7 +544,7 @@ a:hover {
 }
 #branding img {
        height: auto;
-       margin-bottom: -7px;
+       display: block;
        width: 100%;
 }
 
@@ -962,12 +976,15 @@ a:active img[class*="wp-image-"],
        border-color: #ddd;
 }
 
-/* Make sure embeds and iframes fit their containers */
+/* Make sure videos and embeds fit their containers */
 embed,
 iframe,
 object {
        max-width: 100%;
 }
+.entry-content .twitter-tweet-rendered {
+       max-width: 100% !important; /* Override the Twitter embed fixed width */
+}
 
 /* Password Protected Posts */
 .post-password-required .entry-header .comments-link {
@@ -1190,6 +1207,7 @@ blockquote.pull.alignright {
        float: left;
        display: block;
        margin: .375em 1.625em 0 0;
+       max-width: 100%;
 }
 
 
@@ -1751,6 +1769,10 @@ section.recent-posts .other-recent-posts li:after {
        font-size: 12px;
 }
 .widget {
+       word-wrap: break-word;
+       -webkit-hyphens: auto;
+       -moz-hyphens: auto;
+       hyphens: auto;
        clear: both;
        margin: 0 0 2.2em;
 }
@@ -1960,6 +1982,10 @@ section.ephemera .entry-title a span {
 }
 .commentlist .children li.comment .comment-content {
        margin: 1.625em 0 0;
+       word-wrap: break-word;
+       -webkit-hyphens: auto;
+       -moz-hyphens: auto;
+       hyphens: auto;
 }
 .comment-meta a {
        font-weight: bold;
@@ -2116,7 +2142,6 @@ a.comment-reply-link > span {
        font-weight: bold;
        left: 75%;
        position: absolute;
-       top: 45px;
        z-index: 1;
 }
 #respond .comment-notes,
@@ -2686,9 +2711,9 @@ p.comment-form-comment {
        margin-right: 7.6%;
 }
 
-/* =IE8 
------------------------------------------------ */ 
-#ie8 section.feature-image.large img { 
-       width: 100%; 
-} 
\ No newline at end of file
+/* =IE8
+----------------------------------------------- */
+
+#ie8 section.feature-image.large img {
+       width: 100%;
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentyten/404.php b/wp-content/themes/twentyten/404.php
deleted file mode 100644 (file)
index 3baea81..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * The template for displaying 404 pages (Not Found).
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-       <div id="container">
-               <div id="content" role="main">
-
-                       <div id="post-0" class="post error404 not-found">
-                               <h1 class="entry-title"><?php _e( 'Not Found', 'twentyten' ); ?></h1>
-                               <div class="entry-content">
-                                       <p><?php _e( 'Apologies, but the page you requested could not be found. Perhaps searching will help.', 'twentyten' ); ?></p>
-                                       <?php get_search_form(); ?>
-                               </div><!-- .entry-content -->
-                       </div><!-- #post-0 -->
-
-               </div><!-- #content -->
-       </div><!-- #container -->
-       <script type="text/javascript">
-               // focus on search field after it has loaded
-               document.getElementById('s') && document.getElementById('s').focus();
-       </script>
-
-<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentyten/archive.php b/wp-content/themes/twentyten/archive.php
deleted file mode 100644 (file)
index 3899f0e..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-/**
- * The template for displaying Archive pages.
- *
- * Used to display archive-type pages if nothing more specific matches a query.
- * For example, puts together date-based pages if no date.php file exists.
- *
- * Learn more: http://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-<?php
-       /* Queue the first post, that way we know
-        * what date we're dealing with (if that is the case).
-        *
-        * We reset this later so we can run the loop
-        * properly with a call to rewind_posts().
-        */
-       if ( have_posts() )
-               the_post();
-?>
-
-                       <h1 class="page-title">
-<?php if ( is_day() ) : ?>
-                               <?php printf( __( 'Daily Archives: <span>%s</span>', 'twentyten' ), get_the_date() ); ?>
-<?php elseif ( is_month() ) : ?>
-                               <?php printf( __( 'Monthly Archives: <span>%s</span>', 'twentyten' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyten' ) ) ); ?>
-<?php elseif ( is_year() ) : ?>
-                               <?php printf( __( 'Yearly Archives: <span>%s</span>', 'twentyten' ), get_the_date( _x( 'Y', 'yearly archives date format', 'twentyten' ) ) ); ?>
-<?php else : ?>
-                               <?php _e( 'Blog Archives', 'twentyten' ); ?>
-<?php endif; ?>
-                       </h1>
-
-<?php
-       /* Since we called the_post() above, we need to
-        * rewind the loop back to the beginning that way
-        * we can run the loop properly, in full.
-        */
-       rewind_posts();
-
-       /* Run the loop for the archives page to output the posts.
-        * If you want to overload this in a child theme then include a file
-        * called loop-archive.php and that will be used instead.
-        */
-        get_template_part( 'loop', 'archive' );
-?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/attachment.php b/wp-content/themes/twentyten/attachment.php
deleted file mode 100644 (file)
index 5b35936..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * The template for displaying attachments.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container" class="single-attachment">
-                       <div id="content" role="main">
-
-                       <?php
-                       /* Run the loop to output the attachment.
-                        * If you want to overload this in a child theme then include a file
-                        * called loop-attachment.php and that will be used instead.
-                        */
-                       get_template_part( 'loop', 'attachment' );
-                       ?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/author.php b/wp-content/themes/twentyten/author.php
deleted file mode 100644 (file)
index 2bd48c8..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * The template for displaying Author Archive pages.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-<?php
-       /* Queue the first post, that way we know who
-        * the author is when we try to get their name,
-        * URL, description, avatar, etc.
-        *
-        * We reset this later so we can run the loop
-        * properly with a call to rewind_posts().
-        */
-       if ( have_posts() )
-               the_post();
-?>
-
-                               <h1 class="page-title author"><?php printf( __( 'Author Archives: %s', 'twentyten' ), "<span class='vcard'><a class='url fn n' href='" . get_author_posts_url( get_the_author_meta( 'ID' ) ) . "' title='" . esc_attr( get_the_author() ) . "' rel='me'>" . get_the_author() . "</a></span>" ); ?></h1>
-
-<?php
-// If a user has filled out their description, show a bio on their entries.
-if ( get_the_author_meta( 'description' ) ) : ?>
-                                       <div id="entry-author-info">
-                                               <div id="author-avatar">
-                                                       <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyten_author_bio_avatar_size', 60 ) ); ?>
-                                               </div><!-- #author-avatar -->
-                                               <div id="author-description">
-                                                       <h2><?php printf( __( 'About %s', 'twentyten' ), get_the_author() ); ?></h2>
-                                                       <?php the_author_meta( 'description' ); ?>
-                                               </div><!-- #author-description  -->
-                                       </div><!-- #entry-author-info -->
-<?php endif; ?>
-
-<?php
-       /* Since we called the_post() above, we need to
-        * rewind the loop back to the beginning that way
-        * we can run the loop properly, in full.
-        */
-       rewind_posts();
-
-       /* Run the loop for the author archive page to output the authors posts
-        * If you want to overload this in a child theme then include a file
-        * called loop-author.php and that will be used instead.
-        */
-        get_template_part( 'loop', 'author' );
-?>
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/category.php b/wp-content/themes/twentyten/category.php
deleted file mode 100644 (file)
index 0792e1f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * The template for displaying Category Archive pages.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-                               <h1 class="page-title"><?php
-                                       printf( __( 'Category Archives: %s', 'twentyten' ), '<span>' . single_cat_title( '', false ) . '</span>' );
-                               ?></h1>
-                               <?php
-                                       $category_description = category_description();
-                                       if ( ! empty( $category_description ) )
-                                               echo '<div class="archive-meta">' . $category_description . '</div>';
-
-                               /* Run the loop for the category page to output the posts.
-                                * If you want to overload this in a child theme then include a file
-                                * called loop-category.php and that will be used instead.
-                                */
-                               get_template_part( 'loop', 'category' );
-                               ?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/comments.php b/wp-content/themes/twentyten/comments.php
deleted file mode 100644 (file)
index eece437..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * The template for displaying Comments.
- *
- * The area of the page that contains both current comments
- * and the comment form. The actual display of comments is
- * handled by a callback to twentyten_comment which is
- * located in the functions.php file.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?>
-
-                       <div id="comments">
-<?php if ( post_password_required() ) : ?>
-                               <p class="nopassword"><?php _e( 'This post is password protected. Enter the password to view any comments.', 'twentyten' ); ?></p>
-                       </div><!-- #comments -->
-<?php
-               /* Stop the rest of comments.php from being processed,
-                * but don't kill the script entirely -- we still have
-                * to fully load the template.
-                */
-               return;
-       endif;
-?>
-
-<?php
-       // You can start editing here -- including this comment!
-?>
-
-<?php if ( have_comments() ) : ?>
-                       <h3 id="comments-title"><?php
-                       printf( _n( 'One Response to %2$s', '%1$s Responses to %2$s', get_comments_number(), 'twentyten' ),
-                       number_format_i18n( get_comments_number() ), '<em>' . get_the_title() . '</em>' );
-                       ?></h3>
-
-<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
-                       <div class="navigation">
-                               <div class="nav-previous"><?php previous_comments_link( __( '<span class="meta-nav">&larr;</span> Older Comments', 'twentyten' ) ); ?></div>
-                               <div class="nav-next"><?php next_comments_link( __( 'Newer Comments <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
-                       </div> <!-- .navigation -->
-<?php endif; // check for comment navigation ?>
-
-                       <ol class="commentlist">
-                               <?php
-                                       /* Loop through and list the comments. Tell wp_list_comments()
-                                        * to use twentyten_comment() to format the comments.
-                                        * If you want to overload this in a child theme then you can
-                                        * define twentyten_comment() and that will be used instead.
-                                        * See twentyten_comment() in twentyten/functions.php for more.
-                                        */
-                                       wp_list_comments( array( 'callback' => 'twentyten_comment' ) );
-                               ?>
-                       </ol>
-
-<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
-                       <div class="navigation">
-                               <div class="nav-previous"><?php previous_comments_link( __( '<span class="meta-nav">&larr;</span> Older Comments', 'twentyten' ) ); ?></div>
-                               <div class="nav-next"><?php next_comments_link( __( 'Newer Comments <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
-                       </div><!-- .navigation -->
-<?php endif; // check for comment navigation ?>
-
-<?php else : // or, if we don't have comments:
-
-       /* If there are no comments and comments are closed,
-        * let's leave a little note, shall we?
-        */
-       if ( ! comments_open() ) :
-?>
-       <p class="nocomments"><?php _e( 'Comments are closed.', 'twentyten' ); ?></p>
-<?php endif; // end ! comments_open() ?>
-
-<?php endif; // end have_comments() ?>
-
-<?php comment_form(); ?>
-
-</div><!-- #comments -->
diff --git a/wp-content/themes/twentyten/editor-style-rtl.css b/wp-content/themes/twentyten/editor-style-rtl.css
deleted file mode 100644 (file)
index 5868d3c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-Theme Name: Twenty Ten
-*/
-/*
-Used to style the TinyMCE editor.
-*/
-html .mceContentBody{
-       direction: rtl;
-       unicode-bidi: embed;
-       float: right;
-       width: 640px;
-}
-* {
-       font-family: Arial, Tahoma, sans-serif;
-}
-/* Text elements */
-ul, ol {
-       margin: 0 -18px 18px 0;
-}
-dd {
-       margin-right: 0;
-}
-blockquote {
-       font-style: normal;
-}
-table {
-       text-align: right;
-       margin: 0 0 24px -1px;
-}
diff --git a/wp-content/themes/twentyten/editor-style.css b/wp-content/themes/twentyten/editor-style.css
deleted file mode 100644 (file)
index c397b11..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
-Theme Name: Twenty Ten
-Description: Used to style the TinyMCE editor.
-*/
-html .mceContentBody {
-       max-width: 640px;
-}
-* {
-       color: #444;
-       font-family: Georgia, "Bitstream Charter", serif;
-       line-height: 1.5;
-}
-p,
-dl,
-td,
-th,
-ul,
-ol,
-blockquote {
-       font-size: 16px;
-}
-tr th,
-thead th,
-label,
-tr th,
-thead th {
-       font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
-}
-pre {
-       font-family: "Courier 10 Pitch", Courier, monospace;
-}
-code, code var {
-       font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
-}
-body, input, textarea {
-       font-size: 12px;
-       line-height: 18px;
-}
-hr {
-       background-color: #e7e7e7;
-       border: 0;
-       clear: both;
-       height: 1px;
-       margin-bottom: 18px;
-}
-/* Text elements */
-p {
-       margin-bottom: 18px;
-}
-
-ul,
-ol {
-       margin: 0 0 18px 1.5em;
-       padding: 0;
-}
-
-ul {
-       list-style: square;
-}
-ol {
-       list-style: decimal;
-}
-ol ol {
-       list-style: upper-alpha;
-}
-ol ol ol {
-       list-style: lower-roman;
-}
-ol ol ol ol {
-       list-style: lower-alpha;
-}
-ul ul,
-ol ol,
-ul ol,
-ol ul {
-       margin-bottom: 0;
-}
-dl {
-       margin: 0 0 24px 0;
-}
-dt {
-       font-weight: bold;
-}
-dd {
-       margin-bottom: 18px;
-}
-strong {
-       color: #000;
-       font-weight: bold;
-}
-cite,
-em,
-i {
-       border: none;
-       font-style: italic;
-}
-big {
-       font-size: 131.25%;
-}
-ins {
-       background: #ffc;
-       border: none;
-       color: #333;
-}
-del {
-       text-decoration: line-through;
-       color: #555;
-}
-blockquote {
-       font-style: italic;
-       padding: 0 3em;
-}
-blockquote cite,
-blockquote em,
-blockquote i {
-       font-style: normal;
-}
-pre {
-       background: #f7f7f7;
-       color: #222;
-       line-height: 18px;
-       margin-bottom: 18px;
-       padding: 1.5em;
-}
-abbr,
-acronym {
-       border-bottom: 1px dotted #666;
-       cursor: help;
-}
-ins {
-       text-decoration: none;
-}
-sup,
-sub {
-       font-size: 10px;
-       height: 0;
-       line-height: 1;
-       position: relative;
-       vertical-align: baseline;
-}
-sup {
-       bottom: 1ex;
-}
-sub {
-       top: .5ex;
-}
-a:link {
-       color: #06c;
-}
-a:visited {
-       color: #743399;
-}
-a:active,
-a:hover {
-       color: #ff4b33;
-}
-p,
-ul,
-ol,
-dd,
-pre,
-hr {
-       margin-bottom: 24px;
-}
-ul ul,
-ol ol,
-ul ol,
-ol ul {
-       margin-bottom: 0;
-}
-pre,
-kbd,
-tt,
-var {
-       font-size: 15px;
-       line-height: 21px;
-}
-code {
-       font-size: 13px;
-}
-strong,
-b,
-dt,
-th {
-       color: #000;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-       color: #000;
-       font-weight: normal;
-       line-height: 1.5em;
-       margin: 0 0 20px 0;
-}
-h1 {
-       font-size: 2.4em;
-}
-h2 {
-       font-size: 1.8em;
-}
-h3 {
-       font-size: 1.4em;
-}
-h4 {
-       font-size: 1.2em;
-}
-h5 {
-       font-size: 1em;
-}
-h6 {
-       font-size: 0.9em;
-}
-table {
-       border: 1px solid #e7e7e7 !important;
-       border-collapse: collapse;
-       border-spacing: 0;
-       margin: 0 -1px 24px 0;
-       text-align: left;
-       width: 100%;
-}
-tr th,
-thead th {
-       border: none !important;
-       color: #888;
-       font-size: 12px;
-       font-weight: bold;
-       line-height: 18px;
-       padding: 9px 24px;
-}
-tr td {
-       border: none !important;
-       border-top: 1px solid #e7e7e7 !important;
-       padding: 6px 24px;
-}
-img {
-       margin: 0;
-}
-img.size-auto,
-img.size-large,
-img.size-full,
-img.size-medium {
-       max-width: 100%;
-       height: auto;
-}
-.alignleft,
-img.alignleft {
-       display: inline;
-       float: left;
-       margin-right: 24px;
-       margin-top: 4px;
-}
-.alignright,
-img.alignright {
-       display: inline;
-       float: right;
-       margin-left: 24px;
-       margin-top: 4px;
-}
-.aligncenter,
-img.aligncenter {
-       clear: both;
-       display: block;
-       margin-left: auto;
-       margin-right: auto;
-}
-img.alignleft,
-img.alignright,
-img.aligncenter {
-       margin-bottom: 12px;
-}
-.wp-caption {
-       background: #f1f1f1;
-       border: none;
-       -khtml-border-radius: 0;
-       -moz-border-radius: 0;
-       -webkit-border-radius: 0;
-       border-radius: 0;
-       color: #888;
-       font-size: 12px;
-       line-height: 18px;
-       margin-bottom: 20px;
-       max-width: 632px !important; /* prevent too-wide images from breaking layout */
-       padding: 4px;
-       text-align: center;
-}
-.wp-caption img {
-       margin: 5px;
-}
-.wp-caption p.wp-caption-text {
-       margin: 0 0 4px;
-}
-.wp-smiley {
-       margin: 0;
-}
diff --git a/wp-content/themes/twentyten/footer.php b/wp-content/themes/twentyten/footer.php
deleted file mode 100644 (file)
index 337cc91..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * The template for displaying the footer.
- *
- * Contains the closing of the id=main div and all content
- * after. Calls sidebar-footer.php for bottom widgets.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?>
-       </div><!-- #main -->
-
-       <div id="footer" role="contentinfo">
-               <div id="colophon">
-
-<?php
-       /* A sidebar in the footer? Yep. You can can customize
-        * your footer with four columns of widgets.
-        */
-       get_sidebar( 'footer' );
-?>
-
-                       <div id="site-info">
-                               <a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
-                                       <?php bloginfo( 'name' ); ?>
-                               </a>
-                       </div><!-- #site-info -->
-
-                       <div id="site-generator">
-                               <?php do_action( 'twentyten_credits' ); ?>
-                               <a href="<?php echo esc_url( __( 'http://wordpress.org/', 'twentyten' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentyten' ); ?>" rel="generator"><?php printf( __( 'Proudly powered by %s.', 'twentyten' ), 'WordPress' ); ?></a>
-                       </div><!-- #site-generator -->
-
-               </div><!-- #colophon -->
-       </div><!-- #footer -->
-
-</div><!-- #wrapper -->
-
-<?php
-       /* Always have wp_footer() just before the closing </body>
-        * tag of your theme, or you will break many plugins, which
-        * generally use this hook to reference JavaScript files.
-        */
-
-       wp_footer();
-?>
-</body>
-</html>
diff --git a/wp-content/themes/twentyten/functions.php b/wp-content/themes/twentyten/functions.php
deleted file mode 100644 (file)
index 696ff15..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-<?php
-/**
- * TwentyTen functions and definitions
- *
- * Sets up the theme and provides some helper functions. Some helper functions
- * are used in the theme as custom template tags. Others are attached to action and
- * filter hooks in WordPress to change core functionality.
- *
- * The first function, twentyten_setup(), sets up the theme by registering support
- * for various features in WordPress, such as post thumbnails, navigation menus, and the like.
- *
- * When using a child theme (see http://codex.wordpress.org/Theme_Development and
- * http://codex.wordpress.org/Child_Themes), you can override certain functions
- * (those wrapped in a function_exists() call) by defining them first in your child theme's
- * functions.php file. The child theme's functions.php file is included before the parent
- * theme's file, so the child theme functions would be used.
- *
- * Functions that are not pluggable (not wrapped in function_exists()) are instead attached
- * to a filter or action hook. The hook can be removed by using remove_action() or
- * remove_filter() and you can attach your own function to the hook.
- *
- * We can remove the parent theme's hook only after it is attached, which means we need to
- * wait until setting up the child theme:
- *
- * <code>
- * add_action( 'after_setup_theme', 'my_child_theme_setup' );
- * function my_child_theme_setup() {
- *     // We are providing our own filter for excerpt_length (or using the unfiltered value)
- *     remove_filter( 'excerpt_length', 'twentyten_excerpt_length' );
- *     ...
- * }
- * </code>
- *
- * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-/**
- * Set the content width based on the theme's design and stylesheet.
- *
- * Used to set the width of images and content. Should be equal to the width the theme
- * is designed for, generally via the style.css stylesheet.
- */
-if ( ! isset( $content_width ) )
-       $content_width = 640;
-
-/** Tell WordPress to run twentyten_setup() when the 'after_setup_theme' hook is run. */
-add_action( 'after_setup_theme', 'twentyten_setup' );
-
-if ( ! function_exists( 'twentyten_setup' ) ):
-/**
- * Sets up theme defaults and registers support for various WordPress features.
- *
- * Note that this function is hooked into the after_setup_theme hook, which runs
- * before the init hook. The init hook is too late for some features, such as indicating
- * support post thumbnails.
- *
- * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's
- * functions.php file.
- *
- * @uses add_theme_support() To add support for post thumbnails, custom headers and backgrounds, and automatic feed links.
- * @uses register_nav_menus() To add support for navigation menus.
- * @uses add_editor_style() To style the visual editor.
- * @uses load_theme_textdomain() For translation/localization support.
- * @uses register_default_headers() To register the default custom header images provided with the theme.
- * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_setup() {
-
-       // This theme styles the visual editor with editor-style.css to match the theme style.
-       add_editor_style();
-
-       // Post Format support. You can also use the legacy "gallery" or "asides" (note the plural) categories.
-       add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
-
-       // This theme uses post thumbnails
-       add_theme_support( 'post-thumbnails' );
-
-       // Add default posts and comments RSS feed links to head
-       add_theme_support( 'automatic-feed-links' );
-
-       // Make theme available for translation
-       // Translations can be filed in the /languages/ directory
-       load_theme_textdomain( 'twentyten', get_template_directory() . '/languages' );
-
-       // This theme uses wp_nav_menu() in one location.
-       register_nav_menus( array(
-               'primary' => __( 'Primary Navigation', 'twentyten' ),
-       ) );
-
-       // This theme allows users to set a custom background.
-       add_theme_support( 'custom-background', array(
-               // Let WordPress know what our default background color is.
-               'default-color' => 'f1f1f1',
-       ) );
-
-       // The custom header business starts here.
-
-       $custom_header_support = array(
-               // The default image to use.
-               // The %s is a placeholder for the theme template directory URI.
-               'default-image' => '%s/images/headers/path.jpg',
-               // The height and width of our custom header.
-               'width' => apply_filters( 'twentyten_header_image_width', 940 ),
-               'height' => apply_filters( 'twentyten_header_image_height', 198 ),
-               // Support flexible heights.
-               'flex-height' => true,
-               // Don't support text inside the header image.
-               'header-text' => false,
-               // Callback for styling the header preview in the admin.
-               'admin-head-callback' => 'twentyten_admin_header_style',
-       );
-       
-       add_theme_support( 'custom-header', $custom_header_support );
-       
-       if ( ! function_exists( 'get_custom_header' ) ) {
-               // This is all for compatibility with versions of WordPress prior to 3.4.
-               define( 'HEADER_TEXTCOLOR', '' );
-               define( 'NO_HEADER_TEXT', true );
-               define( 'HEADER_IMAGE', $custom_header_support['default-image'] );
-               define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] );
-               define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] );
-               add_custom_image_header( '', $custom_header_support['admin-head-callback'] );
-               add_custom_background();
-       }
-
-       // We'll be using post thumbnails for custom header images on posts and pages.
-       // We want them to be 940 pixels wide by 198 pixels tall.
-       // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
-       set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true );
-
-       // ... and thus ends the custom header business.
-
-       // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
-       register_default_headers( array(
-               'berries' => array(
-                       'url' => '%s/images/headers/berries.jpg',
-                       'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Berries', 'twentyten' )
-               ),
-               'cherryblossom' => array(
-                       'url' => '%s/images/headers/cherryblossoms.jpg',
-                       'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Cherry Blossoms', 'twentyten' )
-               ),
-               'concave' => array(
-                       'url' => '%s/images/headers/concave.jpg',
-                       'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Concave', 'twentyten' )
-               ),
-               'fern' => array(
-                       'url' => '%s/images/headers/fern.jpg',
-                       'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Fern', 'twentyten' )
-               ),
-               'forestfloor' => array(
-                       'url' => '%s/images/headers/forestfloor.jpg',
-                       'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Forest Floor', 'twentyten' )
-               ),
-               'inkwell' => array(
-                       'url' => '%s/images/headers/inkwell.jpg',
-                       'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Inkwell', 'twentyten' )
-               ),
-               'path' => array(
-                       'url' => '%s/images/headers/path.jpg',
-                       'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Path', 'twentyten' )
-               ),
-               'sunset' => array(
-                       'url' => '%s/images/headers/sunset.jpg',
-                       'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg',
-                       /* translators: header image description */
-                       'description' => __( 'Sunset', 'twentyten' )
-               )
-       ) );
-}
-endif;
-
-if ( ! function_exists( 'twentyten_admin_header_style' ) ) :
-/**
- * Styles the header image displayed on the Appearance > Header admin panel.
- *
- * Referenced via add_custom_image_header() in twentyten_setup().
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_admin_header_style() {
-?>
-<style type="text/css">
-/* Shows the same border as on front end */
-#headimg {
-       border-bottom: 1px solid #000;
-       border-top: 4px solid #000;
-}
-/* If header-text was supported, you would style the text with these selectors:
-       #headimg #name { }
-       #headimg #desc { }
-*/
-</style>
-<?php
-}
-endif;
-
-/**
- * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
- *
- * To override this in a child theme, remove the filter and optionally add
- * your own function tied to the wp_page_menu_args filter hook.
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_page_menu_args( $args ) {
-       $args['show_home'] = true;
-       return $args;
-}
-add_filter( 'wp_page_menu_args', 'twentyten_page_menu_args' );
-
-/**
- * Sets the post excerpt length to 40 characters.
- *
- * To override this length in a child theme, remove the filter and add your own
- * function tied to the excerpt_length filter hook.
- *
- * @since Twenty Ten 1.0
- * @return int
- */
-function twentyten_excerpt_length( $length ) {
-       return 40;
-}
-add_filter( 'excerpt_length', 'twentyten_excerpt_length' );
-
-/**
- * Returns a "Continue Reading" link for excerpts
- *
- * @since Twenty Ten 1.0
- * @return string "Continue Reading" link
- */
-function twentyten_continue_reading_link() {
-       return ' <a href="'. get_permalink() . '">' . __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) . '</a>';
-}
-
-/**
- * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and twentyten_continue_reading_link().
- *
- * To override this in a child theme, remove the filter and add your own
- * function tied to the excerpt_more filter hook.
- *
- * @since Twenty Ten 1.0
- * @return string An ellipsis
- */
-function twentyten_auto_excerpt_more( $more ) {
-       return ' &hellip;' . twentyten_continue_reading_link();
-}
-add_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' );
-
-/**
- * Adds a pretty "Continue Reading" link to custom post excerpts.
- *
- * To override this link in a child theme, remove the filter and add your own
- * function tied to the get_the_excerpt filter hook.
- *
- * @since Twenty Ten 1.0
- * @return string Excerpt with a pretty "Continue Reading" link
- */
-function twentyten_custom_excerpt_more( $output ) {
-       if ( has_excerpt() && ! is_attachment() ) {
-               $output .= twentyten_continue_reading_link();
-       }
-       return $output;
-}
-add_filter( 'get_the_excerpt', 'twentyten_custom_excerpt_more' );
-
-/**
- * Remove inline styles printed when the gallery shortcode is used.
- *
- * Galleries are styled by the theme in Twenty Ten's style.css. This is just
- * a simple filter call that tells WordPress to not use the default styles.
- *
- * @since Twenty Ten 1.2
- */
-add_filter( 'use_default_gallery_style', '__return_false' );
-
-/**
- * Deprecated way to remove inline styles printed when the gallery shortcode is used.
- *
- * This function is no longer needed or used. Use the use_default_gallery_style
- * filter instead, as seen above.
- *
- * @since Twenty Ten 1.0
- * @deprecated Deprecated in Twenty Ten 1.2 for WordPress 3.1
- *
- * @return string The gallery style filter, with the styles themselves removed.
- */
-function twentyten_remove_gallery_css( $css ) {
-       return preg_replace( "#<style type='text/css'>(.*?)</style>#s", '', $css );
-}
-// Backwards compatibility with WordPress 3.0.
-if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) )
-       add_filter( 'gallery_style', 'twentyten_remove_gallery_css' );
-
-if ( ! function_exists( 'twentyten_comment' ) ) :
-/**
- * Template for comments and pingbacks.
- *
- * To override this walker in a child theme without modifying the comments template
- * simply create your own twentyten_comment(), and that function will be used instead.
- *
- * Used as a callback by wp_list_comments() for displaying the comments.
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_comment( $comment, $args, $depth ) {
-       $GLOBALS['comment'] = $comment;
-       switch ( $comment->comment_type ) :
-               case '' :
-       ?>
-       <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
-               <div id="comment-<?php comment_ID(); ?>">
-               <div class="comment-author vcard">
-                       <?php echo get_avatar( $comment, 40 ); ?>
-                       <?php printf( __( '%s <span class="says">says:</span>', 'twentyten' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>
-               </div><!-- .comment-author .vcard -->
-               <?php if ( $comment->comment_approved == '0' ) : ?>
-                       <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentyten' ); ?></em>
-                       <br />
-               <?php endif; ?>
-
-               <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
-                       <?php
-                               /* translators: 1: date, 2: time */
-                               printf( __( '%1$s at %2$s', 'twentyten' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' );
-                       ?>
-               </div><!-- .comment-meta .commentmetadata -->
-
-               <div class="comment-body"><?php comment_text(); ?></div>
-
-               <div class="reply">
-                       <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
-               </div><!-- .reply -->
-       </div><!-- #comment-##  -->
-
-       <?php
-                       break;
-               case 'pingback'  :
-               case 'trackback' :
-       ?>
-       <li class="post pingback">
-               <p><?php _e( 'Pingback:', 'twentyten' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' ); ?></p>
-       <?php
-                       break;
-       endswitch;
-}
-endif;
-
-/**
- * Register widgetized areas, including two sidebars and four widget-ready columns in the footer.
- *
- * To override twentyten_widgets_init() in a child theme, remove the action hook and add your own
- * function tied to the init hook.
- *
- * @since Twenty Ten 1.0
- * @uses register_sidebar
- */
-function twentyten_widgets_init() {
-       // Area 1, located at the top of the sidebar.
-       register_sidebar( array(
-               'name' => __( 'Primary Widget Area', 'twentyten' ),
-               'id' => 'primary-widget-area',
-               'description' => __( 'The primary widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-
-       // Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
-       register_sidebar( array(
-               'name' => __( 'Secondary Widget Area', 'twentyten' ),
-               'id' => 'secondary-widget-area',
-               'description' => __( 'The secondary widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-
-       // Area 3, located in the footer. Empty by default.
-       register_sidebar( array(
-               'name' => __( 'First Footer Widget Area', 'twentyten' ),
-               'id' => 'first-footer-widget-area',
-               'description' => __( 'The first footer widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-
-       // Area 4, located in the footer. Empty by default.
-       register_sidebar( array(
-               'name' => __( 'Second Footer Widget Area', 'twentyten' ),
-               'id' => 'second-footer-widget-area',
-               'description' => __( 'The second footer widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-
-       // Area 5, located in the footer. Empty by default.
-       register_sidebar( array(
-               'name' => __( 'Third Footer Widget Area', 'twentyten' ),
-               'id' => 'third-footer-widget-area',
-               'description' => __( 'The third footer widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-
-       // Area 6, located in the footer. Empty by default.
-       register_sidebar( array(
-               'name' => __( 'Fourth Footer Widget Area', 'twentyten' ),
-               'id' => 'fourth-footer-widget-area',
-               'description' => __( 'The fourth footer widget area', 'twentyten' ),
-               'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
-               'after_widget' => '</li>',
-               'before_title' => '<h3 class="widget-title">',
-               'after_title' => '</h3>',
-       ) );
-}
-/** Register sidebars by running twentyten_widgets_init() on the widgets_init hook. */
-add_action( 'widgets_init', 'twentyten_widgets_init' );
-
-/**
- * Removes the default styles that are packaged with the Recent Comments widget.
- *
- * To override this in a child theme, remove the filter and optionally add your own
- * function tied to the widgets_init action hook.
- *
- * This function uses a filter (show_recent_comments_widget_style) new in WordPress 3.1
- * to remove the default style. Using Twenty Ten 1.2 in WordPress 3.0 will show the styles,
- * but they won't have any effect on the widget in default Twenty Ten styling.
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_remove_recent_comments_style() {
-       add_filter( 'show_recent_comments_widget_style', '__return_false' );
-}
-add_action( 'widgets_init', 'twentyten_remove_recent_comments_style' );
-
-if ( ! function_exists( 'twentyten_posted_on' ) ) :
-/**
- * Prints HTML with meta information for the current post-date/time and author.
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_posted_on() {
-       printf( __( '<span class="%1$s">Posted on</span> %2$s <span class="meta-sep">by</span> %3$s', 'twentyten' ),
-               'meta-prep meta-prep-author',
-               sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
-                       get_permalink(),
-                       esc_attr( get_the_time() ),
-                       get_the_date()
-               ),
-               sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
-                       get_author_posts_url( get_the_author_meta( 'ID' ) ),
-                       esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ),
-                       get_the_author()
-               )
-       );
-}
-endif;
-
-if ( ! function_exists( 'twentyten_posted_in' ) ) :
-/**
- * Prints HTML with meta information for the current post (category, tags and permalink).
- *
- * @since Twenty Ten 1.0
- */
-function twentyten_posted_in() {
-       // Retrieves tag list of current post, separated by commas.
-       $tag_list = get_the_tag_list( '', ', ' );
-       if ( $tag_list ) {
-               $posted_in = __( 'This entry was posted in %1$s and tagged %2$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'twentyten' );
-       } elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) {
-               $posted_in = __( 'This entry was posted in %1$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'twentyten' );
-       } else {
-               $posted_in = __( 'Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'twentyten' );
-       }
-       // Prints the string, replacing the placeholders.
-       printf(
-               $posted_in,
-               get_the_category_list( ', ' ),
-               $tag_list,
-               get_permalink(),
-               the_title_attribute( 'echo=0' )
-       );
-}
-endif;
diff --git a/wp-content/themes/twentyten/header.php b/wp-content/themes/twentyten/header.php
deleted file mode 100644 (file)
index 50cb375..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * The Header for our theme.
- *
- * Displays all of the <head> section and everything up till <div id="main">
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?><!DOCTYPE html>
-<html <?php language_attributes(); ?>>
-<head>
-<meta charset="<?php bloginfo( 'charset' ); ?>" />
-<title><?php
-       /*
-        * Print the <title> tag based on what is being viewed.
-        */
-       global $page, $paged;
-
-       wp_title( '|', true, 'right' );
-
-       // Add the blog name.
-       bloginfo( 'name' );
-
-       // Add the blog description for the home/front page.
-       $site_description = get_bloginfo( 'description', 'display' );
-       if ( $site_description && ( is_home() || is_front_page() ) )
-               echo " | $site_description";
-
-       // Add a page number if necessary:
-       if ( $paged >= 2 || $page >= 2 )
-               echo ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) );
-
-       ?></title>
-<link rel="profile" href="http://gmpg.org/xfn/11" />
-<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
-<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
-<?php
-       /* We add some JavaScript to pages with the comment form
-        * to support sites with threaded comments (when in use).
-        */
-       if ( is_singular() && get_option( 'thread_comments' ) )
-               wp_enqueue_script( 'comment-reply' );
-
-       /* Always have wp_head() just before the closing </head>
-        * tag of your theme, or you will break many plugins, which
-        * generally use this hook to add elements to <head> such
-        * as styles, scripts, and meta tags.
-        */
-       wp_head();
-?>
-</head>
-
-<body <?php body_class(); ?>>
-<div id="wrapper" class="hfeed">
-       <div id="header">
-               <div id="masthead">
-                       <div id="branding" role="banner">
-                               <?php $heading_tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; ?>
-                               <<?php echo $heading_tag; ?> id="site-title">
-                                       <span>
-                                               <a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
-                                       </span>
-                               </<?php echo $heading_tag; ?>>
-                               <div id="site-description"><?php bloginfo( 'description' ); ?></div>
-
-                               <?php
-                                       // Compatibility with versions of WordPress prior to 3.4.
-                                       if ( function_exists( 'get_custom_header' ) ) {
-                                               // We need to figure out what the minimum width should be for our featured image.
-                                               // This result would be the suggested width if the theme were to implement flexible widths.
-                                               $header_image_width = get_theme_support( 'custom-header', 'width' );
-                                       } else {
-                                               $header_image_width = HEADER_IMAGE_WIDTH;
-                                       }
-
-                                       // Check if this is a post or page, if it has a thumbnail, and if it's a big one
-                                       if ( is_singular() && current_theme_supports( 'post-thumbnails' ) &&
-                                                       has_post_thumbnail( $post->ID ) &&
-                                                       ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
-                                                       $image[1] >= $header_image_width ) :
-                                               // Houston, we have a new header image!
-                                               echo get_the_post_thumbnail( $post->ID );
-                                       elseif ( get_header_image() ) :
-                                               // Compatibility with versions of WordPress prior to 3.4.
-                                               if ( function_exists( 'get_custom_header' ) ) {
-                                                       $header_image_width  = get_custom_header()->width;
-                                                       $header_image_height = get_custom_header()->height;
-                                               } else {
-                                                       $header_image_width  = HEADER_IMAGE_WIDTH;
-                                                       $header_image_height = HEADER_IMAGE_HEIGHT;
-                                               }
-                                       ?>
-                                               <img src="<?php header_image(); ?>" width="<?php echo $header_image_width; ?>" height="<?php echo $header_image_height; ?>" alt="" />
-                                       <?php endif; ?>
-                       </div><!-- #branding -->
-
-                       <div id="access" role="navigation">
-                         <?php /* Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff */ ?>
-                               <div class="skip-link screen-reader-text"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentyten' ); ?>"><?php _e( 'Skip to content', 'twentyten' ); ?></a></div>
-                               <?php /* Our navigation menu. If one isn't filled out, wp_nav_menu falls back to wp_page_menu. The menu assiged to the primary position is the one used. If none is assigned, the menu with the lowest ID is used. */ ?>
-                               <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
-                       </div><!-- #access -->
-               </div><!-- #masthead -->
-       </div><!-- #header -->
-
-       <div id="main">
diff --git a/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg
deleted file mode 100644 (file)
index 6e684f4..0000000
Binary files a/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/berries.jpg b/wp-content/themes/twentyten/images/headers/berries.jpg
deleted file mode 100644 (file)
index 3031a05..0000000
Binary files a/wp-content/themes/twentyten/images/headers/berries.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg
deleted file mode 100644 (file)
index 710049a..0000000
Binary files a/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/cherryblossoms.jpg b/wp-content/themes/twentyten/images/headers/cherryblossoms.jpg
deleted file mode 100644 (file)
index 56e9df0..0000000
Binary files a/wp-content/themes/twentyten/images/headers/cherryblossoms.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg
deleted file mode 100644 (file)
index b271867..0000000
Binary files a/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/concave.jpg b/wp-content/themes/twentyten/images/headers/concave.jpg
deleted file mode 100644 (file)
index 9970de2..0000000
Binary files a/wp-content/themes/twentyten/images/headers/concave.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg
deleted file mode 100644 (file)
index c6113ab..0000000
Binary files a/wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/fern.jpg b/wp-content/themes/twentyten/images/headers/fern.jpg
deleted file mode 100644 (file)
index fc0b394..0000000
Binary files a/wp-content/themes/twentyten/images/headers/fern.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg
deleted file mode 100644 (file)
index b888fc3..0000000
Binary files a/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/forestfloor.jpg b/wp-content/themes/twentyten/images/headers/forestfloor.jpg
deleted file mode 100644 (file)
index 4533948..0000000
Binary files a/wp-content/themes/twentyten/images/headers/forestfloor.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg
deleted file mode 100644 (file)
index 61e775e..0000000
Binary files a/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/inkwell.jpg b/wp-content/themes/twentyten/images/headers/inkwell.jpg
deleted file mode 100644 (file)
index 82b0b7d..0000000
Binary files a/wp-content/themes/twentyten/images/headers/inkwell.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/path-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/path-thumbnail.jpg
deleted file mode 100644 (file)
index 0585ec4..0000000
Binary files a/wp-content/themes/twentyten/images/headers/path-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/path.jpg b/wp-content/themes/twentyten/images/headers/path.jpg
deleted file mode 100644 (file)
index d869497..0000000
Binary files a/wp-content/themes/twentyten/images/headers/path.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg b/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg
deleted file mode 100644 (file)
index 416c11a..0000000
Binary files a/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/headers/sunset.jpg b/wp-content/themes/twentyten/images/headers/sunset.jpg
deleted file mode 100644 (file)
index 66eddaa..0000000
Binary files a/wp-content/themes/twentyten/images/headers/sunset.jpg and /dev/null differ
diff --git a/wp-content/themes/twentyten/images/wordpress.png b/wp-content/themes/twentyten/images/wordpress.png
deleted file mode 100644 (file)
index 224f7c8..0000000
Binary files a/wp-content/themes/twentyten/images/wordpress.png and /dev/null differ
diff --git a/wp-content/themes/twentyten/index.php b/wp-content/themes/twentyten/index.php
deleted file mode 100644 (file)
index 7bc3fd4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * The main template file.
- *
- * This is the most generic template file in a WordPress theme
- * and one of the two required files for a theme (the other being style.css).
- * It is used to display a page when nothing more specific matches a query.
- * E.g., it puts together the home page when no home.php file exists.
- * Learn more: http://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-                       <?php
-                       /* Run the loop to output the posts.
-                        * If you want to overload this in a child theme then include a file
-                        * called loop-index.php and that will be used instead.
-                        */
-                        get_template_part( 'loop', 'index' );
-                       ?>
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/languages/twentyten.pot b/wp-content/themes/twentyten/languages/twentyten.pot
deleted file mode 100644 (file)
index e25d155..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-# Copyright (C) 2012 the WordPress team
-# This file is distributed under the GNU General Public License v2 or later.
-msgid ""
-msgstr ""
-"Project-Id-Version: Twenty Ten 1.4\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyten\n"
-"POT-Creation-Date: 2012-06-10 15:18:09+00:00\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-
-#: 404.php:16 loop.php:33
-msgid "Not Found"
-msgstr ""
-
-#: 404.php:18
-msgid ""
-"Apologies, but the page you requested could not be found. Perhaps searching "
-"will help."
-msgstr ""
-
-#: archive.php:33
-msgid "Daily Archives: <span>%s</span>"
-msgstr ""
-
-#: archive.php:35
-msgid "Monthly Archives: <span>%s</span>"
-msgstr ""
-
-#: archive.php:35
-msgctxt "monthly archives date format"
-msgid "F Y"
-msgstr ""
-
-#: archive.php:37
-msgid "Yearly Archives: <span>%s</span>"
-msgstr ""
-
-#: archive.php:37
-msgctxt "yearly archives date format"
-msgid "Y"
-msgstr ""
-
-#: archive.php:39
-msgid "Blog Archives"
-msgstr ""
-
-#: author.php:27
-msgid "Author Archives: %s"
-msgstr ""
-
-#: author.php:37 loop-single.php:43
-msgid "About %s"
-msgstr ""
-
-#: category.php:16
-msgid "Category Archives: %s"
-msgstr ""
-
-#: comments.php:18
-msgid ""
-"This post is password protected. Enter the password to view any comments."
-msgstr ""
-
-#: comments.php:35
-msgid "One Response to %2$s"
-msgid_plural "%1$s Responses to %2$s"
-msgstr[0] ""
-msgstr[1] ""
-
-#: comments.php:41 comments.php:60
-msgid "<span class=\"meta-nav\">&larr;</span> Older Comments"
-msgstr ""
-
-#: comments.php:42 comments.php:61
-msgid "Newer Comments <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: comments.php:72
-msgid "Comments are closed."
-msgstr ""
-
-#. #-#-#-#-#  twentyten.pot (Twenty Ten 1.4)  #-#-#-#-#
-#. Theme URI of the plugin/theme
-#: footer.php:33
-msgid "http://wordpress.org/"
-msgstr ""
-
-#: footer.php:33
-msgid "Semantic Personal Publishing Platform"
-msgstr ""
-
-#: footer.php:33
-msgid "Proudly powered by %s."
-msgstr ""
-
-#: functions.php:93
-msgid "Primary Navigation"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:145
-msgid "Berries"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:151
-msgid "Cherry Blossoms"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:157
-msgid "Concave"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:163
-msgid "Fern"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:169
-msgid "Forest Floor"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:175
-msgid "Inkwell"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:181
-msgid "Path"
-msgstr ""
-
-#. translators: header image description
-#: functions.php:187
-msgid "Sunset"
-msgstr ""
-
-#: functions.php:253 loop-attachment.php:104 loop.php:115 loop.php:143
-msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: functions.php:335
-msgid "%s <span class=\"says\">says:</span>"
-msgstr ""
-
-#: functions.php:338
-msgid "Your comment is awaiting moderation."
-msgstr ""
-
-#. translators: 1: date, 2: time
-#: functions.php:345
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: functions.php:345 functions.php:362
-msgid "(Edit)"
-msgstr ""
-
-#: functions.php:362
-msgid "Pingback:"
-msgstr ""
-
-#: functions.php:381
-msgid "Primary Widget Area"
-msgstr ""
-
-#: functions.php:383
-msgid "The primary widget area"
-msgstr ""
-
-#: functions.php:392
-msgid "Secondary Widget Area"
-msgstr ""
-
-#: functions.php:394
-msgid "The secondary widget area"
-msgstr ""
-
-#: functions.php:403
-msgid "First Footer Widget Area"
-msgstr ""
-
-#: functions.php:405
-msgid "The first footer widget area"
-msgstr ""
-
-#: functions.php:414
-msgid "Second Footer Widget Area"
-msgstr ""
-
-#: functions.php:416
-msgid "The second footer widget area"
-msgstr ""
-
-#: functions.php:425
-msgid "Third Footer Widget Area"
-msgstr ""
-
-#: functions.php:427
-msgid "The third footer widget area"
-msgstr ""
-
-#: functions.php:436
-msgid "Fourth Footer Widget Area"
-msgstr ""
-
-#: functions.php:438
-msgid "The fourth footer widget area"
-msgstr ""
-
-#: functions.php:472
-msgid ""
-"<span class=\"%1$s\">Posted on</span> %2$s <span class=\"meta-sep\">by</"
-"span> %3$s"
-msgstr ""
-
-#: functions.php:481 loop-attachment.php:36
-msgid "View all posts by %s"
-msgstr ""
-
-#: functions.php:498
-msgid ""
-"This entry was posted in %1$s and tagged %2$s. Bookmark the <a href=\"%3$s\" "
-"title=\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
-msgstr ""
-
-#: functions.php:500
-msgid ""
-"This entry was posted in %1$s. Bookmark the <a href=\"%3$s\" title="
-"\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
-msgstr ""
-
-#: functions.php:502
-msgid ""
-"Bookmark the <a href=\"%3$s\" title=\"Permalink to %4$s\" rel=\"bookmark"
-"\">permalink</a>."
-msgstr ""
-
-#: header.php:33
-msgid "Page %s"
-msgstr ""
-
-#: header.php:101
-msgid "Skip to content"
-msgstr ""
-
-#: loop-attachment.php:21
-msgid "Return to %s"
-msgstr ""
-
-#. translators: %s - title of parent post
-#: loop-attachment.php:23
-msgid "<span class=\"meta-nav\">&larr;</span> %s"
-msgstr ""
-
-#: loop-attachment.php:32
-msgid "<span class=\"%1$s\">By</span> %2$s"
-msgstr ""
-
-#: loop-attachment.php:43
-msgid "<span class=\"%1$s\">Published</span> %2$s"
-msgstr ""
-
-#: loop-attachment.php:53
-msgid "Full size is %s pixels"
-msgstr ""
-
-#: loop-attachment.php:56
-msgid "Link to full-size image"
-msgstr ""
-
-#: loop-attachment.php:63 loop-attachment.php:111 loop-page.php:30
-#: loop-single.php:56 loop.php:100 loop.php:123 loop.php:165
-msgid "Edit"
-msgstr ""
-
-#: loop-attachment.php:105 loop-page.php:29 loop-single.php:34 loop.php:144
-msgid "Pages:"
-msgstr ""
-
-#: loop-single.php:21 loop-single.php:61
-msgctxt "Previous post link"
-msgid "&larr;"
-msgstr ""
-
-#: loop-single.php:22 loop-single.php:62
-msgctxt "Next post link"
-msgid "&rarr;"
-msgstr ""
-
-#: loop-single.php:47
-msgid "View all posts by %s <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: loop.php:25 loop.php:178
-msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
-msgstr ""
-
-#: loop.php:26 loop.php:179
-msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: loop.php:35
-msgid ""
-"Apologies, but no results were found for the requested archive. Perhaps "
-"searching will help find a related post."
-msgstr ""
-
-#: loop.php:60 loop.php:95 loop.php:96
-msgctxt "gallery category slug"
-msgid "gallery"
-msgstr ""
-
-#: loop.php:62 loop.php:83 loop.php:131
-msgid "Permalink to %s"
-msgstr ""
-
-#: loop.php:82
-msgid "This gallery contains <a %1$s>%2$s photo</a>."
-msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
-msgstr[0] ""
-msgstr[1] ""
-
-#: loop.php:93
-msgid "View Galleries"
-msgstr ""
-
-#: loop.php:93 loop.php:96
-msgid "More Galleries"
-msgstr ""
-
-#: loop.php:96
-msgid "View posts in the Gallery category"
-msgstr ""
-
-#: loop.php:99 loop.php:122 loop.php:164
-msgid "Leave a comment"
-msgstr ""
-
-#: loop.php:99 loop.php:122 loop.php:164
-msgid "1 Comment"
-msgstr ""
-
-#: loop.php:99 loop.php:122 loop.php:164
-msgid "% Comments"
-msgstr ""
-
-#: loop.php:106
-msgctxt "asides category slug"
-msgid "asides"
-msgstr ""
-
-#: loop.php:151
-msgid "<span class=\"%1$s\">Posted in</span> %2$s"
-msgstr ""
-
-#: loop.php:160
-msgid "<span class=\"%1$s\">Tagged</span> %2$s"
-msgstr ""
-
-#: search.php:16
-msgid "Search Results for: %s"
-msgstr ""
-
-#: search.php:26
-msgid "Nothing Found"
-msgstr ""
-
-#: search.php:28
-msgid ""
-"Sorry, but nothing matched your search criteria. Please try again with some "
-"different keywords."
-msgstr ""
-
-#: sidebar.php:27
-msgid "Archives"
-msgstr ""
-
-#: sidebar.php:34
-msgid "Meta"
-msgstr ""
-
-#: tag.php:16
-msgid "Tag Archives: %s"
-msgstr ""
-
-#. Theme Name of the plugin/theme
-msgid "Twenty Ten"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid ""
-"The 2010 theme for WordPress is stylish, customizable, simple, and readable "
-"-- make it yours with a custom menu, header image, and background. Twenty "
-"Ten supports six widgetized areas (two in the sidebar, four in the footer) "
-"and featured images (thumbnails for gallery posts and custom header images "
-"for posts and pages). It includes stylesheets for print and the admin Visual "
-"Editor, special styles for posts in the \"Asides\" and \"Gallery\" "
-"categories, and has an optional one-column page template that removes the "
-"sidebar."
-msgstr ""
-
-#. Author of the plugin/theme
-msgid "the WordPress team"
-msgstr ""
-
-#. Tags of the plugin/theme
-msgid ""
-"black, blue, white, two-columns, fixed-width, custom-header, custom-"
-"background, threaded-comments, sticky-post, translation-ready, microformats, "
-"rtl-language-support, editor-style, custom-menu"
-msgstr ""
-
-#. Template Name of the plugin/theme
-msgid "One column, no sidebar"
-msgstr ""
diff --git a/wp-content/themes/twentyten/license.txt b/wp-content/themes/twentyten/license.txt
deleted file mode 100644 (file)
index 5fbe4a7..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
-              51 Franklin St, Fifth Floor, Boston, MA 02110, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
diff --git a/wp-content/themes/twentyten/loop-attachment.php b/wp-content/themes/twentyten/loop-attachment.php
deleted file mode 100644 (file)
index e775869..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-/**
- * The loop that displays an attachment.
- *
- * The loop displays the posts and the post content. See
- * http://codex.wordpress.org/The_Loop to understand it and
- * http://codex.wordpress.org/Template_Tags to understand
- * the tags used in it.
- *
- * This can be overridden in child themes with loop-attachment.php.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.2
- */
-?>
-
-<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
-
-                               <?php if ( ! empty( $post->post_parent ) ) : ?>
-                                       <p class="page-title"><a href="<?php echo get_permalink( $post->post_parent ); ?>" title="<?php echo esc_attr( sprintf( __( 'Return to %s', 'twentyten' ), strip_tags( get_the_title( $post->post_parent ) ) ) ); ?>" rel="gallery"><?php
-                                               /* translators: %s - title of parent post */
-                                               printf( __( '<span class="meta-nav">&larr;</span> %s', 'twentyten' ), get_the_title( $post->post_parent ) );
-                                       ?></a></p>
-                               <?php endif; ?>
-
-                               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                                       <h2 class="entry-title"><?php the_title(); ?></h2>
-
-                                       <div class="entry-meta">
-                                               <?php
-                                                       printf( __( '<span class="%1$s">By</span> %2$s', 'twentyten' ),
-                                                               'meta-prep meta-prep-author',
-                                                               sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
-                                                                       get_author_posts_url( get_the_author_meta( 'ID' ) ),
-                                                                       esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ),
-                                                                       get_the_author()
-                                                               )
-                                                       );
-                                               ?>
-                                               <span class="meta-sep">|</span>
-                                               <?php
-                                                       printf( __( '<span class="%1$s">Published</span> %2$s', 'twentyten' ),
-                                                               'meta-prep meta-prep-entry-date',
-                                                               sprintf( '<span class="entry-date"><abbr class="published" title="%1$s">%2$s</abbr></span>',
-                                                                       esc_attr( get_the_time() ),
-                                                                       get_the_date()
-                                                               )
-                                                       );
-                                                       if ( wp_attachment_is_image() ) {
-                                                               echo ' <span class="meta-sep">|</span> ';
-                                                               $metadata = wp_get_attachment_metadata();
-                                                               printf( __( 'Full size is %s pixels', 'twentyten' ),
-                                                                       sprintf( '<a href="%1$s" title="%2$s">%3$s &times; %4$s</a>',
-                                                                               wp_get_attachment_url(),
-                                                                               esc_attr( __( 'Link to full-size image', 'twentyten' ) ),
-                                                                               $metadata['width'],
-                                                                               $metadata['height']
-                                                                       )
-                                                               );
-                                                       }
-                                               ?>
-                                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
-                                       </div><!-- .entry-meta -->
-
-                                       <div class="entry-content">
-                                               <div class="entry-attachment">
-<?php if ( wp_attachment_is_image() ) :
-       $attachments = array_values( get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) );
-       foreach ( $attachments as $k => $attachment ) {
-               if ( $attachment->ID == $post->ID )
-                       break;
-       }
-       $k++;
-       // If there is more than 1 image attachment in a gallery
-       if ( count( $attachments ) > 1 ) {
-               if ( isset( $attachments[ $k ] ) )
-                       // get the URL of the next image attachment
-                       $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID );
-               else
-                       // or get the URL of the first image attachment
-                       $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID );
-       } else {
-               // or, if there's only 1 image attachment, get the URL of the image
-               $next_attachment_url = wp_get_attachment_url();
-       }
-?>
-                                               <p class="attachment"><a href="<?php echo $next_attachment_url; ?>" title="<?php the_title_attribute(); ?>" rel="attachment"><?php
-                                                       $attachment_width  = apply_filters( 'twentyten_attachment_size', 900 );
-                                                       $attachment_height = apply_filters( 'twentyten_attachment_height', 900 );
-                                                       echo wp_get_attachment_image( $post->ID, array( $attachment_width, $attachment_height ) ); // filterable image width with, essentially, no limit for image height.
-                                               ?></a></p>
-
-                                               <div id="nav-below" class="navigation">
-                                                       <div class="nav-previous"><?php previous_image_link( false ); ?></div>
-                                                       <div class="nav-next"><?php next_image_link( false ); ?></div>
-                                               </div><!-- #nav-below -->
-<?php else : ?>
-                                               <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="attachment"><?php echo basename( get_permalink() ); ?></a>
-<?php endif; ?>
-                                               </div><!-- .entry-attachment -->
-                                               <div class="entry-caption"><?php if ( !empty( $post->post_excerpt ) ) the_excerpt(); ?></div>
-
-<?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
-<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
-
-                                       </div><!-- .entry-content -->
-
-                                       <div class="entry-utility">
-                                               <?php twentyten_posted_in(); ?>
-                                               <?php edit_post_link( __( 'Edit', 'twentyten' ), ' <span class="edit-link">', '</span>' ); ?>
-                                       </div><!-- .entry-utility -->
-                               </div><!-- #post-## -->
-
-<?php comments_template(); ?>
-
-<?php endwhile; // end of the loop. ?>
diff --git a/wp-content/themes/twentyten/loop-page.php b/wp-content/themes/twentyten/loop-page.php
deleted file mode 100644 (file)
index 88c5d74..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * The loop that displays a page.
- *
- * The loop displays the posts and the post content. See
- * http://codex.wordpress.org/The_Loop to understand it and
- * http://codex.wordpress.org/Template_Tags to understand
- * the tags used in it.
- *
- * This can be overridden in child themes with loop-page.php.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.2
- */
-?>
-
-<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
-
-                               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                                       <?php if ( is_front_page() ) { ?>
-                                               <h2 class="entry-title"><?php the_title(); ?></h2>
-                                       <?php } else { ?>
-                                               <h1 class="entry-title"><?php the_title(); ?></h1>
-                                       <?php } ?>
-
-                                       <div class="entry-content">
-                                               <?php the_content(); ?>
-                                               <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
-                                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
-                                       </div><!-- .entry-content -->
-                               </div><!-- #post-## -->
-
-                               <?php comments_template( '', true ); ?>
-
-<?php endwhile; // end of the loop. ?>
diff --git a/wp-content/themes/twentyten/loop-single.php b/wp-content/themes/twentyten/loop-single.php
deleted file mode 100644 (file)
index 1dde4aa..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * The loop that displays a single post.
- *
- * The loop displays the posts and the post content. See
- * http://codex.wordpress.org/The_Loop to understand it and
- * http://codex.wordpress.org/Template_Tags to understand
- * the tags used in it.
- *
- * This can be overridden in child themes with loop-single.php.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.2
- */
-?>
-
-<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
-
-                               <div id="nav-above" class="navigation">
-                                       <div class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentyten' ) . '</span> %title' ); ?></div>
-                                       <div class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentyten' ) . '</span>' ); ?></div>
-                               </div><!-- #nav-above -->
-
-                               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                                       <h1 class="entry-title"><?php the_title(); ?></h1>
-
-                                       <div class="entry-meta">
-                                               <?php twentyten_posted_on(); ?>
-                                       </div><!-- .entry-meta -->
-
-                                       <div class="entry-content">
-                                               <?php the_content(); ?>
-                                               <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
-                                       </div><!-- .entry-content -->
-
-<?php if ( get_the_author_meta( 'description' ) ) : // If a user has filled out their description, show a bio on their entries  ?>
-                                       <div id="entry-author-info">
-                                               <div id="author-avatar">
-                                                       <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyten_author_bio_avatar_size', 60 ) ); ?>
-                                               </div><!-- #author-avatar -->
-                                               <div id="author-description">
-                                                       <h2><?php printf( __( 'About %s', 'twentyten' ), get_the_author() ); ?></h2>
-                                                       <?php the_author_meta( 'description' ); ?>
-                                                       <div id="author-link">
-                                                               <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>" rel="author">
-                                                                       <?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentyten' ), get_the_author() ); ?>
-                                                               </a>
-                                                       </div><!-- #author-link -->
-                                               </div><!-- #author-description -->
-                                       </div><!-- #entry-author-info -->
-<?php endif; ?>
-
-                                       <div class="entry-utility">
-                                               <?php twentyten_posted_in(); ?>
-                                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
-                                       </div><!-- .entry-utility -->
-                               </div><!-- #post-## -->
-
-                               <div id="nav-below" class="navigation">
-                                       <div class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentyten' ) . '</span> %title' ); ?></div>
-                                       <div class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentyten' ) . '</span>' ); ?></div>
-                               </div><!-- #nav-below -->
-
-                               <?php comments_template( '', true ); ?>
-
-<?php endwhile; // end of the loop. ?>
diff --git a/wp-content/themes/twentyten/loop.php b/wp-content/themes/twentyten/loop.php
deleted file mode 100644 (file)
index 3e22fe2..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * The loop that displays posts.
- *
- * The loop displays the posts and the post content. See
- * http://codex.wordpress.org/The_Loop to understand it and
- * http://codex.wordpress.org/Template_Tags to understand
- * the tags used in it.
- *
- * This can be overridden in child themes with loop.php or
- * loop-template.php, where 'template' is the loop context
- * requested by a template. For example, loop-index.php would
- * be used if it exists and we ask for the loop with:
- * <code>get_template_part( 'loop', 'index' );</code>
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?>
-
-<?php /* Display navigation to next/previous pages when applicable */ ?>
-<?php if ( $wp_query->max_num_pages > 1 ) : ?>
-       <div id="nav-above" class="navigation">
-               <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
-               <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
-       </div><!-- #nav-above -->
-<?php endif; ?>
-
-<?php /* If there are no posts to display, such as an empty archive page */ ?>
-<?php if ( ! have_posts() ) : ?>
-       <div id="post-0" class="post error404 not-found">
-               <h1 class="entry-title"><?php _e( 'Not Found', 'twentyten' ); ?></h1>
-               <div class="entry-content">
-                       <p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyten' ); ?></p>
-                       <?php get_search_form(); ?>
-               </div><!-- .entry-content -->
-       </div><!-- #post-0 -->
-<?php endif; ?>
-
-<?php
-       /* Start the Loop.
-        *
-        * In Twenty Ten we use the same loop in multiple contexts.
-        * It is broken into three main parts: when we're displaying
-        * posts that are in the gallery category, when we're displaying
-        * posts in the asides category, and finally all other posts.
-        *
-        * Additionally, we sometimes check for whether we are on an
-        * archive page, a search page, etc., allowing for small differences
-        * in the loop on each template without actually duplicating
-        * the rest of the loop that is shared.
-        *
-        * Without further ado, the loop:
-        */ ?>
-<?php while ( have_posts() ) : the_post(); ?>
-
-<?php /* How to display posts of the Gallery format. The gallery category is the old way. */ ?>
-
-       <?php if ( ( function_exists( 'get_post_format' ) && 'gallery' == get_post_format( $post->ID ) ) || in_category( _x( 'gallery', 'gallery category slug', 'twentyten' ) ) ) : ?>
-               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
-
-                       <div class="entry-meta">
-                               <?php twentyten_posted_on(); ?>
-                       </div><!-- .entry-meta -->
-
-                       <div class="entry-content">
-<?php if ( post_password_required() ) : ?>
-                               <?php the_content(); ?>
-<?php else : ?>
-                               <?php
-                                       $images = get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
-                                       if ( $images ) :
-                                               $total_images = count( $images );
-                                               $image = array_shift( $images );
-                                               $image_img_tag = wp_get_attachment_image( $image->ID, 'thumbnail' );
-                               ?>
-                                               <div class="gallery-thumb">
-                                                       <a class="size-thumbnail" href="<?php the_permalink(); ?>"><?php echo $image_img_tag; ?></a>
-                                               </div><!-- .gallery-thumb -->
-                                               <p><em><?php printf( _n( 'This gallery contains <a %1$s>%2$s photo</a>.', 'This gallery contains <a %1$s>%2$s photos</a>.', $total_images, 'twentyten' ),
-                                                               'href="' . get_permalink() . '" title="' . sprintf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ) . '" rel="bookmark"',
-                                                               number_format_i18n( $total_images )
-                                                       ); ?></em></p>
-                               <?php endif; ?>
-                                               <?php the_excerpt(); ?>
-<?php endif; ?>
-                       </div><!-- .entry-content -->
-
-                       <div class="entry-utility">
-                       <?php if ( function_exists( 'get_post_format' ) && 'gallery' == get_post_format( $post->ID ) ) : ?>
-                               <a href="<?php echo get_post_format_link( 'gallery' ); ?>" title="<?php esc_attr_e( 'View Galleries', 'twentyten' ); ?>"><?php _e( 'More Galleries', 'twentyten' ); ?></a>
-                               <span class="meta-sep">|</span>
-                       <?php elseif ( in_category( _x( 'gallery', 'gallery category slug', 'twentyten' ) ) ) : ?>
-                               <a href="<?php echo get_term_link( _x( 'gallery', 'gallery category slug', 'twentyten' ), 'category' ); ?>" title="<?php esc_attr_e( 'View posts in the Gallery category', 'twentyten' ); ?>"><?php _e( 'More Galleries', 'twentyten' ); ?></a>
-                               <span class="meta-sep">|</span>
-                       <?php endif; ?>
-                               <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
-                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
-                       </div><!-- .entry-utility -->
-               </div><!-- #post-## -->
-
-<?php /* How to display posts of the Aside format. The asides category is the old way. */ ?>
-
-       <?php elseif ( ( function_exists( 'get_post_format' ) && 'aside' == get_post_format( $post->ID ) ) || in_category( _x( 'asides', 'asides category slug', 'twentyten' ) )  ) : ?>
-               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-
-               <?php if ( is_archive() || is_search() ) : // Display excerpts for archives and search. ?>
-                       <div class="entry-summary">
-                               <?php the_excerpt(); ?>
-                       </div><!-- .entry-summary -->
-               <?php else : ?>
-                       <div class="entry-content">
-                               <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
-                       </div><!-- .entry-content -->
-               <?php endif; ?>
-
-                       <div class="entry-utility">
-                               <?php twentyten_posted_on(); ?>
-                               <span class="meta-sep">|</span>
-                               <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
-                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
-                       </div><!-- .entry-utility -->
-               </div><!-- #post-## -->
-
-<?php /* How to display all other posts. */ ?>
-
-       <?php else : ?>
-               <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                       <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
-
-                       <div class="entry-meta">
-                               <?php twentyten_posted_on(); ?>
-                       </div><!-- .entry-meta -->
-
-       <?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
-                       <div class="entry-summary">
-                               <?php the_excerpt(); ?>
-                       </div><!-- .entry-summary -->
-       <?php else : ?>
-                       <div class="entry-content">
-                               <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
-                               <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
-                       </div><!-- .entry-content -->
-       <?php endif; ?>
-
-                       <div class="entry-utility">
-                               <?php if ( count( get_the_category() ) ) : ?>
-                                       <span class="cat-links">
-                                               <?php printf( __( '<span class="%1$s">Posted in</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
-                                       </span>
-                                       <span class="meta-sep">|</span>
-                               <?php endif; ?>
-                               <?php
-                                       $tags_list = get_the_tag_list( '', ', ' );
-                                       if ( $tags_list ):
-                               ?>
-                                       <span class="tag-links">
-                                               <?php printf( __( '<span class="%1$s">Tagged</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
-                                       </span>
-                                       <span class="meta-sep">|</span>
-                               <?php endif; ?>
-                               <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
-                               <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
-                       </div><!-- .entry-utility -->
-               </div><!-- #post-## -->
-
-               <?php comments_template( '', true ); ?>
-
-       <?php endif; // This was the if statement that broke the loop into three parts based on categories. ?>
-
-<?php endwhile; // End the loop. Whew. ?>
-
-<?php /* Display navigation to next/previous pages when applicable */ ?>
-<?php if (  $wp_query->max_num_pages > 1 ) : ?>
-                               <div id="nav-below" class="navigation">
-                                       <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
-                                       <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
-                               </div><!-- #nav-below -->
-<?php endif; ?>
diff --git a/wp-content/themes/twentyten/onecolumn-page.php b/wp-content/themes/twentyten/onecolumn-page.php
deleted file mode 100644 (file)
index 1a8d5b7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Template Name: One column, no sidebar
- *
- * A custom page template without sidebar.
- *
- * The "Template Name:" bit above allows this to be selectable
- * from a dropdown menu on the edit page screen.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container" class="one-column">
-                       <div id="content" role="main">
-
-                       <?php
-                       /* Run the loop to output the page.
-                        * If you want to overload this in a child theme then include a file
-                        * called loop-page.php and that will be used instead.
-                        */
-                        get_template_part( 'loop', 'page' );
-                       ?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/page.php b/wp-content/themes/twentyten/page.php
deleted file mode 100644 (file)
index 1a55042..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * The template for displaying all pages.
- *
- * This is the template that displays all pages by default.
- * Please note that this is the WordPress construct of pages
- * and that other 'pages' on your WordPress site will use a
- * different template.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-                       <?php
-                       /* Run the loop to output the page.
-                        * If you want to overload this in a child theme then include a file
-                        * called loop-page.php and that will be used instead.
-                        */
-                       get_template_part( 'loop', 'page' );
-                       ?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/rtl.css b/wp-content/themes/twentyten/rtl.css
deleted file mode 100644 (file)
index 339e6e5..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
-Theme Name: Twenty Ten
-*/
-
-
-/*
-RTL Basics
-*/
-
-
-body {
-       direction:rtl;
-       unicode-bidi:embed;
-}
-
-
-/*
-LAYOUT: Two-Column (Right)
-DESCRIPTION: Two-column fixed layout with one sidebar right of content
-*/
-
-#container {
-       float: right;
-       margin: 0 0 0 -240px;
-}
-#content {
-       margin: 0 20px 36px 280px;
-}
-#primary,
-#secondary {
-       float: left;
-}
-#secondary {
-       clear: left;
-}
-
-
-/* =Fonts
--------------------------------------------------------------- */
-body,
-input,
-textarea,
-.page-title span,
-.pingback a.url,
-h3#comments-title,
-h3#reply-title,
-#access .menu,
-#access div.menu ul,
-#cancel-comment-reply-link,
-.form-allowed-tags,
-#site-info,
-#site-title,
-#wp-calendar,
-.comment-meta,
-.comment-body tr th,
-.comment-body thead th,
-.entry-content label,
-.entry-content tr th,
-.entry-content thead th,
-.entry-meta,
-.entry-title,
-.entry-utility,
-#respond label,
-.navigation,
-.page-title,
-.pingback p,
-.reply,
-.widget-title,
-input[type=submit] {
-       font-family: Arial, Tahoma, sans-serif;
-}
-
-/* =Structure
--------------------------------------------------------------- */
-
-/* The main theme structure */
-#footer-widget-area .widget-area {
-       float: right;
-       margin-left: 20px;
-       margin-right: 0;
-}
-#footer-widget-area #fourth {
-       margin-left: 0;
-}
-#site-info {
-       float: right;
-}
-#site-generator {
-       float: left;
-}
-
-
-/* =Global Elements
--------------------------------------------------------------- */
-
-/* Text elements */
-ul, ol {
-       margin: 0 1.5em 18px 0;
-}
-blockquote {
-       font-style: normal;
-}
-
-/* Text meant only for screen readers */
-.screen-reader-text {
-       left: auto;
-       text-indent:-9000px;
-       overflow:hidden;
-}
-
-
-/* =Header
--------------------------------------------------------------- */
-
-#site-title {
-       float: right;
-}
-#site-description {
-       clear: left;
-       float: left;
-       font-style: normal;
-}
-#branding img {
-       float: right;
-}
-
-/* =Menu
--------------------------------------------------------------- */
-
-#access {
-       float:right;
-}
-
-#access .menu-header,
-div.menu {
-    margin-right: 12px;
-    margin-left: 0;
-}
-
-#access .menu-header li,
-div.menu li{
-       float:right;
-}
-
-#access ul ul {
-       left:auto;
-       right:0;
-       float:right;
-}
-#access ul ul ul {
-       left:auto;
-       right:100%;
-}
-
-/* =Content
--------------------------------------------------------------- */
-
-#content table {
-       text-align: right;
-       margin: 0 0 24px -1px;
-}
-.page-title span {
-       font-style:normal;
-}
-.entry-title,
-.entry-meta {
-       clear: right;
-       float: right;
-       margin-left: 68px;
-       margin-right: 0;
-}
-
-.entry-content input.file,
-.entry-content input.button {
-       margin-left: 24px;
-       margin-right:0;
-}
-.entry-content blockquote.left {
-       float: right;
-       margin-right: 0;
-       margin-left: 24px;
-       text-align: left;
-}
-.entry-content blockquote.right {
-       float: left;
-       margin-right: 24px;
-       margin-left: 0;
-       text-align: right;
-}
-#entry-author-info #author-avatar {
-       float: right;
-       margin: 0 0 0 -104px;
-}
-#entry-author-info #author-description {
-       float: right;
-       margin: 0 104px 0 0;
-}
-
-/* Gallery listing
--------------------------------------------------------------- */
-
-.category-gallery .gallery-thumb {
-       float: right;
-       margin-left:20px;
-       margin-right:0;
-}
-
-
-/* Images
--------------------------------------------------------------- */
-
-#content .gallery .gallery-caption {
-       margin-right: 0;
-}
-
-#content .gallery .gallery-item {
-       float: right;
-}
-
-/* =Navigation
--------------------------------------------------------------- */
-.nav-previous {
-       float: right;
-}
-.nav-next {
-       float: left;
-       text-align:left;
-}
-
-/* =Comments
--------------------------------------------------------------- */
-
-.commentlist li.comment {
-       padding: 0 56px 0 0;
-}
-.commentlist .avatar {
-       right: 0;
-       left: auto;
-}
-.comment-author .says, #comments .pingback .url  {
-       font-style: normal;
-}
-
-/* Comments form */
-.children #respond {
-       margin: 0 0 0 48px;
-}
-
-/* =Widget Areas
--------------------------------------------------------------- */
-
-.widget-area ul {
-       margin-right: 0;
-}
-.widget-area ul ul {
-       margin-right: 1.3em;
-       margin-left: 0;
-}
-#wp-calendar caption {
-       text-align: right;
-}
-#wp-calendar tfoot #next {
-       text-align: left;
-}
-
-/* Main sidebars */
-#main .widget-area ul {
-       margin-right: 0;
-       padding: 0 0 0 20px;
-}
-#main .widget-area ul ul {
-       margin-right: 1.3em;
-       margin-left: 0;
-}
-
-/* =Footer
--------------------------------------------------------------- */
-#site-generator {
-       font-style:normal;
-}
-#site-generator a {
-       background-position: right center;
-       padding-right: 20px;
-       padding-left: 0;
-}
\ No newline at end of file
diff --git a/wp-content/themes/twentyten/screenshot.png b/wp-content/themes/twentyten/screenshot.png
deleted file mode 100644 (file)
index 256069f..0000000
Binary files a/wp-content/themes/twentyten/screenshot.png and /dev/null differ
diff --git a/wp-content/themes/twentyten/search.php b/wp-content/themes/twentyten/search.php
deleted file mode 100644 (file)
index 3b198bb..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * The template for displaying Search Results pages.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-<?php if ( have_posts() ) : ?>
-                               <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentyten' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
-                               <?php
-                               /* Run the loop for the search to output the results.
-                                * If you want to overload this in a child theme then include a file
-                                * called loop-search.php and that will be used instead.
-                                */
-                                get_template_part( 'loop', 'search' );
-                               ?>
-<?php else : ?>
-                               <div id="post-0" class="post no-results not-found">
-                                       <h2 class="entry-title"><?php _e( 'Nothing Found', 'twentyten' ); ?></h2>
-                                       <div class="entry-content">
-                                               <p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyten' ); ?></p>
-                                               <?php get_search_form(); ?>
-                                       </div><!-- .entry-content -->
-                               </div><!-- #post-0 -->
-<?php endif; ?>
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/sidebar-footer.php b/wp-content/themes/twentyten/sidebar-footer.php
deleted file mode 100644 (file)
index 0e9f702..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * The Footer widget areas.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?>
-
-<?php
-       /* The footer widget area is triggered if any of the areas
-        * have widgets. So let's check that first.
-        *
-        * If none of the sidebars have widgets, then let's bail early.
-        */
-       if (   ! is_active_sidebar( 'first-footer-widget-area'  )
-               && ! is_active_sidebar( 'second-footer-widget-area' )
-               && ! is_active_sidebar( 'third-footer-widget-area'  )
-               && ! is_active_sidebar( 'fourth-footer-widget-area' )
-       )
-               return;
-       // If we get this far, we have widgets. Let do this.
-?>
-
-                       <div id="footer-widget-area" role="complementary">
-
-<?php if ( is_active_sidebar( 'first-footer-widget-area' ) ) : ?>
-                               <div id="first" class="widget-area">
-                                       <ul class="xoxo">
-                                               <?php dynamic_sidebar( 'first-footer-widget-area' ); ?>
-                                       </ul>
-                               </div><!-- #first .widget-area -->
-<?php endif; ?>
-
-<?php if ( is_active_sidebar( 'second-footer-widget-area' ) ) : ?>
-                               <div id="second" class="widget-area">
-                                       <ul class="xoxo">
-                                               <?php dynamic_sidebar( 'second-footer-widget-area' ); ?>
-                                       </ul>
-                               </div><!-- #second .widget-area -->
-<?php endif; ?>
-
-<?php if ( is_active_sidebar( 'third-footer-widget-area' ) ) : ?>
-                               <div id="third" class="widget-area">
-                                       <ul class="xoxo">
-                                               <?php dynamic_sidebar( 'third-footer-widget-area' ); ?>
-                                       </ul>
-                               </div><!-- #third .widget-area -->
-<?php endif; ?>
-
-<?php if ( is_active_sidebar( 'fourth-footer-widget-area' ) ) : ?>
-                               <div id="fourth" class="widget-area">
-                                       <ul class="xoxo">
-                                               <?php dynamic_sidebar( 'fourth-footer-widget-area' ); ?>
-                                       </ul>
-                               </div><!-- #fourth .widget-area -->
-<?php endif; ?>
-
-                       </div><!-- #footer-widget-area -->
diff --git a/wp-content/themes/twentyten/sidebar.php b/wp-content/themes/twentyten/sidebar.php
deleted file mode 100644 (file)
index 8a1664f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * The Sidebar containing the primary and secondary widget areas.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-?>
-
-               <div id="primary" class="widget-area" role="complementary">
-                       <ul class="xoxo">
-
-<?php
-       /* When we call the dynamic_sidebar() function, it'll spit out
-        * the widgets for that widget area. If it instead returns false,
-        * then the sidebar simply doesn't exist, so we'll hard-code in
-        * some default sidebar stuff just in case.
-        */
-       if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>
-
-                       <li id="search" class="widget-container widget_search">
-                               <?php get_search_form(); ?>
-                       </li>
-
-                       <li id="archives" class="widget-container">
-                               <h3 class="widget-title"><?php _e( 'Archives', 'twentyten' ); ?></h3>
-                               <ul>
-                                       <?php wp_get_archives( 'type=monthly' ); ?>
-                               </ul>
-                       </li>
-
-                       <li id="meta" class="widget-container">
-                               <h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
-                               <ul>
-                                       <?php wp_register(); ?>
-                                       <li><?php wp_loginout(); ?></li>
-                                       <?php wp_meta(); ?>
-                               </ul>
-                       </li>
-
-               <?php endif; // end primary widget area ?>
-                       </ul>
-               </div><!-- #primary .widget-area -->
-
-<?php
-       // A second sidebar for widgets, just because.
-       if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>
-
-               <div id="secondary" class="widget-area" role="complementary">
-                       <ul class="xoxo">
-                               <?php dynamic_sidebar( 'secondary-widget-area' ); ?>
-                       </ul>
-               </div><!-- #secondary .widget-area -->
-
-<?php endif; ?>
diff --git a/wp-content/themes/twentyten/single.php b/wp-content/themes/twentyten/single.php
deleted file mode 100644 (file)
index a0dea11..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * The Template for displaying all single posts.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-                       <?php
-                       /* Run the loop to output the post.
-                        * If you want to overload this in a child theme then include a file
-                        * called loop-single.php and that will be used instead.
-                        */
-                       get_template_part( 'loop', 'single' );
-                       ?>
-
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentyten/style.css b/wp-content/themes/twentyten/style.css
deleted file mode 100644 (file)
index ecf29f5..0000000
+++ /dev/null
@@ -1,1359 +0,0 @@
-/*
-Theme Name: Twenty Ten
-Theme URI: http://wordpress.org/
-Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
-Author: the WordPress team
-Version: 1.4
-License: GNU General Public License v2 or later
-License URI: http://www.gnu.org/licenses/gpl-2.0.html
-Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style, custom-menu
-Text Domain: twentyten
-*/
-
-
-/* =Reset default browser CSS. Based on work by Eric Meyer: http://meyerweb.com/eric/tools/css/reset/index.html
--------------------------------------------------------------- */
-
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, font, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td {
-       background: transparent;
-       border: 0;
-       margin: 0;
-       padding: 0;
-       vertical-align: baseline;
-}
-body {
-       line-height: 1;
-}
-h1, h2, h3, h4, h5, h6 {
-       clear: both;
-       font-weight: normal;
-}
-ol, ul {
-       list-style: none;
-}
-blockquote {
-       quotes: none;
-}
-blockquote:before, blockquote:after {
-       content: '';
-       content: none;
-}
-del {
-       text-decoration: line-through;
-}
-/* tables still need 'cellspacing="0"' in the markup */
-table {
-       border-collapse: collapse;
-       border-spacing: 0;
-}
-a img {
-       border: none;
-}
-
-/* =Layout
--------------------------------------------------------------- */
-
-/*
-LAYOUT: Two columns
-DESCRIPTION: Two-column fixed layout with one sidebar right of content
-*/
-
-#container {
-       float: left;
-       margin: 0 -240px 0 0;
-       width: 100%;
-}
-#content {
-       margin: 0 280px 0 20px;
-}
-#primary,
-#secondary {
-       float: right;
-       overflow: hidden;
-       width: 220px;
-}
-#secondary {
-       clear: right;
-}
-#footer {
-       clear: both;
-       width: 100%;
-}
-
-/*
-LAYOUT: One column, no sidebar
-DESCRIPTION: One centered column with no sidebar
-*/
-
-.one-column #content {
-       margin: 0 auto;
-       width: 640px;
-}
-
-/*
-LAYOUT: Full width, no sidebar
-DESCRIPTION: Full width content with no sidebar; used for attachment pages
-*/
-
-.single-attachment #content {
-       margin: 0 auto;
-       width: 900px;
-}
-
-
-/* =Fonts
--------------------------------------------------------------- */
-body,
-input,
-textarea,
-.page-title span,
-.pingback a.url {
-       font-family: Georgia, "Bitstream Charter", serif;
-}
-h3#comments-title,
-h3#reply-title,
-#access .menu,
-#access div.menu ul,
-#cancel-comment-reply-link,
-.form-allowed-tags,
-#site-info,
-#site-title,
-#wp-calendar,
-.comment-meta,
-.comment-body tr th,
-.comment-body thead th,
-.entry-content label,
-.entry-content tr th,
-.entry-content thead th,
-.entry-meta,
-.entry-title,
-.entry-utility,
-#respond label,
-.navigation,
-.page-title,
-.pingback p,
-.reply,
-.widget-title,
-.wp-caption-text {
-       font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
-}
-input[type=submit] {
-       font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
-}
-pre {
-       font-family: "Courier 10 Pitch", Courier, monospace;
-}
-code {
-       font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
-}
-
-
-/* =Structure
--------------------------------------------------------------- */
-
-/* The main theme structure */
-#access .menu-header,
-div.menu,
-#colophon,
-#branding,
-#main,
-#wrapper {
-       margin: 0 auto;
-       width: 940px;
-}
-#wrapper {
-       background: #fff;
-       margin-top: 20px;
-       padding: 0 20px;
-}
-
-/* Structure the footer area */
-#footer-widget-area {
-       overflow: hidden;
-}
-#footer-widget-area .widget-area {
-       float: left;
-       margin-right: 20px;
-       width: 220px;
-}
-#footer-widget-area #fourth {
-       margin-right: 0;
-}
-#site-info {
-       float: left;
-       font-size: 14px;
-       font-weight: bold;
-       width: 700px;
-}
-#site-generator {
-       float: right;
-       width: 220px;
-}
-
-
-/* =Global Elements
--------------------------------------------------------------- */
-
-/* Main global 'theme' and typographic styles */
-body {
-       background: #f1f1f1;
-}
-body,
-input,
-textarea {
-       color: #666;
-       font-size: 12px;
-       line-height: 18px;
-}
-hr {
-       background-color: #e7e7e7;
-       border: 0;
-       clear: both;
-       height: 1px;
-       margin-bottom: 18px;
-}
-
-/* Text elements */
-p {
-       margin-bottom: 18px;
-}
-ul {
-       list-style: square;
-       margin: 0 0 18px 1.5em;
-}
-ol {
-       list-style: decimal;
-       margin: 0 0 18px 1.5em;
-}
-ol ol {
-       list-style: upper-alpha;
-}
-ol ol ol {
-       list-style: lower-roman;
-}
-ol ol ol ol {
-       list-style: lower-alpha;
-}
-ul ul,
-ol ol,
-ul ol,
-ol ul {
-       margin-bottom: 0;
-}
-dl {
-       margin: 0 0 24px 0;
-}
-dt {
-       font-weight: bold;
-}
-dd {
-       margin-bottom: 18px;
-}
-strong {
-       font-weight: bold;
-}
-cite,
-em,
-i {
-       font-style: italic;
-}
-big {
-       font-size: 131.25%;
-}
-ins {
-       background: #ffc;
-       text-decoration: none;
-}
-blockquote {
-       font-style: italic;
-       padding: 0 3em;
-}
-blockquote cite,
-blockquote em,
-blockquote i {
-       font-style: normal;
-}
-pre {
-       background: #f7f7f7;
-       color: #222;
-       line-height: 18px;
-       margin-bottom: 18px;
-       overflow: auto;
-       padding: 1.5em;
-}
-abbr,
-acronym {
-       border-bottom: 1px dotted #666;
-       cursor: help;
-}
-sup,
-sub {
-       height: 0;
-       line-height: 1;
-       position: relative;
-       vertical-align: baseline;
-}
-sup {
-       bottom: 1ex;
-}
-sub {
-       top: .5ex;
-}
-input[type="text"],
-textarea {
-       background: #f9f9f9;
-       border: 1px solid #ccc;
-       box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1);
-       -moz-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1);
-       -webkit-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1);
-       padding: 2px;
-}
-a:link {
-       color: #0066cc;
-}
-a:visited {
-       color: #743399;
-}
-a:active,
-a:hover {
-       color: #ff4b33;
-}
-
-/* Text meant only for screen readers */
-.screen-reader-text {
-       position: absolute;
-       left: -9000px;
-}
-
-
-/* =Header
--------------------------------------------------------------- */
-
-#header {
-       padding: 30px 0 0 0;
-}
-#site-title {
-       float: left;
-       font-size: 30px;
-       line-height: 36px;
-       margin: 0 0 18px 0;
-       width: 700px;
-}
-#site-title a {
-       color: #000;
-       font-weight: bold;
-       text-decoration: none;
-}
-#site-description {
-       clear: right;
-       float: right;
-       font-style: italic;
-       margin: 15px 0 18px 0;
-       width: 220px;
-}
-
-/* This is the custom header image */
-#branding img {
-       border-top: 4px solid #000;
-       border-bottom: 1px solid #000;
-       display: block;
-       float: left;
-}
-
-
-/* =Menu
--------------------------------------------------------------- */
-
-#access {
-       background: #000;
-       display: block;
-       float: left;
-       margin: 0 auto;
-       width: 940px;
-}
-#access .menu-header,
-div.menu {
-       font-size: 13px;
-       margin-left: 12px;
-       width: 928px;
-}
-#access .menu-header ul,
-div.menu ul {
-       list-style: none;
-       margin: 0;
-}
-#access .menu-header li,
-div.menu li {
-       float: left;
-       position: relative;
-}
-#access a {
-       color: #aaa;
-       display: block;
-       line-height: 38px;
-       padding: 0 10px;
-       text-decoration: none;
-}
-#access ul ul {
-       box-shadow: 0px 3px 3px rgba(0,0,0,0.2);
-       -moz-box-shadow: 0px 3px 3px rgba(0,0,0,0.2);
-       -webkit-box-shadow: 0px 3px 3px rgba(0,0,0,0.2);
-       display: none;
-       position: absolute;
-       top: 38px;
-       left: 0;
-       float: left;
-       width: 180px;
-       z-index: 99999;
-}
-#access ul ul li {
-       min-width: 180px;
-}
-#access ul ul ul {
-       left: 100%;
-       top: 0;
-}
-#access ul ul a {
-       background: #333;
-       line-height: 1em;
-       padding: 10px;
-       width: 160px;
-       height: auto;
-}
-#access li:hover > a,
-#access ul ul :hover > a {
-       background: #333;
-       color: #fff;
-}
-#access ul li:hover > ul {
-       display: block;
-}
-#access ul li.current_page_item > a,
-#access ul li.current-menu-ancestor > a,
-#access ul li.current-menu-item > a,
-#access ul li.current-menu-parent > a {
-       color: #fff;
-}
-* html #access ul li.current_page_item a,
-* html #access ul li.current-menu-ancestor a,
-* html #access ul li.current-menu-item a,
-* html #access ul li.current-menu-parent a,
-* html #access ul li a:hover {
-       color: #fff;
-}
-
-
-/* =Content
--------------------------------------------------------------- */
-
-#main {
-       clear: both;
-       overflow: hidden;
-       padding: 40px 0 0 0;
-}
-#content {
-       margin-bottom: 36px;
-}
-#content,
-#content input,
-#content textarea {
-       color: #333;
-       font-size: 16px;
-       line-height: 24px;
-}
-#content p,
-#content ul,
-#content ol,
-#content dd,
-#content pre,
-#content hr {
-       margin-bottom: 24px;
-}
-#content ul ul,
-#content ol ol,
-#content ul ol,
-#content ol ul {
-       margin-bottom: 0;
-}
-#content pre,
-#content kbd,
-#content tt,
-#content var {
-       font-size: 15px;
-       line-height: 21px;
-}
-#content code {
-       font-size: 13px;
-}
-#content dt,
-#content th {
-       color: #000;
-}
-#content h1,
-#content h2,
-#content h3,
-#content h4,
-#content h5,
-#content h6 {
-       color: #000;
-       line-height: 1.5em;
-       margin: 0 0 20px 0;
-}
-#content table {
-       border: 1px solid #e7e7e7;
-       margin: 0 -1px 24px 0;
-       text-align: left;
-       width: 100%;
-}
-#content tr th,
-#content thead th {
-       color: #888;
-       font-size: 12px;
-       font-weight: bold;
-       line-height: 18px;
-       padding: 9px 24px;
-}
-#content tr td {
-       border-top: 1px solid #e7e7e7;
-       padding: 6px 24px;
-}
-#content tr.odd td {
-       background: #f2f7fc;
-}
-.hentry {
-       margin: 0 0 48px 0;
-}
-.home .sticky {
-       background: #f2f7fc;
-       border-top: 4px solid #000;
-       margin-left: -20px;
-       margin-right: -20px;
-       padding: 18px 20px;
-}
-.single .hentry {
-       margin: 0 0 36px 0;
-}
-.page-title {
-       color: #000;
-       font-size: 14px;
-       font-weight: bold;
-       margin: 0 0 36px 0;
-}
-.page-title span {
-       color: #333;
-       font-size: 16px;
-       font-style: italic;
-       font-weight: normal;
-}
-.page-title a:link,
-.page-title a:visited {
-       color: #888;
-       text-decoration: none;
-}
-.page-title a:active,
-.page-title a:hover {
-       color: #ff4b33;
-}
-#content .entry-title {
-       color: #000;
-       font-size: 21px;
-       font-weight: bold;
-       line-height: 1.3em;
-       margin-bottom: 0;
-}
-.entry-title a:link,
-.entry-title a:visited {
-       color: #000;
-       text-decoration: none;
-}
-.entry-title a:active,
-.entry-title a:hover {
-       color: #ff4b33;
-}
-.entry-meta {
-       color: #888;
-       font-size: 12px;
-}
-.entry-meta abbr,
-.entry-utility abbr {
-       border: none;
-}
-.entry-meta abbr:hover,
-.entry-utility abbr:hover {
-       border-bottom: 1px dotted #666;
-}
-.entry-content,
-.entry-summary {
-       clear: both;
-       padding: 12px 0 0 0;
-}
-#content .entry-summary p:last-child {
-       margin-bottom: 12px;
-}
-.entry-content fieldset {
-       border: 1px solid #e7e7e7;
-       margin: 0 0 24px 0;
-       padding: 24px;
-}
-.entry-content fieldset legend {
-       background: #fff;
-       color: #000;
-       font-weight: bold;
-       padding: 0 24px;
-}
-.entry-content input {
-       margin: 0 0 24px 0;
-}
-.entry-content input.file,
-.entry-content input.button {
-       margin-right: 24px;
-}
-.entry-content label {
-       color: #888;
-       font-size: 12px;
-}
-.entry-content select {
-       margin: 0 0 24px 0;
-}
-.entry-content sup,
-.entry-content sub {
-       font-size: 10px;
-}
-.entry-content blockquote.left {
-       float: left;
-       margin-left: 0;
-       margin-right: 24px;
-       text-align: right;
-       width: 33%;
-}
-.entry-content blockquote.right {
-       float: right;
-       margin-left: 24px;
-       margin-right: 0;
-       text-align: left;
-       width: 33%;
-}
-.page-link {
-       clear: both;
-       color: #000;
-       font-weight: bold;
-       margin: 0 0 22px 0;
-       word-spacing: 0.5em;
-}
-.page-link a:link,
-.page-link a:visited {
-       background: #f1f1f1;
-       color: #333;
-       font-weight: normal;
-       padding: 0.5em 0.75em;
-       text-decoration: none;
-}
-.home .sticky .page-link a {
-       background: #d9e8f7;
-}
-.page-link a:active,
-.page-link a:hover {
-       color: #ff4b33;
-}
-body.page .edit-link {
-       clear: both;
-       display: block;
-}
-#entry-author-info {
-       background: #f2f7fc;
-       border-top: 4px solid #000;
-       clear: both;
-       font-size: 14px;
-       line-height: 20px;
-       margin: 24px 0;
-       overflow: hidden;
-       padding: 18px 20px;
-}
-#entry-author-info #author-avatar {
-       background: #fff;
-       border: 1px solid #e7e7e7;
-       float: left;
-       height: 60px;
-       margin: 0 -104px 0 0;
-       padding: 11px;
-}
-#entry-author-info #author-description {
-       float: left;
-       margin: 0 0 0 104px;
-}
-#entry-author-info h2 {
-       color: #000;
-       font-size: 100%;
-       font-weight: bold;
-       margin-bottom: 0;
-}
-.entry-utility {
-       clear: both;
-       color: #888;
-       font-size: 12px;
-       line-height: 18px;
-}
-.entry-meta a,
-.entry-utility a {
-       color: #888;
-}
-.entry-meta a:hover,
-.entry-utility a:hover {
-       color: #ff4b33;
-}
-#content .video-player {
-       padding: 0;
-}
-
-
-/* =Asides
--------------------------------------------------------------- */
-
-.home #content .format-aside p,
-.home #content .category-asides p {
-       font-size: 14px;
-       line-height: 20px;
-       margin-bottom: 10px;
-       margin-top: 0;
-}
-.home .hentry.format-aside,
-.home .hentry.category-asides {
-       padding: 0;
-}
-.home #content .format-aside .entry-content,
-.home #content .category-asides .entry-content {
-       padding-top: 0;
-}
-
-
-/* =Gallery listing
--------------------------------------------------------------- */
-
-.format-gallery .size-thumbnail img,
-.category-gallery .size-thumbnail img {
-       border: 10px solid #f1f1f1;
-       margin-bottom: 0;
-}
-.format-gallery .gallery-thumb,
-.category-gallery .gallery-thumb {
-       float: left;
-       margin-right: 20px;
-       margin-top: -4px;
-}
-.home #content .format-gallery .entry-utility,
-.home #content .category-gallery .entry-utility {
-       padding-top: 4px;
-}
-
-
-/* =Attachment pages
--------------------------------------------------------------- */
-
-.attachment .entry-content .entry-caption {
-       font-size: 140%;
-       margin-top: 24px;
-}
-.attachment .entry-content .nav-previous a:before {
-       content: '\2190\00a0';
-}
-.attachment .entry-content .nav-next a:after {
-       content: '\00a0\2192';
-}
-
-
-/* =Images
--------------------------------------------------------------- */
-
-/*
-Resize images to fit the main content area.
-- Applies only to images uploaded via WordPress by targeting size-* classes.
-- Other images will be left alone. Use "size-auto" class to apply to other images.
-*/
-img.size-auto,
-img.size-full,
-img.size-large,
-img.size-medium,
-.attachment img {
-       max-width: 100%; /* When images are too wide for containing element, force them to fit. */
-       height: auto; /* Override height to match resized width for correct aspect ratio. */
-}
-.alignleft,
-img.alignleft {
-       display: inline;
-       float: left;
-       margin-right: 24px;
-       margin-top: 4px;
-}
-.alignright,
-img.alignright {
-       display: inline;
-       float: right;
-       margin-left: 24px;
-       margin-top: 4px;
-}
-.aligncenter,
-img.aligncenter {
-       clear: both;
-       display: block;
-       margin-left: auto;
-       margin-right: auto;
-}
-img.alignleft,
-img.alignright,
-img.aligncenter {
-       margin-bottom: 12px;
-}
-.wp-caption {
-       background: #f1f1f1;
-       line-height: 18px;
-       margin-bottom: 20px;
-       max-width: 632px !important; /* prevent too-wide images from breaking layout */
-       padding: 4px;
-       text-align: center;
-}
-.wp-caption img {
-       margin: 5px 5px 0;
-}
-.wp-caption p.wp-caption-text {
-       color: #888;
-       font-size: 12px;
-       margin: 5px;
-}
-.wp-smiley {
-       margin: 0;
-}
-.gallery {
-       margin: 0 auto 18px;
-}
-.gallery .gallery-item {
-       float: left;
-       margin-top: 0;
-       text-align: center;
-       width: 33%;
-}
-.gallery-columns-2 .gallery-item {
-       width: 50%;
-}
-.gallery-columns-4 .gallery-item {
-       width: 25%;
-}
-.gallery img {
-       border: 2px solid #cfcfcf;
-}
-.gallery-columns-2 .attachment-medium {
-       max-width: 92%;
-       height: auto;
-}
-.gallery-columns-4 .attachment-thumbnail {
-       max-width: 84%;
-       height: auto;
-}
-.gallery .gallery-caption {
-       color: #888;
-       font-size: 12px;
-       margin: 0 0 12px;
-}
-.gallery dl {
-       margin: 0;
-}
-.gallery img {
-       border: 10px solid #f1f1f1;
-}
-.gallery br+br {
-       display: none;
-}
-#content .attachment img {/* single attachment images should be centered */
-       display: block;
-       margin: 0 auto;
-}
-
-
-/* =Navigation
--------------------------------------------------------------- */
-
-.navigation {
-       color: #888;
-       font-size: 12px;
-       line-height: 18px;
-       overflow: hidden;
-}
-.navigation a:link,
-.navigation a:visited {
-       color: #888;
-       text-decoration: none;
-}
-.navigation a:active,
-.navigation a:hover {
-       color: #ff4b33;
-}
-.nav-previous {
-       float: left;
-       width: 50%;
-}
-.nav-next {
-       float: right;
-       text-align: right;
-       width: 50%;
-}
-#nav-above {
-       margin: 0 0 18px 0;
-}
-#nav-above {
-       display: none;
-}
-.paged #nav-above,
-.single #nav-above {
-       display: block;
-}
-#nav-below {
-       margin: -18px 0 0 0;
-}
-
-
-/* =Comments
--------------------------------------------------------------- */
-#comments {
-       clear: both;
-}
-#comments .navigation {
-       padding: 0 0 18px 0;
-}
-h3#comments-title,
-h3#reply-title {
-       color: #000;
-       font-size: 20px;
-       font-weight: bold;
-       margin-bottom: 0;
-}
-h3#comments-title {
-       padding: 24px 0;
-}
-.commentlist {
-       list-style: none;
-       margin: 0;
-}
-.commentlist li.comment {
-       border-bottom: 1px solid #e7e7e7;
-       line-height: 24px;
-       margin: 0 0 24px 0;
-       padding: 0 0 0 56px;
-       position: relative;
-}
-.commentlist li:last-child {
-       border-bottom: none;
-       margin-bottom: 0;
-}
-#comments .comment-body ul,
-#comments .comment-body ol {
-       margin-bottom: 18px;
-}
-#comments .comment-body p:last-child {
-       margin-bottom: 6px;
-}
-#comments .comment-body blockquote p:last-child {
-       margin-bottom: 24px;
-}
-.commentlist ol {
-       list-style: decimal;
-}
-.commentlist .avatar {
-       position: absolute;
-       top: 4px;
-       left: 0;
-}
-.comment-author {
-}
-.comment-author cite {
-       color: #000;
-       font-style: normal;
-       font-weight: bold;
-}
-.comment-author .says {
-       font-style: italic;
-}
-.comment-meta {
-       font-size: 12px;
-       margin: 0 0 18px 0;
-}
-.comment-meta a:link,
-.comment-meta a:visited {
-       color: #888;
-       text-decoration: none;
-}
-.comment-meta a:active,
-.comment-meta a:hover {
-       color: #ff4b33;
-}
-.commentlist .even {
-}
-.commentlist .bypostauthor {
-}
-.reply {
-       font-size: 12px;
-       padding: 0 0 24px 0;
-}
-.reply a,
-a.comment-edit-link {
-       color: #888;
-}
-.reply a:hover,
-a.comment-edit-link:hover {
-       color: #ff4b33;
-}
-.commentlist .children {
-       list-style: none;
-       margin: 0;
-}
-.commentlist .children li {
-       border: none;
-       margin: 0;
-}
-.nopassword,
-.nocomments {
-       display: none;
-}
-#comments .pingback {
-       border-bottom: 1px solid #e7e7e7;
-       margin-bottom: 18px;
-       padding-bottom: 18px;
-}
-.commentlist li.comment+li.pingback {
-       margin-top: -6px;
-}
-#comments .pingback p {
-       color: #888;
-       display: block;
-       font-size: 12px;
-       line-height: 18px;
-       margin: 0;
-}
-#comments .pingback .url {
-       font-size: 13px;
-       font-style: italic;
-}
-
-/* Comments form */
-input[type=submit] {
-       color: #333;
-}
-#respond {
-       border-top: 1px solid #e7e7e7;
-       margin: 24px 0;
-       overflow: hidden;
-       position: relative;
-}
-#respond p {
-       margin: 0;
-}
-#respond .comment-notes {
-       margin-bottom: 1em;
-}
-.form-allowed-tags {
-       line-height: 1em;
-}
-.children #respond {
-       margin: 0 48px 0 0;
-}
-h3#reply-title {
-       margin: 18px 0;
-}
-#comments-list #respond {
-       margin: 0 0 18px 0;
-}
-#comments-list ul #respond {
-       margin: 0;
-}
-#cancel-comment-reply-link {
-       font-size: 12px;
-       font-weight: normal;
-       line-height: 18px;
-}
-#respond .required {
-       color: #ff4b33;
-       font-weight: bold;
-}
-#respond label {
-       color: #888;
-       font-size: 12px;
-}
-#respond input {
-       margin: 0 0 9px;
-       width: 98%;
-}
-#respond textarea {
-       width: 98%;
-}
-#respond .form-allowed-tags {
-       color: #888;
-       font-size: 12px;
-       line-height: 18px;
-}
-#respond .form-allowed-tags code {
-       font-size: 11px;
-}
-#respond .form-submit {
-       margin: 12px 0;
-}
-#respond .form-submit input {
-       font-size: 14px;
-       width: auto;
-}
-
-
-/* =Widget Areas
--------------------------------------------------------------- */
-
-.widget-area ul {
-       list-style: none;
-       margin-left: 0;
-}
-.widget-area ul ul {
-       list-style: square;
-       margin-left: 1.3em;
-}
-.widget-area select {
-       max-width: 100%;
-}
-.widget_search #s {/* This keeps the search inputs in line */
-       width: 60%;
-}
-.widget_search label {
-       display: none;
-}
-.widget-container {
-       margin: 0 0 18px 0;
-}
-.widget-title {
-       color: #222;
-       font-weight: bold;
-}
-.widget-area a:link,
-.widget-area a:visited {
-       text-decoration: none;
-}
-.widget-area a:active,
-.widget-area a:hover {
-       text-decoration: underline;
-}
-.widget-area .entry-meta {
-       font-size: 11px;
-}
-#wp_tag_cloud div {
-       line-height: 1.6em;
-}
-#wp-calendar {
-       width: 100%;
-}
-#wp-calendar caption {
-       color: #222;
-       font-size: 14px;
-       font-weight: bold;
-       padding-bottom: 4px;
-       text-align: left;
-}
-#wp-calendar thead {
-       font-size: 11px;
-}
-#wp-calendar thead th {
-}
-#wp-calendar tbody {
-       color: #aaa;
-}
-#wp-calendar tbody td {
-       background: #f5f5f5;
-       border: 1px solid #fff;
-       padding: 3px 0 2px;
-       text-align: center;
-}
-#wp-calendar tbody .pad {
-       background: none;
-}
-#wp-calendar tfoot #next {
-       text-align: right;
-}
-.widget_rss a.rsswidget {
-       color: #000;
-}
-.widget_rss a.rsswidget:hover {
-       color: #ff4b33;
-}
-.widget_rss .widget-title img {
-       width: 11px;
-       height: 11px;
-}
-
-/* Main sidebars */
-#main .widget-area ul {
-       margin-left: 0;
-       padding: 0 20px 0 0;
-}
-#main .widget-area ul ul {
-       border: none;
-       margin-left: 1.3em;
-       padding: 0;
-}
-#primary {
-}
-#secondary {
-}
-
-/* Footer widget areas */
-#footer-widget-area {
-}
-
-
-/* =Footer
--------------------------------------------------------------- */
-
-#footer {
-       margin-bottom: 20px;
-}
-#colophon {
-       border-top: 4px solid #000;
-       margin-top: -4px;
-       overflow: hidden;
-       padding: 18px 0;
-}
-#site-info {
-       font-weight: bold;
-}
-#site-info a {
-       color: #000;
-       text-decoration: none;
-}
-#site-generator {
-       font-style: italic;
-       position: relative;
-}
-#site-generator a {
-       background: url(images/wordpress.png) center left no-repeat;
-       color: #666;
-       display: inline-block;
-       line-height: 16px;
-       padding-left: 20px;
-       text-decoration: none;
-}
-#site-generator a:hover {
-       text-decoration: underline;
-}
-img#wpstats {
-       display: block;
-       margin: 0 auto 10px;
-}
-
-
-/* =Mobile Safari ( iPad, iPhone and iPod Touch )
--------------------------------------------------------------- */
-
-pre {
-       -webkit-text-size-adjust: 140%;
-}
-code {
-       -webkit-text-size-adjust: 160%;
-}
-#access,
-.entry-meta,
-.entry-utility,
-.navigation,
-.widget-area {
-       -webkit-text-size-adjust: 120%;
-}
-#site-description {
-       -webkit-text-size-adjust: none;
-}
-
-
-/* =Print Style
--------------------------------------------------------------- */
-
-@media print {
-       body {
-               background: none !important;
-       }
-       #wrapper {
-               clear: both !important;
-               display: block !important;
-               float: none !important;
-               position: relative !important;
-       }
-       #header {
-               border-bottom: 2pt solid #000;
-               padding-bottom: 18pt;
-       }
-       #colophon {
-               border-top: 2pt solid #000;
-       }
-       #site-title,
-       #site-description {
-               float: none;
-               line-height: 1.4em;
-               margin: 0;
-               padding: 0;
-       }
-       #site-title {
-               font-size: 13pt;
-       }
-       .entry-content {
-               font-size: 14pt;
-               line-height: 1.6em;
-       }
-       .entry-title {
-               font-size: 21pt;
-       }
-       #access,
-       #branding img,
-       #respond,
-       .comment-edit-link,
-       .edit-link,
-       .navigation,
-       .page-link,
-       .widget-area {
-               display: none !important;
-       }
-       #container,
-       #header,
-       #footer {
-               margin: 0;
-               width: 100%;
-       }
-       #content,
-       .one-column #content {
-               margin: 24pt 0 0;
-               width: 100%;
-       }
-       .wp-caption p {
-               font-size: 11pt;
-       }
-       #site-info,
-       #site-generator {
-               float: none;
-               width: auto;
-       }
-       #colophon {
-               width: auto;
-       }
-       img#wpstats {
-               display: none;
-       }
-       #site-generator a {
-               margin: 0;
-               padding: 0;
-       }
-       #entry-author-info {
-               border: 1px solid #e7e7e7;
-       }
-       #main {
-               display: inline;
-       }
-       .home .sticky {
-               border: none;
-       }
-}
\ No newline at end of file
diff --git a/wp-content/themes/twentyten/tag.php b/wp-content/themes/twentyten/tag.php
deleted file mode 100644 (file)
index 2c0cb87..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * The template for displaying Tag Archive pages.
- *
- * @package WordPress
- * @subpackage Twenty_Ten
- * @since Twenty Ten 1.0
- */
-
-get_header(); ?>
-
-               <div id="container">
-                       <div id="content" role="main">
-
-                               <h1 class="page-title"><?php
-                                       printf( __( 'Tag Archives: %s', 'twentyten' ), '<span>' . single_tag_title( '', false ) . '</span>' );
-                               ?></h1>
-
-<?php
-/* Run the loop for the tag archive to output the posts
- * If you want to overload this in a child theme then include a file
- * called loop-tag.php and that will be used instead.
- */
- get_template_part( 'loop', 'tag' );
-?>
-                       </div><!-- #content -->
-               </div><!-- #container -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentytwelve/404.php b/wp-content/themes/twentytwelve/404.php
new file mode 100644 (file)
index 0000000..e7270b4
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+/**
+ * The template for displaying 404 pages (Not Found).
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+                       <article id="post-0" class="post error404 no-results not-found">
+                               <header class="entry-header">
+                                       <h1 class="entry-title"><?php _e( 'This is somewhat embarrassing, isn&rsquo;t it?', 'twentytwelve' ); ?></h1>
+                               </header>
+
+                               <div class="entry-content">
+                                       <p><?php _e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'twentytwelve' ); ?></p>
+                                       <?php get_search_form(); ?>
+                               </div><!-- .entry-content -->
+                       </article><!-- #post-0 -->
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/archive.php b/wp-content/themes/twentytwelve/archive.php
new file mode 100644 (file)
index 0000000..8bfb01c
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * The template for displaying Archive pages.
+ *
+ * Used to display archive-type pages if nothing more specific matches a query.
+ * For example, puts together date-based pages if no date.php file exists.
+ *
+ * If you'd like to further customize these archive views, you may create a
+ * new template file for each specific one. For example, Twenty Twelve already
+ * has tag.php for Tag archives, category.php for Category archives, and
+ * author.php for Author archives.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php if ( have_posts() ) : ?>
+                       <header class="archive-header">
+                               <h1 class="archive-title"><?php
+                                       if ( is_day() ) :
+                                               printf( __( 'Daily Archives: %s', 'twentytwelve' ), '<span>' . get_the_date() . '</span>' );
+                                       elseif ( is_month() ) :
+                                               printf( __( 'Monthly Archives: %s', 'twentytwelve' ), '<span>' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentytwelve' ) ) . '</span>' );
+                                       elseif ( is_year() ) :
+                                               printf( __( 'Yearly Archives: %s', 'twentytwelve' ), '<span>' . get_the_date( _x( 'Y', 'yearly archives date format', 'twentytwelve' ) ) . '</span>' );
+                                       else :
+                                               _e( 'Archives', 'twentytwelve' );
+                                       endif;
+                               ?></h1>
+                       </header><!-- .archive-header -->
+
+                       <?php
+                       /* Start the Loop */
+                       while ( have_posts() ) : the_post();
+
+                               /* Include the post format-specific template for the content. If you want to
+                                * this in a child theme then include a file called called content-___.php
+                                * (where ___ is the post format) and that will be used instead.
+                                */
+                               get_template_part( 'content', get_post_format() );
+
+                       endwhile;
+
+                       twentytwelve_content_nav( 'nav-below' );
+                       ?>
+
+               <?php else : ?>
+                       <?php get_template_part( 'content', 'none' ); ?>
+               <?php endif; ?>
+
+               </div><!-- #content -->
+       </section><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/author.php b/wp-content/themes/twentytwelve/author.php
new file mode 100644 (file)
index 0000000..0fa2e6b
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/**
+ * The template for displaying Author Archive pages.
+ *
+ * Used to display archive-type pages for posts by an author.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <?php
+                               /* Queue the first post, that way we know
+                                * what author we're dealing with (if that is the case).
+                                *
+                                * We reset this later so we can run the loop
+                                * properly with a call to rewind_posts().
+                                */
+                               the_post();
+                       ?>
+
+                       <header class="archive-header">
+                               <h1 class="archive-title"><?php printf( __( 'Author Archives: %s', 'twentytwelve' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' ); ?></h1>
+                       </header><!-- .archive-header -->
+
+                       <?php
+                               /* Since we called the_post() above, we need to
+                                * rewind the loop back to the beginning that way
+                                * we can run the loop properly, in full.
+                                */
+                               rewind_posts();
+                       ?>
+
+                       <?php twentytwelve_content_nav( 'nav-above' ); ?>
+
+                       <?php
+                       // If a user has filled out their description, show a bio on their entries.
+                       if ( get_the_author_meta( 'description' ) ) : ?>
+                       <div class="author-info">
+                               <div class="author-avatar">
+                                       <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentytwelve_author_bio_avatar_size', 60 ) ); ?>
+                               </div><!-- .author-avatar -->
+                               <div class="author-description">
+                                       <h2><?php printf( __( 'About %s', 'twentytwelve' ), get_the_author() ); ?></h2>
+                                       <p><?php the_author_meta( 'description' ); ?></p>
+                               </div><!-- .author-description  -->
+                       </div><!-- .author-info -->
+                       <?php endif; ?>
+
+                       <?php /* Start the Loop */ ?>
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php get_template_part( 'content', get_post_format() ); ?>
+                       <?php endwhile; ?>
+
+                       <?php twentytwelve_content_nav( 'nav-below' ); ?>
+
+               <?php else : ?>
+                       <?php get_template_part( 'content', 'none' ); ?>
+               <?php endif; ?>
+
+               </div><!-- #content -->
+       </section><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/category.php b/wp-content/themes/twentytwelve/category.php
new file mode 100644 (file)
index 0000000..fc50086
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * The template for displaying Category pages.
+ *
+ * Used to display archive-type pages for posts in a category.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php if ( have_posts() ) : ?>
+                       <header class="archive-header">
+                               <h1 class="archive-title"><?php printf( __( 'Category Archives: %s', 'twentytwelve' ), '<span>' . single_cat_title( '', false ) . '</span>' ); ?></h1>
+
+                       <?php if ( category_description() ) : // Show an optional category description ?>
+                               <div class="archive-meta"><?php echo category_description(); ?></div>
+                       <?php endif; ?>
+                       </header><!-- .archive-header -->
+
+                       <?php
+                       /* Start the Loop */
+                       while ( have_posts() ) : the_post();
+
+                               /* Include the post format-specific template for the content. If you want to
+                                * this in a child theme then include a file called called content-___.php
+                                * (where ___ is the post format) and that will be used instead.
+                                */
+                               get_template_part( 'content', get_post_format() );
+
+                       endwhile;
+
+                       twentytwelve_content_nav( 'nav-below' );
+                       ?>
+
+               <?php else : ?>
+                       <?php get_template_part( 'content', 'none' ); ?>
+               <?php endif; ?>
+
+               </div><!-- #content -->
+       </section><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/comments.php b/wp-content/themes/twentytwelve/comments.php
new file mode 100644 (file)
index 0000000..457b9e4
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * The template for displaying Comments.
+ *
+ * The area of the page that contains both current comments
+ * and the comment form. The actual display of comments is
+ * handled by a callback to twentytwelve_comment() which is
+ * located in the functions.php file.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+/*
+ * If the current post is protected by a password and
+ * the visitor has not yet entered the password we will
+ * return early without loading the comments.
+ */
+if ( post_password_required() )
+       return;
+?>
+
+<div id="comments" class="comments-area">
+
+       <?php // You can start editing here -- including this comment! ?>
+
+       <?php if ( have_comments() ) : ?>
+               <h2 class="comments-title">
+                       <?php
+                               printf( _n( 'One thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', get_comments_number(), 'twentytwelve' ),
+                                       number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
+                       ?>
+               </h2>
+
+               <ol class="commentlist">
+                       <?php wp_list_comments( array( 'callback' => 'twentytwelve_comment', 'style' => 'ol' ) ); ?>
+               </ol><!-- .commentlist -->
+
+               <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>
+               <nav id="comment-nav-below" class="navigation" role="navigation">
+                       <h1 class="assistive-text section-heading"><?php _e( 'Comment navigation', 'twentytwelve' ); ?></h1>
+                       <div class="nav-previous"><?php previous_comments_link( __( '&larr; Older Comments', 'twentytwelve' ) ); ?></div>
+                       <div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', 'twentytwelve' ) ); ?></div>
+               </nav>
+               <?php endif; // check for comment navigation ?>
+
+               <?php
+               /* If there are no comments and comments are closed, let's leave a note.
+                * But we only want the note on posts and pages that had comments in the first place.
+                */
+               if ( ! comments_open() && get_comments_number() ) : ?>
+               <p class="nocomments"><?php _e( 'Comments are closed.' , 'twentytwelve' ); ?></p>
+               <?php endif; ?>
+
+       <?php endif; // have_comments() ?>
+
+       <?php comment_form(); ?>
+
+</div><!-- #comments .comments-area -->
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/content-aside.php b/wp-content/themes/twentytwelve/content-aside.php
new file mode 100644 (file)
index 0000000..c064501
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * The template for displaying posts in the Aside post format
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <div class="aside">
+                       <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
+                       <div class="entry-content">
+                               <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+                       </div><!-- .entry-content -->
+               </div><!-- .aside -->
+
+               <footer class="entry-meta">
+                       <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php echo get_the_date(); ?></a>
+                       <?php if ( comments_open() ) : ?>
+                       <div class="comments-link">
+                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                       </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content-image.php b/wp-content/themes/twentytwelve/content-image.php
new file mode 100644 (file)
index 0000000..aee3869
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * The template for displaying posts in the Image post format
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <div class="entry-content">
+                       <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+               </div><!-- .entry-content -->
+
+               <footer class="entry-meta">
+                       <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark">
+                               <h1><?php the_title(); ?></h1>
+                               <h2><time class="entry-date" datetime="<?php echo esc_attr( get_the_date( 'c' ) ); ?>"><?php echo get_the_date(); ?></time></h2>
+                       </a>
+                       <?php if ( comments_open() ) : ?>
+                       <div class="comments-link">
+                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                       </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content-link.php b/wp-content/themes/twentytwelve/content-link.php
new file mode 100644 (file)
index 0000000..31e4ec9
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * The template for displaying posts in the Link post format
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <header><?php _e( 'Link', 'twentytwelve' ); ?></header>
+               <div class="entry-content">
+                       <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+               </div><!-- .entry-content -->
+
+               <footer class="entry-meta">
+                       <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php echo get_the_date(); ?></a>
+                       <?php if ( comments_open() ) : ?>
+                       <div class="comments-link">
+                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                       </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content-none.php b/wp-content/themes/twentytwelve/content-none.php
new file mode 100644 (file)
index 0000000..42bff09
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+/**
+ * The template for displaying a "No posts found" message.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-0" class="post no-results not-found">
+               <header class="entry-header">
+                       <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
+               </header>
+
+               <div class="entry-content">
+                       <p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
+                       <?php get_search_form(); ?>
+               </div><!-- .entry-content -->
+       </article><!-- #post-0 -->
diff --git a/wp-content/themes/twentytwelve/content-page.php b/wp-content/themes/twentytwelve/content-page.php
new file mode 100644 (file)
index 0000000..f00a99c
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+/**
+ * The template used for displaying page content in page.php
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <header class="entry-header">
+                       <h1 class="entry-title"><?php the_title(); ?></h1>
+               </header>
+
+               <div class="entry-content">
+                       <?php the_content(); ?>
+                       <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentytwelve' ), 'after' => '</div>' ) ); ?>
+               </div><!-- .entry-content -->
+               <footer class="entry-meta">
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content-quote.php b/wp-content/themes/twentytwelve/content-quote.php
new file mode 100644 (file)
index 0000000..0a98a96
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * The template for displaying posts in the Quote post format
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <div class="entry-content">
+                       <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+               </div><!-- .entry-content -->
+
+               <footer class="entry-meta">
+                       <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php echo get_the_date(); ?></a>
+                       <?php if ( comments_open() ) : ?>
+                       <div class="comments-link">
+                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                       </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content-status.php b/wp-content/themes/twentytwelve/content-status.php
new file mode 100644 (file)
index 0000000..55ffcae
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+/**
+ * The template for displaying posts in the Status post format
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <div class="entry-header">
+                       <header>
+                               <h1><?php the_author(); ?></h1>
+                               <h2><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php echo get_the_date(); ?></a></h2>
+                       </header>
+                       <?php echo get_avatar( get_the_author_meta( 'ID' ), apply_filters( 'twentytwelve_status_avatar', '48' ) ); ?>
+               </div><!-- .entry-header -->
+
+               <div class="entry-content">
+                       <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+               </div><!-- .entry-content -->
+
+               <footer class="entry-meta">
+                       <?php if ( comments_open() ) : ?>
+                       <div class="comments-link">
+                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                       </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/content.php b/wp-content/themes/twentytwelve/content.php
new file mode 100644 (file)
index 0000000..90cd694
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * The default template for displaying content. Used for both single and index/archive/search.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+               <?php if ( is_sticky() && is_home() && ! is_paged() ) : ?>
+               <div class="featured-post">
+                       <?php _e( 'Featured post', 'twentytwelve' ); ?>
+               </div>
+               <?php endif; ?>
+               <header class="entry-header">
+                       <?php the_post_thumbnail(); ?>
+                       <?php if ( is_single() ) : ?>
+                       <h1 class="entry-title"><?php the_title(); ?></h1>
+                       <?php else : ?>
+                       <h1 class="entry-title">
+                               <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
+                       </h1>
+                       <?php endif; // is_single() ?>
+                       <?php if ( comments_open() ) : ?>
+                               <div class="comments-link">
+                                       <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?>
+                               </div><!-- .comments-link -->
+                       <?php endif; // comments_open() ?>
+               </header><!-- .entry-header -->
+
+               <?php if ( is_search() ) : // Only display Excerpts for Search ?>
+               <div class="entry-summary">
+                       <?php the_excerpt(); ?>
+               </div><!-- .entry-summary -->
+               <?php else : ?>
+               <div class="entry-content">
+                       <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
+                       <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentytwelve' ), 'after' => '</div>' ) ); ?>
+               </div><!-- .entry-content -->
+               <?php endif; ?>
+
+               <footer class="entry-meta">
+                       <?php twentytwelve_entry_meta(); ?>
+                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+                       <?php if ( is_singular() && get_the_author_meta( 'description' ) && is_multi_author() ) : // If a user has filled out their description and this is a multi-author blog, show a bio on their entries. ?>
+                               <div class="author-info">
+                                       <div class="author-avatar">
+                                               <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentytwelve_author_bio_avatar_size', 68 ) ); ?>
+                                       </div><!-- .author-avatar -->
+                                       <div class="author-description">
+                                               <h2><?php printf( __( 'About %s', 'twentytwelve' ), get_the_author() ); ?></h2>
+                                               <p><?php the_author_meta( 'description' ); ?></p>
+                                               <div class="author-link">
+                                                       <a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
+                                                               <?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentytwelve' ), get_the_author() ); ?>
+                                                       </a>
+                                               </div><!-- .author-link -->
+                                       </div><!-- .author-description -->
+                               </div><!-- .author-info -->
+                       <?php endif; ?>
+               </footer><!-- .entry-meta -->
+       </article><!-- #post -->
diff --git a/wp-content/themes/twentytwelve/css/ie.css b/wp-content/themes/twentytwelve/css/ie.css
new file mode 100644 (file)
index 0000000..7acef64
--- /dev/null
@@ -0,0 +1,243 @@
+/*
+Styles for older IE versions (previous to IE9).
+*/
+
+body {
+       background-color: #e6e6e6;
+}
+body.custom-background-empty {
+       background-color: #fff;
+}
+body.custom-background-empty .site,
+body.custom-background-white .site {
+       box-shadow: none;
+       margin-bottom: 0;
+       margin-top: 0;
+       padding: 0;
+}
+.assistive-text,
+.site .screen-reader-text {
+       clip: rect(1px 1px 1px 1px); /* IE7 */
+}
+.full-width .site-content {
+       float: none;
+       width: 100%;
+}
+img.size-full,
+img.size-large,
+img.header-image,
+img.wp-post-image,
+img[class*="align"],
+img[class*="wp-image-"],
+img[class*="attachment-"] {
+       width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */
+}
+.author-avatar {
+       float: left;
+       margin-top: 8px;
+       margin-top: 0.571428571rem;
+}
+.author-description {
+       float: right;
+       width: 80%;
+}
+.site {
+       box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
+       margin: 48px auto;
+       max-width: 960px;
+       overflow: hidden;
+       padding: 0 40px;
+}
+.site-content {
+       float: left;
+       width: 65.104166667%;
+}
+body.template-front-page .site-content,
+body.single-attachment .site-content,
+body.full-width .site-content {
+       width: 100%;
+}
+.widget-area {
+       float: right;
+       width: 26.041666667%;
+}
+.site-header h1,
+.site-header h2 {
+       text-align: left;
+}
+.site-header h1 {
+       font-size: 26px;
+       line-height: 1.846153846;
+}
+.main-navigation ul.nav-menu,
+.main-navigation div.nav-menu > ul {
+       border-bottom: 1px solid #ededed;
+       border-top: 1px solid #ededed;
+       display: inline-block !important;
+       text-align: left;
+       width: 100%;
+}
+.main-navigation ul {
+       margin: 0;
+       text-indent: 0;
+}
+.main-navigation li a,
+.main-navigation li {
+       display: inline-block;
+       text-decoration: none;
+}
+.ie7 .main-navigation li a,
+.ie7 .main-navigation li {
+       display: inline;
+}
+.main-navigation li a {
+       border-bottom: 0;
+       color: #6a6a6a;
+       line-height: 3.692307692;
+       text-transform: uppercase;
+}
+.main-navigation li a:hover {
+       color: #000;
+}
+.main-navigation li {
+       margin: 0 40px 0 0;
+       position: relative;
+}
+.main-navigation li ul {
+       display: none;
+       margin: 0;
+       padding: 0;
+       position: absolute;
+       top: 100%;
+       z-index: 1;
+}
+.ie7 .main-navigation li ul {
+       left: 0;
+}
+.main-navigation li ul ul,
+.ie7 .main-navigation li ul ul {
+       top: 0;
+       left: 100%;
+}
+.main-navigation ul li:hover > ul {
+       border-left: 0;
+       display: block;
+}
+.main-navigation li ul li a {
+       background: #efefef;
+       border-bottom: 1px solid #ededed;
+       display: block;
+       font-size: 11px;
+       line-height: 2.181818182;
+       padding: 8px 10px;
+       width: 180px;
+}
+.main-navigation li ul li a:hover {
+       background: #e3e3e3;
+       color: #444;
+}
+.main-navigation .current-menu-item > a,
+.main-navigation .current-menu-ancestor > a,
+.main-navigation .current_page_item > a,
+.main-navigation .current_page_ancestor > a {
+       color: #636363;
+       font-weight: bold;
+}
+.menu-toggle {
+       display: none;
+}
+.entry-header .entry-title {
+       font-size: 22px;
+}
+#respond form input[type="text"] {
+       width: 46.333333333%;
+}
+#respond form textarea.blog-textarea {
+       width: 79.666666667%;
+}
+.template-front-page .site-content,
+.template-front-page article {
+       overflow: hidden;
+}
+.template-front-page.has-post-thumbnail article {
+       float: left;
+       width: 47.916666667%;
+}
+.entry-page-image {
+       float: right;
+       margin-bottom: 0;
+       width: 47.916666667%;
+}
+.template-front-page .widget-area .widget,
+.template-front-page.two-sidebars .widget-area .front-widgets {
+       float: left;
+       margin-bottom: 24px;
+       width: 51.875%;
+}
+.template-front-page .widget-area .widget:nth-child(odd) {
+       clear: right;
+}
+.template-front-page .widget-area .widget:nth-child(even),
+.template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets {
+       float: right;
+       margin: 0 0 24px;
+       width: 39.0625%;
+}
+.template-front-page.two-sidebars .widget,
+.template-front-page.two-sidebars .widget:nth-child(even) {
+       float: none;
+       width: auto;
+}
+
+/* =RTL overrides for IE7 and IE8
+-------------------------------------------------------------- */
+.rtl .site-header h1,
+.rtl .site-header h2 {
+       text-align: right;
+}
+.rtl .widget-area,
+.rtl .author-description {
+       float: left;
+}
+.rtl .author-avatar,
+.rtl .site-content {
+       float: right;
+}
+.rtl .main-navigation ul.nav-menu,
+.rtl .main-navigation div.nav-menu > ul {
+       text-align: right;
+}
+.rtl .main-navigation ul li ul li,
+.rtl .main-navigation ul li ul li ul li {
+       margin-left: 40px;
+       margin-right: auto;
+}
+.rtl .main-navigation li ul ul {
+       position: absolute;
+       bottom: 0;
+       right: 100%;
+       z-index: 1;
+}
+.ie7 .rtl .main-navigation li ul ul {
+       position: absolute;
+       bottom: 0;
+       right: 100%;
+       z-index: 1;
+}
+.ie7 .rtl .main-navigation ul li {
+       z-index: 99;
+}
+.ie7 .rtl .main-navigation li ul {
+       position: absolute;
+       bottom: 100%;
+       right: 0;
+       z-index: 1;
+}
+.ie7 .rtl .main-navigation li {
+       margin-right: auto;
+       margin-left: 40px;
+}
+.ie7 .rtl .main-navigation li ul ul ul {
+       position: relative;
+       z-index: 1;
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/editor-style-rtl.css b/wp-content/themes/twentytwelve/editor-style-rtl.css
new file mode 100644 (file)
index 0000000..5fd832c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+Theme Name: Twenty Twelve
+Description: Used to style the TinyMCE editor for RTL languages.
+See also rtl.css file.
+*/
+
+html .mceContentBody {
+       direction: rtl;
+       unicode-bidi: embed;
+}
+li {
+       margin: 0 24px 0 0;
+       margin: 0 1.714285714rem 0 0;
+}
+dl {
+       margin: 0 24px;
+       margin: 0 1.714285714rem;
+}
+tr th {
+       text-align: right;
+}
+td {
+       padding: 6px 0 6px 10px;
+       text-align: right;
+}
+.wp-caption {
+       text-align: right;
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/editor-style.css b/wp-content/themes/twentytwelve/editor-style.css
new file mode 100644 (file)
index 0000000..f376dc7
--- /dev/null
@@ -0,0 +1,342 @@
+/*
+Theme Name: Twenty Twelve
+Description: Used to style the TinyMCE editor.
+*/
+
+html {
+       font-size: 87.5%;
+}
+html .mceContentBody {
+       max-width: 625px;
+}
+body {
+       color: #444;
+       font-family: "Open Sans", Helvetica, Arial, sans-serif;
+       font-size: 14px;
+       font-size: 1rem;
+       line-height: 1;
+       text-rendering: optimizeLegibility;
+       vertical-align: baseline;
+}
+
+
+/* =Headings
+-------------------------------------------------------------- */
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       clear: both;
+       line-height: 1.846153846;
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+}
+h1 {
+       font-size: 21px;
+       font-size: 1.5rem;
+       line-height: 1.5;
+}
+h2 {
+       font-size: 18px;
+       font-size: 1.285714286rem;
+       line-height: 1.6;
+}
+h3 {
+       font-size: 16px;
+       font-size: 1.142857143rem;
+}
+h4 {
+       font-size: 14px;
+       font-size: 1rem;
+}
+h5 {
+       font-size: 13px;
+       font-size: 0.928571429rem;
+}
+h6 {
+       font-size: 12px;
+       font-size: 0.857142857rem;
+}
+hr {
+       background-color: #ccc;
+       border: 0;
+       height: 1px;
+       margin: 24px;
+       margin-bottom: 1.714285714rem;
+}
+
+
+/* =Text elements
+-------------------------------------------------------------- */
+
+p {
+       line-height: 1.714285714;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+}
+ul,
+ol {
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+       line-height: 1.714285714;
+       padding: 0;
+}
+ul {
+       list-style: disc outside;
+}
+ol {
+       list-style: decimal outside;
+}
+ul ul,
+ol ol,
+ul ol,
+ol ul {
+       margin-bottom: 0;
+}
+li {
+       margin: 0 0 0 24px;
+       margin: 0 0 0 1.714285714rem;
+}
+dl {
+       margin: 0 24px;
+       margin: 0 1.714285714rem;
+}
+dt {
+       font-weight: bold;
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+dd {
+       line-height: 1.714285714;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+}
+strong {
+       font-weight: bold;
+}
+cite,
+em,
+i {
+       font-style: italic;
+}
+cite {
+       border: none;
+}
+big {
+       font-size: 128.571429%;
+}
+.mceContentBody blockquote {
+       font-style: italic !important;
+       font-weight: normal;
+       margin: 0;
+       padding: 24px;
+       padding: 1.714285714rem;
+}
+pre {
+       border: 1px solid #ededed;
+       color: #666;
+       font-family: Consolas, Monaco, Lucida Console, monospace;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.714285714;
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+       overflow: auto;
+       padding: 24px;
+       padding: 1.714285714rem;
+}
+code,
+kbd,
+samp,
+var {
+       font-family: Consolas, Monaco, Lucida Console, monospace;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+}
+abbr,
+acronym,
+dfn {
+       border-bottom: 1px dotted #666;
+       cursor: help;
+}
+address {
+       display: block;
+       line-height: 1.714285714;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+}
+del {
+       color: #333;
+}
+ins {
+       background: #fff9c0;
+       border: none;
+       color: #333;
+       text-decoration: none;
+}
+sup,
+sub {
+       font-size: 75%;
+       line-height: 0;
+       position: relative;
+       vertical-align: baseline;
+}
+sup {
+       top: -0.5em;
+}
+sub {
+       bottom: -0.25em;
+}
+input[type="text"] {
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       font-family: inherit;
+       padding: 6px;
+       padding: 0.428571429rem;
+}
+textarea {
+       border: 1px solid #d5d2ca;
+       border-radius: 3px;
+       font-family: inherit;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.714285714;
+       padding: 10px;
+       padding: 0.714285714rem;
+       width: 96%;
+}
+
+
+/* =Links
+-------------------------------------------------------------- */
+
+a,
+a em,
+a strong {
+       color: #21759b;
+       outline: none;
+}
+a:focus,
+a:active,
+a:hover {
+       color: #0f3647;
+}
+
+
+/* =Alignment
+-------------------------------------------------------------- */
+
+.alignleft {
+       display: inline;
+       float: left;
+       margin: 12px 24px 12px 0;
+       margin: 0.857142857rem 1.714285714rem 0.857142857rem 0;
+}
+.alignright {
+       display: inline;
+       float: right;
+       margin: 12px 0 12px 24px;
+       margin: 0.857142857rem 0 0.857142857rem 1.714285714rem;
+}
+.aligncenter {
+       clear: both;
+       display: block;
+       margin-top: 12px;
+       margin-top: 0.857142857rem;
+       margin-bottom: 12px;
+       margin-bottom: 0.857142857rem;
+}
+
+
+/* =Tables
+-------------------------------------------------------------- */
+
+table {
+       border-bottom: 1px solid #ededed;
+       border-collapse: collapse;
+       border-spacing: 0;
+       color: #757575;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+       width: 100%;
+}
+tr th {
+       color: #636363;
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       font-weight: bold;
+       line-height: 2.181818182;
+       text-align: left;
+       text-transform: uppercase;
+}
+td {
+       border-top: 1px solid #ededed !important;
+       color: #757575;
+       font-size: inherit;
+       font-weight: normal;
+       padding: 6px 10px 6px 0;
+       text-align: left;
+}
+
+
+/* =Images
+-------------------------------------------------------------- */
+
+img,
+.editor-attachment {
+       border: 0;
+       border-radius: 3px;
+       box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
+       max-width: 100%;
+}
+img.size-full {
+       width: auto/9; /* Prevent stretching of full-size images in IE8 */
+}
+img[class*="wp-image-"] {
+       height: auto;
+       max-width: 100%;
+}
+img[class*="align"],
+img[class*="wp-image-"],
+img[class*="attachment-"] {
+       height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */
+}
+img.mceWPnextpage {
+       border-radius: 0;
+       box-shadow: none;
+}
+img.wp-smiley {
+       border: 0;
+       border-radius: 0;
+       box-shadow: none;
+       margin-bottom: 0;
+       margin-top: 0;
+       padding: 0;
+}
+.wp-caption {
+       background: transparent;
+       border: none;
+       margin: 0;
+       padding: 4px;
+       text-align: left;
+}
+.wp-caption-dt {
+       margin: 0;
+}
+.wp-caption .wp-caption-text,
+.wp-caption-dd {
+       color: #757575;
+       font-style: italic;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       margin: 0 0 24px;
+       margin: 0 0 1.71429rem;
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/footer.php b/wp-content/themes/twentytwelve/footer.php
new file mode 100644 (file)
index 0000000..91ca792
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+/**
+ * The template for displaying the footer.
+ *
+ * Contains footer content and the closing of the
+ * #main and #page div elements.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+       </div><!-- #main .wrapper -->
+       <footer id="colophon" role="contentinfo">
+               <div class="site-info">
+                       <?php do_action( 'twentytwelve_credits' ); ?>
+                       <a href="<?php echo esc_url( __( 'http://wordpress.org/', 'twentytwelve' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentytwelve' ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentytwelve' ), 'WordPress' ); ?></a>
+               </div><!-- .site-info -->
+       </footer><!-- #colophon -->
+</div><!-- #page -->
+
+<?php wp_footer(); ?>
+</body>
+</html>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/functions.php b/wp-content/themes/twentytwelve/functions.php
new file mode 100644 (file)
index 0000000..760c113
--- /dev/null
@@ -0,0 +1,450 @@
+<?php
+/**
+ * Twenty Twelve functions and definitions.
+ *
+ * Sets up the theme and provides some helper functions, which are used
+ * in the theme as custom template tags. Others are attached to action and
+ * filter hooks in WordPress to change core functionality.
+ *
+ * When using a child theme (see http://codex.wordpress.org/Theme_Development and
+ * http://codex.wordpress.org/Child_Themes), you can override certain functions
+ * (those wrapped in a function_exists() call) by defining them first in your child theme's
+ * functions.php file. The child theme's functions.php file is included before the parent
+ * theme's file, so the child theme functions would be used.
+ *
+ * Functions that are not pluggable (not wrapped in function_exists()) are instead attached
+ * to a filter or action hook.
+ *
+ * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+/**
+ * Sets up the content width value based on the theme's design and stylesheet.
+ */
+if ( ! isset( $content_width ) )
+       $content_width = 625;
+
+/**
+ * Sets up theme defaults and registers the various WordPress features that
+ * Twenty Twelve supports.
+ *
+ * @uses load_theme_textdomain() For translation/localization support.
+ * @uses add_editor_style() To add a Visual Editor stylesheet.
+ * @uses add_theme_support() To add support for post thumbnails, automatic feed links,
+ *     custom background, and post formats.
+ * @uses register_nav_menu() To add support for navigation menus.
+ * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_setup() {
+       /*
+        * Makes Twenty Twelve available for translation.
+        *
+        * Translations can be added to the /languages/ directory.
+        * If you're building a theme based on Twenty Twelve, use a find and replace
+        * to change 'twentytwelve' to the name of your theme in all the template files.
+        */
+       load_theme_textdomain( 'twentytwelve', get_template_directory() . '/languages' );
+
+       // This theme styles the visual editor with editor-style.css to match the theme style.
+       add_editor_style();
+
+       // Adds RSS feed links to <head> for posts and comments.
+       add_theme_support( 'automatic-feed-links' );
+
+       // This theme supports a variety of post formats.
+       add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) );
+
+       // This theme uses wp_nav_menu() in one location.
+       register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) );
+
+       /*
+        * This theme supports custom background color and image, and here
+        * we also set up the default background color.
+        */
+       add_theme_support( 'custom-background', array(
+               'default-color' => 'e6e6e6',
+       ) );
+
+       // This theme uses a custom image size for featured images, displayed on "standard" posts.
+       add_theme_support( 'post-thumbnails' );
+       set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop
+}
+add_action( 'after_setup_theme', 'twentytwelve_setup' );
+
+/**
+ * Adds support for a custom header image.
+ */
+require( get_template_directory() . '/inc/custom-header.php' );
+
+/**
+ * Enqueues scripts and styles for front-end.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_scripts_styles() {
+       global $wp_styles;
+
+       /*
+        * Adds JavaScript to pages with the comment form to support
+        * sites with threaded comments (when in use).
+        */
+       if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
+               wp_enqueue_script( 'comment-reply' );
+
+       /*
+        * Adds JavaScript for handling the navigation menu hide-and-show behavior.
+        */
+       wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
+
+       /*
+        * Loads our special font CSS file.
+        *
+        * The use of Open Sans by default is localized. For languages that use
+        * characters not supported by the font, the font can be disabled.
+        *
+        * To disable in a child theme, use wp_dequeue_style()
+        * function mytheme_dequeue_fonts() {
+        *     wp_dequeue_style( 'twentytwelve-fonts' );
+        * }
+        * add_action( 'wp_enqueue_scripts', 'mytheme_dequeue_fonts', 11 );
+        */
+
+       /* translators: If there are characters in your language that are not supported
+          by Open Sans, translate this to 'off'. Do not translate into your own language. */
+       if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) {
+               $subsets = 'latin,latin-ext';
+
+               /* translators: To add an additional Open Sans character subset specific to your language, translate
+                  this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */
+               $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' );
+
+               if ( 'cyrillic' == $subset )
+                       $subsets .= ',cyrillic,cyrillic-ext';
+               elseif ( 'greek' == $subset )
+                       $subsets .= ',greek,greek-ext';
+               elseif ( 'vietnamese' == $subset )
+                       $subsets .= ',vietnamese';
+
+               $protocol = is_ssl() ? 'https' : 'http';
+               $query_args = array(
+                       'family' => 'Open+Sans:400italic,700italic,400,700',
+                       'subset' => $subsets,
+               );
+               wp_enqueue_style( 'twentytwelve-fonts', add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ), array(), null );
+       }
+
+       /*
+        * Loads our main stylesheet.
+        */
+       wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri() );
+
+       /*
+        * Loads the Internet Explorer specific stylesheet.
+        */
+       wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' );
+       $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' );
+}
+add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' );
+
+/**
+ * Creates a nicely formatted and more specific title element text
+ * for output in head of document, based on current view.
+ *
+ * @since Twenty Twelve 1.0
+ *
+ * @param string $title Default title text for current view.
+ * @param string $sep Optional separator.
+ * @return string Filtered title.
+ */
+function twentytwelve_wp_title( $title, $sep ) {
+       global $paged, $page;
+
+       if ( is_feed() )
+               return $title;
+
+       // Add the site name.
+       $title .= get_bloginfo( 'name' );
+
+       // Add the site description for the home/front page.
+       $site_description = get_bloginfo( 'description', 'display' );
+       if ( $site_description && ( is_home() || is_front_page() ) )
+               $title = "$title $sep $site_description";
+
+       // Add a page number if necessary.
+       if ( $paged >= 2 || $page >= 2 )
+               $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) );
+
+       return $title;
+}
+add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );
+
+/**
+ * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_page_menu_args( $args ) {
+       if ( ! isset( $args['show_home'] ) )
+               $args['show_home'] = true;
+       return $args;
+}
+add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' );
+
+/**
+ * Registers our main widget area and the front page widget areas.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_widgets_init() {
+       register_sidebar( array(
+               'name' => __( 'Main Sidebar', 'twentytwelve' ),
+               'id' => 'sidebar-1',
+               'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
+               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
+               'after_widget' => '</aside>',
+               'before_title' => '<h3 class="widget-title">',
+               'after_title' => '</h3>',
+       ) );
+
+       register_sidebar( array(
+               'name' => __( 'First Front Page Widget Area', 'twentytwelve' ),
+               'id' => 'sidebar-2',
+               'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
+               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
+               'after_widget' => '</aside>',
+               'before_title' => '<h3 class="widget-title">',
+               'after_title' => '</h3>',
+       ) );
+
+       register_sidebar( array(
+               'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ),
+               'id' => 'sidebar-3',
+               'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
+               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
+               'after_widget' => '</aside>',
+               'before_title' => '<h3 class="widget-title">',
+               'after_title' => '</h3>',
+       ) );
+}
+add_action( 'widgets_init', 'twentytwelve_widgets_init' );
+
+if ( ! function_exists( 'twentytwelve_content_nav' ) ) :
+/**
+ * Displays navigation to next/previous pages when applicable.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_content_nav( $html_id ) {
+       global $wp_query;
+
+       $html_id = esc_attr( $html_id );
+
+       if ( $wp_query->max_num_pages > 1 ) : ?>
+               <nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
+                       <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
+                       <div class="nav-previous alignleft"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
+                       <div class="nav-next alignright"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?></div>
+               </nav><!-- #<?php echo $html_id; ?> .navigation -->
+       <?php endif;
+}
+endif;
+
+if ( ! function_exists( 'twentytwelve_comment' ) ) :
+/**
+ * Template for comments and pingbacks.
+ *
+ * To override this walker in a child theme without modifying the comments template
+ * simply create your own twentytwelve_comment(), and that function will be used instead.
+ *
+ * Used as a callback by wp_list_comments() for displaying the comments.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_comment( $comment, $args, $depth ) {
+       $GLOBALS['comment'] = $comment;
+       switch ( $comment->comment_type ) :
+               case 'pingback' :
+               case 'trackback' :
+               // Display trackbacks differently than normal comments.
+       ?>
+       <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
+               <p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p>
+       <?php
+                       break;
+               default :
+               // Proceed with normal comments.
+               global $post;
+       ?>
+       <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
+               <article id="comment-<?php comment_ID(); ?>" class="comment">
+                       <header class="comment-meta comment-author vcard">
+                               <?php
+                                       echo get_avatar( $comment, 44 );
+                                       printf( '<cite class="fn">%1$s %2$s</cite>',
+                                               get_comment_author_link(),
+                                               // If current post author is also comment author, make it known visually.
+                                               ( $comment->user_id === $post->post_author ) ? '<span> ' . __( 'Post author', 'twentytwelve' ) . '</span>' : ''
+                                       );
+                                       printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
+                                               esc_url( get_comment_link( $comment->comment_ID ) ),
+                                               get_comment_time( 'c' ),
+                                               /* translators: 1: date, 2: time */
+                                               sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() )
+                                       );
+                               ?>
+                       </header><!-- .comment-meta -->
+
+                       <?php if ( '0' == $comment->comment_approved ) : ?>
+                               <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentytwelve' ); ?></p>
+                       <?php endif; ?>
+
+                       <section class="comment-content comment">
+                               <?php comment_text(); ?>
+                               <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?>
+                       </section><!-- .comment-content -->
+
+                       <div class="reply">
+                               <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'twentytwelve' ), 'after' => ' <span>&darr;</span>', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
+                       </div><!-- .reply -->
+               </article><!-- #comment-## -->
+       <?php
+               break;
+       endswitch; // end comment_type check
+}
+endif;
+
+if ( ! function_exists( 'twentytwelve_entry_meta' ) ) :
+/**
+ * Prints HTML with meta information for current post: categories, tags, permalink, author, and date.
+ *
+ * Create your own twentytwelve_entry_meta() to override in a child theme.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_entry_meta() {
+       // Translators: used between list items, there is a space after the comma.
+       $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) );
+
+       // Translators: used between list items, there is a space after the comma.
+       $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) );
+
+       $date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>',
+               esc_url( get_permalink() ),
+               esc_attr( get_the_time() ),
+               esc_attr( get_the_date( 'c' ) ),
+               esc_html( get_the_date() )
+       );
+
+       $author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
+               esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
+               esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
+               get_the_author()
+       );
+
+       // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name.
+       if ( $tag_list ) {
+               $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
+       } elseif ( $categories_list ) {
+               $utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
+       } else {
+               $utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
+       }
+
+       printf(
+               $utility_text,
+               $categories_list,
+               $tag_list,
+               $date,
+               $author
+       );
+}
+endif;
+
+/**
+ * Extends the default WordPress body class to denote:
+ * 1. Using a full-width layout, when no active widgets in the sidebar
+ *    or full-width template.
+ * 2. Front Page template: thumbnail in use and number of sidebars for
+ *    widget areas.
+ * 3. White or empty background color to change the layout and spacing.
+ * 4. Custom fonts enabled.
+ * 5. Single or multiple authors.
+ *
+ * @since Twenty Twelve 1.0
+ *
+ * @param array Existing class values.
+ * @return array Filtered class values.
+ */
+function twentytwelve_body_class( $classes ) {
+       $background_color = get_background_color();
+
+       if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) )
+               $classes[] = 'full-width';
+
+       if ( is_page_template( 'page-templates/front-page.php' ) ) {
+               $classes[] = 'template-front-page';
+               if ( has_post_thumbnail() )
+                       $classes[] = 'has-post-thumbnail';
+               if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) )
+                       $classes[] = 'two-sidebars';
+       }
+
+       if ( empty( $background_color ) )
+               $classes[] = 'custom-background-empty';
+       elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) )
+               $classes[] = 'custom-background-white';
+
+       // Enable custom font class only if the font CSS is queued to load.
+       if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) )
+               $classes[] = 'custom-font-enabled';
+
+       if ( ! is_multi_author() )
+               $classes[] = 'single-author';
+
+       return $classes;
+}
+add_filter( 'body_class', 'twentytwelve_body_class' );
+
+/**
+ * Adjusts content_width value for full-width and single image attachment
+ * templates, and when there are no active widgets in the sidebar.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_content_width() {
+       if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) {
+               global $content_width;
+               $content_width = 960;
+       }
+}
+add_action( 'template_redirect', 'twentytwelve_content_width' );
+
+/**
+ * Add postMessage support for site title and description for the Theme Customizer.
+ *
+ * @since Twenty Twelve 1.0
+ *
+ * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+ * @return void
+ */
+function twentytwelve_customize_register( $wp_customize ) {
+       $wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
+       $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
+}
+add_action( 'customize_register', 'twentytwelve_customize_register' );
+
+/**
+ * Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_customize_preview_js() {
+       wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20120827', true );
+}
+add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );
diff --git a/wp-content/themes/twentytwelve/header.php b/wp-content/themes/twentytwelve/header.php
new file mode 100644 (file)
index 0000000..2d3dfa6
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**
+ * The Header for our theme.
+ *
+ * Displays all of the <head> section and everything up till <div id="main">
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?><!DOCTYPE html>
+<!--[if IE 7]>
+<html class="ie ie7" <?php language_attributes(); ?>>
+<![endif]-->
+<!--[if IE 8]>
+<html class="ie ie8" <?php language_attributes(); ?>>
+<![endif]-->
+<!--[if !(IE 7) | !(IE 8)  ]><!-->
+<html <?php language_attributes(); ?>>
+<!--<![endif]-->
+<head>
+<meta charset="<?php bloginfo( 'charset' ); ?>" />
+<meta name="viewport" content="width=device-width" />
+<title><?php wp_title( '|', true, 'right' ); ?></title>
+<link rel="profile" href="http://gmpg.org/xfn/11" />
+<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
+<?php // Loads HTML5 JavaScript file to add support for HTML5 elements in older IE versions. ?>
+<!--[if lt IE 9]>
+<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
+<![endif]-->
+<?php wp_head(); ?>
+</head>
+
+<body <?php body_class(); ?>>
+<div id="page" class="hfeed site">
+       <header id="masthead" class="site-header" role="banner">
+               <hgroup>
+                       <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
+                       <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2>
+               </hgroup>
+
+               <nav id="site-navigation" class="main-navigation" role="navigation">
+                       <h3 class="menu-toggle"><?php _e( 'Menu', 'twentytwelve' ); ?></h3>
+                       <a class="assistive-text" href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentytwelve' ); ?>"><?php _e( 'Skip to content', 'twentytwelve' ); ?></a>
+                       <?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>
+               </nav><!-- #site-navigation -->
+
+               <?php $header_image = get_header_image();
+               if ( ! empty( $header_image ) ) : ?>
+                       <a href="<?php echo esc_url( home_url( '/' ) ); ?>"><img src="<?php echo esc_url( $header_image ); ?>" class="header-image" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" /></a>
+               <?php endif; ?>
+       </header><!-- #masthead -->
+
+       <div id="main" class="wrapper">
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/image.php b/wp-content/themes/twentytwelve/image.php
new file mode 100644 (file)
index 0000000..b2fcb42
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+/**
+ * The template for displaying image attachments.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php while ( have_posts() ) : the_post(); ?>
+
+                               <article id="post-<?php the_ID(); ?>" <?php post_class( 'image-attachment' ); ?>>
+                                       <header class="entry-header">
+                                               <h1 class="entry-title"><?php the_title(); ?></h1>
+
+                                               <footer class="entry-meta">
+                                                       <?php
+                                                               $metadata = wp_get_attachment_metadata();
+                                                               printf( __( '<span class="meta-prep meta-prep-entry-date">Published </span> <span class="entry-date"><time class="entry-date" datetime="%1$s">%2$s</time></span> at <a href="%3$s" title="Link to full-size image">%4$s &times; %5$s</a> in <a href="%6$s" title="Return to %7$s" rel="gallery">%8$s</a>.', 'twentytwelve' ),
+                                                                       esc_attr( get_the_date( 'c' ) ),
+                                                                       esc_html( get_the_date() ),
+                                                                       esc_url( wp_get_attachment_url() ),
+                                                                       $metadata['width'],
+                                                                       $metadata['height'],
+                                                                       esc_url( get_permalink( $post->post_parent ) ),
+                                                                       esc_attr( strip_tags( get_the_title( $post->post_parent ) ) ),
+                                                                       get_the_title( $post->post_parent )
+                                                               );
+                                                       ?>
+                                                       <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
+                                               </footer><!-- .entry-meta -->
+
+                                               <nav id="image-navigation" class="navigation" role="navigation">
+                                                       <span class="previous-image"><?php previous_image_link( false, __( '&larr; Previous', 'twentytwelve' ) ); ?></span>
+                                                       <span class="next-image"><?php next_image_link( false, __( 'Next &rarr;', 'twentytwelve' ) ); ?></span>
+                                               </nav><!-- #image-navigation -->
+                                       </header><!-- .entry-header -->
+
+                                       <div class="entry-content">
+
+                                               <div class="entry-attachment">
+                                                       <div class="attachment">
+<?php
+/**
+ * Grab the IDs of all the image attachments in a gallery so we can get the URL of the next adjacent image in a gallery,
+ * or the first image (if we're looking at the last image in a gallery), or, in a gallery of one, just the link to that image file
+ */
+$attachments = array_values( get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) );
+foreach ( $attachments as $k => $attachment ) :
+       if ( $attachment->ID == $post->ID )
+               break;
+endforeach;
+
+$k++;
+// If there is more than 1 attachment in a gallery
+if ( count( $attachments ) > 1 ) :
+       if ( isset( $attachments[ $k ] ) ) :
+               // get the URL of the next image attachment
+               $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID );
+       else :
+               // or get the URL of the first image attachment
+               $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID );
+       endif;
+else :
+       // or, if there's only 1 image, get the URL of the image
+       $next_attachment_url = wp_get_attachment_url();
+endif;
+?>
+                                                               <a href="<?php echo esc_url( $next_attachment_url ); ?>" title="<?php the_title_attribute(); ?>" rel="attachment"><?php
+                                                               $attachment_size = apply_filters( 'twentytwelve_attachment_size', array( 960, 960 ) );
+                                                               echo wp_get_attachment_image( $post->ID, $attachment_size );
+                                                               ?></a>
+
+                                                               <?php if ( ! empty( $post->post_excerpt ) ) : ?>
+                                                               <div class="entry-caption">
+                                                                       <?php the_excerpt(); ?>
+                                                               </div>
+                                                               <?php endif; ?>
+                                                       </div><!-- .attachment -->
+
+                                               </div><!-- .entry-attachment -->
+
+                                               <div class="entry-description">
+                                                       <?php the_content(); ?>
+                                                       <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentytwelve' ), 'after' => '</div>' ) ); ?>
+                                               </div><!-- .entry-description -->
+
+                                       </div><!-- .entry-content -->
+
+                               </article><!-- #post -->
+
+                               <?php comments_template(); ?>
+
+                       <?php endwhile; // end of the loop. ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/inc/custom-header.php b/wp-content/themes/twentytwelve/inc/custom-header.php
new file mode 100644 (file)
index 0000000..f94d0e8
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+/**
+ * Implements an optional custom header for Twenty Twelve.
+ * See http://codex.wordpress.org/Custom_Headers
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+/**
+ * Sets up the WordPress core custom header arguments and settings.
+ *
+ * @uses add_theme_support() to register support for 3.4 and up.
+ * @uses twentytwelve_header_style() to style front-end.
+ * @uses twentytwelve_admin_header_style() to style wp-admin form.
+ * @uses twentytwelve_admin_header_image() to add custom markup to wp-admin form.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_custom_header_setup() {
+       $args = array(
+               // Text color and image (empty to use none).
+               'default-text-color'     => '444',
+               'default-image'          => '',
+
+               // Set height and width, with a maximum value for the width.
+               'height'                 => 250,
+               'width'                  => 960,
+               'max-width'              => 2000,
+
+               // Support flexible height and width.
+               'flex-height'            => true,
+               'flex-width'             => true,
+
+               // Random image rotation off by default.
+               'random-default'         => false,
+
+               // Callbacks for styling the header and the admin preview.
+               'wp-head-callback'       => 'twentytwelve_header_style',
+               'admin-head-callback'    => 'twentytwelve_admin_header_style',
+               'admin-preview-callback' => 'twentytwelve_admin_header_image',
+       );
+
+       add_theme_support( 'custom-header', $args );
+}
+add_action( 'after_setup_theme', 'twentytwelve_custom_header_setup' );
+
+/**
+ * Styles the header text displayed on the blog.
+ *
+ * get_header_textcolor() options: 444 is default, hide text (returns 'blank'), or any hex value.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_header_style() {
+       $text_color = get_header_textcolor();
+
+       // If no custom options for text are set, let's bail
+       if ( $text_color == get_theme_support( 'custom-header', 'default-text-color' ) )
+               return;
+
+       // If we get this far, we have custom styles.
+       ?>
+       <style type="text/css">
+       <?php
+               // Has the text been hidden?
+               if ( ! display_header_text() ) :
+       ?>
+               .site-title,
+               .site-description {
+                       position: absolute !important;
+                       clip: rect(1px 1px 1px 1px); /* IE7 */
+                       clip: rect(1px, 1px, 1px, 1px);
+               }
+       <?php
+               // If the user has set a custom color for the text, use that.
+               else :
+       ?>
+               .site-title a,
+               .site-description {
+                       color: #<?php echo $text_color; ?> !important;
+               }
+       <?php endif; ?>
+       </style>
+       <?php
+}
+
+/**
+ * Styles the header image displayed on the Appearance > Header admin panel.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_admin_header_style() {
+?>
+       <style type="text/css">
+       .appearance_page_custom-header #headimg {
+               border: none;
+       }
+       #headimg h1,
+       #headimg h2 {
+               line-height: 1.6;
+               margin: 0;
+               padding: 0;
+       }
+       #headimg h1 {
+               font-size: 30px;
+       }
+       #headimg h1 a {
+               color: #515151;
+               text-decoration: none;
+       }
+       #headimg h1 a:hover {
+               color: #21759b;
+       }
+       #headimg h2 {
+               color: #757575;
+               font: normal 13px/1.8 "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
+               margin-bottom: 24px;
+       }
+       #headimg img {
+               max-width: <?php echo get_theme_support( 'custom-header', 'max-width' ); ?>px;
+       }
+       </style>
+<?php
+}
+
+/**
+ * Outputs markup to be displayed on the Appearance > Header admin panel.
+ * This callback overrides the default markup displayed there.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_admin_header_image() {
+       ?>
+       <div id="headimg">
+               <?php
+               if ( ! display_header_text() )
+                       $style = ' style="display:none;"';
+               else
+                       $style = ' style="color:#' . get_header_textcolor() . ';"';
+               ?>
+               <h1><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
+               <h2 id="desc"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></h2>
+               <?php $header_image = get_header_image();
+               if ( ! empty( $header_image ) ) : ?>
+                       <img src="<?php echo esc_url( $header_image ); ?>" class="header-image" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
+               <?php endif; ?>
+       </div>
+<?php }
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/index.php b/wp-content/themes/twentytwelve/index.php
new file mode 100644 (file)
index 0000000..91201b4
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * The main template file.
+ *
+ * This is the most generic template file in a WordPress theme
+ * and one of the two required files for a theme (the other being style.css).
+ * It is used to display a page when nothing more specific matches a query.
+ * For example, it puts together the home page when no home.php file exists.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+               <?php if ( have_posts() ) : ?>
+
+                       <?php /* Start the Loop */ ?>
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php get_template_part( 'content', get_post_format() ); ?>
+                       <?php endwhile; ?>
+
+                       <?php twentytwelve_content_nav( 'nav-below' ); ?>
+
+               <?php else : ?>
+
+                       <article id="post-0" class="post no-results not-found">
+
+                       <?php if ( current_user_can( 'edit_posts' ) ) :
+                               // Show a different message to a logged-in user who can add posts.
+                       ?>
+                               <header class="entry-header">
+                                       <h1 class="entry-title"><?php _e( 'No posts to display', 'twentytwelve' ); ?></h1>
+                               </header>
+
+                               <div class="entry-content">
+                                       <p><?php printf( __( 'Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?></p>
+                               </div><!-- .entry-content -->
+
+                       <?php else :
+                               // Show the default message to everyone else.
+                       ?>
+                               <header class="entry-header">
+                                       <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
+                               </header>
+
+                               <div class="entry-content">
+                                       <p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
+                                       <?php get_search_form(); ?>
+                               </div><!-- .entry-content -->
+                       <?php endif; // end current_user_can() check ?>
+
+                       </article><!-- #post-0 -->
+
+               <?php endif; // end have_posts() check ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/js/html5.js b/wp-content/themes/twentytwelve/js/html5.js
new file mode 100644 (file)
index 0000000..a788916
--- /dev/null
@@ -0,0 +1,7 @@
+/*! HTML5 Shiv v3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
+/* Source: https://github.com/aFarkas/html5shiv */
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");
+var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,
+b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/js/navigation.js b/wp-content/themes/twentytwelve/js/navigation.js
new file mode 100644 (file)
index 0000000..915e25a
--- /dev/null
@@ -0,0 +1,33 @@
+/**
+ * navigation.js
+ *
+ * Handles toggling the navigation menu for small screens.
+ */
+( function() {
+       var nav = document.getElementById( 'site-navigation' ), button, menu;
+       if ( ! nav )
+               return;
+       button = nav.getElementsByTagName( 'h3' )[0];
+       menu   = nav.getElementsByTagName( 'ul' )[0];
+       if ( ! button )
+               return;
+
+       // Hide button if menu is missing or empty.
+       if ( ! menu || ! menu.childNodes.length ) {
+               button.style.display = 'none';
+               return;
+       }
+
+       button.onclick = function() {
+               if ( -1 == menu.className.indexOf( 'nav-menu' ) )
+                       menu.className = 'nav-menu';
+
+               if ( -1 != button.className.indexOf( 'toggled-on' ) ) {
+                       button.className = button.className.replace( ' toggled-on', '' );
+                       menu.className = menu.className.replace( ' toggled-on', '' );
+               } else {
+                       button.className += ' toggled-on';
+                       menu.className += ' toggled-on';
+               }
+       };
+} )();
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/js/theme-customizer.js b/wp-content/themes/twentytwelve/js/theme-customizer.js
new file mode 100644 (file)
index 0000000..c1018b0
--- /dev/null
@@ -0,0 +1,32 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ * Things like site title, description, and background color changes.
+ */
+
+( function( $ ) {
+       // Site title and description.
+       wp.customize( 'blogname', function( value ) {
+               value.bind( function( to ) {
+                       $( '.site-title a' ).html( to );
+               } );
+       } );
+       wp.customize( 'blogdescription', function( value ) {
+               value.bind( function( to ) {
+                       $( '.site-description' ).html( to );
+               } );
+       } );
+
+       // Hook into background color change and adjust body class value as needed.
+       wp.customize( 'background_color', function( value ) {
+               value.bind( function( to ) {
+                       if ( '#ffffff' == to || '#fff' == to )
+                               $( 'body' ).addClass( 'custom-background-white' );
+                       else if ( '' == to )
+                               $( 'body' ).addClass( 'custom-background-empty' );
+                       else
+                               $( 'body' ).removeClass( 'custom-background-empty custom-background-white' );
+               } );
+       } );
+} )( jQuery );
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/languages/twentytwelve.pot b/wp-content/themes/twentytwelve/languages/twentytwelve.pot
new file mode 100644 (file)
index 0000000..0f88f5a
--- /dev/null
@@ -0,0 +1,350 @@
+# Copyright (C) 2012 the WordPress team
+# This file is distributed under the GNU General Public License v2 or later.
+msgid ""
+msgstr ""
+"Project-Id-Version: Twenty Twelve 1.1\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentytwelve\n"
+"POT-Creation-Date: 2012-12-07 21:19:18+00:00\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+
+#: 404.php:17
+msgid "This is somewhat embarrassing, isn&rsquo;t it?"
+msgstr ""
+
+#: 404.php:21
+msgid ""
+"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
+"searching can help."
+msgstr ""
+
+#: archive.php:29
+msgid "Daily Archives: %s"
+msgstr ""
+
+#: archive.php:31
+msgid "Monthly Archives: %s"
+msgstr ""
+
+#: archive.php:31
+msgctxt "monthly archives date format"
+msgid "F Y"
+msgstr ""
+
+#: archive.php:33
+msgid "Yearly Archives: %s"
+msgstr ""
+
+#: archive.php:33
+msgctxt "yearly archives date format"
+msgid "Y"
+msgstr ""
+
+#: archive.php:35
+msgid "Archives"
+msgstr ""
+
+#: author.php:32
+msgid "Author Archives: %s"
+msgstr ""
+
+#: author.php:53 content.php:53
+msgid "About %s"
+msgstr ""
+
+#: category.php:21
+msgid "Category Archives: %s"
+msgstr ""
+
+#: comments.php:31
+msgid "One thought on &ldquo;%2$s&rdquo;"
+msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
+msgstr[0] ""
+msgstr[1] ""
+
+#: comments.php:42
+msgid "Comment navigation"
+msgstr ""
+
+#: comments.php:43
+msgid "&larr; Older Comments"
+msgstr ""
+
+#: comments.php:44
+msgid "Newer Comments &rarr;"
+msgstr ""
+
+#: comments.php:53
+msgid "Comments are closed."
+msgstr ""
+
+#: content-aside.php:13 content-aside.php:20 content-image.php:17
+#: content-link.php:18 content-quote.php:17 content-status.php:15
+#: content.php:23
+msgid "Permalink to %s"
+msgstr ""
+
+#: content-aside.php:15 content-image.php:13 content-link.php:14
+#: content-quote.php:13 content-status.php:21 content.php:39
+msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
+msgstr ""
+
+#: content-aside.php:23 content-image.php:23 content-link.php:21
+#: content-quote.php:20 content-status.php:27 content.php:28
+msgid "Leave a reply"
+msgstr ""
+
+#: content-aside.php:23 content-image.php:23 content-link.php:21
+#: content-quote.php:20 content-status.php:27 content.php:28
+msgid "1 Reply"
+msgstr ""
+
+#: content-aside.php:23 content-image.php:23 content-link.php:21
+#: content-quote.php:20 content-status.php:27 content.php:28
+msgid "% Replies"
+msgstr ""
+
+#: content-aside.php:26 content-image.php:26 content-link.php:24
+#: content-page.php:21 content-quote.php:23 content-status.php:30
+#: content.php:46 functions.php:309 image.php:37
+msgid "Edit"
+msgstr ""
+
+#: content-link.php:12
+msgid "Link"
+msgstr ""
+
+#: content-none.php:13 index.php:49 search.php:34
+msgid "Nothing Found"
+msgstr ""
+
+#: content-none.php:17 index.php:53
+msgid ""
+"Apologies, but no results were found. Perhaps searching will help find a "
+"related post."
+msgstr ""
+
+#: content-page.php:18 content.php:40 image.php:92
+msgid "Pages:"
+msgstr ""
+
+#: content.php:14
+msgid "Featured post"
+msgstr ""
+
+#: content.php:57
+msgid "View all posts by %s <span class=\"meta-nav\">&rarr;</span>"
+msgstr ""
+
+#. #-#-#-#-#  twentytwelve.pot (Twenty Twelve 1.1)  #-#-#-#-#
+#. Author URI of the plugin/theme
+#: footer.php:17
+msgid "http://wordpress.org/"
+msgstr ""
+
+#: footer.php:17
+msgid "Semantic Personal Publishing Platform"
+msgstr ""
+
+#: footer.php:17
+msgid "Proudly powered by %s"
+msgstr ""
+
+#: functions.php:64
+msgid "Primary Menu"
+msgstr ""
+
+#. translators: If there are characters in your language that are not supported
+#.        by Open Sans, translate this to 'off'. Do not translate into your own
+#. language.
+#: functions.php:120
+msgctxt "Open Sans font: on or off"
+msgid "on"
+msgstr ""
+
+#. translators: To add an additional Open Sans character subset specific to
+#. your language, translate
+#.                this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your
+#. own language.
+#: functions.php:125
+msgctxt "Open Sans font: add new subset (greek, cyrillic, vietnamese)"
+msgid "no-subset"
+msgstr ""
+
+#: functions.php:181
+msgid "Page %s"
+msgstr ""
+
+#: functions.php:206
+msgid "Main Sidebar"
+msgstr ""
+
+#: functions.php:208
+msgid ""
+"Appears on posts and pages except the optional Front Page template, which "
+"has its own widgets"
+msgstr ""
+
+#: functions.php:216
+msgid "First Front Page Widget Area"
+msgstr ""
+
+#: functions.php:218 functions.php:228
+msgid ""
+"Appears when using the optional Front Page template with a page set as "
+"Static Front Page"
+msgstr ""
+
+#: functions.php:226
+msgid "Second Front Page Widget Area"
+msgstr ""
+
+#: functions.php:250 single.php:20
+msgid "Post navigation"
+msgstr ""
+
+#: functions.php:251
+msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
+msgstr ""
+
+#: functions.php:252
+msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
+msgstr ""
+
+#: functions.php:277
+msgid "Pingback:"
+msgstr ""
+
+#: functions.php:277
+msgid "(Edit)"
+msgstr ""
+
+#: functions.php:292
+msgid "Post author"
+msgstr ""
+
+#. translators: 1: date, 2: time
+#: functions.php:298
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: functions.php:304
+msgid "Your comment is awaiting moderation."
+msgstr ""
+
+#: functions.php:313
+msgid "Reply"
+msgstr ""
+
+#: functions.php:332 functions.php:335
+msgid ", "
+msgstr ""
+
+#: functions.php:346
+msgid "View all posts by %s"
+msgstr ""
+
+#: functions.php:352
+msgid ""
+"This entry was posted in %1$s and tagged %2$s on %3$s<span class=\"by-author"
+"\"> by %4$s</span>."
+msgstr ""
+
+#: functions.php:354
+msgid ""
+"This entry was posted in %1$s on %3$s<span class=\"by-author\"> by %4$s</"
+"span>."
+msgstr ""
+
+#: functions.php:356
+msgid "This entry was posted on %3$s<span class=\"by-author\"> by %4$s</span>."
+msgstr ""
+
+#: header.php:43
+msgid "Menu"
+msgstr ""
+
+#: header.php:44
+msgid "Skip to content"
+msgstr ""
+
+#: image.php:26
+msgid ""
+"<span class=\"meta-prep meta-prep-entry-date\">Published </span> <span class="
+"\"entry-date\"><time class=\"entry-date\" datetime=\"%1$s\">%2$s</time></"
+"span> at <a href=\"%3$s\" title=\"Link to full-size image\">%4$s &times; %5"
+"$s</a> in <a href=\"%6$s\" title=\"Return to %7$s\" rel=\"gallery\">%8$s</a>."
+msgstr ""
+
+#: image.php:41
+msgid "&larr; Previous"
+msgstr ""
+
+#: image.php:42
+msgid "Next &rarr;"
+msgstr ""
+
+#: index.php:38
+msgid "No posts to display"
+msgstr ""
+
+#: index.php:42
+msgid "Ready to publish your first post? <a href=\"%s\">Get started here</a>."
+msgstr ""
+
+#: search.php:18
+msgid "Search Results for: %s"
+msgstr ""
+
+#: search.php:38
+msgid ""
+"Sorry, but nothing matched your search criteria. Please try again with some "
+"different keywords."
+msgstr ""
+
+#: single.php:21
+msgctxt "Previous post link"
+msgid "&larr;"
+msgstr ""
+
+#: single.php:22
+msgctxt "Next post link"
+msgid "&rarr;"
+msgstr ""
+
+#: tag.php:21
+msgid "Tag Archives: %s"
+msgstr ""
+
+#. Theme Name of the plugin/theme
+msgid "Twenty Twelve"
+msgstr ""
+
+#. Theme URI of the plugin/theme
+msgid "http://wordpress.org/extend/themes/twentytwelve"
+msgstr ""
+
+#. Description of the plugin/theme
+msgid ""
+"The 2012 theme for WordPress is a fully responsive theme that looks great on "
+"any device. Features include a front page template with its own widgets, an "
+"optional display font, styling for post formats on both index and single "
+"views, and an optional no-sidebar page template. Make it yours with a custom "
+"menu, header image, and background."
+msgstr ""
+
+#. Author of the plugin/theme
+msgid "the WordPress team"
+msgstr ""
+
+#. Template Name of the plugin/theme
+msgid "Front Page Template"
+msgstr ""
+
+#. Template Name of the plugin/theme
+msgid "Full-width Page Template, No Sidebar"
+msgstr ""
diff --git a/wp-content/themes/twentytwelve/page-templates/front-page.php b/wp-content/themes/twentytwelve/page-templates/front-page.php
new file mode 100644 (file)
index 0000000..9ae4f27
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Template Name: Front Page Template
+ *
+ * Description: A page template that provides a key component of WordPress as a CMS
+ * by meeting the need for a carefully crafted introductory page. The front page template
+ * in Twenty Twelve consists of a page content area for adding text, images, video --
+ * anything you'd like -- followed by front-page-only widgets in one or two columns.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php if ( has_post_thumbnail() ) : ?>
+                                       <div class="entry-page-image">
+                                               <?php the_post_thumbnail(); ?>
+                                       </div><!-- .entry-page-image -->
+                               <?php endif; ?>
+
+                               <?php get_template_part( 'content', 'page' ); ?>
+
+                       <?php endwhile; // end of the loop. ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_sidebar( 'front' ); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/page-templates/full-width.php b/wp-content/themes/twentytwelve/page-templates/full-width.php
new file mode 100644 (file)
index 0000000..b0ce333
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Template Name: Full-width Page Template, No Sidebar
+ *
+ * Description: Twenty Twelve loves the no-sidebar look as much as
+ * you do. Use this page template to remove the sidebar from any page.
+ *
+ * Tip: to remove the sidebar from all posts and pages simply remove
+ * any active widgets from the Main Sidebar area, and the sidebar will
+ * disappear everywhere.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php get_template_part( 'content', 'page' ); ?>
+                               <?php comments_template( '', true ); ?>
+                       <?php endwhile; // end of the loop. ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/page.php b/wp-content/themes/twentytwelve/page.php
new file mode 100644 (file)
index 0000000..dcda990
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+/**
+ * The template for displaying all pages.
+ *
+ * This is the template that displays all pages by default.
+ * Please note that this is the WordPress construct of pages
+ * and that other 'pages' on your WordPress site will use a
+ * different template.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php get_template_part( 'content', 'page' ); ?>
+                               <?php comments_template( '', true ); ?>
+                       <?php endwhile; // end of the loop. ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/rtl.css b/wp-content/themes/twentytwelve/rtl.css
new file mode 100644 (file)
index 0000000..cb989a1
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+Theme Name: Twenty Twelve
+Description: Adds support for languages written in a Right To Left (RTL) direction.
+It's easy, just a matter of overwriting all the horizontal positioning attributes
+of your CSS stylesheet in a separate stylesheet file named rtl.css.
+
+See http://codex.wordpress.org/Right_to_Left_Language_Support
+*/
+
+
+body {
+       direction: rtl;
+       unicode-bidi: embed;
+}
+caption,
+th,
+td {
+       text-align: right;
+}
+
+/* =Repeatable patterns
+-------------------------------------------------------------- */
+
+/* Images */
+.site-content .gallery-columns-4 .gallery-item {
+       padding-left: 2%;
+       padding-right: 0;
+}
+.site-content .gallery-columns-5 .gallery-item {
+       padding-left: 2%;
+       padding-right: 0;
+}
+
+/* Navigation */
+.nav-previous,
+.previous-image {
+       float: right;
+}
+.nav-next,
+.next-image {
+       float: left;
+       text-align: left;
+}
+
+/* Author profiles */
+.author-avatar {
+       float: right;
+}
+.author-description {
+       float: right;
+       margin-right: 15px;
+       margin-right: 1.071428571rem;
+       margin-left: auto;
+}
+
+
+/* =Main Content
+----------------------------------------------- */
+
+.comment-content ol,
+.comment-content ul {
+       margin: 0 24px 0 0;
+       margin: 0 1.714285714rem 0 0;
+}
+
+
+/* =Basic post styling
+-------------------------------------------------------------- */
+
+.entry-content li,
+.comment-content li {
+       margin: 0 24px 0 0;
+       margin: 0 1.714285714rem 0 0;
+}
+.entry-content td,
+.comment-content td {
+       padding: 6px 0 6px 10px;
+}
+
+
+/* Aside posts */
+article.format-aside .aside {
+       border-right: 22px solid #a8bfe8;
+       border-left: none;
+}
+
+/* Link posts */
+article.format-link header {
+       float: left;
+}
+article.format-link .entry-content {
+       float: right;
+}
+
+/* Status posts */
+.format-status .entry-header img {
+       float: right;
+       margin-left: 21px;
+       margin-left: 1.5rem;
+       margin-right: 0;
+}
+
+
+/* =Comment styling
+-------------------------------------------------------------- */
+
+.comments-area article header img {
+       float: right;
+}
+.comments-area article header cite,
+.comments-area article header time {
+       margin-right: 85px;
+       margin-right: 6.071428571rem;
+       margin-left: auto;
+}
+.comments-area article header h4 {
+       left: 0;
+       right: auto;
+}
+.comments-area li.bypostauthor cite span {
+       margin-right: 5px;
+       margin-right: 0.357142857rem;
+       margin-left: auto;
+}
+
+/* Comment form */
+#respond h3#reply-title #cancel-comment-reply-link {
+       margin-right: 10px;
+       margin-right: 0.714285714rem;
+       margin-left: auto;
+}
+label ~ span.required {
+       float: right;
+       margin: -18px -16px 0 0;
+       margin: -1.285714286rem -1.142857143rem 0 0;
+}
+
+
+/* =Front page template styling
+-------------------------------------------------------------- */
+
+.template-front-page .widget-area .widget_text img {
+       float: right;
+       margin: 8px 0 8px 24px;
+       margin: 0.571428571rem 0 0.571428571rem 1.714285714rem;
+}
+
+
+/* =Widget styling
+-------------------------------------------------------------- */
+
+.widget-area .widget ul ul {
+       margin-right: 12px;
+       margin-right: 0.857142857rem;
+       margin-left: auto;
+}
+.widget-area .textwidget li {
+       margin-left: auto;
+       margin-right: 36px;
+       margin-right: 2.571428571rem;
+}
+.widget_recent_entries .post-date,
+.widget_rss .rss-date {
+       margin-right: 12px;
+       margin-right: 0.857142857rem;
+       margin-left: auto;
+}
+#wp-calendar th,
+#wp-calendar td,
+#wp-calendar caption {
+       text-align: right;
+}
+#wp-calendar #next {
+       padding-left: 24px;
+       padding-left: 1.714285714rem;
+       text-align: left;
+       padding-right: 0;
+}
+
+/* =Media queries
+-------------------------------------------------------------- */
+
+/* Minimum width of 600 pixels. */
+@media screen and (min-width: 600px) {
+       .site-content,
+       .template-front-page.has-post-thumbnail article {
+               float: right;
+       }
+       .widget-area,
+       .entry-page-image {
+               float: left;
+       }
+       .site-header h1,
+       .site-header h2 {
+               text-align: right;
+       }
+       .template-front-page .widget-area .widget_text img {
+               float: right;
+               margin: 8px 0 8px 24px;
+       }
+       .template-front-page .widget-area .widget,
+       .template-front-page.two-sidebars .widget-area .front-widgets {
+               float: right;
+       }
+       .template-front-page .widget-area .widget:nth-child(odd) {
+               clear: left;
+       }
+       .template-front-page .widget-area .widget:nth-child(even),
+       .template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets {
+               float: left;
+               margin: 0 24px 0;
+               margin: 0 1.714285714rem 0;
+       }
+       .main-navigation ul.nav-menu,
+       .main-navigation div.nav-menu > ul {
+               text-align: right;
+       }
+       .main-navigation li {
+               margin-left: 40px;
+               margin-left: 2.857142857rem;
+               margin-right: auto;
+       }
+       .main-navigation li ul ul {
+               margin-right: 0;
+               right: 100%;
+               left: auto;
+       }
+       .main-navigation ul li:hover > ul {
+               border-right: 0;
+               border-left: none;
+       }
+       .commentlist .children {
+               margin-right: 48px;
+               margin-right: 3.428571429rem;
+               margin-left: auto;
+       }
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/screenshot.png b/wp-content/themes/twentytwelve/screenshot.png
new file mode 100644 (file)
index 0000000..ee328b9
Binary files /dev/null and b/wp-content/themes/twentytwelve/screenshot.png differ
diff --git a/wp-content/themes/twentytwelve/search.php b/wp-content/themes/twentytwelve/search.php
new file mode 100644 (file)
index 0000000..4eea82c
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+/**
+ * The template for displaying Search Results pages.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <header class="page-header">
+                               <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentytwelve' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
+                       </header>
+
+                       <?php twentytwelve_content_nav( 'nav-above' ); ?>
+
+                       <?php /* Start the Loop */ ?>
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <?php get_template_part( 'content', get_post_format() ); ?>
+                       <?php endwhile; ?>
+
+                       <?php twentytwelve_content_nav( 'nav-below' ); ?>
+
+               <?php else : ?>
+
+                       <article id="post-0" class="post no-results not-found">
+                               <header class="entry-header">
+                                       <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
+                               </header>
+
+                               <div class="entry-content">
+                                       <p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentytwelve' ); ?></p>
+                                       <?php get_search_form(); ?>
+                               </div><!-- .entry-content -->
+                       </article><!-- #post-0 -->
+
+               <?php endif; ?>
+
+               </div><!-- #content -->
+       </section><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/sidebar-front.php b/wp-content/themes/twentytwelve/sidebar-front.php
new file mode 100644 (file)
index 0000000..4dfa140
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/**
+ * The sidebar containing the front page widget areas.
+ *
+ * If no active widgets in either sidebar, they will be hidden completely.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+/*
+ * The front page widget area is triggered if any of the areas
+ * have widgets. So let's check that first.
+ *
+ * If none of the sidebars have widgets, then let's bail early.
+ */
+if ( ! is_active_sidebar( 'sidebar-2' ) && ! is_active_sidebar( 'sidebar-3' ) )
+       return;
+
+// If we get this far, we have widgets. Let do this.
+?>
+<div id="secondary" class="widget-area" role="complementary">
+       <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?>
+       <div class="first front-widgets">
+               <?php dynamic_sidebar( 'sidebar-2' ); ?>
+       </div><!-- .first -->
+       <?php endif; ?>
+
+       <?php if ( is_active_sidebar( 'sidebar-3' ) ) : ?>
+       <div class="second front-widgets">
+               <?php dynamic_sidebar( 'sidebar-3' ); ?>
+       </div><!-- .second -->
+       <?php endif; ?>
+</div><!-- #secondary -->
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/sidebar.php b/wp-content/themes/twentytwelve/sidebar.php
new file mode 100644 (file)
index 0000000..2bc4969
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * The sidebar containing the main widget area.
+ *
+ * If no active widgets in sidebar, let's hide it completely.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+?>
+
+       <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
+               <div id="secondary" class="widget-area" role="complementary">
+                       <?php dynamic_sidebar( 'sidebar-1' ); ?>
+               </div><!-- #secondary -->
+       <?php endif; ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/single.php b/wp-content/themes/twentytwelve/single.php
new file mode 100644 (file)
index 0000000..38a813b
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * The Template for displaying all single posts.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="site-content">
+               <div id="content" role="main">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+
+                               <?php get_template_part( 'content', get_post_format() ); ?>
+
+                               <nav class="nav-single">
+                                       <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
+                                       <span class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentytwelve' ) . '</span> %title' ); ?></span>
+                                       <span class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentytwelve' ) . '</span>' ); ?></span>
+                               </nav><!-- .nav-single -->
+
+                               <?php comments_template( '', true ); ?>
+
+                       <?php endwhile; // end of the loop. ?>
+
+               </div><!-- #content -->
+       </div><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/style.css b/wp-content/themes/twentytwelve/style.css
new file mode 100644 (file)
index 0000000..6b89df3
--- /dev/null
@@ -0,0 +1,1727 @@
+/*
+Theme Name: Twenty Twelve
+Theme URI: http://wordpress.org/extend/themes/twentytwelve
+Author: the WordPress team
+Author URI: http://wordpress.org/
+Description: The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.
+Version: 1.1
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Tags: light, gray, white, one-column, two-columns, right-sidebar, flexible-width, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
+Text Domain: twentytwelve
+
+This theme, like WordPress, is licensed under the GPL.
+Use it to make something cool, have fun, and share what you've learned with others.
+*/
+
+/* =Notes
+--------------------------------------------------------------
+This stylesheet uses rem values with a pixel fallback. The rem
+values (and line heights) are calculated using two variables:
+
+$rembase:     14;
+$line-height: 24;
+
+---------- Examples
+
+* Use a pixel value with a rem fallback for font-size, padding, margins, etc.
+       padding: 5px 0;
+       padding: 0.357142857rem 0; (5 / $rembase)
+
+* Set a font-size and then set a line-height based on the font-size
+       font-size: 16px
+       font-size: 1.142857143rem; (16 / $rembase)
+       line-height: 1.5; ($line-height / 16)
+
+---------- Vertical spacing
+
+Vertical spacing between most elements should use 24px or 48px
+to maintain vertical rhythm:
+
+.my-new-div {
+       margin: 24px 0;
+       margin: 1.714285714rem 0; ( 24 / $rembase )
+}
+
+---------- Further reading
+
+http://snook.ca/archives/html_and_css/font-size-with-rem
+http://blog.typekit.com/2011/11/09/type-study-sizing-the-legible-letter/
+
+
+/* =Reset
+-------------------------------------------------------------- */
+
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       font-size: 100%;
+       vertical-align: baseline;
+}
+body {
+       line-height: 1;
+}
+ol,
+ul {
+       list-style: none;
+}
+blockquote,
+q {
+       quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+       content: '';
+       content: none;
+}
+table {
+       border-collapse: collapse;
+       border-spacing: 0;
+}
+caption,
+th,
+td {
+       font-weight: normal;
+       text-align: left;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       clear: both;
+}
+html {
+       overflow-y: scroll;
+       font-size: 100%;
+       -webkit-text-size-adjust: 100%;
+       -ms-text-size-adjust: 100%;
+}
+a:focus {
+       outline: thin dotted;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+       display: block;
+}
+audio,
+canvas,
+video {
+       display: inline-block;
+}
+audio:not([controls]) {
+       display: none;
+}
+del {
+       color: #333;
+}
+ins {
+       background: #fff9c0;
+       text-decoration: none;
+}
+hr {
+       background-color: #ccc;
+       border: 0;
+       height: 1px;
+       margin: 24px;
+       margin-bottom: 1.714285714rem;
+}
+sub,
+sup {
+       font-size: 75%;
+       line-height: 0;
+       position: relative;
+       vertical-align: baseline;
+}
+sup {
+       top: -0.5em;
+}
+sub {
+       bottom: -0.25em;
+}
+small {
+       font-size: smaller;
+}
+img {
+       border: 0;
+       -ms-interpolation-mode: bicubic;
+}
+
+/* Clearing floats */
+.clear:after,
+.wrapper:after,
+.format-status .entry-header:after {
+       clear: both;
+}
+.clear:before,
+.clear:after,
+.wrapper:before,
+.wrapper:after,
+.format-status .entry-header:before,
+.format-status .entry-header:after {
+       display: table;
+       content: "";
+}
+
+
+/* =Repeatable patterns
+-------------------------------------------------------------- */
+
+/* Small headers */
+.archive-title,
+.page-title,
+.widget-title,
+.entry-content th,
+.comment-content th {
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       line-height: 2.181818182;
+       font-weight: bold;
+       text-transform: uppercase;
+       color: #636363;
+}
+
+/* Shared Post Format styling */
+article.format-quote footer.entry-meta,
+article.format-link footer.entry-meta,
+article.format-status footer.entry-meta {
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       line-height: 2.181818182;
+}
+
+/* Form fields, general styles first */
+button,
+input,
+textarea {
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       font-family: inherit;
+       padding: 6px;
+       padding: 0.428571429rem;
+}
+button,
+input {
+    line-height: normal;
+}
+textarea {
+       font-size: 100%;
+       overflow: auto;
+       vertical-align: top;
+}
+
+/* Reset non-text input types */
+input[type="checkbox"],
+input[type="radio"],
+input[type="file"],
+input[type="hidden"],
+input[type="image"],
+input[type="color"] {
+       border: 0;
+       border-radius: 0;
+       padding: 0;
+}
+
+/* Buttons */
+.menu-toggle,
+input[type="submit"],
+input[type="button"],
+input[type="reset"],
+article.post-password-required input[type=submit],
+li.bypostauthor cite span {
+       padding: 6px 10px;
+       padding: 0.428571429rem 0.714285714rem;
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       line-height: 1.428571429;
+       font-weight: normal;
+       color: #7c7c7c;
+       background-color: #e6e6e6;
+       background-repeat: repeat-x;
+       background-image: -moz-linear-gradient(top, #f4f4f4, #e6e6e6);
+       background-image: -ms-linear-gradient(top, #f4f4f4, #e6e6e6);
+       background-image: -webkit-linear-gradient(top, #f4f4f4, #e6e6e6);
+       background-image: -o-linear-gradient(top, #f4f4f4, #e6e6e6);
+       background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
+       border: 1px solid #d2d2d2;
+       border-radius: 3px;
+       box-shadow: 0 1px 2px rgba(64, 64, 64, 0.1);
+}
+.menu-toggle,
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+       cursor: pointer;
+}
+button[disabled],
+input[disabled] {
+    cursor: default;
+}
+.menu-toggle:hover,
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover,
+article.post-password-required input[type=submit]:hover {
+       color: #5e5e5e;
+       background-color: #ebebeb;
+       background-repeat: repeat-x;
+       background-image: -moz-linear-gradient(top, #f9f9f9, #ebebeb);
+       background-image: -ms-linear-gradient(top, #f9f9f9, #ebebeb);
+       background-image: -webkit-linear-gradient(top, #f9f9f9, #ebebeb);
+       background-image: -o-linear-gradient(top, #f9f9f9, #ebebeb);
+       background-image: linear-gradient(top, #f9f9f9, #ebebeb);
+}
+.menu-toggle:active,
+.menu-toggle.toggled-on,
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+       color: #757575;
+       background-color: #e1e1e1;
+       background-repeat: repeat-x;
+       background-image: -moz-linear-gradient(top, #ebebeb, #e1e1e1);
+       background-image: -ms-linear-gradient(top, #ebebeb, #e1e1e1);
+       background-image: -webkit-linear-gradient(top, #ebebeb, #e1e1e1);
+       background-image: -o-linear-gradient(top, #ebebeb, #e1e1e1);
+       background-image: linear-gradient(top, #ebebeb, #e1e1e1);
+       box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4;
+       border: none;
+}
+li.bypostauthor cite span {
+       color: #fff;
+       background-color: #21759b;
+       background-image: none;
+       border: 1px solid #1f6f93;
+       border-radius: 2px;
+       box-shadow: none;
+       padding: 0;
+}
+
+/* Responsive images */
+.entry-content img,
+.comment-content img,
+.widget img {
+       max-width: 100%; /* Fluid images for posts, comments, and widgets */
+}
+img[class*="align"],
+img[class*="wp-image-"],
+img[class*="attachment-"] {
+       height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */
+}
+img.size-full,
+img.size-large,
+img.header-image,
+img.wp-post-image {
+       max-width: 100%;
+       height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */
+}
+
+/* Make sure videos and embeds fit their containers */
+embed,
+iframe,
+object,
+video {
+       max-width: 100%;
+}
+.entry-content .twitter-tweet-rendered {
+       max-width: 100% !important; /* Override the Twitter embed fixed width */
+}
+
+/* Images */
+.alignleft {
+       float: left;
+}
+.alignright {
+       float: right;
+}
+.aligncenter {
+       display: block;
+       margin-left: auto;
+       margin-right: auto;
+}
+.entry-content img,
+.comment-content img,
+.widget img,
+img.header-image,
+.author-avatar img,
+img.wp-post-image {
+       /* Add fancy borders to all WordPress-added images but not things like badges and icons and the like */
+       border-radius: 3px;
+       box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
+}
+.wp-caption {
+       max-width: 100%; /* Keep wide captions from overflowing their container. */
+       padding: 4px;
+}
+.wp-caption .wp-caption-text,
+.gallery-caption,
+.entry-caption {
+       font-style: italic;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       color: #757575;
+}
+img.wp-smiley,
+.rsswidget img {
+       border: 0;
+       border-radius: 0;
+       box-shadow: none;
+       margin-bottom: 0;
+       margin-top: 0;
+       padding: 0;
+}
+.entry-content dl.gallery-item {
+       margin: 0;
+}
+.gallery-item a,
+.gallery-caption {
+       width: 90%;
+}
+.gallery-item a {
+       display: block;
+}
+.gallery-caption a {
+       display: inline;
+}
+.gallery-columns-1 .gallery-item a {
+       max-width: 100%;
+       width: auto;
+}
+.gallery .gallery-icon img {
+       height: auto;
+       max-width: 90%;
+       padding: 5%;
+}
+.gallery-columns-1 .gallery-icon img {
+       padding: 3%;
+}
+
+/* Navigation */
+.site-content nav {
+       clear: both;
+       line-height: 2;
+       overflow: hidden;
+}
+#nav-above {
+       padding: 24px 0;
+       padding: 1.714285714rem 0;
+}
+#nav-above {
+       display: none;
+}
+.paged #nav-above {
+       display: block;
+}
+.nav-previous,
+.previous-image {
+       float: left;
+       width: 50%;
+}
+.nav-next,
+.next-image {
+       float: right;
+       text-align: right;
+       width: 50%;
+}
+.nav-single + .comments-area,
+#comment-nav-above {
+       margin: 48px 0;
+       margin: 3.428571429rem 0;
+}
+
+/* Author profiles */
+.author .archive-header {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.author-info {
+       border-top: 1px solid #ededed;
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+       padding-top: 24px;
+       padding-top: 1.714285714rem;
+       overflow: hidden;
+}
+.author-description p {
+       color: #757575;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+}
+.author.archive .author-info {
+       border-top: 0;
+       margin: 0 0 48px;
+       margin: 0 0 3.428571429rem;
+}
+.author.archive .author-avatar {
+       margin-top: 0;
+}
+
+
+/* =Basic structure
+-------------------------------------------------------------- */
+
+/* Body, links, basics */
+html {
+       font-size: 87.5%;
+}
+body {
+       font-size: 14px;
+       font-size: 1rem;
+       font-family: Helvetica, Arial, sans-serif;
+       text-rendering: optimizeLegibility;
+       color: #444;
+}
+body.custom-font-enabled {
+       font-family: "Open Sans", Helvetica, Arial, sans-serif;
+}
+a {
+       outline: none;
+       color: #21759b;
+}
+a:hover {
+       color: #0f3647;
+}
+
+/* Assistive text */
+.assistive-text,
+.site .screen-reader-text {
+       position: absolute !important;
+       clip: rect(1px, 1px, 1px, 1px);
+}
+.main-navigation .assistive-text:hover,
+.main-navigation .assistive-text:active,
+.main-navigation .assistive-text:focus {
+       background: #fff;
+       border: 2px solid #333;
+       border-radius: 3px;
+       clip: auto !important;
+       color: #000;
+       display: block;
+       font-size: 12px;
+       padding: 12px;
+       position: absolute;
+       top: 5px;
+       left: 5px;
+       z-index: 100000; /* Above WP toolbar */
+}
+
+/* Page structure */
+.site {
+       padding: 0 24px;
+       padding: 0 1.714285714rem;
+       background-color: #fff;
+}
+.site-content {
+       margin: 24px 0 0;
+       margin: 1.714285714rem 0 0;
+}
+.widget-area {
+       margin: 24px 0 0;
+       margin: 1.714285714rem 0 0;
+}
+
+/* Header */
+.site-header {
+       padding: 24px 0;
+       padding: 1.714285714rem 0;
+}
+.site-header h1,
+.site-header h2 {
+       text-align: center;
+}
+.site-header h1 a,
+.site-header h2 a {
+       color: #515151;
+       display: inline-block;
+       text-decoration: none;
+}
+.site-header h1 a:hover,
+.site-header h2 a:hover {
+       color: #21759b;
+}
+.site-header h1 {
+       font-size: 24px;
+       font-size: 1.714285714rem;
+       line-height: 1.285714286;
+       margin-bottom: 14px;
+       margin-bottom: 1rem;
+}
+.site-header h2 {
+       font-weight: normal;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       color: #757575;
+}
+.header-image {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+}
+
+/* Navigation Menu */
+.main-navigation {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       text-align: center;
+}
+.main-navigation li {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.42857143;
+}
+.main-navigation a {
+       color: #5e5e5e;
+}
+.main-navigation a:hover {
+       color: #21759b;
+}
+.main-navigation ul.nav-menu,
+.main-navigation div.nav-menu > ul {
+       display: none;
+}
+.main-navigation ul.nav-menu.toggled-on,
+.menu-toggle {
+       display: inline-block;
+}
+
+/* Banner */
+section[role="banner"] {
+       margin-bottom: 48px;
+       margin-bottom: 3.428571429rem;
+}
+
+/* Sidebar */
+.widget-area .widget {
+       -webkit-hyphens: auto;
+       -moz-hyphens: auto;
+       hyphens: auto;
+       margin-bottom: 48px;
+       margin-bottom: 3.428571429rem;
+       word-wrap: break-word;
+}
+.widget-area .widget h3 {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.widget-area .widget p,
+.widget-area .widget li,
+.widget-area .widget .textwidget {
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+}
+.widget-area .widget p {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.widget-area .textwidget ul {
+       list-style: disc outside;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+}
+.widget-area .textwidget li {
+       margin-left: 36px;
+       margin-left: 2.571428571rem;
+}
+.widget-area .widget a {
+       color: #757575;
+}
+.widget-area .widget a:hover {
+       color: #21759b;
+}
+.widget-area #s {
+       width: 53.66666666666%; /* define a width to avoid dropping a wider submit button */
+}
+
+/* Footer */
+footer[role="contentinfo"] {
+       border-top: 1px solid #ededed;
+       clear: both;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       max-width: 960px;
+       max-width: 68.571428571rem;
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       margin-left: auto;
+       margin-right: auto;
+       padding: 24px 0;
+       padding: 1.714285714rem 0;
+}
+footer[role="contentinfo"] a {
+       color: #686868;
+}
+footer[role="contentinfo"] a:hover {
+       color: #21759b;
+}
+
+
+/* =Main content and comment content
+-------------------------------------------------------------- */
+
+.entry-meta {
+       clear: both;
+}
+.entry-header {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.entry-header img.wp-post-image {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.entry-header .entry-title {
+       font-size: 20px;
+       font-size: 1.428571429rem;
+       line-height: 1.2;
+       font-weight: normal;
+}
+.entry-header .entry-title a {
+       text-decoration: none;
+}
+.entry-header .entry-format {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       font-weight: normal;
+}
+.entry-header .comments-link {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       color: #757575;
+}
+.comments-link a,
+.entry-meta a {
+       color: #757575;
+}
+.comments-link a:hover,
+.entry-meta a:hover {
+       color: #21759b;
+}
+article.sticky .featured-post {
+       border-top: 4px double #ededed;
+       border-bottom: 4px double #ededed;
+       color: #757575;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 3.692307692;
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+       text-align: center;
+}
+.entry-content,
+.entry-summary,
+.mu_register {
+       line-height: 1.714285714;
+}
+.entry-content h1,
+.comment-content h1,
+.entry-content h2,
+.comment-content h2,
+.entry-content h3,
+.comment-content h3,
+.entry-content h4,
+.comment-content h4,
+.entry-content h5,
+.comment-content h5,
+.entry-content h6,
+.comment-content h6 {
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+       line-height: 1.714285714;
+}
+.entry-content h1,
+.comment-content h1 {
+       font-size: 21px;
+       font-size: 1.5rem;
+       line-height: 1.5;
+}
+.entry-content h2,
+.comment-content h2,
+.mu_register h2 {
+       font-size: 18px;
+       font-size: 1.285714286rem;
+       line-height: 1.6;
+}
+.entry-content h3,
+.comment-content h3 {
+       font-size: 16px;
+       font-size: 1.142857143rem;
+       line-height: 1.846153846;
+}
+.entry-content h4,
+.comment-content h4 {
+       font-size: 14px;
+       font-size: 1rem;
+       line-height: 1.846153846;
+}
+.entry-content h5,
+.comment-content h5 {
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+}
+.entry-content h6,
+.comment-content h6 {
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.846153846;
+}
+.entry-content p,
+.entry-summary p,
+.comment-content p,
+.mu_register p {
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+       line-height: 1.714285714;
+}
+.entry-content ol,
+.comment-content ol,
+.entry-content ul,
+.comment-content ul,
+.mu_register ul {
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+       line-height: 1.714285714;
+}
+.entry-content ul ul,
+.comment-content ul ul,
+.entry-content ol ol,
+.comment-content ol ol,
+.entry-content ul ol,
+.comment-content ul ol,
+.entry-content ol ul,
+.comment-content ol ul {
+       margin-bottom: 0;
+}
+.entry-content ul,
+.comment-content ul,
+.mu_register ul {
+       list-style: disc outside;
+}
+.entry-content ol,
+.comment-content ol {
+       list-style: decimal outside;
+}
+.entry-content li,
+.comment-content li,
+.mu_register li {
+       margin: 0 0 0 36px;
+       margin: 0 0 0 2.571428571rem;
+}
+.entry-content blockquote,
+.comment-content blockquote {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+       padding: 24px;
+       padding: 1.714285714rem;
+       font-style: italic;
+}
+.entry-content blockquote p:last-child,
+.comment-content blockquote p:last-child {
+       margin-bottom: 0;
+}
+.entry-content code,
+.comment-content code {
+       font-family: Consolas, Monaco, Lucida Console, monospace;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+}
+.entry-content pre,
+.comment-content pre {
+       border: 1px solid #ededed;
+       color: #666;
+       font-family: Consolas, Monaco, Lucida Console, monospace;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.714285714;
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+       overflow: auto;
+       padding: 24px;
+       padding: 1.714285714rem;
+}
+.entry-content pre code,
+.comment-content pre code {
+       display: block;
+}
+.entry-content abbr,
+.comment-content abbr,
+.entry-content dfn,
+.comment-content dfn,
+.entry-content acronym,
+.comment-content acronym {
+       border-bottom: 1px dotted #666;
+       cursor: help;
+}
+.entry-content address,
+.comment-content address {
+       display: block;
+       line-height: 1.714285714;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+}
+img.alignleft {
+       margin: 12px 24px 12px 0;
+       margin: 0.857142857rem 1.714285714rem 0.857142857rem 0;
+}
+img.alignright {
+       margin: 12px 0 12px 24px;
+       margin: 0.857142857rem 0 0.857142857rem 1.714285714rem;
+}
+img.aligncenter {
+       margin-top: 12px;
+       margin-top: 0.857142857rem;
+       margin-bottom: 12px;
+       margin-bottom: 0.857142857rem;
+}
+.entry-content embed,
+.entry-content iframe,
+.entry-content object,
+.entry-content video {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.entry-content dl,
+.comment-content dl {
+       margin: 0 24px;
+       margin: 0 1.714285714rem;
+}
+.entry-content dt,
+.comment-content dt {
+       font-weight: bold;
+       line-height: 1.714285714;
+}
+.entry-content dd,
+.comment-content dd {
+       line-height: 1.714285714;
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.entry-content table,
+.comment-content table {
+       border-bottom: 1px solid #ededed;
+       color: #757575;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       margin: 0 0 24px;
+       margin: 0 0 1.714285714rem;
+       width: 100%;
+}
+.entry-content table caption,
+.comment-content table caption {
+       font-size: 16px;
+       font-size: 1.142857143rem;
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+}
+.entry-content td,
+.comment-content td {
+       border-top: 1px solid #ededed;
+       padding: 6px 10px 6px 0;
+}
+.site-content article {
+       border-bottom: 4px double #ededed;
+       margin-bottom: 72px;
+       margin-bottom: 5.142857143rem;
+       padding-bottom: 24px;
+       padding-bottom: 1.714285714rem;
+       word-wrap: break-word;
+       -webkit-hyphens: auto;
+       -moz-hyphens: auto;
+       hyphens: auto;
+}
+.page-links {
+       clear: both;
+       line-height: 1.714285714;
+}
+footer.entry-meta {
+       margin-top: 24px;
+       margin-top: 1.714285714rem;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       color: #757575;
+}
+.single-author .entry-meta .by-author {
+       display: none;
+}
+.mu_register h2 {
+       color: #757575;
+       font-weight: normal;
+}
+
+
+/* =Archives
+-------------------------------------------------------------- */
+
+.archive-header,
+.page-header {
+       margin-bottom: 48px;
+       margin-bottom: 3.428571429rem;
+       padding-bottom: 22px;
+       padding-bottom: 1.571428571rem;
+       border-bottom: 1px solid #ededed;
+}
+.archive-meta {
+       color: #757575;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       margin-top: 22px;
+       margin-top: 1.571428571rem;
+}
+
+
+/* =Single image attachment view
+-------------------------------------------------------------- */
+
+.article.attachment {
+       overflow: hidden;
+}
+.image-attachment div.attachment {
+       text-align: center;
+}
+.image-attachment div.attachment p {
+       text-align: center;
+}
+.image-attachment div.attachment img {
+       display: block;
+       height: auto;
+       margin: 0 auto;
+       max-width: 100%;
+}
+.image-attachment .entry-caption {
+       margin-top: 8px;
+       margin-top: 0.571428571rem;
+}
+
+
+/* =Aside post format
+-------------------------------------------------------------- */
+
+article.format-aside h1 {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+article.format-aside h1 a {
+       text-decoration: none;
+       color: #4d525a;
+}
+article.format-aside h1 a:hover {
+       color: #2e3542;
+}
+article.format-aside .aside {
+       padding: 24px 24px 0;
+       padding: 1.714285714rem;
+       background: #d2e0f9;
+       border-left: 22px solid #a8bfe8;
+}
+article.format-aside p {
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       color: #4a5466;
+}
+article.format-aside blockquote:last-child,
+article.format-aside p:last-child {
+       margin-bottom: 0;
+}
+
+
+/* =Post formats
+-------------------------------------------------------------- */
+
+/* Image posts */
+article.format-image footer h1 {
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       font-weight: normal;
+}
+article.format-image footer h2 {
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       line-height: 2.181818182;
+}
+article.format-image footer a h2 {
+       font-weight: normal;
+}
+
+/* Link posts */
+article.format-link header {
+       padding: 0 10px;
+       padding: 0 0.714285714rem;
+       float: right;
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       line-height: 2.181818182;
+       font-weight: bold;
+       font-style: italic;
+       text-transform: uppercase;
+       color: #848484;
+       background-color: #ebebeb;
+       border-radius: 3px;
+}
+article.format-link .entry-content {
+       max-width: 80%;
+       float: left;
+}
+article.format-link .entry-content a {
+       font-size: 22px;
+       font-size: 1.571428571rem;
+       line-height: 1.090909091;
+       text-decoration: none;
+}
+
+/* Quote posts */
+article.format-quote .entry-content p {
+       margin: 0;
+       padding-bottom: 24px;
+       padding-bottom: 1.714285714rem;
+}
+article.format-quote .entry-content blockquote {
+       display: block;
+       padding: 24px 24px 0;
+       padding: 1.714285714rem 1.714285714rem 0;
+       font-size: 15px;
+       font-size: 1.071428571rem;
+       line-height: 1.6;
+       font-style: normal;
+       color: #6a6a6a;
+       background: #efefef;
+}
+
+/* Status posts */
+.format-status .entry-header {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+.format-status .entry-header header {
+       display: inline-block;
+}
+.format-status .entry-header h1 {
+       font-size: 15px;
+       font-size: 1.071428571rem;
+       font-weight: normal;
+       line-height: 1.6;
+       margin: 0;
+}
+.format-status .entry-header h2 {
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       font-weight: normal;
+       line-height: 2;
+       margin: 0;
+}
+.format-status .entry-header header a {
+       color: #757575;
+}
+.format-status .entry-header header a:hover {
+       color: #21759b;
+}
+.format-status .entry-header img {
+       float: left;
+       margin-right: 21px;
+       margin-right: 1.5rem;
+}
+
+
+/* =Comments
+-------------------------------------------------------------- */
+
+.comments-title {
+       margin-bottom: 48px;
+       margin-bottom: 3.428571429rem;
+       font-size: 16px;
+       font-size: 1.142857143rem;
+       line-height: 1.5;
+       font-weight: normal;
+}
+.comments-area article {
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+}
+.comments-area article header {
+       margin: 0 0 48px;
+       margin: 0 0 3.428571429rem;
+       overflow: hidden;
+       position: relative;
+}
+.comments-area article header img {
+       float: left;
+       padding: 0;
+       line-height: 0;
+}
+.comments-area article header cite,
+.comments-area article header time {
+       display: block;
+       margin-left: 85px;
+       margin-left: 6.071428571rem;
+}
+.comments-area article header cite {
+       font-style: normal;
+       font-size: 15px;
+       font-size: 1.071428571rem;
+       line-height: 1.42857143;
+}
+.comments-area article header time {
+       line-height: 1.714285714;
+       text-decoration: none;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       color: #5e5e5e;
+}
+.comments-area article header a {
+       text-decoration: none;
+       color: #5e5e5e;
+}
+.comments-area article header a:hover {
+       color: #21759b;
+}
+.comments-area article header cite a {
+       color: #444;
+}
+.comments-area article header cite a:hover {
+       text-decoration: underline;
+}
+.comments-area article header h4 {
+       position: absolute;
+       top: 0;
+       right: 0;
+       padding: 6px 12px;
+       padding: 0.428571429rem 0.857142857rem;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       font-weight: normal;
+       color: #fff;
+       background-color: #0088d0;
+       background-repeat: repeat-x;
+       background-image: -moz-linear-gradient(top, #009cee, #0088d0);
+       background-image: -ms-linear-gradient(top, #009cee, #0088d0);
+       background-image: -webkit-linear-gradient(top, #009cee, #0088d0);
+       background-image: -o-linear-gradient(top, #009cee, #0088d0);
+       background-image: linear-gradient(top, #009cee, #0088d0);
+       border-radius: 3px;
+       border: 1px solid #007cbd;
+}
+.comments-area li.bypostauthor cite span {
+       position: absolute;
+       margin-left: 5px;
+       margin-left: 0.357142857rem;
+       padding: 2px 5px;
+       padding: 0.142857143rem 0.357142857rem;
+       font-size: 10px;
+       font-size: 0.714285714rem;
+}
+a.comment-reply-link,
+a.comment-edit-link {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+}
+a.comment-reply-link:hover,
+a.comment-edit-link:hover {
+       color: #21759b;
+}
+.commentlist .pingback {
+       line-height: 1.714285714;
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+
+/* Comment form */
+#respond {
+       margin-top: 48px;
+       margin-top: 3.428571429rem;
+}
+#respond h3#reply-title {
+       font-size: 16px;
+       font-size: 1.142857143rem;
+       line-height: 1.5;
+}
+#respond h3#reply-title #cancel-comment-reply-link {
+       margin-left: 10px;
+       margin-left: 0.714285714rem;
+       font-weight: normal;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+}
+#respond form {
+       margin: 24px 0;
+       margin: 1.714285714rem 0;
+}
+#respond form p {
+       margin: 11px 0;
+       margin: 0.785714286rem 0;
+}
+#respond form p.logged-in-as {
+       margin-bottom: 24px;
+       margin-bottom: 1.714285714rem;
+}
+#respond form label {
+       display: block;
+       line-height: 1.714285714;
+}
+#respond form input[type="text"],
+#respond form textarea {
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 1.714285714;
+       padding: 10px;
+       padding: 0.714285714rem;
+       width: 100%;
+}
+#respond form p.form-allowed-tags {
+       margin: 0;
+       font-size: 12px;
+       font-size: 0.857142857rem;
+       line-height: 2;
+       color: #5e5e5e;
+}
+.required {
+       color: red;
+}
+
+
+/* =Front page template
+-------------------------------------------------------------- */
+
+.entry-page-image {
+       margin-bottom: 14px;
+       margin-bottom: 1rem;
+}
+.template-front-page .site-content article {
+       border: 0;
+       margin-bottom: 0;
+}
+.template-front-page .widget-area {
+       clear: both;
+       float: none;
+       width: auto;
+       padding-top: 24px;
+       padding-top: 1.714285714rem;
+       border-top: 1px solid #ededed;
+}
+.template-front-page .widget-area .widget li {
+       margin: 8px 0 0;
+       margin: 0.571428571rem 0 0;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.714285714;
+       list-style-type: square;
+       list-style-position: inside;
+}
+.template-front-page .widget-area .widget li a {
+       color: #757575;
+}
+.template-front-page .widget-area .widget li a:hover {
+       color: #21759b;
+}
+.template-front-page .widget-area .widget_text img {
+       float: left;
+       margin: 8px 24px 8px 0;
+       margin: 0.571428571rem 1.714285714rem 0.571428571rem 0;
+}
+
+
+/* =Widgets
+-------------------------------------------------------------- */
+
+.widget-area .widget ul ul {
+       margin-left: 12px;
+       margin-left: 0.857142857rem;
+}
+.widget_rss li {
+       margin: 12px 0;
+       margin: 0.857142857rem 0;
+}
+.widget_recent_entries .post-date,
+.widget_rss .rss-date {
+       color: #aaa;
+       font-size: 11px;
+       font-size: 0.785714286rem;
+       margin-left: 12px;
+       margin-left: 0.857142857rem;
+}
+#wp-calendar {
+       margin: 0;
+       width: 100%;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+       color: #686868;
+}
+#wp-calendar th,
+#wp-calendar td,
+#wp-calendar caption {
+       text-align: left;
+}
+#wp-calendar #next {
+       padding-right: 24px;
+       padding-right: 1.714285714rem;
+       text-align: right;
+}
+.widget_search label {
+       display: block;
+       font-size: 13px;
+       font-size: 0.928571429rem;
+       line-height: 1.846153846;
+}
+.widget_twitter li {
+       list-style-type: none;
+}
+.widget_twitter .timesince {
+       display: block;
+       text-align: right;
+}
+
+
+/* =Plugins
+----------------------------------------------- */
+
+img#wpstats {
+       display: block;
+       margin: 0 auto 24px;
+       margin: 0 auto 1.714285714rem;
+}
+
+
+/* =Media queries
+-------------------------------------------------------------- */
+
+/* Minimum width of 600 pixels. */
+@media screen and (min-width: 600px) {
+       .author-avatar {
+               float: left;
+               margin-top: 8px;
+               margin-top: 0.571428571rem;
+       }
+       .author-description {
+               float: right;
+               width: 80%;
+       }
+       .site {
+               margin: 0 auto;
+               max-width: 960px;
+               max-width: 68.571428571rem;
+               overflow: hidden;
+       }
+       .site-content {
+               float: left;
+               width: 65.104166667%;
+       }
+       body.template-front-page .site-content,
+       body.single-attachment .site-content,
+       body.full-width .site-content {
+               width: 100%;
+       }
+       .widget-area {
+               float: right;
+               width: 26.041666667%;
+       }
+       .site-header h1,
+       .site-header h2 {
+               text-align: left;
+       }
+       .site-header h1 {
+               font-size: 26px;
+               font-size: 1.857142857rem;
+               line-height: 1.846153846;
+               margin-bottom: 0;
+       }
+       .main-navigation ul.nav-menu,
+       .main-navigation div.nav-menu > ul {
+               border-bottom: 1px solid #ededed;
+               border-top: 1px solid #ededed;
+               display: inline-block !important;
+               text-align: left;
+               width: 100%;
+       }
+       .main-navigation ul {
+               margin: 0;
+               text-indent: 0;
+       }
+       .main-navigation li a,
+       .main-navigation li {
+               display: inline-block;
+               text-decoration: none;
+       }
+       .main-navigation li a {
+               border-bottom: 0;
+               color: #6a6a6a;
+               line-height: 3.692307692;
+               text-transform: uppercase;
+               white-space: nowrap;
+       }
+       .main-navigation li a:hover {
+               color: #000;
+       }
+       .main-navigation li {
+               margin: 0 40px 0 0;
+               margin: 0 2.857142857rem 0 0;
+               position: relative;
+       }
+       .main-navigation li ul {
+               display: none;
+               margin: 0;
+               padding: 0;
+               position: absolute;
+               top: 100%;
+               z-index: 1;
+       }
+       .main-navigation li ul ul {
+               top: 0;
+               left: 100%;
+       }
+       .main-navigation ul li:hover > ul {
+               border-left: 0;
+               display: block;
+       }
+       .main-navigation li ul li a {
+               background: #efefef;
+               border-bottom: 1px solid #ededed;
+               display: block;
+               font-size: 11px;
+               font-size: 0.785714286rem;
+               line-height: 2.181818182;
+               padding: 8px 10px;
+               padding: 0.571428571rem 0.714285714rem;
+               width: 180px;
+               width: 12.85714286rem;
+               white-space: normal;
+       }
+       .main-navigation li ul li a:hover {
+               background: #e3e3e3;
+               color: #444;
+       }
+       .main-navigation .current-menu-item > a,
+       .main-navigation .current-menu-ancestor > a,
+       .main-navigation .current_page_item > a,
+       .main-navigation .current_page_ancestor > a {
+               color: #636363;
+               font-weight: bold;
+       }
+       .menu-toggle {
+               display: none;
+       }
+       .entry-header .entry-title {
+               font-size: 22px;
+               font-size: 1.571428571rem;
+       }
+       #respond form input[type="text"] {
+               width: 46.333333333%;
+       }
+       #respond form textarea.blog-textarea {
+               width: 79.666666667%;
+       }
+       .template-front-page .site-content,
+       .template-front-page article {
+               overflow: hidden;
+       }
+       .template-front-page.has-post-thumbnail article {
+               float: left;
+               width: 47.916666667%;
+       }
+       .entry-page-image {
+               float: right;
+               margin-bottom: 0;
+               width: 47.916666667%;
+       }
+       .template-front-page .widget-area .widget,
+       .template-front-page.two-sidebars .widget-area .front-widgets {
+               float: left;
+               width: 51.875%;
+               margin-bottom: 24px;
+               margin-bottom: 1.714285714rem;
+       }
+       .template-front-page .widget-area .widget:nth-child(odd) {
+               clear: right;
+       }
+       .template-front-page .widget-area .widget:nth-child(even),
+       .template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets {
+               float: right;
+               width: 39.0625%;
+               margin: 0 0 24px;
+               margin: 0 0 1.714285714rem;
+       }
+       .template-front-page.two-sidebars .widget,
+       .template-front-page.two-sidebars .widget:nth-child(even) {
+               float: none;
+               width: auto;
+       }
+       .commentlist .children {
+               margin-left: 48px;
+               margin-left: 3.428571429rem;
+       }
+}
+
+/* Minimum width of 960 pixels. */
+@media screen and (min-width: 960px) {
+       body {
+               background-color: #e6e6e6;
+       }
+       body .site {
+               padding: 0 40px;
+               padding: 0 2.857142857rem;
+               margin-top: 48px;
+               margin-top: 3.428571429rem;
+               margin-bottom: 48px;
+               margin-bottom: 3.428571429rem;
+               box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
+       }
+       body.custom-background-empty {
+               background-color: #fff;
+       }
+       body.custom-background-empty .site,
+       body.custom-background-white .site {
+               padding: 0;
+               margin-top: 0;
+               margin-bottom: 0;
+               box-shadow: none;
+       }
+}
+
+
+/* =Print
+----------------------------------------------- */
+
+@media print {
+       body {
+               background: none !important;
+               color: #000;
+               font-size: 10pt;
+       }
+       footer a[rel=bookmark]:link:after,
+       footer a[rel=bookmark]:visited:after {
+               content: " [" attr(href) "] "; /* Show URLs */
+       }
+       a {
+               text-decoration: none;
+       }
+       .entry-content img,
+       .comment-content img,
+       .author-avatar img,
+       img.wp-post-image {
+               border-radius: 0;
+               box-shadow: none;
+       }
+       .site {
+               clear: both !important;
+               display: block !important;
+               float: none !important;
+               max-width: 100%;
+               position: relative !important;
+       }
+       .site-header {
+               margin-bottom: 72px;
+               margin-bottom: 5.142857143rem;
+               text-align: left;
+       }
+       .site-header h1 {
+               font-size: 21pt;
+               line-height: 1;
+               text-align: left;
+       }
+       .site-header h2 {
+               color: #000;
+               font-size: 10pt;
+               text-align: left;
+       }
+       .site-header h1 a,
+       .site-header h2 a {
+               color: #000;
+       }
+       .author-avatar,
+       #colophon,
+       #respond,
+       .commentlist .comment-edit-link,
+       .commentlist .reply,
+       .entry-header .comments-link,
+       .entry-meta .edit-link a,
+       .page-link,
+       .site-content nav,
+       .widget-area,
+       img.header-image,
+       .main-navigation {
+               display: none;
+       }
+       .wrapper {
+               border-top: none;
+               box-shadow: none;
+       }
+       .site-content {
+               margin: 0;
+               width: auto;
+       }
+       .singular .entry-header .entry-meta {
+               position: static;
+       }
+       .singular .site-content,
+       .singular .entry-header,
+       .singular .entry-content,
+       .singular footer.entry-meta,
+       .singular .comments-title {
+               margin: 0;
+               width: 100%;
+       }
+       .entry-header .entry-title,
+       .entry-title,
+       .singular .entry-title {
+               font-size: 21pt;
+       }
+       footer.entry-meta,
+       footer.entry-meta a {
+               color: #444;
+               font-size: 10pt;
+       }
+       .author-description {
+               float: none;
+               width: auto;
+       }
+
+       /* Comments */
+       .commentlist > li.comment {
+               background: none;
+               position: relative;
+               width: auto;
+       }
+       .commentlist .avatar {
+               height: 39px;
+               left: 2.2em;
+               top: 2.2em;
+               width: 39px;
+       }
+       .comments-area article header cite,
+       .comments-area article header time {
+               margin-left: 50px;
+               margin-left: 3.57142857rem;
+       }
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/tag.php b/wp-content/themes/twentytwelve/tag.php
new file mode 100644 (file)
index 0000000..9bf77e0
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * The template for displaying Tag pages.
+ *
+ * Used to display archive-type pages for posts in a tag.
+ *
+ * Learn more: http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twelve
+ * @since Twenty Twelve 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="site-content">
+               <div id="content" role="main">
+
+               <?php if ( have_posts() ) : ?>
+                       <header class="archive-header">
+                               <h1 class="archive-title"><?php printf( __( 'Tag Archives: %s', 'twentytwelve' ), '<span>' . single_tag_title( '', false ) . '</span>' ); ?></h1>
+
+                       <?php if ( tag_description() ) : // Show an optional tag description ?>
+                               <div class="archive-meta"><?php echo tag_description(); ?></div>
+                       <?php endif; ?>
+                       </header><!-- .archive-header -->
+
+                       <?php
+                       /* Start the Loop */
+                       while ( have_posts() ) : the_post();
+
+                               /* Include the post format-specific template for the content. If you want to
+                                * this in a child theme then include a file called called content-___.php
+                                * (where ___ is the post format) and that will be used instead.
+                                */
+                               get_template_part( 'content', get_post_format() );
+
+                       endwhile;
+
+                       twentytwelve_content_nav( 'nav-below' );
+                       ?>
+
+               <?php else : ?>
+                       <?php get_template_part( 'content', 'none' ); ?>
+               <?php endif; ?>
+
+               </div><!-- #content -->
+       </section><!-- #primary -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
\ No newline at end of file
index f0da6ecc5c9095b8d5c9b4a3e91e5155c58af0cd..04953c8d73128d3e8c6929966b4ef1fc33ab827b 100644 (file)
@@ -48,9 +48,9 @@ if ( false === $crons = _get_cron_array() )
        die();
 
 $keys = array_keys( $crons );
-$local_time = microtime( true );
+$gmt_time = microtime( true );
 
-if ( isset($keys[0]) && $keys[0] > $local_time )
+if ( isset($keys[0]) && $keys[0] > $gmt_time )
        die();
 
 $doing_cron_transient = get_transient( 'doing_cron');
@@ -59,7 +59,7 @@ $doing_cron_transient = get_transient( 'doing_cron');
 if ( empty( $doing_wp_cron ) ) {
        if ( empty( $_GET[ 'doing_wp_cron' ] ) ) {
                // Called from external script/job. Try setting a lock.
-               if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $local_time ) )
+               if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) )
                        return;
                $doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
                set_transient( 'doing_cron', $doing_wp_cron );
@@ -73,7 +73,7 @@ if ( $doing_cron_transient != $doing_wp_cron )
        return;
 
 foreach ( $crons as $timestamp => $cronhooks ) {
-       if ( $timestamp > $local_time )
+       if ( $timestamp > $gmt_time )
                break;
 
        foreach ( $cronhooks as $hook => $keys ) {
diff --git a/wp-includes/SimplePie/Author.php b/wp-includes/SimplePie/Author.php
new file mode 100644 (file)
index 0000000..bbf3812
--- /dev/null
@@ -0,0 +1,157 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Manages all author-related data
+ *
+ * Used by {@see SimplePie_Item::get_author()} and {@see SimplePie::get_authors()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_author_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Author
+{
+       /**
+        * Author's name
+        *
+        * @var string
+        * @see get_name()
+        */
+       var $name;
+
+       /**
+        * Author's link
+        *
+        * @var string
+        * @see get_link()
+        */
+       var $link;
+
+       /**
+        * Author's email address
+        *
+        * @var string
+        * @see get_email()
+        */
+       var $email;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * @param string $name
+        * @param string $link
+        * @param string $email
+        */
+       public function __construct($name = null, $link = null, $email = null)
+       {
+               $this->name = $name;
+               $this->link = $link;
+               $this->email = $email;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Author's name
+        *
+        * @return string|null
+        */
+       public function get_name()
+       {
+               if ($this->name !== null)
+               {
+                       return $this->name;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Author's link
+        *
+        * @return string|null
+        */
+       public function get_link()
+       {
+               if ($this->link !== null)
+               {
+                       return $this->link;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Author's email address
+        *
+        * @return string|null
+        */
+       public function get_email()
+       {
+               if ($this->email !== null)
+               {
+                       return $this->email;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Cache.php b/wp-includes/SimplePie/Cache.php
new file mode 100644 (file)
index 0000000..75586d7
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Used to create cache objects
+ *
+ * This class can be overloaded with {@see SimplePie::set_cache_class()},
+ * although the preferred way is to create your own handler
+ * via {@see register()}
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ */
+class SimplePie_Cache
+{
+       /**
+        * Cache handler classes
+        *
+        * These receive 3 parameters to their constructor, as documented in
+        * {@see register()}
+        * @var array
+        */
+       protected static $handlers = array(
+               'mysql' => 'SimplePie_Cache_MySQL',
+               'memcache' => 'SimplePie_Cache_Memcache',
+       );
+
+       /**
+        * Don't call the constructor. Please.
+        */
+       private function __construct() { }
+
+       /**
+        * Create a new SimplePie_Cache object
+        *
+        * @param string $location URL location (scheme is used to determine handler)
+        * @param string $filename Unique identifier for cache object
+        * @param string $extension 'spi' or 'spc'
+        * @return SimplePie_Cache_Base Type of object depends on scheme of `$location`
+        */
+       public static function get_handler($location, $filename, $extension)
+       {
+               $type = explode(':', $location, 2);
+               $type = $type[0];
+               if (!empty(self::$handlers[$type]))
+               {
+                       $class = self::$handlers[$type];
+                       return new $class($location, $filename, $extension);
+               }
+
+               return new SimplePie_Cache_File($location, $filename, $extension);
+       }
+
+       /**
+        * Create a new SimplePie_Cache object
+        *
+        * @deprecated Use {@see get_handler} instead
+        */
+       public function create($location, $filename, $extension)
+       {
+               trigger_error('Cache::create() has been replaced with Cache::get_handler(). Switch to the registry system to use this.', E_USER_DEPRECATED);
+               return self::get_handler($location, $filename, $extension);
+       }
+
+       /**
+        * Register a handler
+        *
+        * @param string $type DSN type to register for
+        * @param string $class Name of handler class. Must implement SimplePie_Cache_Base
+        */
+       public static function register($type, $class)
+       {
+               self::$handlers[$type] = $class;
+       }
+
+       /**
+        * Parse a URL into an array
+        *
+        * @param string $url
+        * @return array
+        */
+       public static function parse_URL($url)
+       {
+               $params = parse_url($url);
+               $params['extras'] = array();
+               if (isset($params['query']))
+               {
+                       parse_str($params['query'], $params['extras']);
+               }
+               return $params;
+       }
+}
diff --git a/wp-includes/SimplePie/Cache/Base.php b/wp-includes/SimplePie/Cache/Base.php
new file mode 100644 (file)
index 0000000..937e346
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Base for cache objects
+ *
+ * Classes to be used with {@see SimplePie_Cache::register()} are expected
+ * to implement this interface.
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ */
+interface SimplePie_Cache_Base
+{
+       /**
+        * Feed cache type
+        *
+        * @var string
+        */
+       const TYPE_FEED = 'spc';
+
+       /**
+        * Image cache type
+        *
+        * @var string
+        */
+       const TYPE_IMAGE = 'spi';
+
+       /**
+        * Create a new cache object
+        *
+        * @param string $location Location string (from SimplePie::$cache_location)
+        * @param string $name Unique ID for the cache
+        * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+        */
+       public function __construct($location, $name, $type);
+
+       /**
+        * Save data to the cache
+        *
+        * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+        * @return bool Successfulness
+        */
+       public function save($data);
+
+       /**
+        * Retrieve the data saved to the cache
+        *
+        * @return array Data for SimplePie::$data
+        */
+       public function load();
+
+       /**
+        * Retrieve the last modified time for the cache
+        *
+        * @return int Timestamp
+        */
+       public function mtime();
+
+       /**
+        * Set the last modified time to the current time
+        *
+        * @return bool Success status
+        */
+       public function touch();
+
+       /**
+        * Remove the cache
+        *
+        * @return bool Success status
+        */
+       public function unlink();
+}
diff --git a/wp-includes/SimplePie/Cache/DB.php b/wp-includes/SimplePie/Cache/DB.php
new file mode 100644 (file)
index 0000000..ac509ae
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Base class for database-based caches
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ */
+abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
+{
+       /**
+        * Helper for database conversion
+        *
+        * Converts a given {@see SimplePie} object into data to be stored
+        *
+        * @param SimplePie $data
+        * @return array First item is the serialized data for storage, second item is the unique ID for this item
+        */
+       protected static function prepare_simplepie_object_for_cache($data)
+       {
+               $items = $data->get_items();
+               $items_by_id = array();
+
+               if (!empty($items))
+               {
+                       foreach ($items as $item)
+                       {
+                               $items_by_id[$item->get_id()] = $item;
+                       }
+
+                       if (count($items_by_id) !== count($items))
+                       {
+                               $items_by_id = array();
+                               foreach ($items as $item)
+                               {
+                                       $items_by_id[$item->get_id(true)] = $item;
+                               }
+                       }
+
+                       if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
+                       {
+                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
+                       }
+                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
+                       {
+                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
+                       }
+                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
+                       {
+                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
+                       }
+                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
+                       {
+                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
+                       }
+                       else
+                       {
+                               $channel = null;
+                       }
+
+                       if ($channel !== null)
+                       {
+                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
+                               {
+                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
+                               }
+                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
+                               {
+                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
+                               }
+                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
+                               {
+                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
+                               }
+                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
+                               {
+                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
+                               }
+                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
+                               {
+                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
+                               }
+                       }
+                       if (isset($data->data['items']))
+                       {
+                               unset($data->data['items']);
+                       }
+                       if (isset($data->data['ordered_items']))
+                       {
+                               unset($data->data['ordered_items']);
+                       }
+               }
+               return array(serialize($data->data), $items_by_id);
+       }
+}
diff --git a/wp-includes/SimplePie/Cache/File.php b/wp-includes/SimplePie/Cache/File.php
new file mode 100644 (file)
index 0000000..5797b3a
--- /dev/null
@@ -0,0 +1,173 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Caches data to the filesystem
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ */
+class SimplePie_Cache_File implements SimplePie_Cache_Base
+{
+       /**
+        * Location string
+        *
+        * @see SimplePie::$cache_location
+        * @var string
+        */
+       protected $location;
+
+       /**
+        * Filename
+        *
+        * @var string
+        */
+       protected $filename;
+
+       /**
+        * File extension
+        *
+        * @var string
+        */
+       protected $extension;
+
+       /**
+        * File path
+        *
+        * @var string
+        */
+       protected $name;
+
+       /**
+        * Create a new cache object
+        *
+        * @param string $location Location string (from SimplePie::$cache_location)
+        * @param string $name Unique ID for the cache
+        * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+        */
+       public function __construct($location, $name, $type)
+       {
+               $this->location = $location;
+               $this->filename = $name;
+               $this->extension = $type;
+               $this->name = "$this->location/$this->filename.$this->extension";
+       }
+
+       /**
+        * Save data to the cache
+        *
+        * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+        * @return bool Successfulness
+        */
+       public function save($data)
+       {
+               if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
+               {
+                       if ($data instanceof SimplePie)
+                       {
+                               $data = $data->data;
+                       }
+
+                       $data = serialize($data);
+                       return (bool) file_put_contents($this->name, $data);
+               }
+               return false;
+       }
+
+       /**
+        * Retrieve the data saved to the cache
+        *
+        * @return array Data for SimplePie::$data
+        */
+       public function load()
+       {
+               if (file_exists($this->name) && is_readable($this->name))
+               {
+                       return unserialize(file_get_contents($this->name));
+               }
+               return false;
+       }
+
+       /**
+        * Retrieve the last modified time for the cache
+        *
+        * @return int Timestamp
+        */
+       public function mtime()
+       {
+               if (file_exists($this->name))
+               {
+                       return filemtime($this->name);
+               }
+               return false;
+       }
+
+       /**
+        * Set the last modified time to the current time
+        *
+        * @return bool Success status
+        */
+       public function touch()
+       {
+               if (file_exists($this->name))
+               {
+                       return touch($this->name);
+               }
+               return false;
+       }
+
+       /**
+        * Remove the cache
+        *
+        * @return bool Success status
+        */
+       public function unlink()
+       {
+               if (file_exists($this->name))
+               {
+                       return unlink($this->name);
+               }
+               return false;
+       }
+}
diff --git a/wp-includes/SimplePie/Cache/Memcache.php b/wp-includes/SimplePie/Cache/Memcache.php
new file mode 100644 (file)
index 0000000..fd44780
--- /dev/null
@@ -0,0 +1,183 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Caches data to memcache
+ *
+ * Registered for URLs with the "memcache" protocol
+ *
+ * For example, `memcache://localhost:11211/?timeout=3600&prefix=sp_` will
+ * connect to memcache on `localhost` on port 11211. All tables will be
+ * prefixed with `sp_` and data will expire after 3600 seconds
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ * @uses Memcache
+ */
+class SimplePie_Cache_Memcache implements SimplePie_Cache_Base
+{
+       /**
+        * Memcache instance
+        *
+        * @var Memcache
+        */
+       protected $cache;
+
+       /**
+        * Options
+        *
+        * @var array
+        */
+       protected $options;
+
+       /**
+        * Cache name
+        *
+        * @var string
+        */
+       protected $name;
+
+       /**
+        * Create a new cache object
+        *
+        * @param string $location Location string (from SimplePie::$cache_location)
+        * @param string $name Unique ID for the cache
+        * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+        */
+       public function __construct($location, $name, $type)
+       {
+               $this->options = array(
+                       'host' => '127.0.0.1',
+                       'port' => 11211,
+                       'extras' => array(
+                               'timeout' => 3600, // one hour
+                               'prefix' => 'simplepie_',
+                       ),
+               );
+               $parsed = SimplePie_Cache::parse_URL($location);
+               $this->options['host'] = empty($parsed['host']) ? $this->options['host'] : $parsed['host'];
+               $this->options['port'] = empty($parsed['port']) ? $this->options['port'] : $parsed['port'];
+               $this->options['extras'] = array_merge($this->options['extras'], $parsed['extras']);
+               $this->name = $this->options['extras']['prefix'] . md5("$name:$type");
+
+               $this->cache = new Memcache();
+               $this->cache->addServer($this->options['host'], (int) $this->options['port']);
+       }
+
+       /**
+        * Save data to the cache
+        *
+        * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+        * @return bool Successfulness
+        */
+       public function save($data)
+       {
+               if ($data instanceof SimplePie)
+               {
+                       $data = $data->data;
+               }
+               return $this->cache->set($this->name, serialize($data), MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']);
+       }
+
+       /**
+        * Retrieve the data saved to the cache
+        *
+        * @return array Data for SimplePie::$data
+        */
+       public function load()
+       {
+               $data = $this->cache->get($this->name);
+
+               if ($data !== false)
+               {
+                       return unserialize($data);
+               }
+               return false;
+       }
+
+       /**
+        * Retrieve the last modified time for the cache
+        *
+        * @return int Timestamp
+        */
+       public function mtime()
+       {
+               $data = $this->cache->get($this->name);
+
+               if ($data !== false)
+               {
+                       // essentially ignore the mtime because Memcache expires on it's own
+                       return time();
+               }
+
+               return false;
+       }
+
+       /**
+        * Set the last modified time to the current time
+        *
+        * @return bool Success status
+        */
+       public function touch()
+       {
+               $data = $this->cache->get($this->name);
+
+               if ($data !== false)
+               {
+                       return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->duration);
+               }
+
+               return false;
+       }
+
+       /**
+        * Remove the cache
+        *
+        * @return bool Success status
+        */
+       public function unlink()
+       {
+               return $this->cache->delete($this->name, 0);
+       }
+}
diff --git a/wp-includes/SimplePie/Cache/MySQL.php b/wp-includes/SimplePie/Cache/MySQL.php
new file mode 100644 (file)
index 0000000..d53ebc1
--- /dev/null
@@ -0,0 +1,438 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Caches data to a MySQL database
+ *
+ * Registered for URLs with the "mysql" protocol
+ *
+ * For example, `mysql://root:password@localhost:3306/mydb?prefix=sp_` will
+ * connect to the `mydb` database on `localhost` on port 3306, with the user
+ * `root` and the password `password`. All tables will be prefixed with `sp_`
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ */
+class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
+{
+       /**
+        * PDO instance
+        *
+        * @var PDO
+        */
+       protected $mysql;
+
+       /**
+        * Options
+        *
+        * @var array
+        */
+       protected $options;
+
+       /**
+        * Cache ID
+        *
+        * @var string
+        */
+       protected $id;
+
+       /**
+        * Create a new cache object
+        *
+        * @param string $location Location string (from SimplePie::$cache_location)
+        * @param string $name Unique ID for the cache
+        * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+        */
+       public function __construct($location, $name, $type)
+       {
+               $this->options = array(
+                       'user' => null,
+                       'pass' => null,
+                       'host' => '127.0.0.1',
+                       'port' => '3306',
+                       'path' => '',
+                       'extras' => array(
+                               'prefix' => '',
+                       ),
+               );
+               $this->options = array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
+
+               // Path is prefixed with a "/"
+               $this->options['dbname'] = substr($this->options['path'], 1);
+
+               try
+               {
+                       $this->mysql = new PDO("mysql:dbname={$this->options['dbname']};host={$this->options['host']};port={$this->options['port']}", $this->options['user'], $this->options['pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
+               }
+               catch (PDOException $e)
+               {
+                       $this->mysql = null;
+                       return;
+               }
+
+               $this->id = $name . $type;
+
+               if (!$query = $this->mysql->query('SHOW TABLES'))
+               {
+                       $this->mysql = null;
+                       return;
+               }
+
+               $db = array();
+               while ($row = $query->fetchColumn())
+               {
+                       $db[] = $row;
+               }
+
+               if (!in_array($this->options['extras']['prefix'] . 'cache_data', $db))
+               {
+                       $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))');
+                       if ($query === false)
+                       {
+                               $this->mysql = null;
+                       }
+               }
+
+               if (!in_array($this->options['extras']['prefix'] . 'items', $db))
+               {
+                       $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` TEXT CHARACTER SET utf8 NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))');
+                       if ($query === false)
+                       {
+                               $this->mysql = null;
+                       }
+               }
+       }
+
+       /**
+        * Save data to the cache
+        *
+        * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+        * @return bool Successfulness
+        */
+       public function save($data)
+       {
+               if ($this->mysql === null)
+               {
+                       return false;
+               }
+
+               if ($data instanceof SimplePie)
+               {
+                       $data = clone $data;
+
+                       $prepared = self::prepare_simplepie_object_for_cache($data);
+
+                       $query = $this->mysql->prepare('SELECT COUNT(*) FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed');
+                       $query->bindValue(':feed', $this->id);
+                       if ($query->execute())
+                       {
+                               if ($query->fetchColumn() > 0)
+                               {
+                                       $items = count($prepared[1]);
+                                       if ($items)
+                                       {
+                                               $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = :items, `data` = :data, `mtime` = :time WHERE `id` = :feed';
+                                               $query = $this->mysql->prepare($sql);
+                                               $query->bindValue(':items', $items);
+                                       }
+                                       else
+                                       {
+                                               $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `data` = :data, `mtime` = :time WHERE `id` = :feed';
+                                               $query = $this->mysql->prepare($sql);
+                                       }
+
+                                       $query->bindValue(':data', $prepared[0]);
+                                       $query->bindValue(':time', time());
+                                       $query->bindValue(':feed', $this->id);
+                                       if (!$query->execute())
+                                       {
+                                               return false;
+                                       }
+                               }
+                               else
+                               {
+                                       $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:feed, :count, :data, :time)');
+                                       $query->bindValue(':feed', $this->id);
+                                       $query->bindValue(':count', count($prepared[1]));
+                                       $query->bindValue(':data', $prepared[0]);
+                                       $query->bindValue(':time', time());
+                                       if (!$query->execute())
+                                       {
+                                               return false;
+                                       }
+                               }
+
+                               $ids = array_keys($prepared[1]);
+                               if (!empty($ids))
+                               {
+                                       foreach ($ids as $id)
+                                       {
+                                               $database_ids[] = $this->mysql->quote($id);
+                                       }
+
+                                       $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `id` = ' . implode(' OR `id` = ', $database_ids) . ' AND `feed_id` = :feed');
+                                       $query->bindValue(':feed', $this->id);
+
+                                       if ($query->execute())
+                                       {
+                                               $existing_ids = array();
+                                               while ($row = $query->fetchColumn())
+                                               {
+                                                       $existing_ids[] = $row;
+                                               }
+
+                                               $new_ids = array_diff($ids, $existing_ids);
+
+                                               foreach ($new_ids as $new_id)
+                                               {
+                                                       if (!($date = $prepared[1][$new_id]->get_date('U')))
+                                                       {
+                                                               $date = time();
+                                                       }
+
+                                                       $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'items` (`feed_id`, `id`, `data`, `posted`) VALUES(:feed, :id, :data, :date)');
+                                                       $query->bindValue(':feed', $this->id);
+                                                       $query->bindValue(':id', $new_id);
+                                                       $query->bindValue(':data', serialize($prepared[1][$new_id]->data));
+                                                       $query->bindValue(':date', $date);
+                                                       if (!$query->execute())
+                                                       {
+                                                               return false;
+                                                       }
+                                               }
+                                               return true;
+                                       }
+                               }
+                               else
+                               {
+                                       return true;
+                               }
+                       }
+               }
+               else
+               {
+                       $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed');
+                       $query->bindValue(':feed', $this->id);
+                       if ($query->execute())
+                       {
+                               if ($query->rowCount() > 0)
+                               {
+                                       $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = 0, `data` = :data, `mtime` = :time WHERE `id` = :feed');
+                                       $query->bindValue(':data', serialize($data));
+                                       $query->bindValue(':time', time());
+                                       $query->bindValue(':feed', $this->id);
+                                       if ($this->execute())
+                                       {
+                                               return true;
+                                       }
+                               }
+                               else
+                               {
+                                       $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:id, 0, :data, :time)');
+                                       $query->bindValue(':id', $this->id);
+                                       $query->bindValue(':data', serialize($data));
+                                       $query->bindValue(':time', time());
+                                       if ($query->execute())
+                                       {
+                                               return true;
+                                       }
+                               }
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Retrieve the data saved to the cache
+        *
+        * @return array Data for SimplePie::$data
+        */
+       public function load()
+       {
+               if ($this->mysql === null)
+               {
+                       return false;
+               }
+
+               $query = $this->mysql->prepare('SELECT `items`, `data` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
+               $query->bindValue(':id', $this->id);
+               if ($query->execute() && ($row = $query->fetch()))
+               {
+                       $data = unserialize($row[1]);
+
+                       if (isset($this->options['items'][0]))
+                       {
+                               $items = (int) $this->options['items'][0];
+                       }
+                       else
+                       {
+                               $items = (int) $row[0];
+                       }
+
+                       if ($items !== 0)
+                       {
+                               if (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
+                               {
+                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
+                               }
+                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
+                               {
+                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
+                               }
+                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
+                               {
+                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
+                               }
+                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]))
+                               {
+                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0];
+                               }
+                               else
+                               {
+                                       $feed = null;
+                               }
+
+                               if ($feed !== null)
+                               {
+                                       $sql = 'SELECT `data` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :feed ORDER BY `posted` DESC';
+                                       if ($items > 0)
+                                       {
+                                               $sql .= ' LIMIT ' . $items;
+                                       }
+
+                                       $query = $this->mysql->prepare($sql);
+                                       $query->bindValue(':feed', $this->id);
+                                       if ($query->execute())
+                                       {
+                                               while ($row = $query->fetchColumn())
+                                               {
+                                                       $feed['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'][] = unserialize($row);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               return false;
+                                       }
+                               }
+                       }
+                       return $data;
+               }
+               return false;
+       }
+
+       /**
+        * Retrieve the last modified time for the cache
+        *
+        * @return int Timestamp
+        */
+       public function mtime()
+       {
+               if ($this->mysql === null)
+               {
+                       return false;
+               }
+
+               $query = $this->mysql->prepare('SELECT `mtime` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
+               $query->bindValue(':id', $this->id);
+               if ($query->execute() && ($time = $query->fetchColumn()))
+               {
+                       return $time;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Set the last modified time to the current time
+        *
+        * @return bool Success status
+        */
+       public function touch()
+       {
+               if ($this->mysql === null)
+               {
+                       return false;
+               }
+
+               $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `mtime` = :time WHERE `id` = :id');
+               $query->bindValue(':time', time());
+               $query->bindValue(':id', $this->id);
+               if ($query->execute() && $query->rowCount() > 0)
+               {
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Remove the cache
+        *
+        * @return bool Success status
+        */
+       public function unlink()
+       {
+               if ($this->mysql === null)
+               {
+                       return false;
+               }
+
+               $query = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
+               $query->bindValue(':id', $this->id);
+               $query2 = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :id');
+               $query2->bindValue(':id', $this->id);
+               if ($query->execute() && $query2->execute())
+               {
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/Caption.php b/wp-includes/SimplePie/Caption.php
new file mode 100644 (file)
index 0000000..52922c5
--- /dev/null
@@ -0,0 +1,210 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Handles `<media:text>` captions as defined in Media RSS.
+ *
+ * Used by {@see SimplePie_Enclosure::get_caption()} and {@see SimplePie_Enclosure::get_captions()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_caption_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Caption
+{
+       /**
+        * Content type
+        *
+        * @var string
+        * @see get_type()
+        */
+       var $type;
+
+       /**
+        * Language
+        *
+        * @var string
+        * @see get_language()
+        */
+       var $lang;
+
+       /**
+        * Start time
+        *
+        * @var string
+        * @see get_starttime()
+        */
+       var $startTime;
+
+       /**
+        * End time
+        *
+        * @var string
+        * @see get_endtime()
+        */
+       var $endTime;
+
+       /**
+        * Caption text
+        *
+        * @var string
+        * @see get_text()
+        */
+       var $text;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        */
+       public function __construct($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
+       {
+               $this->type = $type;
+               $this->lang = $lang;
+               $this->startTime = $startTime;
+               $this->endTime = $endTime;
+               $this->text = $text;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the end time
+        *
+        * @return string|null Time in the format 'hh:mm:ss.SSS'
+        */
+       public function get_endtime()
+       {
+               if ($this->endTime !== null)
+               {
+                       return $this->endTime;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the language
+        *
+        * @link http://tools.ietf.org/html/rfc3066
+        * @return string|null Language code as per RFC 3066
+        */
+       public function get_language()
+       {
+               if ($this->lang !== null)
+               {
+                       return $this->lang;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the start time
+        *
+        * @return string|null Time in the format 'hh:mm:ss.SSS'
+        */
+       public function get_starttime()
+       {
+               if ($this->startTime !== null)
+               {
+                       return $this->startTime;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the text of the caption
+        *
+        * @return string|null
+        */
+       public function get_text()
+       {
+               if ($this->text !== null)
+               {
+                       return $this->text;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the content type (not MIME type)
+        *
+        * @return string|null Either 'text' or 'html'
+        */
+       public function get_type()
+       {
+               if ($this->type !== null)
+               {
+                       return $this->type;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Category.php b/wp-includes/SimplePie/Category.php
new file mode 100644 (file)
index 0000000..ad0407b
--- /dev/null
@@ -0,0 +1,157 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Manages all category-related data
+ *
+ * Used by {@see SimplePie_Item::get_category()} and {@see SimplePie_Item::get_categories()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_category_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Category
+{
+       /**
+        * Category identifier
+        *
+        * @var string
+        * @see get_term
+        */
+       var $term;
+
+       /**
+        * Categorization scheme identifier
+        *
+        * @var string
+        * @see get_scheme()
+        */
+       var $scheme;
+
+       /**
+        * Human readable label
+        *
+        * @var string
+        * @see get_label()
+        */
+       var $label;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * @param string $term
+        * @param string $scheme
+        * @param string $label
+        */
+       public function __construct($term = null, $scheme = null, $label = null)
+       {
+               $this->term = $term;
+               $this->scheme = $scheme;
+               $this->label = $label;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the category identifier
+        *
+        * @return string|null
+        */
+       public function get_term()
+       {
+               if ($this->term !== null)
+               {
+                       return $this->term;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the categorization scheme identifier
+        *
+        * @return string|null
+        */
+       public function get_scheme()
+       {
+               if ($this->scheme !== null)
+               {
+                       return $this->scheme;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the human readable label
+        *
+        * @return string|null
+        */
+       public function get_label()
+       {
+               if ($this->label !== null)
+               {
+                       return $this->label;
+               }
+               else
+               {
+                       return $this->get_term();
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Content/Type/Sniffer.php b/wp-includes/SimplePie/Content/Type/Sniffer.php
new file mode 100644 (file)
index 0000000..20d053d
--- /dev/null
@@ -0,0 +1,332 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Content-type sniffing
+ *
+ * Based on the rules in http://tools.ietf.org/html/draft-abarth-mime-sniff-06
+ *
+ * This is used since we can't always trust Content-Type headers, and is based
+ * upon the HTML5 parsing rules.
+ *
+ *
+ * This class can be overloaded with {@see SimplePie::set_content_type_sniffer_class()}
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ */
+class SimplePie_Content_Type_Sniffer
+{
+       /**
+        * File object
+        *
+        * @var SimplePie_File
+        */
+       var $file;
+
+       /**
+        * Create an instance of the class with the input file
+        *
+        * @param SimplePie_Content_Type_Sniffer $file Input file
+        */
+       public function __construct($file)
+       {
+               $this->file = $file;
+       }
+
+       /**
+        * Get the Content-Type of the specified file
+        *
+        * @return string Actual Content-Type
+        */
+       public function get_type()
+       {
+               if (isset($this->file->headers['content-type']))
+               {
+                       if (!isset($this->file->headers['content-encoding'])
+                               && ($this->file->headers['content-type'] === 'text/plain'
+                                       || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1'
+                                       || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1'
+                                       || $this->file->headers['content-type'] === 'text/plain; charset=UTF-8'))
+                       {
+                               return $this->text_or_binary();
+                       }
+
+                       if (($pos = strpos($this->file->headers['content-type'], ';')) !== false)
+                       {
+                               $official = substr($this->file->headers['content-type'], 0, $pos);
+                       }
+                       else
+                       {
+                               $official = $this->file->headers['content-type'];
+                       }
+                       $official = trim(strtolower($official));
+
+                       if ($official === 'unknown/unknown'
+                               || $official === 'application/unknown')
+                       {
+                               return $this->unknown();
+                       }
+                       elseif (substr($official, -4) === '+xml'
+                               || $official === 'text/xml'
+                               || $official === 'application/xml')
+                       {
+                               return $official;
+                       }
+                       elseif (substr($official, 0, 6) === 'image/')
+                       {
+                               if ($return = $this->image())
+                               {
+                                       return $return;
+                               }
+                               else
+                               {
+                                       return $official;
+                               }
+                       }
+                       elseif ($official === 'text/html')
+                       {
+                               return $this->feed_or_html();
+                       }
+                       else
+                       {
+                               return $official;
+                       }
+               }
+               else
+               {
+                       return $this->unknown();
+               }
+       }
+
+       /**
+        * Sniff text or binary
+        *
+        * @return string Actual Content-Type
+        */
+       public function text_or_binary()
+       {
+               if (substr($this->file->body, 0, 2) === "\xFE\xFF"
+                       || substr($this->file->body, 0, 2) === "\xFF\xFE"
+                       || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF"
+                       || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF")
+               {
+                       return 'text/plain';
+               }
+               elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body))
+               {
+                       return 'application/octect-stream';
+               }
+               else
+               {
+                       return 'text/plain';
+               }
+       }
+
+       /**
+        * Sniff unknown
+        *
+        * @return string Actual Content-Type
+        */
+       public function unknown()
+       {
+               $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20");
+               if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html'
+                       || strtolower(substr($this->file->body, $ws, 5)) === '<html'
+                       || strtolower(substr($this->file->body, $ws, 7)) === '<script')
+               {
+                       return 'text/html';
+               }
+               elseif (substr($this->file->body, 0, 5) === '%PDF-')
+               {
+                       return 'application/pdf';
+               }
+               elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-')
+               {
+                       return 'application/postscript';
+               }
+               elseif (substr($this->file->body, 0, 6) === 'GIF87a'
+                       || substr($this->file->body, 0, 6) === 'GIF89a')
+               {
+                       return 'image/gif';
+               }
+               elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+               {
+                       return 'image/png';
+               }
+               elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+               {
+                       return 'image/jpeg';
+               }
+               elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+               {
+                       return 'image/bmp';
+               }
+               elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00")
+               {
+                       return 'image/vnd.microsoft.icon';
+               }
+               else
+               {
+                       return $this->text_or_binary();
+               }
+       }
+
+       /**
+        * Sniff images
+        *
+        * @return string Actual Content-Type
+        */
+       public function image()
+       {
+               if (substr($this->file->body, 0, 6) === 'GIF87a'
+                       || substr($this->file->body, 0, 6) === 'GIF89a')
+               {
+                       return 'image/gif';
+               }
+               elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+               {
+                       return 'image/png';
+               }
+               elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+               {
+                       return 'image/jpeg';
+               }
+               elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+               {
+                       return 'image/bmp';
+               }
+               elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00")
+               {
+                       return 'image/vnd.microsoft.icon';
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Sniff HTML
+        *
+        * @return string Actual Content-Type
+        */
+       public function feed_or_html()
+       {
+               $len = strlen($this->file->body);
+               $pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
+
+               while ($pos < $len)
+               {
+                       switch ($this->file->body[$pos])
+                       {
+                               case "\x09":
+                               case "\x0A":
+                               case "\x0D":
+                               case "\x20":
+                                       $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos);
+                                       continue 2;
+
+                               case '<':
+                                       $pos++;
+                                       break;
+
+                               default:
+                                       return 'text/html';
+                       }
+
+                       if (substr($this->file->body, $pos, 3) === '!--')
+                       {
+                               $pos += 3;
+                               if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false)
+                               {
+                                       $pos += 3;
+                               }
+                               else
+                               {
+                                       return 'text/html';
+                               }
+                       }
+                       elseif (substr($this->file->body, $pos, 1) === '!')
+                       {
+                               if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false)
+                               {
+                                       $pos++;
+                               }
+                               else
+                               {
+                                       return 'text/html';
+                               }
+                       }
+                       elseif (substr($this->file->body, $pos, 1) === '?')
+                       {
+                               if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false)
+                               {
+                                       $pos += 2;
+                               }
+                               else
+                               {
+                                       return 'text/html';
+                               }
+                       }
+                       elseif (substr($this->file->body, $pos, 3) === 'rss'
+                               || substr($this->file->body, $pos, 7) === 'rdf:RDF')
+                       {
+                               return 'application/rss+xml';
+                       }
+                       elseif (substr($this->file->body, $pos, 4) === 'feed')
+                       {
+                               return 'application/atom+xml';
+                       }
+                       else
+                       {
+                               return 'text/html';
+                       }
+               }
+
+               return 'text/html';
+       }
+}
+
diff --git a/wp-includes/SimplePie/Copyright.php b/wp-includes/SimplePie/Copyright.php
new file mode 100644 (file)
index 0000000..57c535a
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Manages `<media:copyright>` copyright tags as defined in Media RSS
+ *
+ * Used by {@see SimplePie_Enclosure::get_copyright()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_copyright_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Copyright
+{
+       /**
+        * Copyright URL
+        *
+        * @var string
+        * @see get_url()
+        */
+       var $url;
+
+       /**
+        * Attribution
+        *
+        * @var string
+        * @see get_attribution()
+        */
+       var $label;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        */
+       public function __construct($url = null, $label = null)
+       {
+               $this->url = $url;
+               $this->label = $label;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the copyright URL
+        *
+        * @return string|null URL to copyright information
+        */
+       public function get_url()
+       {
+               if ($this->url !== null)
+               {
+                       return $this->url;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the attribution text
+        *
+        * @return string|null
+        */
+       public function get_attribution()
+       {
+               if ($this->label !== null)
+               {
+                       return $this->label;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Core.php b/wp-includes/SimplePie/Core.php
new file mode 100644 (file)
index 0000000..46d9966
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2009, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * SimplePie class.
+ *
+ * Class for backward compatibility.
+ *
+ * @deprecated Use {@see SimplePie} directly
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Core extends SimplePie
+{
+
+}
\ No newline at end of file
diff --git a/wp-includes/SimplePie/Credit.php b/wp-includes/SimplePie/Credit.php
new file mode 100644 (file)
index 0000000..d3a3442
--- /dev/null
@@ -0,0 +1,156 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles `<media:credit>` as defined in Media RSS
+ *
+ * Used by {@see SimplePie_Enclosure::get_credit()} and {@see SimplePie_Enclosure::get_credits()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_credit_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Credit
+{
+       /**
+        * Credited role
+        *
+        * @var string
+        * @see get_role()
+        */
+       var $role;
+
+       /**
+        * Organizational scheme
+        *
+        * @var string
+        * @see get_scheme()
+        */
+       var $scheme;
+
+       /**
+        * Credited name
+        *
+        * @var string
+        * @see get_name()
+        */
+       var $name;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        */
+       public function __construct($role = null, $scheme = null, $name = null)
+       {
+               $this->role = $role;
+               $this->scheme = $scheme;
+               $this->name = $name;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the role of the person receiving credit
+        *
+        * @return string|null
+        */
+       public function get_role()
+       {
+               if ($this->role !== null)
+               {
+                       return $this->role;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the organizational scheme
+        *
+        * @return string|null
+        */
+       public function get_scheme()
+       {
+               if ($this->scheme !== null)
+               {
+                       return $this->scheme;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the credited person/entity's name
+        *
+        * @return string|null
+        */
+       public function get_name()
+       {
+               if ($this->name !== null)
+               {
+                       return $this->name;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Decode/HTML/Entities.php b/wp-includes/SimplePie/Decode/HTML/Entities.php
new file mode 100644 (file)
index 0000000..069e8d8
--- /dev/null
@@ -0,0 +1,617 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Decode HTML Entities
+ *
+ * This implements HTML5 as of revision 967 (2007-06-28)
+ *
+ * @deprecated Use DOMDocument instead!
+ * @package SimplePie
+ */
+class SimplePie_Decode_HTML_Entities
+{
+       /**
+        * Data to be parsed
+        *
+        * @access private
+        * @var string
+        */
+       var $data = '';
+
+       /**
+        * Currently consumed bytes
+        *
+        * @access private
+        * @var string
+        */
+       var $consumed = '';
+
+       /**
+        * Position of the current byte being parsed
+        *
+        * @access private
+        * @var int
+        */
+       var $position = 0;
+
+       /**
+        * Create an instance of the class with the input data
+        *
+        * @access public
+        * @param string $data Input data
+        */
+       public function __construct($data)
+       {
+               $this->data = $data;
+       }
+
+       /**
+        * Parse the input data
+        *
+        * @access public
+        * @return string Output data
+        */
+       public function parse()
+       {
+               while (($this->position = strpos($this->data, '&', $this->position)) !== false)
+               {
+                       $this->consume();
+                       $this->entity();
+                       $this->consumed = '';
+               }
+               return $this->data;
+       }
+
+       /**
+        * Consume the next byte
+        *
+        * @access private
+        * @return mixed The next byte, or false, if there is no more data
+        */
+       public function consume()
+       {
+               if (isset($this->data[$this->position]))
+               {
+                       $this->consumed .= $this->data[$this->position];
+                       return $this->data[$this->position++];
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Consume a range of characters
+        *
+        * @access private
+        * @param string $chars Characters to consume
+        * @return mixed A series of characters that match the range, or false
+        */
+       public function consume_range($chars)
+       {
+               if ($len = strspn($this->data, $chars, $this->position))
+               {
+                       $data = substr($this->data, $this->position, $len);
+                       $this->consumed .= $data;
+                       $this->position += $len;
+                       return $data;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Unconsume one byte
+        *
+        * @access private
+        */
+       public function unconsume()
+       {
+               $this->consumed = substr($this->consumed, 0, -1);
+               $this->position--;
+       }
+
+       /**
+        * Decode an entity
+        *
+        * @access private
+        */
+       public function entity()
+       {
+               switch ($this->consume())
+               {
+                       case "\x09":
+                       case "\x0A":
+                       case "\x0B":
+                       case "\x0B":
+                       case "\x0C":
+                       case "\x20":
+                       case "\x3C":
+                       case "\x26":
+                       case false:
+                               break;
+
+                       case "\x23":
+                               switch ($this->consume())
+                               {
+                                       case "\x78":
+                                       case "\x58":
+                                               $range = '0123456789ABCDEFabcdef';
+                                               $hex = true;
+                                               break;
+
+                                       default:
+                                               $range = '0123456789';
+                                               $hex = false;
+                                               $this->unconsume();
+                                               break;
+                               }
+
+                               if ($codepoint = $this->consume_range($range))
+                               {
+                                       static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
+
+                                       if ($hex)
+                                       {
+                                               $codepoint = hexdec($codepoint);
+                                       }
+                                       else
+                                       {
+                                               $codepoint = intval($codepoint);
+                                       }
+
+                                       if (isset($windows_1252_specials[$codepoint]))
+                                       {
+                                               $replacement = $windows_1252_specials[$codepoint];
+                                       }
+                                       else
+                                       {
+                                               $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
+                                       }
+
+                                       if (!in_array($this->consume(), array(';', false), true))
+                                       {
+                                               $this->unconsume();
+                                       }
+
+                                       $consumed_length = strlen($this->consumed);
+                                       $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
+                                       $this->position += strlen($replacement) - $consumed_length;
+                               }
+                               break;
+
+                       default:
+                               static $entities = array(
+                                       'Aacute' => "\xC3\x81",
+                                       'aacute' => "\xC3\xA1",
+                                       'Aacute;' => "\xC3\x81",
+                                       'aacute;' => "\xC3\xA1",
+                                       'Acirc' => "\xC3\x82",
+                                       'acirc' => "\xC3\xA2",
+                                       'Acirc;' => "\xC3\x82",
+                                       'acirc;' => "\xC3\xA2",
+                                       'acute' => "\xC2\xB4",
+                                       'acute;' => "\xC2\xB4",
+                                       'AElig' => "\xC3\x86",
+                                       'aelig' => "\xC3\xA6",
+                                       'AElig;' => "\xC3\x86",
+                                       'aelig;' => "\xC3\xA6",
+                                       'Agrave' => "\xC3\x80",
+                                       'agrave' => "\xC3\xA0",
+                                       'Agrave;' => "\xC3\x80",
+                                       'agrave;' => "\xC3\xA0",
+                                       'alefsym;' => "\xE2\x84\xB5",
+                                       'Alpha;' => "\xCE\x91",
+                                       'alpha;' => "\xCE\xB1",
+                                       'AMP' => "\x26",
+                                       'amp' => "\x26",
+                                       'AMP;' => "\x26",
+                                       'amp;' => "\x26",
+                                       'and;' => "\xE2\x88\xA7",
+                                       'ang;' => "\xE2\x88\xA0",
+                                       'apos;' => "\x27",
+                                       'Aring' => "\xC3\x85",
+                                       'aring' => "\xC3\xA5",
+                                       'Aring;' => "\xC3\x85",
+                                       'aring;' => "\xC3\xA5",
+                                       'asymp;' => "\xE2\x89\x88",
+                                       'Atilde' => "\xC3\x83",
+                                       'atilde' => "\xC3\xA3",
+                                       'Atilde;' => "\xC3\x83",
+                                       'atilde;' => "\xC3\xA3",
+                                       'Auml' => "\xC3\x84",
+                                       'auml' => "\xC3\xA4",
+                                       'Auml;' => "\xC3\x84",
+                                       'auml;' => "\xC3\xA4",
+                                       'bdquo;' => "\xE2\x80\x9E",
+                                       'Beta;' => "\xCE\x92",
+                                       'beta;' => "\xCE\xB2",
+                                       'brvbar' => "\xC2\xA6",
+                                       'brvbar;' => "\xC2\xA6",
+                                       'bull;' => "\xE2\x80\xA2",
+                                       'cap;' => "\xE2\x88\xA9",
+                                       'Ccedil' => "\xC3\x87",
+                                       'ccedil' => "\xC3\xA7",
+                                       'Ccedil;' => "\xC3\x87",
+                                       'ccedil;' => "\xC3\xA7",
+                                       'cedil' => "\xC2\xB8",
+                                       'cedil;' => "\xC2\xB8",
+                                       'cent' => "\xC2\xA2",
+                                       'cent;' => "\xC2\xA2",
+                                       'Chi;' => "\xCE\xA7",
+                                       'chi;' => "\xCF\x87",
+                                       'circ;' => "\xCB\x86",
+                                       'clubs;' => "\xE2\x99\xA3",
+                                       'cong;' => "\xE2\x89\x85",
+                                       'COPY' => "\xC2\xA9",
+                                       'copy' => "\xC2\xA9",
+                                       'COPY;' => "\xC2\xA9",
+                                       'copy;' => "\xC2\xA9",
+                                       'crarr;' => "\xE2\x86\xB5",
+                                       'cup;' => "\xE2\x88\xAA",
+                                       'curren' => "\xC2\xA4",
+                                       'curren;' => "\xC2\xA4",
+                                       'Dagger;' => "\xE2\x80\xA1",
+                                       'dagger;' => "\xE2\x80\xA0",
+                                       'dArr;' => "\xE2\x87\x93",
+                                       'darr;' => "\xE2\x86\x93",
+                                       'deg' => "\xC2\xB0",
+                                       'deg;' => "\xC2\xB0",
+                                       'Delta;' => "\xCE\x94",
+                                       'delta;' => "\xCE\xB4",
+                                       'diams;' => "\xE2\x99\xA6",
+                                       'divide' => "\xC3\xB7",
+                                       'divide;' => "\xC3\xB7",
+                                       'Eacute' => "\xC3\x89",
+                                       'eacute' => "\xC3\xA9",
+                                       'Eacute;' => "\xC3\x89",
+                                       'eacute;' => "\xC3\xA9",
+                                       'Ecirc' => "\xC3\x8A",
+                                       'ecirc' => "\xC3\xAA",
+                                       'Ecirc;' => "\xC3\x8A",
+                                       'ecirc;' => "\xC3\xAA",
+                                       'Egrave' => "\xC3\x88",
+                                       'egrave' => "\xC3\xA8",
+                                       'Egrave;' => "\xC3\x88",
+                                       'egrave;' => "\xC3\xA8",
+                                       'empty;' => "\xE2\x88\x85",
+                                       'emsp;' => "\xE2\x80\x83",
+                                       'ensp;' => "\xE2\x80\x82",
+                                       'Epsilon;' => "\xCE\x95",
+                                       'epsilon;' => "\xCE\xB5",
+                                       'equiv;' => "\xE2\x89\xA1",
+                                       'Eta;' => "\xCE\x97",
+                                       'eta;' => "\xCE\xB7",
+                                       'ETH' => "\xC3\x90",
+                                       'eth' => "\xC3\xB0",
+                                       'ETH;' => "\xC3\x90",
+                                       'eth;' => "\xC3\xB0",
+                                       'Euml' => "\xC3\x8B",
+                                       'euml' => "\xC3\xAB",
+                                       'Euml;' => "\xC3\x8B",
+                                       'euml;' => "\xC3\xAB",
+                                       'euro;' => "\xE2\x82\xAC",
+                                       'exist;' => "\xE2\x88\x83",
+                                       'fnof;' => "\xC6\x92",
+                                       'forall;' => "\xE2\x88\x80",
+                                       'frac12' => "\xC2\xBD",
+                                       'frac12;' => "\xC2\xBD",
+                                       'frac14' => "\xC2\xBC",
+                                       'frac14;' => "\xC2\xBC",
+                                       'frac34' => "\xC2\xBE",
+                                       'frac34;' => "\xC2\xBE",
+                                       'frasl;' => "\xE2\x81\x84",
+                                       'Gamma;' => "\xCE\x93",
+                                       'gamma;' => "\xCE\xB3",
+                                       'ge;' => "\xE2\x89\xA5",
+                                       'GT' => "\x3E",
+                                       'gt' => "\x3E",
+                                       'GT;' => "\x3E",
+                                       'gt;' => "\x3E",
+                                       'hArr;' => "\xE2\x87\x94",
+                                       'harr;' => "\xE2\x86\x94",
+                                       'hearts;' => "\xE2\x99\xA5",
+                                       'hellip;' => "\xE2\x80\xA6",
+                                       'Iacute' => "\xC3\x8D",
+                                       'iacute' => "\xC3\xAD",
+                                       'Iacute;' => "\xC3\x8D",
+                                       'iacute;' => "\xC3\xAD",
+                                       'Icirc' => "\xC3\x8E",
+                                       'icirc' => "\xC3\xAE",
+                                       'Icirc;' => "\xC3\x8E",
+                                       'icirc;' => "\xC3\xAE",
+                                       'iexcl' => "\xC2\xA1",
+                                       'iexcl;' => "\xC2\xA1",
+                                       'Igrave' => "\xC3\x8C",
+                                       'igrave' => "\xC3\xAC",
+                                       'Igrave;' => "\xC3\x8C",
+                                       'igrave;' => "\xC3\xAC",
+                                       'image;' => "\xE2\x84\x91",
+                                       'infin;' => "\xE2\x88\x9E",
+                                       'int;' => "\xE2\x88\xAB",
+                                       'Iota;' => "\xCE\x99",
+                                       'iota;' => "\xCE\xB9",
+                                       'iquest' => "\xC2\xBF",
+                                       'iquest;' => "\xC2\xBF",
+                                       'isin;' => "\xE2\x88\x88",
+                                       'Iuml' => "\xC3\x8F",
+                                       'iuml' => "\xC3\xAF",
+                                       'Iuml;' => "\xC3\x8F",
+                                       'iuml;' => "\xC3\xAF",
+                                       'Kappa;' => "\xCE\x9A",
+                                       'kappa;' => "\xCE\xBA",
+                                       'Lambda;' => "\xCE\x9B",
+                                       'lambda;' => "\xCE\xBB",
+                                       'lang;' => "\xE3\x80\x88",
+                                       'laquo' => "\xC2\xAB",
+                                       'laquo;' => "\xC2\xAB",
+                                       'lArr;' => "\xE2\x87\x90",
+                                       'larr;' => "\xE2\x86\x90",
+                                       'lceil;' => "\xE2\x8C\x88",
+                                       'ldquo;' => "\xE2\x80\x9C",
+                                       'le;' => "\xE2\x89\xA4",
+                                       'lfloor;' => "\xE2\x8C\x8A",
+                                       'lowast;' => "\xE2\x88\x97",
+                                       'loz;' => "\xE2\x97\x8A",
+                                       'lrm;' => "\xE2\x80\x8E",
+                                       'lsaquo;' => "\xE2\x80\xB9",
+                                       'lsquo;' => "\xE2\x80\x98",
+                                       'LT' => "\x3C",
+                                       'lt' => "\x3C",
+                                       'LT;' => "\x3C",
+                                       'lt;' => "\x3C",
+                                       'macr' => "\xC2\xAF",
+                                       'macr;' => "\xC2\xAF",
+                                       'mdash;' => "\xE2\x80\x94",
+                                       'micro' => "\xC2\xB5",
+                                       'micro;' => "\xC2\xB5",
+                                       'middot' => "\xC2\xB7",
+                                       'middot;' => "\xC2\xB7",
+                                       'minus;' => "\xE2\x88\x92",
+                                       'Mu;' => "\xCE\x9C",
+                                       'mu;' => "\xCE\xBC",
+                                       'nabla;' => "\xE2\x88\x87",
+                                       'nbsp' => "\xC2\xA0",
+                                       'nbsp;' => "\xC2\xA0",
+                                       'ndash;' => "\xE2\x80\x93",
+                                       'ne;' => "\xE2\x89\xA0",
+                                       'ni;' => "\xE2\x88\x8B",
+                                       'not' => "\xC2\xAC",
+                                       'not;' => "\xC2\xAC",
+                                       'notin;' => "\xE2\x88\x89",
+                                       'nsub;' => "\xE2\x8A\x84",
+                                       'Ntilde' => "\xC3\x91",
+                                       'ntilde' => "\xC3\xB1",
+                                       'Ntilde;' => "\xC3\x91",
+                                       'ntilde;' => "\xC3\xB1",
+                                       'Nu;' => "\xCE\x9D",
+                                       'nu;' => "\xCE\xBD",
+                                       'Oacute' => "\xC3\x93",
+                                       'oacute' => "\xC3\xB3",
+                                       'Oacute;' => "\xC3\x93",
+                                       'oacute;' => "\xC3\xB3",
+                                       'Ocirc' => "\xC3\x94",
+                                       'ocirc' => "\xC3\xB4",
+                                       'Ocirc;' => "\xC3\x94",
+                                       'ocirc;' => "\xC3\xB4",
+                                       'OElig;' => "\xC5\x92",
+                                       'oelig;' => "\xC5\x93",
+                                       'Ograve' => "\xC3\x92",
+                                       'ograve' => "\xC3\xB2",
+                                       'Ograve;' => "\xC3\x92",
+                                       'ograve;' => "\xC3\xB2",
+                                       'oline;' => "\xE2\x80\xBE",
+                                       'Omega;' => "\xCE\xA9",
+                                       'omega;' => "\xCF\x89",
+                                       'Omicron;' => "\xCE\x9F",
+                                       'omicron;' => "\xCE\xBF",
+                                       'oplus;' => "\xE2\x8A\x95",
+                                       'or;' => "\xE2\x88\xA8",
+                                       'ordf' => "\xC2\xAA",
+                                       'ordf;' => "\xC2\xAA",
+                                       'ordm' => "\xC2\xBA",
+                                       'ordm;' => "\xC2\xBA",
+                                       'Oslash' => "\xC3\x98",
+                                       'oslash' => "\xC3\xB8",
+                                       'Oslash;' => "\xC3\x98",
+                                       'oslash;' => "\xC3\xB8",
+                                       'Otilde' => "\xC3\x95",
+                                       'otilde' => "\xC3\xB5",
+                                       'Otilde;' => "\xC3\x95",
+                                       'otilde;' => "\xC3\xB5",
+                                       'otimes;' => "\xE2\x8A\x97",
+                                       'Ouml' => "\xC3\x96",
+                                       'ouml' => "\xC3\xB6",
+                                       'Ouml;' => "\xC3\x96",
+                                       'ouml;' => "\xC3\xB6",
+                                       'para' => "\xC2\xB6",
+                                       'para;' => "\xC2\xB6",
+                                       'part;' => "\xE2\x88\x82",
+                                       'permil;' => "\xE2\x80\xB0",
+                                       'perp;' => "\xE2\x8A\xA5",
+                                       'Phi;' => "\xCE\xA6",
+                                       'phi;' => "\xCF\x86",
+                                       'Pi;' => "\xCE\xA0",
+                                       'pi;' => "\xCF\x80",
+                                       'piv;' => "\xCF\x96",
+                                       'plusmn' => "\xC2\xB1",
+                                       'plusmn;' => "\xC2\xB1",
+                                       'pound' => "\xC2\xA3",
+                                       'pound;' => "\xC2\xA3",
+                                       'Prime;' => "\xE2\x80\xB3",
+                                       'prime;' => "\xE2\x80\xB2",
+                                       'prod;' => "\xE2\x88\x8F",
+                                       'prop;' => "\xE2\x88\x9D",
+                                       'Psi;' => "\xCE\xA8",
+                                       'psi;' => "\xCF\x88",
+                                       'QUOT' => "\x22",
+                                       'quot' => "\x22",
+                                       'QUOT;' => "\x22",
+                                       'quot;' => "\x22",
+                                       'radic;' => "\xE2\x88\x9A",
+                                       'rang;' => "\xE3\x80\x89",
+                                       'raquo' => "\xC2\xBB",
+                                       'raquo;' => "\xC2\xBB",
+                                       'rArr;' => "\xE2\x87\x92",
+                                       'rarr;' => "\xE2\x86\x92",
+                                       'rceil;' => "\xE2\x8C\x89",
+                                       'rdquo;' => "\xE2\x80\x9D",
+                                       'real;' => "\xE2\x84\x9C",
+                                       'REG' => "\xC2\xAE",
+                                       'reg' => "\xC2\xAE",
+                                       'REG;' => "\xC2\xAE",
+                                       'reg;' => "\xC2\xAE",
+                                       'rfloor;' => "\xE2\x8C\x8B",
+                                       'Rho;' => "\xCE\xA1",
+                                       'rho;' => "\xCF\x81",
+                                       'rlm;' => "\xE2\x80\x8F",
+                                       'rsaquo;' => "\xE2\x80\xBA",
+                                       'rsquo;' => "\xE2\x80\x99",
+                                       'sbquo;' => "\xE2\x80\x9A",
+                                       'Scaron;' => "\xC5\xA0",
+                                       'scaron;' => "\xC5\xA1",
+                                       'sdot;' => "\xE2\x8B\x85",
+                                       'sect' => "\xC2\xA7",
+                                       'sect;' => "\xC2\xA7",
+                                       'shy' => "\xC2\xAD",
+                                       'shy;' => "\xC2\xAD",
+                                       'Sigma;' => "\xCE\xA3",
+                                       'sigma;' => "\xCF\x83",
+                                       'sigmaf;' => "\xCF\x82",
+                                       'sim;' => "\xE2\x88\xBC",
+                                       'spades;' => "\xE2\x99\xA0",
+                                       'sub;' => "\xE2\x8A\x82",
+                                       'sube;' => "\xE2\x8A\x86",
+                                       'sum;' => "\xE2\x88\x91",
+                                       'sup;' => "\xE2\x8A\x83",
+                                       'sup1' => "\xC2\xB9",
+                                       'sup1;' => "\xC2\xB9",
+                                       'sup2' => "\xC2\xB2",
+                                       'sup2;' => "\xC2\xB2",
+                                       'sup3' => "\xC2\xB3",
+                                       'sup3;' => "\xC2\xB3",
+                                       'supe;' => "\xE2\x8A\x87",
+                                       'szlig' => "\xC3\x9F",
+                                       'szlig;' => "\xC3\x9F",
+                                       'Tau;' => "\xCE\xA4",
+                                       'tau;' => "\xCF\x84",
+                                       'there4;' => "\xE2\x88\xB4",
+                                       'Theta;' => "\xCE\x98",
+                                       'theta;' => "\xCE\xB8",
+                                       'thetasym;' => "\xCF\x91",
+                                       'thinsp;' => "\xE2\x80\x89",
+                                       'THORN' => "\xC3\x9E",
+                                       'thorn' => "\xC3\xBE",
+                                       'THORN;' => "\xC3\x9E",
+                                       'thorn;' => "\xC3\xBE",
+                                       'tilde;' => "\xCB\x9C",
+                                       'times' => "\xC3\x97",
+                                       'times;' => "\xC3\x97",
+                                       'TRADE;' => "\xE2\x84\xA2",
+                                       'trade;' => "\xE2\x84\xA2",
+                                       'Uacute' => "\xC3\x9A",
+                                       'uacute' => "\xC3\xBA",
+                                       'Uacute;' => "\xC3\x9A",
+                                       'uacute;' => "\xC3\xBA",
+                                       'uArr;' => "\xE2\x87\x91",
+                                       'uarr;' => "\xE2\x86\x91",
+                                       'Ucirc' => "\xC3\x9B",
+                                       'ucirc' => "\xC3\xBB",
+                                       'Ucirc;' => "\xC3\x9B",
+                                       'ucirc;' => "\xC3\xBB",
+                                       'Ugrave' => "\xC3\x99",
+                                       'ugrave' => "\xC3\xB9",
+                                       'Ugrave;' => "\xC3\x99",
+                                       'ugrave;' => "\xC3\xB9",
+                                       'uml' => "\xC2\xA8",
+                                       'uml;' => "\xC2\xA8",
+                                       'upsih;' => "\xCF\x92",
+                                       'Upsilon;' => "\xCE\xA5",
+                                       'upsilon;' => "\xCF\x85",
+                                       'Uuml' => "\xC3\x9C",
+                                       'uuml' => "\xC3\xBC",
+                                       'Uuml;' => "\xC3\x9C",
+                                       'uuml;' => "\xC3\xBC",
+                                       'weierp;' => "\xE2\x84\x98",
+                                       'Xi;' => "\xCE\x9E",
+                                       'xi;' => "\xCE\xBE",
+                                       'Yacute' => "\xC3\x9D",
+                                       'yacute' => "\xC3\xBD",
+                                       'Yacute;' => "\xC3\x9D",
+                                       'yacute;' => "\xC3\xBD",
+                                       'yen' => "\xC2\xA5",
+                                       'yen;' => "\xC2\xA5",
+                                       'yuml' => "\xC3\xBF",
+                                       'Yuml;' => "\xC5\xB8",
+                                       'yuml;' => "\xC3\xBF",
+                                       'Zeta;' => "\xCE\x96",
+                                       'zeta;' => "\xCE\xB6",
+                                       'zwj;' => "\xE2\x80\x8D",
+                                       'zwnj;' => "\xE2\x80\x8C"
+                               );
+
+                               for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++)
+                               {
+                                       $consumed = substr($this->consumed, 1);
+                                       if (isset($entities[$consumed]))
+                                       {
+                                               $match = $consumed;
+                                       }
+                               }
+
+                               if ($match !== null)
+                               {
+                                       $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
+                                       $this->position += strlen($entities[$match]) - strlen($consumed) - 1;
+                               }
+                               break;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Enclosure.php b/wp-includes/SimplePie/Enclosure.php
new file mode 100644 (file)
index 0000000..5567437
--- /dev/null
@@ -0,0 +1,1380 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles everything related to enclosures (including Media RSS and iTunes RSS)
+ *
+ * Used by {@see SimplePie_Item::get_enclosure()} and {@see SimplePie_Item::get_enclosures()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_enclosure_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Enclosure
+{
+       /**
+        * @var string
+        * @see get_bitrate()
+        */
+       var $bitrate;
+
+       /**
+        * @var array
+        * @see get_captions()
+        */
+       var $captions;
+
+       /**
+        * @var array
+        * @see get_categories()
+        */
+       var $categories;
+
+       /**
+        * @var int
+        * @see get_channels()
+        */
+       var $channels;
+
+       /**
+        * @var SimplePie_Copyright
+        * @see get_copyright()
+        */
+       var $copyright;
+
+       /**
+        * @var array
+        * @see get_credits()
+        */
+       var $credits;
+
+       /**
+        * @var string
+        * @see get_description()
+        */
+       var $description;
+
+       /**
+        * @var int
+        * @see get_duration()
+        */
+       var $duration;
+
+       /**
+        * @var string
+        * @see get_expression()
+        */
+       var $expression;
+
+       /**
+        * @var string
+        * @see get_framerate()
+        */
+       var $framerate;
+
+       /**
+        * @var string
+        * @see get_handler()
+        */
+       var $handler;
+
+       /**
+        * @var array
+        * @see get_hashes()
+        */
+       var $hashes;
+
+       /**
+        * @var string
+        * @see get_height()
+        */
+       var $height;
+
+       /**
+        * @deprecated
+        * @var null
+        */
+       var $javascript;
+
+       /**
+        * @var array
+        * @see get_keywords()
+        */
+       var $keywords;
+
+       /**
+        * @var string
+        * @see get_language()
+        */
+       var $lang;
+
+       /**
+        * @var string
+        * @see get_length()
+        */
+       var $length;
+
+       /**
+        * @var string
+        * @see get_link()
+        */
+       var $link;
+
+       /**
+        * @var string
+        * @see get_medium()
+        */
+       var $medium;
+
+       /**
+        * @var string
+        * @see get_player()
+        */
+       var $player;
+
+       /**
+        * @var array
+        * @see get_ratings()
+        */
+       var $ratings;
+
+       /**
+        * @var array
+        * @see get_restrictions()
+        */
+       var $restrictions;
+
+       /**
+        * @var string
+        * @see get_sampling_rate()
+        */
+       var $samplingrate;
+
+       /**
+        * @var array
+        * @see get_thumbnails()
+        */
+       var $thumbnails;
+
+       /**
+        * @var string
+        * @see get_title()
+        */
+       var $title;
+
+       /**
+        * @var string
+        * @see get_type()
+        */
+       var $type;
+
+       /**
+        * @var string
+        * @see get_width()
+        */
+       var $width;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        *
+        * @uses idna_convert If available, this will convert an IDN
+        */
+       public function __construct($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
+       {
+               $this->bitrate = $bitrate;
+               $this->captions = $captions;
+               $this->categories = $categories;
+               $this->channels = $channels;
+               $this->copyright = $copyright;
+               $this->credits = $credits;
+               $this->description = $description;
+               $this->duration = $duration;
+               $this->expression = $expression;
+               $this->framerate = $framerate;
+               $this->hashes = $hashes;
+               $this->height = $height;
+               $this->keywords = $keywords;
+               $this->lang = $lang;
+               $this->length = $length;
+               $this->link = $link;
+               $this->medium = $medium;
+               $this->player = $player;
+               $this->ratings = $ratings;
+               $this->restrictions = $restrictions;
+               $this->samplingrate = $samplingrate;
+               $this->thumbnails = $thumbnails;
+               $this->title = $title;
+               $this->type = $type;
+               $this->width = $width;
+
+               if (class_exists('idna_convert'))
+               {
+                       $idn = new idna_convert();
+                       $parsed = SimplePie_Misc::parse_url($link);
+                       $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+               }
+               $this->handler = $this->get_handler(); // Needs to load last
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the bitrate
+        *
+        * @return string|null
+        */
+       public function get_bitrate()
+       {
+               if ($this->bitrate !== null)
+               {
+                       return $this->bitrate;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single caption
+        *
+        * @param int $key
+        * @return SimplePie_Caption|null
+        */
+       public function get_caption($key = 0)
+       {
+               $captions = $this->get_captions();
+               if (isset($captions[$key]))
+               {
+                       return $captions[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all captions
+        *
+        * @return array|null Array of {@see SimplePie_Caption} objects
+        */
+       public function get_captions()
+       {
+               if ($this->captions !== null)
+               {
+                       return $this->captions;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single category
+        *
+        * @param int $key
+        * @return SimplePie_Category|null
+        */
+       public function get_category($key = 0)
+       {
+               $categories = $this->get_categories();
+               if (isset($categories[$key]))
+               {
+                       return $categories[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all categories
+        *
+        * @return array|null Array of {@see SimplePie_Category} objects
+        */
+       public function get_categories()
+       {
+               if ($this->categories !== null)
+               {
+                       return $this->categories;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the number of audio channels
+        *
+        * @return int|null
+        */
+       public function get_channels()
+       {
+               if ($this->channels !== null)
+               {
+                       return $this->channels;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the copyright information
+        *
+        * @return SimplePie_Copyright|null
+        */
+       public function get_copyright()
+       {
+               if ($this->copyright !== null)
+               {
+                       return $this->copyright;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single credit
+        *
+        * @param int $key
+        * @return SimplePie_Credit|null
+        */
+       public function get_credit($key = 0)
+       {
+               $credits = $this->get_credits();
+               if (isset($credits[$key]))
+               {
+                       return $credits[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all credits
+        *
+        * @return array|null Array of {@see SimplePie_Credit} objects
+        */
+       public function get_credits()
+       {
+               if ($this->credits !== null)
+               {
+                       return $this->credits;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the description of the enclosure
+        *
+        * @return string|null
+        */
+       public function get_description()
+       {
+               if ($this->description !== null)
+               {
+                       return $this->description;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the duration of the enclosure
+        *
+        * @param string $convert Convert seconds into hh:mm:ss
+        * @return string|int|null 'hh:mm:ss' string if `$convert` was specified, otherwise integer (or null if none found)
+        */
+       public function get_duration($convert = false)
+       {
+               if ($this->duration !== null)
+               {
+                       if ($convert)
+                       {
+                               $time = SimplePie_Misc::time_hms($this->duration);
+                               return $time;
+                       }
+                       else
+                       {
+                               return $this->duration;
+                       }
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the expression
+        *
+        * @return string Probably one of 'sample', 'full', 'nonstop', 'clip'. Defaults to 'full'
+        */
+       public function get_expression()
+       {
+               if ($this->expression !== null)
+               {
+                       return $this->expression;
+               }
+               else
+               {
+                       return 'full';
+               }
+       }
+
+       /**
+        * Get the file extension
+        *
+        * @return string|null
+        */
+       public function get_extension()
+       {
+               if ($this->link !== null)
+               {
+                       $url = SimplePie_Misc::parse_url($this->link);
+                       if ($url['path'] !== '')
+                       {
+                               return pathinfo($url['path'], PATHINFO_EXTENSION);
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * Get the framerate (in frames-per-second)
+        *
+        * @return string|null
+        */
+       public function get_framerate()
+       {
+               if ($this->framerate !== null)
+               {
+                       return $this->framerate;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the preferred handler
+        *
+        * @return string|null One of 'flash', 'fmedia', 'quicktime', 'wmedia', 'mp3'
+        */
+       public function get_handler()
+       {
+               return $this->get_real_type(true);
+       }
+
+       /**
+        * Get a single hash
+        *
+        * @link http://www.rssboard.org/media-rss#media-hash
+        * @param int $key
+        * @return string|null Hash as per `media:hash`, prefixed with "$algo:"
+        */
+       public function get_hash($key = 0)
+       {
+               $hashes = $this->get_hashes();
+               if (isset($hashes[$key]))
+               {
+                       return $hashes[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all credits
+        *
+        * @return array|null Array of strings, see {@see get_hash()}
+        */
+       public function get_hashes()
+       {
+               if ($this->hashes !== null)
+               {
+                       return $this->hashes;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the height
+        *
+        * @return string|null
+        */
+       public function get_height()
+       {
+               if ($this->height !== null)
+               {
+                       return $this->height;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the language
+        *
+        * @link http://tools.ietf.org/html/rfc3066
+        * @return string|null Language code as per RFC 3066
+        */
+       public function get_language()
+       {
+               if ($this->lang !== null)
+               {
+                       return $this->lang;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single keyword
+        *
+        * @param int $key
+        * @return string|null
+        */
+       public function get_keyword($key = 0)
+       {
+               $keywords = $this->get_keywords();
+               if (isset($keywords[$key]))
+               {
+                       return $keywords[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all keywords
+        *
+        * @return array|null Array of strings
+        */
+       public function get_keywords()
+       {
+               if ($this->keywords !== null)
+               {
+                       return $this->keywords;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get length
+        *
+        * @return float Length in bytes
+        */
+       public function get_length()
+       {
+               if ($this->length !== null)
+               {
+                       return $this->length;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the URL
+        *
+        * @return string|null
+        */
+       public function get_link()
+       {
+               if ($this->link !== null)
+               {
+                       return urldecode($this->link);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the medium
+        *
+        * @link http://www.rssboard.org/media-rss#media-content
+        * @return string|null Should be one of 'image', 'audio', 'video', 'document', 'executable'
+        */
+       public function get_medium()
+       {
+               if ($this->medium !== null)
+               {
+                       return $this->medium;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the player URL
+        *
+        * Typically the same as {@see get_permalink()}
+        * @return string|null Player URL
+        */
+       public function get_player()
+       {
+               if ($this->player !== null)
+               {
+                       return $this->player;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single rating
+        *
+        * @param int $key
+        * @return SimplePie_Rating|null
+        */
+       public function get_rating($key = 0)
+       {
+               $ratings = $this->get_ratings();
+               if (isset($ratings[$key]))
+               {
+                       return $ratings[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all ratings
+        *
+        * @return array|null Array of {@see SimplePie_Rating} objects
+        */
+       public function get_ratings()
+       {
+               if ($this->ratings !== null)
+               {
+                       return $this->ratings;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single restriction
+        *
+        * @param int $key
+        * @return SimplePie_Restriction|null
+        */
+       public function get_restriction($key = 0)
+       {
+               $restrictions = $this->get_restrictions();
+               if (isset($restrictions[$key]))
+               {
+                       return $restrictions[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all restrictions
+        *
+        * @return array|null Array of {@see SimplePie_Restriction} objects
+        */
+       public function get_restrictions()
+       {
+               if ($this->restrictions !== null)
+               {
+                       return $this->restrictions;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the sampling rate (in kHz)
+        *
+        * @return string|null
+        */
+       public function get_sampling_rate()
+       {
+               if ($this->samplingrate !== null)
+               {
+                       return $this->samplingrate;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the file size (in MiB)
+        *
+        * @return float|null File size in mebibytes (1048 bytes)
+        */
+       public function get_size()
+       {
+               $length = $this->get_length();
+               if ($length !== null)
+               {
+                       return round($length/1048576, 2);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single thumbnail
+        *
+        * @param int $key
+        * @return string|null Thumbnail URL
+        */
+       public function get_thumbnail($key = 0)
+       {
+               $thumbnails = $this->get_thumbnails();
+               if (isset($thumbnails[$key]))
+               {
+                       return $thumbnails[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all thumbnails
+        *
+        * @return array|null Array of thumbnail URLs
+        */
+       public function get_thumbnails()
+       {
+               if ($this->thumbnails !== null)
+               {
+                       return $this->thumbnails;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the title
+        *
+        * @return string|null
+        */
+       public function get_title()
+       {
+               if ($this->title !== null)
+               {
+                       return $this->title;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get mimetype of the enclosure
+        *
+        * @see get_real_type()
+        * @return string|null MIME type
+        */
+       public function get_type()
+       {
+               if ($this->type !== null)
+               {
+                       return $this->type;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the width
+        *
+        * @return string|null
+        */
+       public function get_width()
+       {
+               if ($this->width !== null)
+               {
+                       return $this->width;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Embed the enclosure using `<embed>`
+        *
+        * @deprecated Use the second parameter to {@see embed} instead
+        *
+        * @param array|string $options See first paramter to {@see embed}
+        * @return string HTML string to output
+        */
+       public function native_embed($options='')
+       {
+               return $this->embed($options, true);
+       }
+
+       /**
+        * Embed the enclosure using Javascript
+        *
+        * `$options` is an array or comma-separated key:value string, with the
+        * following properties:
+        *
+        * - `alt` (string): Alternate content for when an end-user does not have
+        *    the appropriate handler installed or when a file type is
+        *    unsupported. Can be any text or HTML. Defaults to blank.
+        * - `altclass` (string): If a file type is unsupported, the end-user will
+        *    see the alt text (above) linked directly to the content. That link
+        *    will have this value as its class name. Defaults to blank.
+        * - `audio` (string): This is an image that should be used as a
+        *    placeholder for audio files before they're loaded (QuickTime-only).
+        *    Can be any relative or absolute URL. Defaults to blank.
+        * - `bgcolor` (string): The background color for the media, if not
+        *    already transparent. Defaults to `#ffffff`.
+        * - `height` (integer): The height of the embedded media. Accepts any
+        *    numeric pixel value (such as `360`) or `auto`. Defaults to `auto`,
+        *    and it is recommended that you use this default.
+        * - `loop` (boolean): Do you want the media to loop when its done?
+        *    Defaults to `false`.
+        * - `mediaplayer` (string): The location of the included
+        *    `mediaplayer.swf` file. This allows for the playback of Flash Video
+        *    (`.flv`) files, and is the default handler for non-Odeo MP3's.
+        *    Defaults to blank.
+        * - `video` (string): This is an image that should be used as a
+        *    placeholder for video files before they're loaded (QuickTime-only).
+        *    Can be any relative or absolute URL. Defaults to blank.
+        * - `width` (integer): The width of the embedded media. Accepts any
+        *    numeric pixel value (such as `480`) or `auto`. Defaults to `auto`,
+        *    and it is recommended that you use this default.
+        * - `widescreen` (boolean): Is the enclosure widescreen or standard?
+        *    This applies only to video enclosures, and will automatically resize
+        *    the content appropriately.  Defaults to `false`, implying 4:3 mode.
+        *
+        * Note: Non-widescreen (4:3) mode with `width` and `height` set to `auto`
+        * will default to 480x360 video resolution.  Widescreen (16:9) mode with
+        * `width` and `height` set to `auto` will default to 480x270 video resolution.
+        *
+        * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
+        * @param array|string $options Comma-separated key:value list, or array
+        * @param bool $native Use `<embed>`
+        * @return string HTML string to output
+        */
+       public function embed($options = '', $native = false)
+       {
+               // Set up defaults
+               $audio = '';
+               $video = '';
+               $alt = '';
+               $altclass = '';
+               $loop = 'false';
+               $width = 'auto';
+               $height = 'auto';
+               $bgcolor = '#ffffff';
+               $mediaplayer = '';
+               $widescreen = false;
+               $handler = $this->get_handler();
+               $type = $this->get_real_type();
+
+               // Process options and reassign values as necessary
+               if (is_array($options))
+               {
+                       extract($options);
+               }
+               else
+               {
+                       $options = explode(',', $options);
+                       foreach($options as $option)
+                       {
+                               $opt = explode(':', $option, 2);
+                               if (isset($opt[0], $opt[1]))
+                               {
+                                       $opt[0] = trim($opt[0]);
+                                       $opt[1] = trim($opt[1]);
+                                       switch ($opt[0])
+                                       {
+                                               case 'audio':
+                                                       $audio = $opt[1];
+                                                       break;
+
+                                               case 'video':
+                                                       $video = $opt[1];
+                                                       break;
+
+                                               case 'alt':
+                                                       $alt = $opt[1];
+                                                       break;
+
+                                               case 'altclass':
+                                                       $altclass = $opt[1];
+                                                       break;
+
+                                               case 'loop':
+                                                       $loop = $opt[1];
+                                                       break;
+
+                                               case 'width':
+                                                       $width = $opt[1];
+                                                       break;
+
+                                               case 'height':
+                                                       $height = $opt[1];
+                                                       break;
+
+                                               case 'bgcolor':
+                                                       $bgcolor = $opt[1];
+                                                       break;
+
+                                               case 'mediaplayer':
+                                                       $mediaplayer = $opt[1];
+                                                       break;
+
+                                               case 'widescreen':
+                                                       $widescreen = $opt[1];
+                                                       break;
+                                       }
+                               }
+                       }
+               }
+
+               $mime = explode('/', $type, 2);
+               $mime = $mime[0];
+
+               // Process values for 'auto'
+               if ($width === 'auto')
+               {
+                       if ($mime === 'video')
+                       {
+                               if ($height === 'auto')
+                               {
+                                       $width = 480;
+                               }
+                               elseif ($widescreen)
+                               {
+                                       $width = round((intval($height)/9)*16);
+                               }
+                               else
+                               {
+                                       $width = round((intval($height)/3)*4);
+                               }
+                       }
+                       else
+                       {
+                               $width = '100%';
+                       }
+               }
+
+               if ($height === 'auto')
+               {
+                       if ($mime === 'audio')
+                       {
+                               $height = 0;
+                       }
+                       elseif ($mime === 'video')
+                       {
+                               if ($width === 'auto')
+                               {
+                                       if ($widescreen)
+                                       {
+                                               $height = 270;
+                                       }
+                                       else
+                                       {
+                                               $height = 360;
+                                       }
+                               }
+                               elseif ($widescreen)
+                               {
+                                       $height = round((intval($width)/16)*9);
+                               }
+                               else
+                               {
+                                       $height = round((intval($width)/4)*3);
+                               }
+                       }
+                       else
+                       {
+                               $height = 376;
+                       }
+               }
+               elseif ($mime === 'audio')
+               {
+                       $height = 0;
+               }
+
+               // Set proper placeholder value
+               if ($mime === 'audio')
+               {
+                       $placeholder = $audio;
+               }
+               elseif ($mime === 'video')
+               {
+                       $placeholder = $video;
+               }
+
+               $embed = '';
+
+               // Flash
+               if ($handler === 'flash')
+               {
+                       if ($native)
+                       {
+                               $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
+                       }
+                       else
+                       {
+                               $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
+                       }
+               }
+
+               // Flash Media Player file types.
+               // Preferred handler for MP3 file types.
+               elseif ($handler === 'fmedia' || ($handler === 'mp3' && $mediaplayer !== ''))
+               {
+                       $height += 20;
+                       if ($native)
+                       {
+                               $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
+                       }
+                       else
+                       {
+                               $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
+                       }
+               }
+
+               // QuickTime 7 file types.  Need to test with QuickTime 6.
+               // Only handle MP3's if the Flash Media Player is not present.
+               elseif ($handler === 'quicktime' || ($handler === 'mp3' && $mediaplayer === ''))
+               {
+                       $height += 16;
+                       if ($native)
+                       {
+                               if ($placeholder !== '')
+                               {
+                                       $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+                               }
+                               else
+                               {
+                                       $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+                               }
+                       }
+                       else
+                       {
+                               $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
+                       }
+               }
+
+               // Windows Media
+               elseif ($handler === 'wmedia')
+               {
+                       $height += 45;
+                       if ($native)
+                       {
+                               $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
+                       }
+                       else
+                       {
+                               $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
+                       }
+               }
+
+               // Everything else
+               else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
+
+               return $embed;
+       }
+
+       /**
+        * Get the real media type
+        *
+        * Often, feeds lie to us, necessitating a bit of deeper inspection. This
+        * converts types to their canonical representations based on the file
+        * extension
+        *
+        * @see get_type()
+        * @param bool $find_handler Internal use only, use {@see get_handler()} instead
+        * @return string MIME type
+        */
+       public function get_real_type($find_handler = false)
+       {
+               // Mime-types by handler.
+               $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
+               $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player
+               $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
+               $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
+               $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
+
+               if ($this->get_type() !== null)
+               {
+                       $type = strtolower($this->type);
+               }
+               else
+               {
+                       $type = null;
+               }
+
+               // If we encounter an unsupported mime-type, check the file extension and guess intelligently.
+               if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
+               {
+                       switch (strtolower($this->get_extension()))
+                       {
+                               // Audio mime-types
+                               case 'aac':
+                               case 'adts':
+                                       $type = 'audio/acc';
+                                       break;
+
+                               case 'aif':
+                               case 'aifc':
+                               case 'aiff':
+                               case 'cdda':
+                                       $type = 'audio/aiff';
+                                       break;
+
+                               case 'bwf':
+                                       $type = 'audio/wav';
+                                       break;
+
+                               case 'kar':
+                               case 'mid':
+                               case 'midi':
+                               case 'smf':
+                                       $type = 'audio/midi';
+                                       break;
+
+                               case 'm4a':
+                                       $type = 'audio/x-m4a';
+                                       break;
+
+                               case 'mp3':
+                               case 'swa':
+                                       $type = 'audio/mp3';
+                                       break;
+
+                               case 'wav':
+                                       $type = 'audio/wav';
+                                       break;
+
+                               case 'wax':
+                                       $type = 'audio/x-ms-wax';
+                                       break;
+
+                               case 'wma':
+                                       $type = 'audio/x-ms-wma';
+                                       break;
+
+                               // Video mime-types
+                               case '3gp':
+                               case '3gpp':
+                                       $type = 'video/3gpp';
+                                       break;
+
+                               case '3g2':
+                               case '3gp2':
+                                       $type = 'video/3gpp2';
+                                       break;
+
+                               case 'asf':
+                                       $type = 'video/x-ms-asf';
+                                       break;
+
+                               case 'flv':
+                                       $type = 'video/x-flv';
+                                       break;
+
+                               case 'm1a':
+                               case 'm1s':
+                               case 'm1v':
+                               case 'm15':
+                               case 'm75':
+                               case 'mp2':
+                               case 'mpa':
+                               case 'mpeg':
+                               case 'mpg':
+                               case 'mpm':
+                               case 'mpv':
+                                       $type = 'video/mpeg';
+                                       break;
+
+                               case 'm4v':
+                                       $type = 'video/x-m4v';
+                                       break;
+
+                               case 'mov':
+                               case 'qt':
+                                       $type = 'video/quicktime';
+                                       break;
+
+                               case 'mp4':
+                               case 'mpg4':
+                                       $type = 'video/mp4';
+                                       break;
+
+                               case 'sdv':
+                                       $type = 'video/sd-video';
+                                       break;
+
+                               case 'wm':
+                                       $type = 'video/x-ms-wm';
+                                       break;
+
+                               case 'wmv':
+                                       $type = 'video/x-ms-wmv';
+                                       break;
+
+                               case 'wvx':
+                                       $type = 'video/x-ms-wvx';
+                                       break;
+
+                               // Flash mime-types
+                               case 'spl':
+                                       $type = 'application/futuresplash';
+                                       break;
+
+                               case 'swf':
+                                       $type = 'application/x-shockwave-flash';
+                                       break;
+                       }
+               }
+
+               if ($find_handler)
+               {
+                       if (in_array($type, $types_flash))
+                       {
+                               return 'flash';
+                       }
+                       elseif (in_array($type, $types_fmedia))
+                       {
+                               return 'fmedia';
+                       }
+                       elseif (in_array($type, $types_quicktime))
+                       {
+                               return 'quicktime';
+                       }
+                       elseif (in_array($type, $types_wmedia))
+                       {
+                               return 'wmedia';
+                       }
+                       elseif (in_array($type, $types_mp3))
+                       {
+                               return 'mp3';
+                       }
+                       else
+                       {
+                               return null;
+                       }
+               }
+               else
+               {
+                       return $type;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Exception.php b/wp-includes/SimplePie/Exception.php
new file mode 100644 (file)
index 0000000..73e104d
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.4-dev
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * General SimplePie exception class
+ *
+ * @package SimplePie
+ */
+class SimplePie_Exception extends Exception
+{
+}
\ No newline at end of file
diff --git a/wp-includes/SimplePie/File.php b/wp-includes/SimplePie/File.php
new file mode 100644 (file)
index 0000000..b7d1a2a
--- /dev/null
@@ -0,0 +1,292 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Used for fetching remote files and reading local files
+ *
+ * Supports HTTP 1.0 via cURL or fsockopen, with spotty HTTP 1.1 support
+ *
+ * This class can be overloaded with {@see SimplePie::set_file_class()}
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ * @todo Move to properly supporting RFC2616 (HTTP/1.1)
+ */
+class SimplePie_File
+{
+       var $url;
+       var $useragent;
+       var $success = true;
+       var $headers = array();
+       var $body;
+       var $status_code;
+       var $redirects = 0;
+       var $error;
+       var $method = SIMPLEPIE_FILE_SOURCE_NONE;
+
+       public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
+       {
+               if (class_exists('idna_convert'))
+               {
+                       $idn = new idna_convert();
+                       $parsed = SimplePie_Misc::parse_url($url);
+                       $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+               }
+               $this->url = $url;
+               $this->useragent = $useragent;
+               if (preg_match('/^http(s)?:\/\//i', $url))
+               {
+                       if ($useragent === null)
+                       {
+                               $useragent = ini_get('user_agent');
+                               $this->useragent = $useragent;
+                       }
+                       if (!is_array($headers))
+                       {
+                               $headers = array();
+                       }
+                       if (!$force_fsockopen && function_exists('curl_exec'))
+                       {
+                               $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
+                               $fp = curl_init();
+                               $headers2 = array();
+                               foreach ($headers as $key => $value)
+                               {
+                                       $headers2[] = "$key: $value";
+                               }
+                               if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
+                               {
+                                       curl_setopt($fp, CURLOPT_ENCODING, '');
+                               }
+                               curl_setopt($fp, CURLOPT_URL, $url);
+                               curl_setopt($fp, CURLOPT_HEADER, 1);
+                               curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
+                               curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
+                               curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
+                               curl_setopt($fp, CURLOPT_REFERER, $url);
+                               curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
+                               curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
+                               if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
+                               {
+                                       curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
+                                       curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
+                               }
+
+                               $this->headers = curl_exec($fp);
+                               if (curl_errno($fp) === 23 || curl_errno($fp) === 61)
+                               {
+                                       curl_setopt($fp, CURLOPT_ENCODING, 'none');
+                                       $this->headers = curl_exec($fp);
+                               }
+                               if (curl_errno($fp))
+                               {
+                                       $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
+                                       $this->success = false;
+                               }
+                               else
+                               {
+                                       $info = curl_getinfo($fp);
+                                       curl_close($fp);
+                                       $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
+                                       $this->headers = array_pop($this->headers);
+                                       $parser = new SimplePie_HTTP_Parser($this->headers);
+                                       if ($parser->parse())
+                                       {
+                                               $this->headers = $parser->headers;
+                                               $this->body = $parser->body;
+                                               $this->status_code = $parser->status_code;
+                                               if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+                                               {
+                                                       $this->redirects++;
+                                                       $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+                                                       return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
+                               $url_parts = parse_url($url);
+                               $socket_host = $url_parts['host'];
+                               if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
+                               {
+                                       $socket_host = "ssl://$url_parts[host]";
+                                       $url_parts['port'] = 443;
+                               }
+                               if (!isset($url_parts['port']))
+                               {
+                                       $url_parts['port'] = 80;
+                               }
+                               $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
+                               if (!$fp)
+                               {
+                                       $this->error = 'fsockopen error: ' . $errstr;
+                                       $this->success = false;
+                               }
+                               else
+                               {
+                                       stream_set_timeout($fp, $timeout);
+                                       if (isset($url_parts['path']))
+                                       {
+                                               if (isset($url_parts['query']))
+                                               {
+                                                       $get = "$url_parts[path]?$url_parts[query]";
+                                               }
+                                               else
+                                               {
+                                                       $get = $url_parts['path'];
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $get = '/';
+                                       }
+                                       $out = "GET $get HTTP/1.1\r\n";
+                                       $out .= "Host: $url_parts[host]\r\n";
+                                       $out .= "User-Agent: $useragent\r\n";
+                                       if (extension_loaded('zlib'))
+                                       {
+                                               $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
+                                       }
+
+                                       if (isset($url_parts['user']) && isset($url_parts['pass']))
+                                       {
+                                               $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
+                                       }
+                                       foreach ($headers as $key => $value)
+                                       {
+                                               $out .= "$key: $value\r\n";
+                                       }
+                                       $out .= "Connection: Close\r\n\r\n";
+                                       fwrite($fp, $out);
+
+                                       $info = stream_get_meta_data($fp);
+
+                                       $this->headers = '';
+                                       while (!$info['eof'] && !$info['timed_out'])
+                                       {
+                                               $this->headers .= fread($fp, 1160);
+                                               $info = stream_get_meta_data($fp);
+                                       }
+                                       if (!$info['timed_out'])
+                                       {
+                                               $parser = new SimplePie_HTTP_Parser($this->headers);
+                                               if ($parser->parse())
+                                               {
+                                                       $this->headers = $parser->headers;
+                                                       $this->body = $parser->body;
+                                                       $this->status_code = $parser->status_code;
+                                                       if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+                                                       {
+                                                               $this->redirects++;
+                                                               $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+                                                               return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+                                                       }
+                                                       if (isset($this->headers['content-encoding']))
+                                                       {
+                                                               // Hey, we act dumb elsewhere, so let's do that here too
+                                                               switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20")))
+                                                               {
+                                                                       case 'gzip':
+                                                                       case 'x-gzip':
+                                                                               $decoder = new SimplePie_gzdecode($this->body);
+                                                                               if (!$decoder->parse())
+                                                                               {
+                                                                                       $this->error = 'Unable to decode HTTP "gzip" stream';
+                                                                                       $this->success = false;
+                                                                               }
+                                                                               else
+                                                                               {
+                                                                                       $this->body = $decoder->data;
+                                                                               }
+                                                                               break;
+
+                                                                       case 'deflate':
+                                                                               if (($decompressed = gzinflate($this->body)) !== false)
+                                                                               {
+                                                                                       $this->body = $decompressed;
+                                                                               }
+                                                                               else if (($decompressed = gzuncompress($this->body)) !== false)
+                                                                               {
+                                                                                       $this->body = $decompressed;
+                                                                               }
+                                                                               else if (function_exists('gzdecode') && ($decompressed = gzdecode($this->body)) !== false)
+                                                                               {
+                                                                                       $this->body = $decompressed;
+                                                                               }
+                                                                               else
+                                                                               {
+                                                                                       $this->error = 'Unable to decode HTTP "deflate" stream';
+                                                                                       $this->success = false;
+                                                                               }
+                                                                               break;
+
+                                                                       default:
+                                                                               $this->error = 'Unknown content coding';
+                                                                               $this->success = false;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $this->error = 'fsocket timed out';
+                                               $this->success = false;
+                                       }
+                                       fclose($fp);
+                               }
+                       }
+               }
+               else
+               {
+                       $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
+                       if (!$this->body = file_get_contents($url))
+                       {
+                               $this->error = 'file_get_contents could not read the file';
+                               $this->success = false;
+                       }
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/HTTP/Parser.php b/wp-includes/SimplePie/HTTP/Parser.php
new file mode 100644 (file)
index 0000000..bff2222
--- /dev/null
@@ -0,0 +1,500 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * HTTP Response Parser
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ */
+class SimplePie_HTTP_Parser
+{
+       /**
+        * HTTP Version
+        *
+        * @var float
+        */
+       public $http_version = 0.0;
+
+       /**
+        * Status code
+        *
+        * @var int
+        */
+       public $status_code = 0;
+
+       /**
+        * Reason phrase
+        *
+        * @var string
+        */
+       public $reason = '';
+
+       /**
+        * Key/value pairs of the headers
+        *
+        * @var array
+        */
+       public $headers = array();
+
+       /**
+        * Body of the response
+        *
+        * @var string
+        */
+       public $body = '';
+
+       /**
+        * Current state of the state machine
+        *
+        * @var string
+        */
+       protected $state = 'http_version';
+
+       /**
+        * Input data
+        *
+        * @var string
+        */
+       protected $data = '';
+
+       /**
+        * Input data length (to avoid calling strlen() everytime this is needed)
+        *
+        * @var int
+        */
+       protected $data_length = 0;
+
+       /**
+        * Current position of the pointer
+        *
+        * @var int
+        */
+       protected $position = 0;
+
+       /**
+        * Name of the hedaer currently being parsed
+        *
+        * @var string
+        */
+       protected $name = '';
+
+       /**
+        * Value of the hedaer currently being parsed
+        *
+        * @var string
+        */
+       protected $value = '';
+
+       /**
+        * Create an instance of the class with the input data
+        *
+        * @param string $data Input data
+        */
+       public function __construct($data)
+       {
+               $this->data = $data;
+               $this->data_length = strlen($this->data);
+       }
+
+       /**
+        * Parse the input data
+        *
+        * @return bool true on success, false on failure
+        */
+       public function parse()
+       {
+               while ($this->state && $this->state !== 'emit' && $this->has_data())
+               {
+                       $state = $this->state;
+                       $this->$state();
+               }
+               $this->data = '';
+               if ($this->state === 'emit' || $this->state === 'body')
+               {
+                       return true;
+               }
+               else
+               {
+                       $this->http_version = '';
+                       $this->status_code = '';
+                       $this->reason = '';
+                       $this->headers = array();
+                       $this->body = '';
+                       return false;
+               }
+       }
+
+       /**
+        * Check whether there is data beyond the pointer
+        *
+        * @return bool true if there is further data, false if not
+        */
+       protected function has_data()
+       {
+               return (bool) ($this->position < $this->data_length);
+       }
+
+       /**
+        * See if the next character is LWS
+        *
+        * @return bool true if the next character is LWS, false if not
+        */
+       protected function is_linear_whitespace()
+       {
+               return (bool) ($this->data[$this->position] === "\x09"
+                       || $this->data[$this->position] === "\x20"
+                       || ($this->data[$this->position] === "\x0A"
+                               && isset($this->data[$this->position + 1])
+                               && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20")));
+       }
+
+       /**
+        * Parse the HTTP version
+        */
+       protected function http_version()
+       {
+               if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/')
+               {
+                       $len = strspn($this->data, '0123456789.', 5);
+                       $this->http_version = substr($this->data, 5, $len);
+                       $this->position += 5 + $len;
+                       if (substr_count($this->http_version, '.') <= 1)
+                       {
+                               $this->http_version = (float) $this->http_version;
+                               $this->position += strspn($this->data, "\x09\x20", $this->position);
+                               $this->state = 'status';
+                       }
+                       else
+                       {
+                               $this->state = false;
+                       }
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       /**
+        * Parse the status code
+        */
+       protected function status()
+       {
+               if ($len = strspn($this->data, '0123456789', $this->position))
+               {
+                       $this->status_code = (int) substr($this->data, $this->position, $len);
+                       $this->position += $len;
+                       $this->state = 'reason';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       /**
+        * Parse the reason phrase
+        */
+       protected function reason()
+       {
+               $len = strcspn($this->data, "\x0A", $this->position);
+               $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20");
+               $this->position += $len + 1;
+               $this->state = 'new_line';
+       }
+
+       /**
+        * Deal with a new line, shifting data around as needed
+        */
+       protected function new_line()
+       {
+               $this->value = trim($this->value, "\x0D\x20");
+               if ($this->name !== '' && $this->value !== '')
+               {
+                       $this->name = strtolower($this->name);
+                       // We should only use the last Content-Type header. c.f. issue #1
+                       if (isset($this->headers[$this->name]) && $this->name !== 'content-type')
+                       {
+                               $this->headers[$this->name] .= ', ' . $this->value;
+                       }
+                       else
+                       {
+                               $this->headers[$this->name] = $this->value;
+                       }
+               }
+               $this->name = '';
+               $this->value = '';
+               if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A")
+               {
+                       $this->position += 2;
+                       $this->state = 'body';
+               }
+               elseif ($this->data[$this->position] === "\x0A")
+               {
+                       $this->position++;
+                       $this->state = 'body';
+               }
+               else
+               {
+                       $this->state = 'name';
+               }
+       }
+
+       /**
+        * Parse a header name
+        */
+       protected function name()
+       {
+               $len = strcspn($this->data, "\x0A:", $this->position);
+               if (isset($this->data[$this->position + $len]))
+               {
+                       if ($this->data[$this->position + $len] === "\x0A")
+                       {
+                               $this->position += $len;
+                               $this->state = 'new_line';
+                       }
+                       else
+                       {
+                               $this->name = substr($this->data, $this->position, $len);
+                               $this->position += $len + 1;
+                               $this->state = 'value';
+                       }
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       /**
+        * Parse LWS, replacing consecutive LWS characters with a single space
+        */
+       protected function linear_whitespace()
+       {
+               do
+               {
+                       if (substr($this->data, $this->position, 2) === "\x0D\x0A")
+                       {
+                               $this->position += 2;
+                       }
+                       elseif ($this->data[$this->position] === "\x0A")
+                       {
+                               $this->position++;
+                       }
+                       $this->position += strspn($this->data, "\x09\x20", $this->position);
+               } while ($this->has_data() && $this->is_linear_whitespace());
+               $this->value .= "\x20";
+       }
+
+       /**
+        * See what state to move to while within non-quoted header values
+        */
+       protected function value()
+       {
+               if ($this->is_linear_whitespace())
+               {
+                       $this->linear_whitespace();
+               }
+               else
+               {
+                       switch ($this->data[$this->position])
+                       {
+                               case '"':
+                                       // Workaround for ETags: we have to include the quotes as
+                                       // part of the tag.
+                                       if (strtolower($this->name) === 'etag')
+                                       {
+                                               $this->value .= '"';
+                                               $this->position++;
+                                               $this->state = 'value_char';
+                                               break;
+                                       }
+                                       $this->position++;
+                                       $this->state = 'quote';
+                                       break;
+
+                               case "\x0A":
+                                       $this->position++;
+                                       $this->state = 'new_line';
+                                       break;
+
+                               default:
+                                       $this->state = 'value_char';
+                                       break;
+                       }
+               }
+       }
+
+       /**
+        * Parse a header value while outside quotes
+        */
+       protected function value_char()
+       {
+               $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position);
+               $this->value .= substr($this->data, $this->position, $len);
+               $this->position += $len;
+               $this->state = 'value';
+       }
+
+       /**
+        * See what state to move to while within quoted header values
+        */
+       protected function quote()
+       {
+               if ($this->is_linear_whitespace())
+               {
+                       $this->linear_whitespace();
+               }
+               else
+               {
+                       switch ($this->data[$this->position])
+                       {
+                               case '"':
+                                       $this->position++;
+                                       $this->state = 'value';
+                                       break;
+
+                               case "\x0A":
+                                       $this->position++;
+                                       $this->state = 'new_line';
+                                       break;
+
+                               case '\\':
+                                       $this->position++;
+                                       $this->state = 'quote_escaped';
+                                       break;
+
+                               default:
+                                       $this->state = 'quote_char';
+                                       break;
+                       }
+               }
+       }
+
+       /**
+        * Parse a header value while within quotes
+        */
+       protected function quote_char()
+       {
+               $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position);
+               $this->value .= substr($this->data, $this->position, $len);
+               $this->position += $len;
+               $this->state = 'value';
+       }
+
+       /**
+        * Parse an escaped character within quotes
+        */
+       protected function quote_escaped()
+       {
+               $this->value .= $this->data[$this->position];
+               $this->position++;
+               $this->state = 'quote';
+       }
+
+       /**
+        * Parse the body
+        */
+       protected function body()
+       {
+               $this->body = substr($this->data, $this->position);
+               if (!empty($this->headers['transfer-encoding']))
+               {
+                       unset($this->headers['transfer-encoding']);
+                       $this->state = 'chunked';
+               }
+               else
+               {
+                       $this->state = 'emit';
+               }
+       }
+
+       /**
+        * Parsed a "Transfer-Encoding: chunked" body
+        */
+       protected function chunked()
+       {
+               if (!preg_match('/^([0-9a-f]+)[^\r\n]*\r\n/i', trim($this->body)))
+               {
+                       $this->state = 'emit';
+                       return;
+               }
+
+               $decoded = '';
+               $encoded = $this->body;
+
+               while (true)
+               {
+                       $is_chunked = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $encoded, $matches );
+                       if (!$is_chunked)
+                       {
+                               // Looks like it's not chunked after all
+                               $this->state = 'emit';
+                               return;
+                       }
+
+                       $length = hexdec(trim($matches[1]));
+                       if ($length === 0)
+                       {
+                               // Ignore trailer headers
+                               $this->state = 'emit';
+                               $this->body = $decoded;
+                               return;
+                       }
+
+                       $chunk_length = strlen($matches[0]);
+                       $decoded .= $part = substr($encoded, $chunk_length, $length);
+                       $encoded = substr($encoded, $chunk_length + $length + 2);
+
+                       if (trim($encoded) === '0' || empty($encoded))
+                       {
+                               $this->state = 'emit';
+                               $this->body = $decoded;
+                               return;
+                       }
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/IRI.php b/wp-includes/SimplePie/IRI.php
new file mode 100644 (file)
index 0000000..d3198c0
--- /dev/null
@@ -0,0 +1,1238 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * IRI parser/serialiser/normaliser
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ * @author Geoffrey Sneddon
+ * @author Steve Minutillo
+ * @author Ryan McCue
+ * @copyright 2007-2012 Geoffrey Sneddon, Steve Minutillo, Ryan McCue
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ */
+class SimplePie_IRI
+{
+       /**
+        * Scheme
+        *
+        * @var string
+        */
+       protected $scheme = null;
+
+       /**
+        * User Information
+        *
+        * @var string
+        */
+       protected $iuserinfo = null;
+
+       /**
+        * ihost
+        *
+        * @var string
+        */
+       protected $ihost = null;
+
+       /**
+        * Port
+        *
+        * @var string
+        */
+       protected $port = null;
+
+       /**
+        * ipath
+        *
+        * @var string
+        */
+       protected $ipath = '';
+
+       /**
+        * iquery
+        *
+        * @var string
+        */
+       protected $iquery = null;
+
+       /**
+        * ifragment
+        *
+        * @var string
+        */
+       protected $ifragment = null;
+
+       /**
+        * Normalization database
+        *
+        * Each key is the scheme, each value is an array with each key as the IRI
+        * part and value as the default value for that part.
+        */
+       protected $normalization = array(
+               'acap' => array(
+                       'port' => 674
+               ),
+               'dict' => array(
+                       'port' => 2628
+               ),
+               'file' => array(
+                       'ihost' => 'localhost'
+               ),
+               'http' => array(
+                       'port' => 80,
+                       'ipath' => '/'
+               ),
+               'https' => array(
+                       'port' => 443,
+                       'ipath' => '/'
+               ),
+       );
+
+       /**
+        * Return the entire IRI when you try and read the object as a string
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               return $this->get_iri();
+       }
+
+       /**
+        * Overload __set() to provide access via properties
+        *
+        * @param string $name Property name
+        * @param mixed $value Property value
+        */
+       public function __set($name, $value)
+       {
+               if (method_exists($this, 'set_' . $name))
+               {
+                       call_user_func(array($this, 'set_' . $name), $value);
+               }
+               elseif (
+                          $name === 'iauthority'
+                       || $name === 'iuserinfo'
+                       || $name === 'ihost'
+                       || $name === 'ipath'
+                       || $name === 'iquery'
+                       || $name === 'ifragment'
+               )
+               {
+                       call_user_func(array($this, 'set_' . substr($name, 1)), $value);
+               }
+       }
+
+       /**
+        * Overload __get() to provide access via properties
+        *
+        * @param string $name Property name
+        * @return mixed
+        */
+       public function __get($name)
+       {
+               // isset() returns false for null, we don't want to do that
+               // Also why we use array_key_exists below instead of isset()
+               $props = get_object_vars($this);
+
+               if (
+                       $name === 'iri' ||
+                       $name === 'uri' ||
+                       $name === 'iauthority' ||
+                       $name === 'authority'
+               )
+               {
+                       $return = $this->{"get_$name"}();
+               }
+               elseif (array_key_exists($name, $props))
+               {
+                       $return = $this->$name;
+               }
+               // host -> ihost
+               elseif (($prop = 'i' . $name) && array_key_exists($prop, $props))
+               {
+                       $name = $prop;
+                       $return = $this->$prop;
+               }
+               // ischeme -> scheme
+               elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props))
+               {
+                       $name = $prop;
+                       $return = $this->$prop;
+               }
+               else
+               {
+                       trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE);
+                       $return = null;
+               }
+
+               if ($return === null && isset($this->normalization[$this->scheme][$name]))
+               {
+                       return $this->normalization[$this->scheme][$name];
+               }
+               else
+               {
+                       return $return;
+               }
+       }
+
+       /**
+        * Overload __isset() to provide access via properties
+        *
+        * @param string $name Property name
+        * @return bool
+        */
+       public function __isset($name)
+       {
+               if (method_exists($this, 'get_' . $name) || isset($this->$name))
+               {
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Overload __unset() to provide access via properties
+        *
+        * @param string $name Property name
+        */
+       public function __unset($name)
+       {
+               if (method_exists($this, 'set_' . $name))
+               {
+                       call_user_func(array($this, 'set_' . $name), '');
+               }
+       }
+
+       /**
+        * Create a new IRI object, from a specified string
+        *
+        * @param string $iri
+        */
+       public function __construct($iri = null)
+       {
+               $this->set_iri($iri);
+       }
+
+       /**
+        * Create a new IRI object by resolving a relative IRI
+        *
+        * Returns false if $base is not absolute, otherwise an IRI.
+        *
+        * @param IRI|string $base (Absolute) Base IRI
+        * @param IRI|string $relative Relative IRI
+        * @return IRI|false
+        */
+       public static function absolutize($base, $relative)
+       {
+               if (!($relative instanceof SimplePie_IRI))
+               {
+                       $relative = new SimplePie_IRI($relative);
+               }
+               if (!$relative->is_valid())
+               {
+                       return false;
+               }
+               elseif ($relative->scheme !== null)
+               {
+                       return clone $relative;
+               }
+               else
+               {
+                       if (!($base instanceof SimplePie_IRI))
+                       {
+                               $base = new SimplePie_IRI($base);
+                       }
+                       if ($base->scheme !== null && $base->is_valid())
+                       {
+                               if ($relative->get_iri() !== '')
+                               {
+                                       if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null)
+                                       {
+                                               $target = clone $relative;
+                                               $target->scheme = $base->scheme;
+                                       }
+                                       else
+                                       {
+                                               $target = new SimplePie_IRI;
+                                               $target->scheme = $base->scheme;
+                                               $target->iuserinfo = $base->iuserinfo;
+                                               $target->ihost = $base->ihost;
+                                               $target->port = $base->port;
+                                               if ($relative->ipath !== '')
+                                               {
+                                                       if ($relative->ipath[0] === '/')
+                                                       {
+                                                               $target->ipath = $relative->ipath;
+                                                       }
+                                                       elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '')
+                                                       {
+                                                               $target->ipath = '/' . $relative->ipath;
+                                                       }
+                                                       elseif (($last_segment = strrpos($base->ipath, '/')) !== false)
+                                                       {
+                                                               $target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath;
+                                                       }
+                                                       else
+                                                       {
+                                                               $target->ipath = $relative->ipath;
+                                                       }
+                                                       $target->ipath = $target->remove_dot_segments($target->ipath);
+                                                       $target->iquery = $relative->iquery;
+                                               }
+                                               else
+                                               {
+                                                       $target->ipath = $base->ipath;
+                                                       if ($relative->iquery !== null)
+                                                       {
+                                                               $target->iquery = $relative->iquery;
+                                                       }
+                                                       elseif ($base->iquery !== null)
+                                                       {
+                                                               $target->iquery = $base->iquery;
+                                                       }
+                                               }
+                                               $target->ifragment = $relative->ifragment;
+                                       }
+                               }
+                               else
+                               {
+                                       $target = clone $base;
+                                       $target->ifragment = null;
+                               }
+                               $target->scheme_normalization();
+                               return $target;
+                       }
+                       else
+                       {
+                               return false;
+                       }
+               }
+       }
+
+       /**
+        * Parse an IRI into scheme/authority/path/query/fragment segments
+        *
+        * @param string $iri
+        * @return array
+        */
+       protected function parse_iri($iri)
+       {
+               $iri = trim($iri, "\x20\x09\x0A\x0C\x0D");
+               if (preg_match('/^((?P<scheme>[^:\/?#]+):)?(\/\/(?P<authority>[^\/?#]*))?(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?$/', $iri, $match))
+               {
+                       if ($match[1] === '')
+                       {
+                               $match['scheme'] = null;
+                       }
+                       if (!isset($match[3]) || $match[3] === '')
+                       {
+                               $match['authority'] = null;
+                       }
+                       if (!isset($match[5]))
+                       {
+                               $match['path'] = '';
+                       }
+                       if (!isset($match[6]) || $match[6] === '')
+                       {
+                               $match['query'] = null;
+                       }
+                       if (!isset($match[8]) || $match[8] === '')
+                       {
+                               $match['fragment'] = null;
+                       }
+                       return $match;
+               }
+               else
+               {
+                       // This can occur when a paragraph is accidentally parsed as a URI
+                       return false;
+               }
+       }
+
+       /**
+        * Remove dot segments from a path
+        *
+        * @param string $input
+        * @return string
+        */
+       protected function remove_dot_segments($input)
+       {
+               $output = '';
+               while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..')
+               {
+                       // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
+                       if (strpos($input, '../') === 0)
+                       {
+                               $input = substr($input, 3);
+                       }
+                       elseif (strpos($input, './') === 0)
+                       {
+                               $input = substr($input, 2);
+                       }
+                       // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
+                       elseif (strpos($input, '/./') === 0)
+                       {
+                               $input = substr($input, 2);
+                       }
+                       elseif ($input === '/.')
+                       {
+                               $input = '/';
+                       }
+                       // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
+                       elseif (strpos($input, '/../') === 0)
+                       {
+                               $input = substr($input, 3);
+                               $output = substr_replace($output, '', strrpos($output, '/'));
+                       }
+                       elseif ($input === '/..')
+                       {
+                               $input = '/';
+                               $output = substr_replace($output, '', strrpos($output, '/'));
+                       }
+                       // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
+                       elseif ($input === '.' || $input === '..')
+                       {
+                               $input = '';
+                       }
+                       // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
+                       elseif (($pos = strpos($input, '/', 1)) !== false)
+                       {
+                               $output .= substr($input, 0, $pos);
+                               $input = substr_replace($input, '', 0, $pos);
+                       }
+                       else
+                       {
+                               $output .= $input;
+                               $input = '';
+                       }
+               }
+               return $output . $input;
+       }
+
+       /**
+        * Replace invalid character with percent encoding
+        *
+        * @param string $string Input string
+        * @param string $extra_chars Valid characters not in iunreserved or
+        *                            iprivate (this is ASCII-only)
+        * @param bool $iprivate Allow iprivate
+        * @return string
+        */
+       protected function replace_invalid_with_pct_encoding($string, $extra_chars, $iprivate = false)
+       {
+               // Normalize as many pct-encoded sections as possible
+               $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array($this, 'remove_iunreserved_percent_encoded'), $string);
+
+               // Replace invalid percent characters
+               $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
+
+               // Add unreserved and % to $extra_chars (the latter is safe because all
+               // pct-encoded sections are now valid).
+               $extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
+
+               // Now replace any bytes that aren't allowed with their pct-encoded versions
+               $position = 0;
+               $strlen = strlen($string);
+               while (($position += strspn($string, $extra_chars, $position)) < $strlen)
+               {
+                       $value = ord($string[$position]);
+
+                       // Start position
+                       $start = $position;
+
+                       // By default we are valid
+                       $valid = true;
+
+                       // No one byte sequences are valid due to the while.
+                       // Two byte sequence:
+                       if (($value & 0xE0) === 0xC0)
+                       {
+                               $character = ($value & 0x1F) << 6;
+                               $length = 2;
+                               $remaining = 1;
+                       }
+                       // Three byte sequence:
+                       elseif (($value & 0xF0) === 0xE0)
+                       {
+                               $character = ($value & 0x0F) << 12;
+                               $length = 3;
+                               $remaining = 2;
+                       }
+                       // Four byte sequence:
+                       elseif (($value & 0xF8) === 0xF0)
+                       {
+                               $character = ($value & 0x07) << 18;
+                               $length = 4;
+                               $remaining = 3;
+                       }
+                       // Invalid byte:
+                       else
+                       {
+                               $valid = false;
+                               $length = 1;
+                               $remaining = 0;
+                       }
+
+                       if ($remaining)
+                       {
+                               if ($position + $length <= $strlen)
+                               {
+                                       for ($position++; $remaining; $position++)
+                                       {
+                                               $value = ord($string[$position]);
+
+                                               // Check that the byte is valid, then add it to the character:
+                                               if (($value & 0xC0) === 0x80)
+                                               {
+                                                       $character |= ($value & 0x3F) << (--$remaining * 6);
+                                               }
+                                               // If it is invalid, count the sequence as invalid and reprocess the current byte:
+                                               else
+                                               {
+                                                       $valid = false;
+                                                       $position--;
+                                                       break;
+                                               }
+                                       }
+                               }
+                               else
+                               {
+                                       $position = $strlen - 1;
+                                       $valid = false;
+                               }
+                       }
+
+                       // Percent encode anything invalid or not in ucschar
+                       if (
+                               // Invalid sequences
+                               !$valid
+                               // Non-shortest form sequences are invalid
+                               || $length > 1 && $character <= 0x7F
+                               || $length > 2 && $character <= 0x7FF
+                               || $length > 3 && $character <= 0xFFFF
+                               // Outside of range of ucschar codepoints
+                               // Noncharacters
+                               || ($character & 0xFFFE) === 0xFFFE
+                               || $character >= 0xFDD0 && $character <= 0xFDEF
+                               || (
+                                       // Everything else not in ucschar
+                                          $character > 0xD7FF && $character < 0xF900
+                                       || $character < 0xA0
+                                       || $character > 0xEFFFD
+                               )
+                               && (
+                                       // Everything not in iprivate, if it applies
+                                          !$iprivate
+                                       || $character < 0xE000
+                                       || $character > 0x10FFFD
+                               )
+                       )
+                       {
+                               // If we were a character, pretend we weren't, but rather an error.
+                               if ($valid)
+                                       $position--;
+
+                               for ($j = $start; $j <= $position; $j++)
+                               {
+                                       $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
+                                       $j += 2;
+                                       $position += 2;
+                                       $strlen += 2;
+                               }
+                       }
+               }
+
+               return $string;
+       }
+
+       /**
+        * Callback function for preg_replace_callback.
+        *
+        * Removes sequences of percent encoded bytes that represent UTF-8
+        * encoded characters in iunreserved
+        *
+        * @param array $match PCRE match
+        * @return string Replacement
+        */
+       protected function remove_iunreserved_percent_encoded($match)
+       {
+               // As we just have valid percent encoded sequences we can just explode
+               // and ignore the first member of the returned array (an empty string).
+               $bytes = explode('%', $match[0]);
+
+               // Initialize the new string (this is what will be returned) and that
+               // there are no bytes remaining in the current sequence (unsurprising
+               // at the first byte!).
+               $string = '';
+               $remaining = 0;
+
+               // Loop over each and every byte, and set $value to its value
+               for ($i = 1, $len = count($bytes); $i < $len; $i++)
+               {
+                       $value = hexdec($bytes[$i]);
+
+                       // If we're the first byte of sequence:
+                       if (!$remaining)
+                       {
+                               // Start position
+                               $start = $i;
+
+                               // By default we are valid
+                               $valid = true;
+
+                               // One byte sequence:
+                               if ($value <= 0x7F)
+                               {
+                                       $character = $value;
+                                       $length = 1;
+                               }
+                               // Two byte sequence:
+                               elseif (($value & 0xE0) === 0xC0)
+                               {
+                                       $character = ($value & 0x1F) << 6;
+                                       $length = 2;
+                                       $remaining = 1;
+                               }
+                               // Three byte sequence:
+                               elseif (($value & 0xF0) === 0xE0)
+                               {
+                                       $character = ($value & 0x0F) << 12;
+                                       $length = 3;
+                                       $remaining = 2;
+                               }
+                               // Four byte sequence:
+                               elseif (($value & 0xF8) === 0xF0)
+                               {
+                                       $character = ($value & 0x07) << 18;
+                                       $length = 4;
+                                       $remaining = 3;
+                               }
+                               // Invalid byte:
+                               else
+                               {
+                                       $valid = false;
+                                       $remaining = 0;
+                               }
+                       }
+                       // Continuation byte:
+                       else
+                       {
+                               // Check that the byte is valid, then add it to the character:
+                               if (($value & 0xC0) === 0x80)
+                               {
+                                       $remaining--;
+                                       $character |= ($value & 0x3F) << ($remaining * 6);
+                               }
+                               // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
+                               else
+                               {
+                                       $valid = false;
+                                       $remaining = 0;
+                                       $i--;
+                               }
+                       }
+
+                       // If we've reached the end of the current byte sequence, append it to Unicode::$data
+                       if (!$remaining)
+                       {
+                               // Percent encode anything invalid or not in iunreserved
+                               if (
+                                       // Invalid sequences
+                                       !$valid
+                                       // Non-shortest form sequences are invalid
+                                       || $length > 1 && $character <= 0x7F
+                                       || $length > 2 && $character <= 0x7FF
+                                       || $length > 3 && $character <= 0xFFFF
+                                       // Outside of range of iunreserved codepoints
+                                       || $character < 0x2D
+                                       || $character > 0xEFFFD
+                                       // Noncharacters
+                                       || ($character & 0xFFFE) === 0xFFFE
+                                       || $character >= 0xFDD0 && $character <= 0xFDEF
+                                       // Everything else not in iunreserved (this is all BMP)
+                                       || $character === 0x2F
+                                       || $character > 0x39 && $character < 0x41
+                                       || $character > 0x5A && $character < 0x61
+                                       || $character > 0x7A && $character < 0x7E
+                                       || $character > 0x7E && $character < 0xA0
+                                       || $character > 0xD7FF && $character < 0xF900
+                               )
+                               {
+                                       for ($j = $start; $j <= $i; $j++)
+                                       {
+                                               $string .= '%' . strtoupper($bytes[$j]);
+                                       }
+                               }
+                               else
+                               {
+                                       for ($j = $start; $j <= $i; $j++)
+                                       {
+                                               $string .= chr(hexdec($bytes[$j]));
+                                       }
+                               }
+                       }
+               }
+
+               // If we have any bytes left over they are invalid (i.e., we are
+               // mid-way through a multi-byte sequence)
+               if ($remaining)
+               {
+                       for ($j = $start; $j < $len; $j++)
+                       {
+                               $string .= '%' . strtoupper($bytes[$j]);
+                       }
+               }
+
+               return $string;
+       }
+
+       protected function scheme_normalization()
+       {
+               if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo'])
+               {
+                       $this->iuserinfo = null;
+               }
+               if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost'])
+               {
+                       $this->ihost = null;
+               }
+               if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port'])
+               {
+                       $this->port = null;
+               }
+               if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath'])
+               {
+                       $this->ipath = '';
+               }
+               if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery'])
+               {
+                       $this->iquery = null;
+               }
+               if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment'])
+               {
+                       $this->ifragment = null;
+               }
+       }
+
+       /**
+        * Check if the object represents a valid IRI. This needs to be done on each
+        * call as some things change depending on another part of the IRI.
+        *
+        * @return bool
+        */
+       public function is_valid()
+       {
+               $isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null;
+               if ($this->ipath !== '' &&
+                       (
+                               $isauthority && (
+                                       $this->ipath[0] !== '/' ||
+                                       substr($this->ipath, 0, 2) === '//'
+                               ) ||
+                               (
+                                       $this->scheme === null &&
+                                       !$isauthority &&
+                                       strpos($this->ipath, ':') !== false &&
+                                       (strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/'))
+                               )
+                       )
+               )
+               {
+                       return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * Set the entire IRI. Returns true on success, false on failure (if there
+        * are any invalid characters).
+        *
+        * @param string $iri
+        * @return bool
+        */
+       public function set_iri($iri)
+       {
+               static $cache;
+               if (!$cache)
+               {
+                       $cache = array();
+               }
+
+               if ($iri === null)
+               {
+                       return true;
+               }
+               elseif (isset($cache[$iri]))
+               {
+                       list($this->scheme,
+                                $this->iuserinfo,
+                                $this->ihost,
+                                $this->port,
+                                $this->ipath,
+                                $this->iquery,
+                                $this->ifragment,
+                                $return) = $cache[$iri];
+                       return $return;
+               }
+               else
+               {
+                       $parsed = $this->parse_iri((string) $iri);
+                       if (!$parsed)
+                       {
+                               return false;
+                       }
+
+                       $return = $this->set_scheme($parsed['scheme'])
+                               && $this->set_authority($parsed['authority'])
+                               && $this->set_path($parsed['path'])
+                               && $this->set_query($parsed['query'])
+                               && $this->set_fragment($parsed['fragment']);
+
+                       $cache[$iri] = array($this->scheme,
+                                                                $this->iuserinfo,
+                                                                $this->ihost,
+                                                                $this->port,
+                                                                $this->ipath,
+                                                                $this->iquery,
+                                                                $this->ifragment,
+                                                                $return);
+                       return $return;
+               }
+       }
+
+       /**
+        * Set the scheme. Returns true on success, false on failure (if there are
+        * any invalid characters).
+        *
+        * @param string $scheme
+        * @return bool
+        */
+       public function set_scheme($scheme)
+       {
+               if ($scheme === null)
+               {
+                       $this->scheme = null;
+               }
+               elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme))
+               {
+                       $this->scheme = null;
+                       return false;
+               }
+               else
+               {
+                       $this->scheme = strtolower($scheme);
+               }
+               return true;
+       }
+
+       /**
+        * Set the authority. Returns true on success, false on failure (if there are
+        * any invalid characters).
+        *
+        * @param string $authority
+        * @return bool
+        */
+       public function set_authority($authority)
+       {
+               static $cache;
+               if (!$cache)
+                       $cache = array();
+
+               if ($authority === null)
+               {
+                       $this->iuserinfo = null;
+                       $this->ihost = null;
+                       $this->port = null;
+                       return true;
+               }
+               elseif (isset($cache[$authority]))
+               {
+                       list($this->iuserinfo,
+                                $this->ihost,
+                                $this->port,
+                                $return) = $cache[$authority];
+
+                       return $return;
+               }
+               else
+               {
+                       $remaining = $authority;
+                       if (($iuserinfo_end = strrpos($remaining, '@')) !== false)
+                       {
+                               $iuserinfo = substr($remaining, 0, $iuserinfo_end);
+                               $remaining = substr($remaining, $iuserinfo_end + 1);
+                       }
+                       else
+                       {
+                               $iuserinfo = null;
+                       }
+                       if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false)
+                       {
+                               if (($port = substr($remaining, $port_start + 1)) === false)
+                               {
+                                       $port = null;
+                               }
+                               $remaining = substr($remaining, 0, $port_start);
+                       }
+                       else
+                       {
+                               $port = null;
+                       }
+
+                       $return = $this->set_userinfo($iuserinfo) &&
+                                         $this->set_host($remaining) &&
+                                         $this->set_port($port);
+
+                       $cache[$authority] = array($this->iuserinfo,
+                                                                          $this->ihost,
+                                                                          $this->port,
+                                                                          $return);
+
+                       return $return;
+               }
+       }
+
+       /**
+        * Set the iuserinfo.
+        *
+        * @param string $iuserinfo
+        * @return bool
+        */
+       public function set_userinfo($iuserinfo)
+       {
+               if ($iuserinfo === null)
+               {
+                       $this->iuserinfo = null;
+               }
+               else
+               {
+                       $this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:');
+                       $this->scheme_normalization();
+               }
+
+               return true;
+       }
+
+       /**
+        * Set the ihost. Returns true on success, false on failure (if there are
+        * any invalid characters).
+        *
+        * @param string $ihost
+        * @return bool
+        */
+       public function set_host($ihost)
+       {
+               if ($ihost === null)
+               {
+                       $this->ihost = null;
+                       return true;
+               }
+               elseif (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']')
+               {
+                       if (SimplePie_Net_IPv6::check_ipv6(substr($ihost, 1, -1)))
+                       {
+                               $this->ihost = '[' . SimplePie_Net_IPv6::compress(substr($ihost, 1, -1)) . ']';
+                       }
+                       else
+                       {
+                               $this->ihost = null;
+                               return false;
+                       }
+               }
+               else
+               {
+                       $ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;=');
+
+                       // Lowercase, but ignore pct-encoded sections (as they should
+                       // remain uppercase). This must be done after the previous step
+                       // as that can add unescaped characters.
+                       $position = 0;
+                       $strlen = strlen($ihost);
+                       while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen)
+                       {
+                               if ($ihost[$position] === '%')
+                               {
+                                       $position += 3;
+                               }
+                               else
+                               {
+                                       $ihost[$position] = strtolower($ihost[$position]);
+                                       $position++;
+                               }
+                       }
+
+                       $this->ihost = $ihost;
+               }
+
+               $this->scheme_normalization();
+
+               return true;
+       }
+
+       /**
+        * Set the port. Returns true on success, false on failure (if there are
+        * any invalid characters).
+        *
+        * @param string $port
+        * @return bool
+        */
+       public function set_port($port)
+       {
+               if ($port === null)
+               {
+                       $this->port = null;
+                       return true;
+               }
+               elseif (strspn($port, '0123456789') === strlen($port))
+               {
+                       $this->port = (int) $port;
+                       $this->scheme_normalization();
+                       return true;
+               }
+               else
+               {
+                       $this->port = null;
+                       return false;
+               }
+       }
+
+       /**
+        * Set the ipath.
+        *
+        * @param string $ipath
+        * @return bool
+        */
+       public function set_path($ipath)
+       {
+               static $cache;
+               if (!$cache)
+               {
+                       $cache = array();
+               }
+
+               $ipath = (string) $ipath;
+
+               if (isset($cache[$ipath]))
+               {
+                       $this->ipath = $cache[$ipath][(int) ($this->scheme !== null)];
+               }
+               else
+               {
+                       $valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/');
+                       $removed = $this->remove_dot_segments($valid);
+
+                       $cache[$ipath] = array($valid, $removed);
+                       $this->ipath =  ($this->scheme !== null) ? $removed : $valid;
+               }
+
+               $this->scheme_normalization();
+               return true;
+       }
+
+       /**
+        * Set the iquery.
+        *
+        * @param string $iquery
+        * @return bool
+        */
+       public function set_query($iquery)
+       {
+               if ($iquery === null)
+               {
+                       $this->iquery = null;
+               }
+               else
+               {
+                       $this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true);
+                       $this->scheme_normalization();
+               }
+               return true;
+       }
+
+       /**
+        * Set the ifragment.
+        *
+        * @param string $ifragment
+        * @return bool
+        */
+       public function set_fragment($ifragment)
+       {
+               if ($ifragment === null)
+               {
+                       $this->ifragment = null;
+               }
+               else
+               {
+                       $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?');
+                       $this->scheme_normalization();
+               }
+               return true;
+       }
+
+       /**
+        * Convert an IRI to a URI (or parts thereof)
+        *
+        * @return string
+        */
+       public function to_uri($string)
+       {
+               static $non_ascii;
+               if (!$non_ascii)
+               {
+                       $non_ascii = implode('', range("\x80", "\xFF"));
+               }
+
+               $position = 0;
+               $strlen = strlen($string);
+               while (($position += strcspn($string, $non_ascii, $position)) < $strlen)
+               {
+                       $string = substr_replace($string, sprintf('%%%02X', ord($string[$position])), $position, 1);
+                       $position += 3;
+                       $strlen += 2;
+               }
+
+               return $string;
+       }
+
+       /**
+        * Get the complete IRI
+        *
+        * @return string
+        */
+       public function get_iri()
+       {
+               if (!$this->is_valid())
+               {
+                       return false;
+               }
+
+               $iri = '';
+               if ($this->scheme !== null)
+               {
+                       $iri .= $this->scheme . ':';
+               }
+               if (($iauthority = $this->get_iauthority()) !== null)
+               {
+                       $iri .= '//' . $iauthority;
+               }
+               if ($this->ipath !== '')
+               {
+                       $iri .= $this->ipath;
+               }
+               elseif (!empty($this->normalization[$this->scheme]['ipath']) && $iauthority !== null && $iauthority !== '')
+               {
+                       $iri .= $this->normalization[$this->scheme]['ipath'];
+               }
+               if ($this->iquery !== null)
+               {
+                       $iri .= '?' . $this->iquery;
+               }
+               if ($this->ifragment !== null)
+               {
+                       $iri .= '#' . $this->ifragment;
+               }
+
+               return $iri;
+       }
+
+       /**
+        * Get the complete URI
+        *
+        * @return string
+        */
+       public function get_uri()
+       {
+               return $this->to_uri($this->get_iri());
+       }
+
+       /**
+        * Get the complete iauthority
+        *
+        * @return string
+        */
+       protected function get_iauthority()
+       {
+               if ($this->iuserinfo !== null || $this->ihost !== null || $this->port !== null)
+               {
+                       $iauthority = '';
+                       if ($this->iuserinfo !== null)
+                       {
+                               $iauthority .= $this->iuserinfo . '@';
+                       }
+                       if ($this->ihost !== null)
+                       {
+                               $iauthority .= $this->ihost;
+                       }
+                       if ($this->port !== null)
+                       {
+                               $iauthority .= ':' . $this->port;
+                       }
+                       return $iauthority;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the complete authority
+        *
+        * @return string
+        */
+       protected function get_authority()
+       {
+               $iauthority = $this->get_iauthority();
+               if (is_string($iauthority))
+                       return $this->to_uri($iauthority);
+               else
+                       return $iauthority;
+       }
+}
diff --git a/wp-includes/SimplePie/Item.php b/wp-includes/SimplePie/Item.php
new file mode 100644 (file)
index 0000000..a77574b
--- /dev/null
@@ -0,0 +1,2964 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Manages all item-related data
+ *
+ * Used by {@see SimplePie::get_item()} and {@see SimplePie::get_items()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_item_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Item
+{
+       /**
+        * Parent feed
+        *
+        * @access private
+        * @var SimplePie
+        */
+       var $feed;
+
+       /**
+        * Raw data
+        *
+        * @access private
+        * @var array
+        */
+       var $data = array();
+
+       /**
+        * Registry object
+        *
+        * @see set_registry
+        * @var SimplePie_Registry
+        */
+       protected $registry;
+
+       /**
+        * Create a new item object
+        *
+        * This is usually used by {@see SimplePie::get_items} and
+        * {@see SimplePie::get_item}. Avoid creating this manually.
+        *
+        * @param SimplePie $feed Parent feed
+        * @param array $data Raw data
+        */
+       public function __construct($feed, $data)
+       {
+               $this->feed = $feed;
+               $this->data = $data;
+       }
+
+       /**
+        * Set the registry handler
+        *
+        * This is usually used by {@see SimplePie_Registry::create}
+        *
+        * @since 1.3
+        * @param SimplePie_Registry $registry
+        */
+       public function set_registry(SimplePie_Registry $registry)
+       {
+               $this->registry = $registry;
+       }
+
+       /**
+        * Get a string representation of the item
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               return md5(serialize($this->data));
+       }
+
+       /**
+        * Remove items that link back to this before destroying this object
+        */
+       public function __destruct()
+       {
+               if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
+               {
+                       unset($this->feed);
+               }
+       }
+
+       /**
+        * Get data for an item-level element
+        *
+        * This method allows you to get access to ANY element/attribute that is a
+        * sub-element of the item/entry tag.
+        *
+        * See {@see SimplePie::get_feed_tags()} for a description of the return value
+        *
+        * @since 1.0
+        * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
+        * @param string $namespace The URL of the XML namespace of the elements you're trying to access
+        * @param string $tag Tag name
+        * @return array
+        */
+       public function get_item_tags($namespace, $tag)
+       {
+               if (isset($this->data['child'][$namespace][$tag]))
+               {
+                       return $this->data['child'][$namespace][$tag];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the base URL value from the parent feed
+        *
+        * Uses `<xml:base>`
+        *
+        * @param array $element
+        * @return string
+        */
+       public function get_base($element = array())
+       {
+               return $this->feed->get_base($element);
+       }
+
+       /**
+        * Sanitize feed data
+        *
+        * @access private
+        * @see SimplePie::sanitize()
+        * @param string $data Data to sanitize
+        * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants
+        * @param string $base Base URL to resolve URLs against
+        * @return string Sanitized data
+        */
+       public function sanitize($data, $type, $base = '')
+       {
+               return $this->feed->sanitize($data, $type, $base);
+       }
+
+       /**
+        * Get the parent feed
+        *
+        * Note: this may not work as you think for multifeeds!
+        *
+        * @link http://simplepie.org/faq/typical_multifeed_gotchas#missing_data_from_feed
+        * @since 1.0
+        * @return SimplePie
+        */
+       public function get_feed()
+       {
+               return $this->feed;
+       }
+
+       /**
+        * Get the unique identifier for the item
+        *
+        * This is usually used when writing code to check for new items in a feed.
+        *
+        * Uses `<atom:id>`, `<guid>`, `<dc:identifier>` or the `about` attribute
+        * for RDF. If none of these are supplied (or `$hash` is true), creates an
+        * MD5 hash based on the permalink and title. If either of those are not
+        * supplied, creates a hash based on the full feed data.
+        *
+        * @since Beta 2
+        * @param boolean $hash Should we force using a hash instead of the supplied ID?
+        * @return string
+        */
+       public function get_id($hash = false)
+       {
+               if (!$hash)
+               {
+                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
+                       {
+                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
+                       {
+                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
+                       {
+                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
+                       {
+                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
+                       {
+                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif (isset($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about']))
+                       {
+                               return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif (($return = $this->get_permalink()) !== null)
+                       {
+                               return $return;
+                       }
+                       elseif (($return = $this->get_title()) !== null)
+                       {
+                               return $return;
+                       }
+               }
+               if ($this->get_permalink() !== null || $this->get_title() !== null)
+               {
+                       return md5($this->get_permalink() . $this->get_title());
+               }
+               else
+               {
+                       return md5(serialize($this->data));
+               }
+       }
+
+       /**
+        * Get the title of the item
+        *
+        * Uses `<atom:title>`, `<title>` or `<dc:title>`
+        *
+        * @since Beta 2 (previously called `get_item_title` since 0.8)
+        * @return string|null
+        */
+       public function get_title()
+       {
+               if (!isset($this->data['title']))
+               {
+                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+                       {
+                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       else
+                       {
+                               $this->data['title'] = null;
+                       }
+               }
+               return $this->data['title'];
+       }
+
+       /**
+        * Get the content for the item
+        *
+        * Prefers summaries over full content , but will return full content if a
+        * summary does not exist.
+        *
+        * To prefer full content instead, use {@see get_content}
+        *
+        * Uses `<atom:summary>`, `<description>`, `<dc:description>` or
+        * `<itunes:subtitle>`
+        *
+        * @since 0.8
+        * @param boolean $description_only Should we avoid falling back to the content?
+        * @return string|null
+        */
+       public function get_description($description_only = false)
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+               }
+
+               elseif (!$description_only)
+               {
+                       return $this->get_content(true);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the content for the item
+        *
+        * Prefers full content over summaries, but will return a summary if full
+        * content does not exist.
+        *
+        * To prefer summaries instead, use {@see get_description}
+        *
+        * Uses `<atom:content>` or `<content:encoded>` (RSS 1.0 Content Module)
+        *
+        * @since 1.0
+        * @param boolean $content_only Should we avoid falling back to the description?
+        * @return string|null
+        */
+       public function get_content($content_only = false)
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+               }
+               elseif (!$content_only)
+               {
+                       return $this->get_description(true);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a category for the item
+        *
+        * @since Beta 3 (previously called `get_categories()` since Beta 2)
+        * @param int $key The category that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Category|null
+        */
+       public function get_category($key = 0)
+       {
+               $categories = $this->get_categories();
+               if (isset($categories[$key]))
+               {
+                       return $categories[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all categories for the item
+        *
+        * Uses `<atom:category>`, `<category>` or `<dc:subject>`
+        *
+        * @since Beta 3
+        * @return array|null List of {@see SimplePie_Category} objects
+        */
+       public function get_categories()
+       {
+               $categories = array();
+
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+               {
+                       $term = null;
+                       $scheme = null;
+                       $label = null;
+                       if (isset($category['attribs']['']['term']))
+                       {
+                               $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($category['attribs']['']['scheme']))
+                       {
+                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($category['attribs']['']['label']))
+                       {
+                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
+               {
+                       // This is really the label, but keep this as the term also for BC.
+                       // Label will also work on retrieving because that falls back to term.
+                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       if (isset($category['attribs']['']['domain']))
+                       {
+                               $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       else
+                       {
+                               $scheme = null;
+                       }
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, null));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+               {
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+               {
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+
+               if (!empty($categories))
+               {
+                       return array_unique($categories);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get an author for the item
+        *
+        * @since Beta 2
+        * @param int $key The author that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Author|null
+        */
+       public function get_author($key = 0)
+       {
+               $authors = $this->get_authors();
+               if (isset($authors[$key]))
+               {
+                       return $authors[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a contributor for the item
+        *
+        * @since 1.1
+        * @param int $key The contrbutor that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Author|null
+        */
+       public function get_contributor($key = 0)
+       {
+               $contributors = $this->get_contributors();
+               if (isset($contributors[$key]))
+               {
+                       return $contributors[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all contributors for the item
+        *
+        * Uses `<atom:contributor>`
+        *
+        * @since 1.1
+        * @return array|null List of {@see SimplePie_Author} objects
+        */
+       public function get_contributors()
+       {
+               $contributors = array();
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+               {
+                       $name = null;
+                       $uri = null;
+                       $email = null;
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+                       {
+                               $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $uri !== null)
+                       {
+                               $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
+                       }
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+               {
+                       $name = null;
+                       $url = null;
+                       $email = null;
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+                       {
+                               $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $url !== null)
+                       {
+                               $contributors[] = $this->registry->create('Author', array($name, $url, $email));
+                       }
+               }
+
+               if (!empty($contributors))
+               {
+                       return array_unique($contributors);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all authors for the item
+        *
+        * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`
+        *
+        * @since Beta 2
+        * @return array|null List of {@see SimplePie_Author} objects
+        */
+       public function get_authors()
+       {
+               $authors = array();
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+               {
+                       $name = null;
+                       $uri = null;
+                       $email = null;
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+                       {
+                               $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+                       }
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $uri !== null)
+                       {
+                               $authors[] = $this->registry->create('Author', array($name, $uri, $email));
+                       }
+               }
+               if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+               {
+                       $name = null;
+                       $url = null;
+                       $email = null;
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+                       {
+                               $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+                       }
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $url !== null)
+                       {
+                               $authors[] = $this->registry->create('Author', array($name, $url, $email));
+                       }
+               }
+               if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))
+               {
+                       $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+
+               if (!empty($authors))
+               {
+                       return array_unique($authors);
+               }
+               elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))
+               {
+                       return $authors;
+               }
+               elseif ($authors = $this->feed->get_authors())
+               {
+                       return $authors;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the copyright info for the item
+        *
+        * Uses `<atom:rights>` or `<dc:rights>`
+        *
+        * @since 1.1
+        * @return string
+        */
+       public function get_copyright()
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the posting date/time for the item
+        *
+        * Uses `<atom:published>`, `<atom:updated>`, `<atom:issued>`,
+        * `<atom:modified>`, `<pubDate>` or `<dc:date>`
+        *
+        * Note: obeys PHP's timezone setting. To get a UTC date/time, use
+        * {@see get_gmdate}
+        *
+        * @since Beta 2 (previously called `get_item_date` since 0.8)
+        *
+        * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)
+        * @return int|string|null
+        */
+       public function get_date($date_format = 'j F Y, g:i a')
+       {
+               if (!isset($this->data['date']))
+               {
+                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
+                       {
+                               $this->data['date']['raw'] = $return[0]['data'];
+                       }
+
+                       if (!empty($this->data['date']['raw']))
+                       {
+                               $parser = $this->registry->call('Parse_Date', 'get');
+                               $this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);
+                       }
+                       else
+                       {
+                               $this->data['date'] = null;
+                       }
+               }
+               if ($this->data['date'])
+               {
+                       $date_format = (string) $date_format;
+                       switch ($date_format)
+                       {
+                               case '':
+                                       return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
+
+                               case 'U':
+                                       return $this->data['date']['parsed'];
+
+                               default:
+                                       return date($date_format, $this->data['date']['parsed']);
+                       }
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the update date/time for the item
+        *
+        * Uses `<atom:updated>`
+        *
+        * Note: obeys PHP's timezone setting. To get a UTC date/time, use
+        * {@see get_gmdate}
+        *
+        * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)
+        * @return int|string|null
+        */
+       public function get_updated_date($date_format = 'j F Y, g:i a')
+       {
+               if (!isset($this->data['updated']))
+               {
+                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
+                       {
+                               $this->data['updated']['raw'] = $return[0]['data'];
+                       }
+
+                       if (!empty($this->data['updated']['raw']))
+                       {
+                               $parser = $this->registry->call('Parse_Date', 'get');
+                               $this->data['updated']['parsed'] = $parser->parse($this->data['date']['raw']);
+                       }
+                       else
+                       {
+                               $this->data['updated'] = null;
+                       }
+               }
+               if ($this->data['updated'])
+               {
+                       $date_format = (string) $date_format;
+                       switch ($date_format)
+                       {
+                               case '':
+                                       return $this->sanitize($this->data['updated']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
+
+                               case 'U':
+                                       return $this->data['updated']['parsed'];
+
+                               default:
+                                       return date($date_format, $this->data['updated']['parsed']);
+                       }
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the localized posting date/time for the item
+        *
+        * Returns the date formatted in the localized language. To display in
+        * languages other than the server's default, you need to change the locale
+        * with {@link http://php.net/setlocale setlocale()}. The available
+        * localizations depend on which ones are installed on your web server.
+        *
+        * @since 1.0
+        *
+        * @param string $date_format Supports any PHP date format from {@see http://php.net/strftime} (empty for the raw data)
+        * @return int|string|null
+        */
+       public function get_local_date($date_format = '%c')
+       {
+               if (!$date_format)
+               {
+                       return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif (($date = $this->get_date('U')) !== null && $date !== false)
+               {
+                       return strftime($date_format, $date);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the posting date/time for the item (UTC time)
+        *
+        * @see get_date
+        * @param string $date_format Supports any PHP date format from {@see http://php.net/date}
+        * @return int|string|null
+        */
+       public function get_gmdate($date_format = 'j F Y, g:i a')
+       {
+               $date = $this->get_date('U');
+               if ($date === null)
+               {
+                       return null;
+               }
+
+               return gmdate($date_format, $date);
+       }
+
+       /**
+        * Get the update date/time for the item (UTC time)
+        *
+        * @see get_updated_date
+        * @param string $date_format Supports any PHP date format from {@see http://php.net/date}
+        * @return int|string|null
+        */
+       public function get_updated_gmdate($date_format = 'j F Y, g:i a')
+       {
+               $date = $this->get_updated_date('U');
+               if ($date === null)
+               {
+                       return null;
+               }
+
+               return gmdate($date_format, $date);
+       }
+
+       /**
+        * Get the permalink for the item
+        *
+        * Returns the first link available with a relationship of "alternate".
+        * Identical to {@see get_link()} with key 0
+        *
+        * @see get_link
+        * @since 0.8
+        * @return string|null Permalink URL
+        */
+       public function get_permalink()
+       {
+               $link = $this->get_link();
+               $enclosure = $this->get_enclosure(0);
+               if ($link !== null)
+               {
+                       return $link;
+               }
+               elseif ($enclosure !== null)
+               {
+                       return $enclosure->get_link();
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get a single link for the item
+        *
+        * @since Beta 3
+        * @param int $key The link that you want to return.  Remember that arrays begin with 0, not 1
+        * @param string $rel The relationship of the link to return
+        * @return string|null Link URL
+        */
+       public function get_link($key = 0, $rel = 'alternate')
+       {
+               $links = $this->get_links($rel);
+               if ($links[$key] !== null)
+               {
+                       return $links[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all links for the item
+        *
+        * Uses `<atom:link>`, `<link>` or `<guid>`
+        *
+        * @since Beta 2
+        * @param string $rel The relationship of links to return
+        * @return array|null Links found for the item (strings)
+        */
+       public function get_links($rel = 'alternate')
+       {
+               if (!isset($this->data['links']))
+               {
+                       $this->data['links'] = array();
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+                       {
+                               if (isset($link['attribs']['']['href']))
+                               {
+                                       $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+                                       $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+                               }
+                       }
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+                       {
+                               if (isset($link['attribs']['']['href']))
+                               {
+                                       $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+                                       $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+                               }
+                       }
+                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
+                       {
+                               if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true')
+                               {
+                                       $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                               }
+                       }
+
+                       $keys = array_keys($this->data['links']);
+                       foreach ($keys as $key)
+                       {
+                               if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
+                               {
+                                       if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+                                       {
+                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+                                               $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+                                       }
+                                       else
+                                       {
+                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+                                       }
+                               }
+                               elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+                               {
+                                       $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+                               }
+                               $this->data['links'][$key] = array_unique($this->data['links'][$key]);
+                       }
+               }
+               if (isset($this->data['links'][$rel]))
+               {
+                       return $this->data['links'][$rel];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get an enclosure from the item
+        *
+        * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
+        *
+        * @since Beta 2
+        * @todo Add ability to prefer one type of content over another (in a media group).
+        * @param int $key The enclosure that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Enclosure|null
+        */
+       public function get_enclosure($key = 0, $prefer = null)
+       {
+               $enclosures = $this->get_enclosures();
+               if (isset($enclosures[$key]))
+               {
+                       return $enclosures[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get all available enclosures (podcasts, etc.)
+        *
+        * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
+        *
+        * At this point, we're pretty much assuming that all enclosures for an item
+        * are the same content.  Anything else is too complicated to
+        * properly support.
+        *
+        * @since Beta 2
+        * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
+        * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
+        * @return array|null List of SimplePie_Enclosure items
+        */
+       public function get_enclosures()
+       {
+               if (!isset($this->data['enclosures']))
+               {
+                       $this->data['enclosures'] = array();
+
+                       // Elements
+                       $captions_parent = null;
+                       $categories_parent = null;
+                       $copyrights_parent = null;
+                       $credits_parent = null;
+                       $description_parent = null;
+                       $duration_parent = null;
+                       $hashes_parent = null;
+                       $keywords_parent = null;
+                       $player_parent = null;
+                       $ratings_parent = null;
+                       $restrictions_parent = null;
+                       $thumbnails_parent = null;
+                       $title_parent = null;
+
+                       // Let's do the channel and item-level ones first, and just re-use them if we need to.
+                       $parent = $this->get_feed();
+
+                       // CAPTIONS
+                       if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+                       {
+                               foreach ($captions as $caption)
+                               {
+                                       $caption_type = null;
+                                       $caption_lang = null;
+                                       $caption_startTime = null;
+                                       $caption_endTime = null;
+                                       $caption_text = null;
+                                       if (isset($caption['attribs']['']['type']))
+                                       {
+                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['lang']))
+                                       {
+                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['start']))
+                                       {
+                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['end']))
+                                       {
+                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['data']))
+                                       {
+                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
+                               }
+                       }
+                       elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+                       {
+                               foreach ($captions as $caption)
+                               {
+                                       $caption_type = null;
+                                       $caption_lang = null;
+                                       $caption_startTime = null;
+                                       $caption_endTime = null;
+                                       $caption_text = null;
+                                       if (isset($caption['attribs']['']['type']))
+                                       {
+                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['lang']))
+                                       {
+                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['start']))
+                                       {
+                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['attribs']['']['end']))
+                                       {
+                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($caption['data']))
+                                       {
+                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
+                               }
+                       }
+                       if (is_array($captions_parent))
+                       {
+                               $captions_parent = array_values(array_unique($captions_parent));
+                       }
+
+                       // CATEGORIES
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+                       {
+                               $term = null;
+                               $scheme = null;
+                               $label = null;
+                               if (isset($category['data']))
+                               {
+                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               if (isset($category['attribs']['']['scheme']))
+                               {
+                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               else
+                               {
+                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                               }
+                               if (isset($category['attribs']['']['label']))
+                               {
+                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
+                       }
+                       foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+                       {
+                               $term = null;
+                               $scheme = null;
+                               $label = null;
+                               if (isset($category['data']))
+                               {
+                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               if (isset($category['attribs']['']['scheme']))
+                               {
+                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               else
+                               {
+                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                               }
+                               if (isset($category['attribs']['']['label']))
+                               {
+                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
+                       }
+                       foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
+                       {
+                               $term = null;
+                               $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
+                               $label = null;
+                               if (isset($category['attribs']['']['text']))
+                               {
+                                       $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
+
+                               if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
+                               {
+                                       foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
+                                       {
+                                               if (isset($subcategory['attribs']['']['text']))
+                                               {
+                                                       $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
+                                       }
+                               }
+                       }
+                       if (is_array($categories_parent))
+                       {
+                               $categories_parent = array_values(array_unique($categories_parent));
+                       }
+
+                       // COPYRIGHT
+                       if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+                       {
+                               $copyright_url = null;
+                               $copyright_label = null;
+                               if (isset($copyright[0]['attribs']['']['url']))
+                               {
+                                       $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               if (isset($copyright[0]['data']))
+                               {
+                                       $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
+                       }
+                       elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+                       {
+                               $copyright_url = null;
+                               $copyright_label = null;
+                               if (isset($copyright[0]['attribs']['']['url']))
+                               {
+                                       $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               if (isset($copyright[0]['data']))
+                               {
+                                       $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                               $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
+                       }
+
+                       // CREDITS
+                       if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+                       {
+                               foreach ($credits as $credit)
+                               {
+                                       $credit_role = null;
+                                       $credit_scheme = null;
+                                       $credit_name = null;
+                                       if (isset($credit['attribs']['']['role']))
+                                       {
+                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($credit['attribs']['']['scheme']))
+                                       {
+                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $credit_scheme = 'urn:ebu';
+                                       }
+                                       if (isset($credit['data']))
+                                       {
+                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
+                               }
+                       }
+                       elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+                       {
+                               foreach ($credits as $credit)
+                               {
+                                       $credit_role = null;
+                                       $credit_scheme = null;
+                                       $credit_name = null;
+                                       if (isset($credit['attribs']['']['role']))
+                                       {
+                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($credit['attribs']['']['scheme']))
+                                       {
+                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $credit_scheme = 'urn:ebu';
+                                       }
+                                       if (isset($credit['data']))
+                                       {
+                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
+                               }
+                       }
+                       if (is_array($credits_parent))
+                       {
+                               $credits_parent = array_values(array_unique($credits_parent));
+                       }
+
+                       // DESCRIPTION
+                       if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+                       {
+                               if (isset($description_parent[0]['data']))
+                               {
+                                       $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                       }
+                       elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+                       {
+                               if (isset($description_parent[0]['data']))
+                               {
+                                       $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                       }
+
+                       // DURATION
+                       if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
+                       {
+                               $seconds = null;
+                               $minutes = null;
+                               $hours = null;
+                               if (isset($duration_parent[0]['data']))
+                               {
+                                       $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                       if (sizeof($temp) > 0)
+                                       {
+                                               $seconds = (int) array_pop($temp);
+                                       }
+                                       if (sizeof($temp) > 0)
+                                       {
+                                               $minutes = (int) array_pop($temp);
+                                               $seconds += $minutes * 60;
+                                       }
+                                       if (sizeof($temp) > 0)
+                                       {
+                                               $hours = (int) array_pop($temp);
+                                               $seconds += $hours * 3600;
+                                       }
+                                       unset($temp);
+                                       $duration_parent = $seconds;
+                               }
+                       }
+
+                       // HASHES
+                       if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+                       {
+                               foreach ($hashes_iterator as $hash)
+                               {
+                                       $value = null;
+                                       $algo = null;
+                                       if (isset($hash['data']))
+                                       {
+                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($hash['attribs']['']['algo']))
+                                       {
+                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $algo = 'md5';
+                                       }
+                                       $hashes_parent[] = $algo.':'.$value;
+                               }
+                       }
+                       elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+                       {
+                               foreach ($hashes_iterator as $hash)
+                               {
+                                       $value = null;
+                                       $algo = null;
+                                       if (isset($hash['data']))
+                                       {
+                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($hash['attribs']['']['algo']))
+                                       {
+                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $algo = 'md5';
+                                       }
+                                       $hashes_parent[] = $algo.':'.$value;
+                               }
+                       }
+                       if (is_array($hashes_parent))
+                       {
+                               $hashes_parent = array_values(array_unique($hashes_parent));
+                       }
+
+                       // KEYWORDS
+                       if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+                       {
+                               if (isset($keywords[0]['data']))
+                               {
+                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                       foreach ($temp as $word)
+                                       {
+                                               $keywords_parent[] = trim($word);
+                                       }
+                               }
+                               unset($temp);
+                       }
+                       elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+                       {
+                               if (isset($keywords[0]['data']))
+                               {
+                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                       foreach ($temp as $word)
+                                       {
+                                               $keywords_parent[] = trim($word);
+                                       }
+                               }
+                               unset($temp);
+                       }
+                       elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+                       {
+                               if (isset($keywords[0]['data']))
+                               {
+                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                       foreach ($temp as $word)
+                                       {
+                                               $keywords_parent[] = trim($word);
+                                       }
+                               }
+                               unset($temp);
+                       }
+                       elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+                       {
+                               if (isset($keywords[0]['data']))
+                               {
+                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                       foreach ($temp as $word)
+                                       {
+                                               $keywords_parent[] = trim($word);
+                                       }
+                               }
+                               unset($temp);
+                       }
+                       if (is_array($keywords_parent))
+                       {
+                               $keywords_parent = array_values(array_unique($keywords_parent));
+                       }
+
+                       // PLAYER
+                       if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+                       {
+                               if (isset($player_parent[0]['attribs']['']['url']))
+                               {
+                                       $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                               }
+                       }
+                       elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+                       {
+                               if (isset($player_parent[0]['attribs']['']['url']))
+                               {
+                                       $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                               }
+                       }
+
+                       // RATINGS
+                       if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+                       {
+                               foreach ($ratings as $rating)
+                               {
+                                       $rating_scheme = null;
+                                       $rating_value = null;
+                                       if (isset($rating['attribs']['']['scheme']))
+                                       {
+                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $rating_scheme = 'urn:simple';
+                                       }
+                                       if (isset($rating['data']))
+                                       {
+                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                               }
+                       }
+                       elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+                       {
+                               foreach ($ratings as $rating)
+                               {
+                                       $rating_scheme = 'urn:itunes';
+                                       $rating_value = null;
+                                       if (isset($rating['data']))
+                                       {
+                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                               }
+                       }
+                       elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+                       {
+                               foreach ($ratings as $rating)
+                               {
+                                       $rating_scheme = null;
+                                       $rating_value = null;
+                                       if (isset($rating['attribs']['']['scheme']))
+                                       {
+                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $rating_scheme = 'urn:simple';
+                                       }
+                                       if (isset($rating['data']))
+                                       {
+                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                               }
+                       }
+                       elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+                       {
+                               foreach ($ratings as $rating)
+                               {
+                                       $rating_scheme = 'urn:itunes';
+                                       $rating_value = null;
+                                       if (isset($rating['data']))
+                                       {
+                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                               }
+                       }
+                       if (is_array($ratings_parent))
+                       {
+                               $ratings_parent = array_values(array_unique($ratings_parent));
+                       }
+
+                       // RESTRICTIONS
+                       if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+                       {
+                               foreach ($restrictions as $restriction)
+                               {
+                                       $restriction_relationship = null;
+                                       $restriction_type = null;
+                                       $restriction_value = null;
+                                       if (isset($restriction['attribs']['']['relationship']))
+                                       {
+                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($restriction['attribs']['']['type']))
+                                       {
+                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($restriction['data']))
+                                       {
+                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                               }
+                       }
+                       elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+                       {
+                               foreach ($restrictions as $restriction)
+                               {
+                                       $restriction_relationship = 'allow';
+                                       $restriction_type = null;
+                                       $restriction_value = 'itunes';
+                                       if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
+                                       {
+                                               $restriction_relationship = 'deny';
+                                       }
+                                       $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                               }
+                       }
+                       elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+                       {
+                               foreach ($restrictions as $restriction)
+                               {
+                                       $restriction_relationship = null;
+                                       $restriction_type = null;
+                                       $restriction_value = null;
+                                       if (isset($restriction['attribs']['']['relationship']))
+                                       {
+                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($restriction['attribs']['']['type']))
+                                       {
+                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($restriction['data']))
+                                       {
+                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                               }
+                       }
+                       elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+                       {
+                               foreach ($restrictions as $restriction)
+                               {
+                                       $restriction_relationship = 'allow';
+                                       $restriction_type = null;
+                                       $restriction_value = 'itunes';
+                                       if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
+                                       {
+                                               $restriction_relationship = 'deny';
+                                       }
+                                       $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                               }
+                       }
+                       if (is_array($restrictions_parent))
+                       {
+                               $restrictions_parent = array_values(array_unique($restrictions_parent));
+                       }
+                       else
+                       {
+                               $restrictions_parent = array(new SimplePie_Restriction('allow', null, 'default'));
+                       }
+
+                       // THUMBNAILS
+                       if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+                       {
+                               foreach ($thumbnails as $thumbnail)
+                               {
+                                       if (isset($thumbnail['attribs']['']['url']))
+                                       {
+                                               $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                       }
+                               }
+                       }
+                       elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+                       {
+                               foreach ($thumbnails as $thumbnail)
+                               {
+                                       if (isset($thumbnail['attribs']['']['url']))
+                                       {
+                                               $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                       }
+                               }
+                       }
+
+                       // TITLES
+                       if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+                       {
+                               if (isset($title_parent[0]['data']))
+                               {
+                                       $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                       }
+                       elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+                       {
+                               if (isset($title_parent[0]['data']))
+                               {
+                                       $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                               }
+                       }
+
+                       // Clear the memory
+                       unset($parent);
+
+                       // Attributes
+                       $bitrate = null;
+                       $channels = null;
+                       $duration = null;
+                       $expression = null;
+                       $framerate = null;
+                       $height = null;
+                       $javascript = null;
+                       $lang = null;
+                       $length = null;
+                       $medium = null;
+                       $samplingrate = null;
+                       $type = null;
+                       $url = null;
+                       $width = null;
+
+                       // Elements
+                       $captions = null;
+                       $categories = null;
+                       $copyrights = null;
+                       $credits = null;
+                       $description = null;
+                       $hashes = null;
+                       $keywords = null;
+                       $player = null;
+                       $ratings = null;
+                       $restrictions = null;
+                       $thumbnails = null;
+                       $title = null;
+
+                       // If we have media:group tags, loop through them.
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
+                       {
+                               if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+                               {
+                                       // If we have media:content tags, loop through them.
+                                       foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+                                       {
+                                               if (isset($content['attribs']['']['url']))
+                                               {
+                                                       // Attributes
+                                                       $bitrate = null;
+                                                       $channels = null;
+                                                       $duration = null;
+                                                       $expression = null;
+                                                       $framerate = null;
+                                                       $height = null;
+                                                       $javascript = null;
+                                                       $lang = null;
+                                                       $length = null;
+                                                       $medium = null;
+                                                       $samplingrate = null;
+                                                       $type = null;
+                                                       $url = null;
+                                                       $width = null;
+
+                                                       // Elements
+                                                       $captions = null;
+                                                       $categories = null;
+                                                       $copyrights = null;
+                                                       $credits = null;
+                                                       $description = null;
+                                                       $hashes = null;
+                                                       $keywords = null;
+                                                       $player = null;
+                                                       $ratings = null;
+                                                       $restrictions = null;
+                                                       $thumbnails = null;
+                                                       $title = null;
+
+                                                       // Start checking the attributes of media:content
+                                                       if (isset($content['attribs']['']['bitrate']))
+                                                       {
+                                                               $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['channels']))
+                                                       {
+                                                               $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['duration']))
+                                                       {
+                                                               $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       else
+                                                       {
+                                                               $duration = $duration_parent;
+                                                       }
+                                                       if (isset($content['attribs']['']['expression']))
+                                                       {
+                                                               $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['framerate']))
+                                                       {
+                                                               $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['height']))
+                                                       {
+                                                               $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['lang']))
+                                                       {
+                                                               $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['fileSize']))
+                                                       {
+                                                               $length = ceil($content['attribs']['']['fileSize']);
+                                                       }
+                                                       if (isset($content['attribs']['']['medium']))
+                                                       {
+                                                               $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['samplingrate']))
+                                                       {
+                                                               $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['type']))
+                                                       {
+                                                               $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['width']))
+                                                       {
+                                                               $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+                                                       // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+                                                       // CAPTIONS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+                                                               {
+                                                                       $caption_type = null;
+                                                                       $caption_lang = null;
+                                                                       $caption_startTime = null;
+                                                                       $caption_endTime = null;
+                                                                       $caption_text = null;
+                                                                       if (isset($caption['attribs']['']['type']))
+                                                                       {
+                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['lang']))
+                                                                       {
+                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['start']))
+                                                                       {
+                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['end']))
+                                                                       {
+                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['data']))
+                                                                       {
+                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
+                                                               }
+                                                               if (is_array($captions))
+                                                               {
+                                                                       $captions = array_values(array_unique($captions));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+                                                               {
+                                                                       $caption_type = null;
+                                                                       $caption_lang = null;
+                                                                       $caption_startTime = null;
+                                                                       $caption_endTime = null;
+                                                                       $caption_text = null;
+                                                                       if (isset($caption['attribs']['']['type']))
+                                                                       {
+                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['lang']))
+                                                                       {
+                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['start']))
+                                                                       {
+                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['end']))
+                                                                       {
+                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['data']))
+                                                                       {
+                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
+                                                               }
+                                                               if (is_array($captions))
+                                                               {
+                                                                       $captions = array_values(array_unique($captions));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $captions = $captions_parent;
+                                                       }
+
+                                                       // CATEGORIES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+                                                       {
+                                                               foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+                                                               {
+                                                                       $term = null;
+                                                                       $scheme = null;
+                                                                       $label = null;
+                                                                       if (isset($category['data']))
+                                                                       {
+                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($category['attribs']['']['scheme']))
+                                                                       {
+                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                                                                       }
+                                                                       if (isset($category['attribs']['']['label']))
+                                                                       {
+                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
+                                                               }
+                                                       }
+                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+                                                       {
+                                                               foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+                                                               {
+                                                                       $term = null;
+                                                                       $scheme = null;
+                                                                       $label = null;
+                                                                       if (isset($category['data']))
+                                                                       {
+                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($category['attribs']['']['scheme']))
+                                                                       {
+                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                                                                       }
+                                                                       if (isset($category['attribs']['']['label']))
+                                                                       {
+                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
+                                                               }
+                                                       }
+                                                       if (is_array($categories) && is_array($categories_parent))
+                                                       {
+                                                               $categories = array_values(array_unique(array_merge($categories, $categories_parent)));
+                                                       }
+                                                       elseif (is_array($categories))
+                                                       {
+                                                               $categories = array_values(array_unique($categories));
+                                                       }
+                                                       elseif (is_array($categories_parent))
+                                                       {
+                                                               $categories = array_values(array_unique($categories_parent));
+                                                       }
+
+                                                       // COPYRIGHTS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+                                                       {
+                                                               $copyright_url = null;
+                                                               $copyright_label = null;
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+                                                               {
+                                                                       $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                               {
+                                                                       $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+                                                       {
+                                                               $copyright_url = null;
+                                                               $copyright_label = null;
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+                                                               {
+                                                                       $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                               {
+                                                                       $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
+                                                       }
+                                                       else
+                                                       {
+                                                               $copyrights = $copyrights_parent;
+                                                       }
+
+                                                       // CREDITS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+                                                               {
+                                                                       $credit_role = null;
+                                                                       $credit_scheme = null;
+                                                                       $credit_name = null;
+                                                                       if (isset($credit['attribs']['']['role']))
+                                                                       {
+                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($credit['attribs']['']['scheme']))
+                                                                       {
+                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $credit_scheme = 'urn:ebu';
+                                                                       }
+                                                                       if (isset($credit['data']))
+                                                                       {
+                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
+                                                               }
+                                                               if (is_array($credits))
+                                                               {
+                                                                       $credits = array_values(array_unique($credits));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+                                                               {
+                                                                       $credit_role = null;
+                                                                       $credit_scheme = null;
+                                                                       $credit_name = null;
+                                                                       if (isset($credit['attribs']['']['role']))
+                                                                       {
+                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($credit['attribs']['']['scheme']))
+                                                                       {
+                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $credit_scheme = 'urn:ebu';
+                                                                       }
+                                                                       if (isset($credit['data']))
+                                                                       {
+                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
+                                                               }
+                                                               if (is_array($credits))
+                                                               {
+                                                                       $credits = array_values(array_unique($credits));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $credits = $credits_parent;
+                                                       }
+
+                                                       // DESCRIPTION
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+                                                       {
+                                                               $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+                                                       {
+                                                               $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       else
+                                                       {
+                                                               $description = $description_parent;
+                                                       }
+
+                                                       // HASHES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+                                                               {
+                                                                       $value = null;
+                                                                       $algo = null;
+                                                                       if (isset($hash['data']))
+                                                                       {
+                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($hash['attribs']['']['algo']))
+                                                                       {
+                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $algo = 'md5';
+                                                                       }
+                                                                       $hashes[] = $algo.':'.$value;
+                                                               }
+                                                               if (is_array($hashes))
+                                                               {
+                                                                       $hashes = array_values(array_unique($hashes));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+                                                               {
+                                                                       $value = null;
+                                                                       $algo = null;
+                                                                       if (isset($hash['data']))
+                                                                       {
+                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($hash['attribs']['']['algo']))
+                                                                       {
+                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $algo = 'md5';
+                                                                       }
+                                                                       $hashes[] = $algo.':'.$value;
+                                                               }
+                                                               if (is_array($hashes))
+                                                               {
+                                                                       $hashes = array_values(array_unique($hashes));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $hashes = $hashes_parent;
+                                                       }
+
+                                                       // KEYWORDS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+                                                       {
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+                                                               {
+                                                                       $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                                                       foreach ($temp as $word)
+                                                                       {
+                                                                               $keywords[] = trim($word);
+                                                                       }
+                                                                       unset($temp);
+                                                               }
+                                                               if (is_array($keywords))
+                                                               {
+                                                                       $keywords = array_values(array_unique($keywords));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+                                                       {
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+                                                               {
+                                                                       $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                                                       foreach ($temp as $word)
+                                                                       {
+                                                                               $keywords[] = trim($word);
+                                                                       }
+                                                                       unset($temp);
+                                                               }
+                                                               if (is_array($keywords))
+                                                               {
+                                                                       $keywords = array_values(array_unique($keywords));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $keywords = $keywords_parent;
+                                                       }
+
+                                                       // PLAYER
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+                                                       {
+                                                               $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+                                                       {
+                                                               $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
+                                                       else
+                                                       {
+                                                               $player = $player_parent;
+                                                       }
+
+                                                       // RATINGS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+                                                               {
+                                                                       $rating_scheme = null;
+                                                                       $rating_value = null;
+                                                                       if (isset($rating['attribs']['']['scheme']))
+                                                                       {
+                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $rating_scheme = 'urn:simple';
+                                                                       }
+                                                                       if (isset($rating['data']))
+                                                                       {
+                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                                                               }
+                                                               if (is_array($ratings))
+                                                               {
+                                                                       $ratings = array_values(array_unique($ratings));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+                                                               {
+                                                                       $rating_scheme = null;
+                                                                       $rating_value = null;
+                                                                       if (isset($rating['attribs']['']['scheme']))
+                                                                       {
+                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $rating_scheme = 'urn:simple';
+                                                                       }
+                                                                       if (isset($rating['data']))
+                                                                       {
+                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                                                               }
+                                                               if (is_array($ratings))
+                                                               {
+                                                                       $ratings = array_values(array_unique($ratings));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $ratings = $ratings_parent;
+                                                       }
+
+                                                       // RESTRICTIONS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+                                                               {
+                                                                       $restriction_relationship = null;
+                                                                       $restriction_type = null;
+                                                                       $restriction_value = null;
+                                                                       if (isset($restriction['attribs']['']['relationship']))
+                                                                       {
+                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['attribs']['']['type']))
+                                                                       {
+                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['data']))
+                                                                       {
+                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                                                               }
+                                                               if (is_array($restrictions))
+                                                               {
+                                                                       $restrictions = array_values(array_unique($restrictions));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+                                                               {
+                                                                       $restriction_relationship = null;
+                                                                       $restriction_type = null;
+                                                                       $restriction_value = null;
+                                                                       if (isset($restriction['attribs']['']['relationship']))
+                                                                       {
+                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['attribs']['']['type']))
+                                                                       {
+                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['data']))
+                                                                       {
+                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                                                               }
+                                                               if (is_array($restrictions))
+                                                               {
+                                                                       $restrictions = array_values(array_unique($restrictions));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $restrictions = $restrictions_parent;
+                                                       }
+
+                                                       // THUMBNAILS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+                                                               {
+                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                               }
+                                                               if (is_array($thumbnails))
+                                                               {
+                                                                       $thumbnails = array_values(array_unique($thumbnails));
+                                                               }
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+                                                               {
+                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                               }
+                                                               if (is_array($thumbnails))
+                                                               {
+                                                                       $thumbnails = array_values(array_unique($thumbnails));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $thumbnails = $thumbnails_parent;
+                                                       }
+
+                                                       // TITLES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+                                                       {
+                                                               $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+                                                       {
+                                                               $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       else
+                                                       {
+                                                               $title = $title_parent;
+                                                       }
+
+                                                       $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));
+                                               }
+                                       }
+                               }
+                       }
+
+                       // If we have standalone media:content tags, loop through them.
+                       if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+                       {
+                               foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+                               {
+                                       if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+                                       {
+                                               // Attributes
+                                               $bitrate = null;
+                                               $channels = null;
+                                               $duration = null;
+                                               $expression = null;
+                                               $framerate = null;
+                                               $height = null;
+                                               $javascript = null;
+                                               $lang = null;
+                                               $length = null;
+                                               $medium = null;
+                                               $samplingrate = null;
+                                               $type = null;
+                                               $url = null;
+                                               $width = null;
+
+                                               // Elements
+                                               $captions = null;
+                                               $categories = null;
+                                               $copyrights = null;
+                                               $credits = null;
+                                               $description = null;
+                                               $hashes = null;
+                                               $keywords = null;
+                                               $player = null;
+                                               $ratings = null;
+                                               $restrictions = null;
+                                               $thumbnails = null;
+                                               $title = null;
+
+                                               // Start checking the attributes of media:content
+                                               if (isset($content['attribs']['']['bitrate']))
+                                               {
+                                                       $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['channels']))
+                                               {
+                                                       $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['duration']))
+                                               {
+                                                       $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               else
+                                               {
+                                                       $duration = $duration_parent;
+                                               }
+                                               if (isset($content['attribs']['']['expression']))
+                                               {
+                                                       $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['framerate']))
+                                               {
+                                                       $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['height']))
+                                               {
+                                                       $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['lang']))
+                                               {
+                                                       $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['fileSize']))
+                                               {
+                                                       $length = ceil($content['attribs']['']['fileSize']);
+                                               }
+                                               if (isset($content['attribs']['']['medium']))
+                                               {
+                                                       $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['samplingrate']))
+                                               {
+                                                       $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['type']))
+                                               {
+                                                       $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['width']))
+                                               {
+                                                       $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               if (isset($content['attribs']['']['url']))
+                                               {
+                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                               }
+                                               // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+                                               // CAPTIONS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+                                                       {
+                                                               $caption_type = null;
+                                                               $caption_lang = null;
+                                                               $caption_startTime = null;
+                                                               $caption_endTime = null;
+                                                               $caption_text = null;
+                                                               if (isset($caption['attribs']['']['type']))
+                                                               {
+                                                                       $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($caption['attribs']['']['lang']))
+                                                               {
+                                                                       $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($caption['attribs']['']['start']))
+                                                               {
+                                                                       $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($caption['attribs']['']['end']))
+                                                               {
+                                                                       $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($caption['data']))
+                                                               {
+                                                                       $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
+                                                       }
+                                                       if (is_array($captions))
+                                                       {
+                                                               $captions = array_values(array_unique($captions));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $captions = $captions_parent;
+                                               }
+
+                                               // CATEGORIES
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+                                               {
+                                                       foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+                                                       {
+                                                               $term = null;
+                                                               $scheme = null;
+                                                               $label = null;
+                                                               if (isset($category['data']))
+                                                               {
+                                                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($category['attribs']['']['scheme']))
+                                                               {
+                                                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               else
+                                                               {
+                                                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                                                               }
+                                                               if (isset($category['attribs']['']['label']))
+                                                               {
+                                                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
+                                                       }
+                                               }
+                                               if (is_array($categories) && is_array($categories_parent))
+                                               {
+                                                       $categories = array_values(array_unique(array_merge($categories, $categories_parent)));
+                                               }
+                                               elseif (is_array($categories))
+                                               {
+                                                       $categories = array_values(array_unique($categories));
+                                               }
+                                               elseif (is_array($categories_parent))
+                                               {
+                                                       $categories = array_values(array_unique($categories_parent));
+                                               }
+                                               else
+                                               {
+                                                       $categories = null;
+                                               }
+
+                                               // COPYRIGHTS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+                                               {
+                                                       $copyright_url = null;
+                                                       $copyright_label = null;
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+                                                       {
+                                                               $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                       {
+                                                               $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
+                                               }
+                                               else
+                                               {
+                                                       $copyrights = $copyrights_parent;
+                                               }
+
+                                               // CREDITS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+                                                       {
+                                                               $credit_role = null;
+                                                               $credit_scheme = null;
+                                                               $credit_name = null;
+                                                               if (isset($credit['attribs']['']['role']))
+                                                               {
+                                                                       $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($credit['attribs']['']['scheme']))
+                                                               {
+                                                                       $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               else
+                                                               {
+                                                                       $credit_scheme = 'urn:ebu';
+                                                               }
+                                                               if (isset($credit['data']))
+                                                               {
+                                                                       $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
+                                                       }
+                                                       if (is_array($credits))
+                                                       {
+                                                               $credits = array_values(array_unique($credits));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $credits = $credits_parent;
+                                               }
+
+                                               // DESCRIPTION
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+                                               {
+                                                       $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               else
+                                               {
+                                                       $description = $description_parent;
+                                               }
+
+                                               // HASHES
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+                                                       {
+                                                               $value = null;
+                                                               $algo = null;
+                                                               if (isset($hash['data']))
+                                                               {
+                                                                       $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($hash['attribs']['']['algo']))
+                                                               {
+                                                                       $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               else
+                                                               {
+                                                                       $algo = 'md5';
+                                                               }
+                                                               $hashes[] = $algo.':'.$value;
+                                                       }
+                                                       if (is_array($hashes))
+                                                       {
+                                                               $hashes = array_values(array_unique($hashes));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $hashes = $hashes_parent;
+                                               }
+
+                                               // KEYWORDS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+                                               {
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+                                                       {
+                                                               $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                                               foreach ($temp as $word)
+                                                               {
+                                                                       $keywords[] = trim($word);
+                                                               }
+                                                               unset($temp);
+                                                       }
+                                                       if (is_array($keywords))
+                                                       {
+                                                               $keywords = array_values(array_unique($keywords));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $keywords = $keywords_parent;
+                                               }
+
+                                               // PLAYER
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+                                               {
+                                                       $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                               }
+                                               else
+                                               {
+                                                       $player = $player_parent;
+                                               }
+
+                                               // RATINGS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+                                                       {
+                                                               $rating_scheme = null;
+                                                               $rating_value = null;
+                                                               if (isset($rating['attribs']['']['scheme']))
+                                                               {
+                                                                       $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               else
+                                                               {
+                                                                       $rating_scheme = 'urn:simple';
+                                                               }
+                                                               if (isset($rating['data']))
+                                                               {
+                                                                       $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
+                                                       }
+                                                       if (is_array($ratings))
+                                                       {
+                                                               $ratings = array_values(array_unique($ratings));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $ratings = $ratings_parent;
+                                               }
+
+                                               // RESTRICTIONS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+                                                       {
+                                                               $restriction_relationship = null;
+                                                               $restriction_type = null;
+                                                               $restriction_value = null;
+                                                               if (isset($restriction['attribs']['']['relationship']))
+                                                               {
+                                                                       $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($restriction['attribs']['']['type']))
+                                                               {
+                                                                       $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               if (isset($restriction['data']))
+                                                               {
+                                                                       $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
+                                                       }
+                                                       if (is_array($restrictions))
+                                                       {
+                                                               $restrictions = array_values(array_unique($restrictions));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $restrictions = $restrictions_parent;
+                                               }
+
+                                               // THUMBNAILS
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+                                               {
+                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+                                                       {
+                                                               $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
+                                                       if (is_array($thumbnails))
+                                                       {
+                                                               $thumbnails = array_values(array_unique($thumbnails));
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $thumbnails = $thumbnails_parent;
+                                               }
+
+                                               // TITLES
+                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+                                               {
+                                                       $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                               }
+                                               else
+                                               {
+                                                       $title = $title_parent;
+                                               }
+
+                                               $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));
+                                       }
+                               }
+                       }
+
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+                       {
+                               if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
+                               {
+                                       // Attributes
+                                       $bitrate = null;
+                                       $channels = null;
+                                       $duration = null;
+                                       $expression = null;
+                                       $framerate = null;
+                                       $height = null;
+                                       $javascript = null;
+                                       $lang = null;
+                                       $length = null;
+                                       $medium = null;
+                                       $samplingrate = null;
+                                       $type = null;
+                                       $url = null;
+                                       $width = null;
+
+                                       $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+                                       if (isset($link['attribs']['']['type']))
+                                       {
+                                               $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($link['attribs']['']['length']))
+                                       {
+                                               $length = ceil($link['attribs']['']['length']);
+                                       }
+
+                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+                                       $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
+                               }
+                       }
+
+                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+                       {
+                               if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
+                               {
+                                       // Attributes
+                                       $bitrate = null;
+                                       $channels = null;
+                                       $duration = null;
+                                       $expression = null;
+                                       $framerate = null;
+                                       $height = null;
+                                       $javascript = null;
+                                       $lang = null;
+                                       $length = null;
+                                       $medium = null;
+                                       $samplingrate = null;
+                                       $type = null;
+                                       $url = null;
+                                       $width = null;
+
+                                       $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+                                       if (isset($link['attribs']['']['type']))
+                                       {
+                                               $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($link['attribs']['']['length']))
+                                       {
+                                               $length = ceil($link['attribs']['']['length']);
+                                       }
+
+                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+                                       $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
+                               }
+                       }
+
+                       if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure'))
+                       {
+                               if (isset($enclosure[0]['attribs']['']['url']))
+                               {
+                                       // Attributes
+                                       $bitrate = null;
+                                       $channels = null;
+                                       $duration = null;
+                                       $expression = null;
+                                       $framerate = null;
+                                       $height = null;
+                                       $javascript = null;
+                                       $lang = null;
+                                       $length = null;
+                                       $medium = null;
+                                       $samplingrate = null;
+                                       $type = null;
+                                       $url = null;
+                                       $width = null;
+
+                                       $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
+                                       if (isset($enclosure[0]['attribs']['']['type']))
+                                       {
+                                               $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       if (isset($enclosure[0]['attribs']['']['length']))
+                                       {
+                                               $length = ceil($enclosure[0]['attribs']['']['length']);
+                                       }
+
+                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+                                       $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
+                               }
+                       }
+
+                       if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))
+                       {
+                               // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+                               $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
+                       }
+
+                       $this->data['enclosures'] = array_values(array_unique($this->data['enclosures']));
+               }
+               if (!empty($this->data['enclosures']))
+               {
+                       return $this->data['enclosures'];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the latitude coordinates for the item
+        *
+        * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
+        *
+        * Uses `<geo:lat>` or `<georss:point>`
+        *
+        * @since 1.0
+        * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
+        * @link http://www.georss.org/ GeoRSS
+        * @return string|null
+        */
+       public function get_latitude()
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
+               {
+                       return (float) $match[1];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the longitude coordinates for the item
+        *
+        * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
+        *
+        * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>`
+        *
+        * @since 1.0
+        * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
+        * @link http://www.georss.org/ GeoRSS
+        * @return string|null
+        */
+       public function get_longitude()
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
+               {
+                       return (float) $match[2];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the `<atom:source>` for the item
+        *
+        * @since 1.1
+        * @return SimplePie_Source|null
+        */
+       public function get_source()
+       {
+               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
+               {
+                       return $this->registry->create('Source', array($this, $return[0]));
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Locator.php b/wp-includes/SimplePie/Locator.php
new file mode 100644 (file)
index 0000000..da89514
--- /dev/null
@@ -0,0 +1,372 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Used for feed auto-discovery
+ *
+ *
+ * This class can be overloaded with {@see SimplePie::set_locator_class()}
+ *
+ * @package SimplePie
+ */
+class SimplePie_Locator
+{
+       var $useragent;
+       var $timeout;
+       var $file;
+       var $local = array();
+       var $elsewhere = array();
+       var $cached_entities = array();
+       var $http_base;
+       var $base;
+       var $base_location = 0;
+       var $checked_feeds = 0;
+       var $max_checked_feeds = 10;
+       protected $registry;
+
+       public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10)
+       {
+               $this->file = $file;
+               $this->useragent = $useragent;
+               $this->timeout = $timeout;
+               $this->max_checked_feeds = $max_checked_feeds;
+
+               if (class_exists('DOMDocument'))
+               {
+                       $this->dom = new DOMDocument();
+
+                       set_error_handler(array('SimplePie_Misc', 'silence_errors'));
+                       $this->dom->loadHTML($this->file->body);
+                       restore_error_handler();
+               }
+               else
+               {
+                       $this->dom = null;
+               }
+       }
+
+       public function set_registry(SimplePie_Registry $registry)
+       {
+               $this->registry = $registry;
+       }
+
+       public function find($type = SIMPLEPIE_LOCATOR_ALL, &$working)
+       {
+               if ($this->is_feed($this->file))
+               {
+                       return $this->file;
+               }
+
+               if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+               {
+                       $sniffer = $this->registry->create('Content_Type_Sniffer', array($this->file));
+                       if ($sniffer->get_type() !== 'text/html')
+                       {
+                               return null;
+                       }
+               }
+
+               if ($type & ~SIMPLEPIE_LOCATOR_NONE)
+               {
+                       $this->get_base();
+               }
+
+               if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
+               {
+                       return $working[0];
+               }
+
+               if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
+               {
+                       if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
+                       {
+                               return $working;
+                       }
+
+                       if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
+                       {
+                               return $working;
+                       }
+
+                       if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
+                       {
+                               return $working;
+                       }
+
+                       if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
+                       {
+                               return $working;
+                       }
+               }
+               return null;
+       }
+
+       public function is_feed($file)
+       {
+               if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+               {
+                       $sniffer = $this->registry->create('Content_Type_Sniffer', array($file));
+                       $sniffed = $sniffer->get_type();
+                       if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml')))
+                       {
+                               return true;
+                       }
+                       else
+                       {
+                               return false;
+                       }
+               }
+               elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
+               {
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       public function get_base()
+       {
+               if ($this->dom === null)
+               {
+                       throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
+               }
+               $this->http_base = $this->file->url;
+               $this->base = $this->http_base;
+               $elements = $this->dom->getElementsByTagName('base');
+               foreach ($elements as $element)
+               {
+                       if ($element->hasAttribute('href'))
+                       {
+                               $base = $this->registry->call('Misc', 'absolutize_url', array(trim($element->getAttribute('href')), $this->http_base));
+                               if ($base === false)
+                               {
+                                       continue;
+                               }
+                               $this->base = $base;
+                               $this->base_location = method_exists($element, 'getLineNo') ? $element->getLineNo() : 0;
+                               break;
+                       }
+               }
+       }
+
+       public function autodiscovery()
+       {
+               $done = array();
+               $feeds = array();
+               $feeds = array_merge($feeds, $this->search_elements_by_tag('link', $done, $feeds));
+               $feeds = array_merge($feeds, $this->search_elements_by_tag('a', $done, $feeds));
+               $feeds = array_merge($feeds, $this->search_elements_by_tag('area', $done, $feeds));
+
+               if (!empty($feeds))
+               {
+                       return array_values($feeds);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       protected function search_elements_by_tag($name, &$done, $feeds)
+       {
+               if ($this->dom === null)
+               {
+                       throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
+               }
+
+               $links = $this->dom->getElementsByTagName($name);
+               foreach ($links as $link)
+               {
+                       if ($this->checked_feeds === $this->max_checked_feeds)
+                       {
+                               break;
+                       }
+                       if ($link->hasAttribute('href') && $link->hasAttribute('rel'))
+                       {
+                               $rel = array_unique($this->registry->call('Misc', 'space_seperated_tokens', array(strtolower($link->getAttribute('rel')))));
+                               $line = method_exists($link, 'getLineNo') ? $link->getLineNo() : 1;
+
+                               if ($this->base_location < $line)
+                               {
+                                       $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base));
+                               }
+                               else
+                               {
+                                       $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base));
+                               }
+                               if ($href === false)
+                               {
+                                       continue;
+                               }
+
+                               if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !in_array('stylesheet', $rel) && $link->hasAttribute('type') && in_array(strtolower($this->registry->call('Misc', 'parse_mime', array($link->getAttribute('type')))), array('application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href]))
+                               {
+                                       $this->checked_feeds++;
+                                       $headers = array(
+                                               'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
+                                       );
+                                       $feed = $this->registry->create('File', array($href, $this->timeout, 5, $headers, $this->useragent));
+                                       if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
+                                       {
+                                               $feeds[$href] = $feed;
+                                       }
+                               }
+                               $done[] = $href;
+                       }
+               }
+
+               return $feeds;
+       }
+
+       public function get_links()
+       {
+               if ($this->dom === null)
+               {
+                       throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
+               }
+
+               $links = $this->dom->getElementsByTagName('a');
+               foreach ($links as $link)
+               {
+                       if ($link->hasAttribute('href'))
+                       {
+                               $href = trim($link->getAttribute('href'));
+                               $parsed = $this->registry->call('Misc', 'parse_url', array($href));
+                               if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
+                               {
+                                       if (method_exists($link, 'getLineNo') && $this->base_location < $link->getLineNo())
+                                       {
+                                               $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base));
+                                       }
+                                       else
+                                       {
+                                               $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base));
+                                       }
+                                       if ($href === false)
+                                       {
+                                               continue;
+                                       }
+
+                                       $current = $this->registry->call('Misc', 'parse_url', array($this->file->url));
+
+                                       if ($parsed['authority'] === '' || $parsed['authority'] === $current['authority'])
+                                       {
+                                               $this->local[] = $href;
+                                       }
+                                       else
+                                       {
+                                               $this->elsewhere[] = $href;
+                                       }
+                               }
+                       }
+               }
+               $this->local = array_unique($this->local);
+               $this->elsewhere = array_unique($this->elsewhere);
+               if (!empty($this->local) || !empty($this->elsewhere))
+               {
+                       return true;
+               }
+               return null;
+       }
+
+       public function extension(&$array)
+       {
+               foreach ($array as $key => $value)
+               {
+                       if ($this->checked_feeds === $this->max_checked_feeds)
+                       {
+                               break;
+                       }
+                       if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
+                       {
+                               $this->checked_feeds++;
+
+                               $headers = array(
+                                       'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
+                               );
+                               $feed = $this->registry->create('File', array($value, $this->timeout, 5, $headers, $this->useragent));
+                               if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
+                               {
+                                       return $feed;
+                               }
+                               else
+                               {
+                                       unset($array[$key]);
+                               }
+                       }
+               }
+               return null;
+       }
+
+       public function body(&$array)
+       {
+               foreach ($array as $key => $value)
+               {
+                       if ($this->checked_feeds === $this->max_checked_feeds)
+                       {
+                               break;
+                       }
+                       if (preg_match('/(rss|rdf|atom|xml)/i', $value))
+                       {
+                               $this->checked_feeds++;
+                               $headers = array(
+                                       'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
+                               );
+                               $feed = $this->registry->create('File', array($value, $this->timeout, 5, null, $this->useragent));
+                               if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
+                               {
+                                       return $feed;
+                               }
+                               else
+                               {
+                                       unset($array[$key]);
+                               }
+                       }
+               }
+               return null;
+       }
+}
+
diff --git a/wp-includes/SimplePie/Misc.php b/wp-includes/SimplePie/Misc.php
new file mode 100644 (file)
index 0000000..5d7367f
--- /dev/null
@@ -0,0 +1,2247 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Miscellanous utilities
+ *
+ * @package SimplePie
+ */
+class SimplePie_Misc
+{
+       public static function time_hms($seconds)
+       {
+               $time = '';
+
+               $hours = floor($seconds / 3600);
+               $remainder = $seconds % 3600;
+               if ($hours > 0)
+               {
+                       $time .= $hours.':';
+               }
+
+               $minutes = floor($remainder / 60);
+               $seconds = $remainder % 60;
+               if ($minutes < 10 && $hours > 0)
+               {
+                       $minutes = '0' . $minutes;
+               }
+               if ($seconds < 10)
+               {
+                       $seconds = '0' . $seconds;
+               }
+
+               $time .= $minutes.':';
+               $time .= $seconds;
+
+               return $time;
+       }
+
+       public static function absolutize_url($relative, $base)
+       {
+               $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative);
+               if ($iri === false)
+               {
+                       return false;
+               }
+               return $iri->get_uri();
+       }
+
+       /**
+        * Get a HTML/XML element from a HTML string
+        *
+        * @deprecated Use DOMDocument instead (parsing HTML with regex is bad!)
+        * @param string $realname Element name (including namespace prefix if applicable)
+        * @param string $string HTML document
+        * @return array
+        */
+       public static function get_element($realname, $string)
+       {
+               $return = array();
+               $name = preg_quote($realname, '/');
+               if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
+               {
+                       for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
+                       {
+                               $return[$i]['tag'] = $realname;
+                               $return[$i]['full'] = $matches[$i][0][0];
+                               $return[$i]['offset'] = $matches[$i][0][1];
+                               if (strlen($matches[$i][3][0]) <= 2)
+                               {
+                                       $return[$i]['self_closing'] = true;
+                               }
+                               else
+                               {
+                                       $return[$i]['self_closing'] = false;
+                                       $return[$i]['content'] = $matches[$i][4][0];
+                               }
+                               $return[$i]['attribs'] = array();
+                               if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
+                               {
+                                       for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
+                                       {
+                                               if (count($attribs[$j]) === 2)
+                                               {
+                                                       $attribs[$j][2] = $attribs[$j][1];
+                                               }
+                                               $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
+                                       }
+                               }
+                       }
+               }
+               return $return;
+       }
+
+       public static function element_implode($element)
+       {
+               $full = "<$element[tag]";
+               foreach ($element['attribs'] as $key => $value)
+               {
+                       $key = strtolower($key);
+                       $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
+               }
+               if ($element['self_closing'])
+               {
+                       $full .= ' />';
+               }
+               else
+               {
+                       $full .= ">$element[content]</$element[tag]>";
+               }
+               return $full;
+       }
+
+       public static function error($message, $level, $file, $line)
+       {
+               if ((ini_get('error_reporting') & $level) > 0)
+               {
+                       switch ($level)
+                       {
+                               case E_USER_ERROR:
+                                       $note = 'PHP Error';
+                                       break;
+                               case E_USER_WARNING:
+                                       $note = 'PHP Warning';
+                                       break;
+                               case E_USER_NOTICE:
+                                       $note = 'PHP Notice';
+                                       break;
+                               default:
+                                       $note = 'Unknown Error';
+                                       break;
+                       }
+
+                       $log_error = true;
+                       if (!function_exists('error_log'))
+                       {
+                               $log_error = false;
+                       }
+
+                       $log_file = @ini_get('error_log');
+                       if (!empty($log_file) && ('syslog' !== $log_file) && !@is_writable($log_file))
+                       {
+                               $log_error = false;
+                       }
+
+                       if ($log_error)
+                       {
+                               @error_log("$note: $message in $file on line $line", 0);
+                       }
+               }
+
+               return $message;
+       }
+
+       public static function fix_protocol($url, $http = 1)
+       {
+               $url = SimplePie_Misc::normalize_url($url);
+               $parsed = SimplePie_Misc::parse_url($url);
+               if ($parsed['scheme'] !== '' && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https')
+               {
+                       return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
+               }
+
+               if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
+               {
+                       return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
+               }
+
+               if ($http === 2 && $parsed['scheme'] !== '')
+               {
+                       return "feed:$url";
+               }
+               elseif ($http === 3 && strtolower($parsed['scheme']) === 'http')
+               {
+                       return substr_replace($url, 'podcast', 0, 4);
+               }
+               elseif ($http === 4 && strtolower($parsed['scheme']) === 'http')
+               {
+                       return substr_replace($url, 'itpc', 0, 4);
+               }
+               else
+               {
+                       return $url;
+               }
+       }
+
+       public static function parse_url($url)
+       {
+               $iri = new SimplePie_IRI($url);
+               return array(
+                       'scheme' => (string) $iri->scheme,
+                       'authority' => (string) $iri->authority,
+                       'path' => (string) $iri->path,
+                       'query' => (string) $iri->query,
+                       'fragment' => (string) $iri->fragment
+               );
+       }
+
+       public static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
+       {
+               $iri = new SimplePie_IRI('');
+               $iri->scheme = $scheme;
+               $iri->authority = $authority;
+               $iri->path = $path;
+               $iri->query = $query;
+               $iri->fragment = $fragment;
+               return $iri->get_uri();
+       }
+
+       public static function normalize_url($url)
+       {
+               $iri = new SimplePie_IRI($url);
+               return $iri->get_uri();
+       }
+
+       public static function percent_encoding_normalization($match)
+       {
+               $integer = hexdec($match[1]);
+               if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer === 0x2D || $integer === 0x2E || $integer === 0x5F || $integer === 0x7E)
+               {
+                       return chr($integer);
+               }
+               else
+               {
+                       return strtoupper($match[0]);
+               }
+       }
+
+       /**
+        * Converts a Windows-1252 encoded string to a UTF-8 encoded string
+        *
+        * @static
+        * @param string $string Windows-1252 encoded string
+        * @return string UTF-8 encoded string
+        */
+       public static function windows_1252_to_utf8($string)
+       {
+               static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF");
+
+               return strtr($string, $convert_table);
+       }
+
+       /**
+        * Change a string from one encoding to another
+        *
+        * @param string $data Raw data in $input encoding
+        * @param string $input Encoding of $data
+        * @param string $output Encoding you want
+        * @return string|boolean False if we can't convert it
+        */
+       public static function change_encoding($data, $input, $output)
+       {
+               $input = SimplePie_Misc::encoding($input);
+               $output = SimplePie_Misc::encoding($output);
+
+               // We fail to fail on non US-ASCII bytes
+               if ($input === 'US-ASCII')
+               {
+                       static $non_ascii_octects = '';
+                       if (!$non_ascii_octects)
+                       {
+                               for ($i = 0x80; $i <= 0xFF; $i++)
+                               {
+                                       $non_ascii_octects .= chr($i);
+                               }
+                       }
+                       $data = substr($data, 0, strcspn($data, $non_ascii_octects));
+               }
+
+               // This is first, as behaviour of this is completely predictable
+               if ($input === 'windows-1252' && $output === 'UTF-8')
+               {
+                       return SimplePie_Misc::windows_1252_to_utf8($data);
+               }
+               // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
+               elseif (function_exists('mb_convert_encoding') && ($return = SimplePie_Misc::change_encoding_mbstring($data, $input, $output)))
+               {
+                       return $return;
+               }
+               // This is last, as behaviour of this varies with OS userland and PHP version
+               elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output)))
+               {
+                       return $return;
+               }
+               // If we can't do anything, just fail
+               else
+               {
+                       return false;
+               }
+       }
+
+       protected static function change_encoding_mbstring($data, $input, $output)
+       {
+               if ($input === 'windows-949')
+               {
+                       $input = 'EUC-KR';
+               }
+               if ($output === 'windows-949')
+               {
+                       $output = 'EUC-KR';
+               }
+               if ($input === 'Windows-31J')
+               {
+                       $input = 'SJIS';
+               }
+               if ($output === 'Windows-31J')
+               {
+                       $output = 'SJIS';
+               }
+
+               // Check that the encoding is supported
+               if (@mb_convert_encoding("\x80", 'UTF-16BE', $input) === "\x00\x80")
+               {
+                       return false;
+               }
+               if (!in_array($input, mb_list_encodings()))
+               {
+                       return false;
+               }
+
+               // Let's do some conversion
+               if ($return = @mb_convert_encoding($data, $output, $input))
+               {
+                       return $return;
+               }
+
+               return false;
+       }
+
+       protected static function change_encoding_iconv($data, $input, $output)
+       {
+               return @iconv($input, $output, $data);
+       }
+
+       /**
+        * Normalize an encoding name
+        *
+        * This is automatically generated by create.php
+        *
+        * To generate it, run `php create.php` on the command line, and copy the
+        * output to replace this function.
+        *
+        * @param string $charset Character set to standardise
+        * @return string Standardised name
+        */
+       public static function encoding($charset)
+       {
+               // Normalization from UTS #22
+               switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset)))
+               {
+                       case 'adobestandardencoding':
+                       case 'csadobestandardencoding':
+                               return 'Adobe-Standard-Encoding';
+
+                       case 'adobesymbolencoding':
+                       case 'cshppsmath':
+                               return 'Adobe-Symbol-Encoding';
+
+                       case 'ami1251':
+                       case 'amiga1251':
+                               return 'Amiga-1251';
+
+                       case 'ansix31101983':
+                       case 'csat5001983':
+                       case 'csiso99naplps':
+                       case 'isoir99':
+                       case 'naplps':
+                               return 'ANSI_X3.110-1983';
+
+                       case 'arabic7':
+                       case 'asmo449':
+                       case 'csiso89asmo449':
+                       case 'iso9036':
+                       case 'isoir89':
+                               return 'ASMO_449';
+
+                       case 'big5':
+                       case 'csbig5':
+                               return 'Big5';
+
+                       case 'big5hkscs':
+                               return 'Big5-HKSCS';
+
+                       case 'bocu1':
+                       case 'csbocu1':
+                               return 'BOCU-1';
+
+                       case 'brf':
+                       case 'csbrf':
+                               return 'BRF';
+
+                       case 'bs4730':
+                       case 'csiso4unitedkingdom':
+                       case 'gb':
+                       case 'iso646gb':
+                       case 'isoir4':
+                       case 'uk':
+                               return 'BS_4730';
+
+                       case 'bsviewdata':
+                       case 'csiso47bsviewdata':
+                       case 'isoir47':
+                               return 'BS_viewdata';
+
+                       case 'cesu8':
+                       case 'cscesu8':
+                               return 'CESU-8';
+
+                       case 'ca':
+                       case 'csa71':
+                       case 'csaz243419851':
+                       case 'csiso121canadian1':
+                       case 'iso646ca':
+                       case 'isoir121':
+                               return 'CSA_Z243.4-1985-1';
+
+                       case 'csa72':
+                       case 'csaz243419852':
+                       case 'csiso122canadian2':
+                       case 'iso646ca2':
+                       case 'isoir122':
+                               return 'CSA_Z243.4-1985-2';
+
+                       case 'csaz24341985gr':
+                       case 'csiso123csaz24341985gr':
+                       case 'isoir123':
+                               return 'CSA_Z243.4-1985-gr';
+
+                       case 'csiso139csn369103':
+                       case 'csn369103':
+                       case 'isoir139':
+                               return 'CSN_369103';
+
+                       case 'csdecmcs':
+                       case 'dec':
+                       case 'decmcs':
+                               return 'DEC-MCS';
+
+                       case 'csiso21german':
+                       case 'de':
+                       case 'din66003':
+                       case 'iso646de':
+                       case 'isoir21':
+                               return 'DIN_66003';
+
+                       case 'csdkus':
+                       case 'dkus':
+                               return 'dk-us';
+
+                       case 'csiso646danish':
+                       case 'dk':
+                       case 'ds2089':
+                       case 'iso646dk':
+                               return 'DS_2089';
+
+                       case 'csibmebcdicatde':
+                       case 'ebcdicatde':
+                               return 'EBCDIC-AT-DE';
+
+                       case 'csebcdicatdea':
+                       case 'ebcdicatdea':
+                               return 'EBCDIC-AT-DE-A';
+
+                       case 'csebcdiccafr':
+                       case 'ebcdiccafr':
+                               return 'EBCDIC-CA-FR';
+
+                       case 'csebcdicdkno':
+                       case 'ebcdicdkno':
+                               return 'EBCDIC-DK-NO';
+
+                       case 'csebcdicdknoa':
+                       case 'ebcdicdknoa':
+                               return 'EBCDIC-DK-NO-A';
+
+                       case 'csebcdices':
+                       case 'ebcdices':
+                               return 'EBCDIC-ES';
+
+                       case 'csebcdicesa':
+                       case 'ebcdicesa':
+                               return 'EBCDIC-ES-A';
+
+                       case 'csebcdicess':
+                       case 'ebcdicess':
+                               return 'EBCDIC-ES-S';
+
+                       case 'csebcdicfise':
+                       case 'ebcdicfise':
+                               return 'EBCDIC-FI-SE';
+
+                       case 'csebcdicfisea':
+                       case 'ebcdicfisea':
+                               return 'EBCDIC-FI-SE-A';
+
+                       case 'csebcdicfr':
+                       case 'ebcdicfr':
+                               return 'EBCDIC-FR';
+
+                       case 'csebcdicit':
+                       case 'ebcdicit':
+                               return 'EBCDIC-IT';
+
+                       case 'csebcdicpt':
+                       case 'ebcdicpt':
+                               return 'EBCDIC-PT';
+
+                       case 'csebcdicuk':
+                       case 'ebcdicuk':
+                               return 'EBCDIC-UK';
+
+                       case 'csebcdicus':
+                       case 'ebcdicus':
+                               return 'EBCDIC-US';
+
+                       case 'csiso111ecmacyrillic':
+                       case 'ecmacyrillic':
+                       case 'isoir111':
+                       case 'koi8e':
+                               return 'ECMA-cyrillic';
+
+                       case 'csiso17spanish':
+                       case 'es':
+                       case 'iso646es':
+                       case 'isoir17':
+                               return 'ES';
+
+                       case 'csiso85spanish2':
+                       case 'es2':
+                       case 'iso646es2':
+                       case 'isoir85':
+                               return 'ES2';
+
+                       case 'cseucpkdfmtjapanese':
+                       case 'eucjp':
+                       case 'extendedunixcodepackedformatforjapanese':
+                               return 'EUC-JP';
+
+                       case 'cseucfixwidjapanese':
+                       case 'extendedunixcodefixedwidthforjapanese':
+                               return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
+
+                       case 'gb18030':
+                               return 'GB18030';
+
+                       case 'chinese':
+                       case 'cp936':
+                       case 'csgb2312':
+                       case 'csiso58gb231280':
+                       case 'gb2312':
+                       case 'gb231280':
+                       case 'gbk':
+                       case 'isoir58':
+                       case 'ms936':
+                       case 'windows936':
+                               return 'GBK';
+
+                       case 'cn':
+                       case 'csiso57gb1988':
+                       case 'gb198880':
+                       case 'iso646cn':
+                       case 'isoir57':
+                               return 'GB_1988-80';
+
+                       case 'csiso153gost1976874':
+                       case 'gost1976874':
+                       case 'isoir153':
+                       case 'stsev35888':
+                               return 'GOST_19768-74';
+
+                       case 'csiso150':
+                       case 'csiso150greekccitt':
+                       case 'greekccitt':
+                       case 'isoir150':
+                               return 'greek-ccitt';
+
+                       case 'csiso88greek7':
+                       case 'greek7':
+                       case 'isoir88':
+                               return 'greek7';
+
+                       case 'csiso18greek7old':
+                       case 'greek7old':
+                       case 'isoir18':
+                               return 'greek7-old';
+
+                       case 'cshpdesktop':
+                       case 'hpdesktop':
+                               return 'HP-DeskTop';
+
+                       case 'cshplegal':
+                       case 'hplegal':
+                               return 'HP-Legal';
+
+                       case 'cshpmath8':
+                       case 'hpmath8':
+                               return 'HP-Math8';
+
+                       case 'cshppifont':
+                       case 'hppifont':
+                               return 'HP-Pi-font';
+
+                       case 'cshproman8':
+                       case 'hproman8':
+                       case 'r8':
+                       case 'roman8':
+                               return 'hp-roman8';
+
+                       case 'hzgb2312':
+                               return 'HZ-GB-2312';
+
+                       case 'csibmsymbols':
+                       case 'ibmsymbols':
+                               return 'IBM-Symbols';
+
+                       case 'csibmthai':
+                       case 'ibmthai':
+                               return 'IBM-Thai';
+
+                       case 'cp37':
+                       case 'csibm37':
+                       case 'ebcdiccpca':
+                       case 'ebcdiccpnl':
+                       case 'ebcdiccpus':
+                       case 'ebcdiccpwt':
+                       case 'ibm37':
+                               return 'IBM037';
+
+                       case 'cp38':
+                       case 'csibm38':
+                       case 'ebcdicint':
+                       case 'ibm38':
+                               return 'IBM038';
+
+                       case 'cp273':
+                       case 'csibm273':
+                       case 'ibm273':
+                               return 'IBM273';
+
+                       case 'cp274':
+                       case 'csibm274':
+                       case 'ebcdicbe':
+                       case 'ibm274':
+                               return 'IBM274';
+
+                       case 'cp275':
+                       case 'csibm275':
+                       case 'ebcdicbr':
+                       case 'ibm275':
+                               return 'IBM275';
+
+                       case 'csibm277':
+                       case 'ebcdiccpdk':
+                       case 'ebcdiccpno':
+                       case 'ibm277':
+                               return 'IBM277';
+
+                       case 'cp278':
+                       case 'csibm278':
+                       case 'ebcdiccpfi':
+                       case 'ebcdiccpse':
+                       case 'ibm278':
+                               return 'IBM278';
+
+                       case 'cp280':
+                       case 'csibm280':
+                       case 'ebcdiccpit':
+                       case 'ibm280':
+                               return 'IBM280';
+
+                       case 'cp281':
+                       case 'csibm281':
+                       case 'ebcdicjpe':
+                       case 'ibm281':
+                               return 'IBM281';
+
+                       case 'cp284':
+                       case 'csibm284':
+                       case 'ebcdiccpes':
+                       case 'ibm284':
+                               return 'IBM284';
+
+                       case 'cp285':
+                       case 'csibm285':
+                       case 'ebcdiccpgb':
+                       case 'ibm285':
+                               return 'IBM285';
+
+                       case 'cp290':
+                       case 'csibm290':
+                       case 'ebcdicjpkana':
+                       case 'ibm290':
+                               return 'IBM290';
+
+                       case 'cp297':
+                       case 'csibm297':
+                       case 'ebcdiccpfr':
+                       case 'ibm297':
+                               return 'IBM297';
+
+                       case 'cp420':
+                       case 'csibm420':
+                       case 'ebcdiccpar1':
+                       case 'ibm420':
+                               return 'IBM420';
+
+                       case 'cp423':
+                       case 'csibm423':
+                       case 'ebcdiccpgr':
+                       case 'ibm423':
+                               return 'IBM423';
+
+                       case 'cp424':
+                       case 'csibm424':
+                       case 'ebcdiccphe':
+                       case 'ibm424':
+                               return 'IBM424';
+
+                       case '437':
+                       case 'cp437':
+                       case 'cspc8codepage437':
+                       case 'ibm437':
+                               return 'IBM437';
+
+                       case 'cp500':
+                       case 'csibm500':
+                       case 'ebcdiccpbe':
+                       case 'ebcdiccpch':
+                       case 'ibm500':
+                               return 'IBM500';
+
+                       case 'cp775':
+                       case 'cspc775baltic':
+                       case 'ibm775':
+                               return 'IBM775';
+
+                       case '850':
+                       case 'cp850':
+                       case 'cspc850multilingual':
+                       case 'ibm850':
+                               return 'IBM850';
+
+                       case '851':
+                       case 'cp851':
+                       case 'csibm851':
+                       case 'ibm851':
+                               return 'IBM851';
+
+                       case '852':
+                       case 'cp852':
+                       case 'cspcp852':
+                       case 'ibm852':
+                               return 'IBM852';
+
+                       case '855':
+                       case 'cp855':
+                       case 'csibm855':
+                       case 'ibm855':
+                               return 'IBM855';
+
+                       case '857':
+                       case 'cp857':
+                       case 'csibm857':
+                       case 'ibm857':
+                               return 'IBM857';
+
+                       case 'ccsid858':
+                       case 'cp858':
+                       case 'ibm858':
+                       case 'pcmultilingual850euro':
+                               return 'IBM00858';
+
+                       case '860':
+                       case 'cp860':
+                       case 'csibm860':
+                       case 'ibm860':
+                               return 'IBM860';
+
+                       case '861':
+                       case 'cp861':
+                       case 'cpis':
+                       case 'csibm861':
+                       case 'ibm861':
+                               return 'IBM861';
+
+                       case '862':
+                       case 'cp862':
+                       case 'cspc862latinhebrew':
+                       case 'ibm862':
+                               return 'IBM862';
+
+                       case '863':
+                       case 'cp863':
+                       case 'csibm863':
+                       case 'ibm863':
+                               return 'IBM863';
+
+                       case 'cp864':
+                       case 'csibm864':
+                       case 'ibm864':
+                               return 'IBM864';
+
+                       case '865':
+                       case 'cp865':
+                       case 'csibm865':
+                       case 'ibm865':
+                               return 'IBM865';
+
+                       case '866':
+                       case 'cp866':
+                       case 'csibm866':
+                       case 'ibm866':
+                               return 'IBM866';
+
+                       case 'cp868':
+                       case 'cpar':
+                       case 'csibm868':
+                       case 'ibm868':
+                               return 'IBM868';
+
+                       case '869':
+                       case 'cp869':
+                       case 'cpgr':
+                       case 'csibm869':
+                       case 'ibm869':
+                               return 'IBM869';
+
+                       case 'cp870':
+                       case 'csibm870':
+                       case 'ebcdiccproece':
+                       case 'ebcdiccpyu':
+                       case 'ibm870':
+                               return 'IBM870';
+
+                       case 'cp871':
+                       case 'csibm871':
+                       case 'ebcdiccpis':
+                       case 'ibm871':
+                               return 'IBM871';
+
+                       case 'cp880':
+                       case 'csibm880':
+                       case 'ebcdiccyrillic':
+                       case 'ibm880':
+                               return 'IBM880';
+
+                       case 'cp891':
+                       case 'csibm891':
+                       case 'ibm891':
+                               return 'IBM891';
+
+                       case 'cp903':
+                       case 'csibm903':
+                       case 'ibm903':
+                               return 'IBM903';
+
+                       case '904':
+                       case 'cp904':
+                       case 'csibbm904':
+                       case 'ibm904':
+                               return 'IBM904';
+
+                       case 'cp905':
+                       case 'csibm905':
+                       case 'ebcdiccptr':
+                       case 'ibm905':
+                               return 'IBM905';
+
+                       case 'cp918':
+                       case 'csibm918':
+                       case 'ebcdiccpar2':
+                       case 'ibm918':
+                               return 'IBM918';
+
+                       case 'ccsid924':
+                       case 'cp924':
+                       case 'ebcdiclatin9euro':
+                       case 'ibm924':
+                               return 'IBM00924';
+
+                       case 'cp1026':
+                       case 'csibm1026':
+                       case 'ibm1026':
+                               return 'IBM1026';
+
+                       case 'ibm1047':
+                               return 'IBM1047';
+
+                       case 'ccsid1140':
+                       case 'cp1140':
+                       case 'ebcdicus37euro':
+                       case 'ibm1140':
+                               return 'IBM01140';
+
+                       case 'ccsid1141':
+                       case 'cp1141':
+                       case 'ebcdicde273euro':
+                       case 'ibm1141':
+                               return 'IBM01141';
+
+                       case 'ccsid1142':
+                       case 'cp1142':
+                       case 'ebcdicdk277euro':
+                       case 'ebcdicno277euro':
+                       case 'ibm1142':
+                               return 'IBM01142';
+
+                       case 'ccsid1143':
+                       case 'cp1143':
+                       case 'ebcdicfi278euro':
+                       case 'ebcdicse278euro':
+                       case 'ibm1143':
+                               return 'IBM01143';
+
+                       case 'ccsid1144':
+                       case 'cp1144':
+                       case 'ebcdicit280euro':
+                       case 'ibm1144':
+                               return 'IBM01144';
+
+                       case 'ccsid1145':
+                       case 'cp1145':
+                       case 'ebcdices284euro':
+                       case 'ibm1145':
+                               return 'IBM01145';
+
+                       case 'ccsid1146':
+                       case 'cp1146':
+                       case 'ebcdicgb285euro':
+                       case 'ibm1146':
+                               return 'IBM01146';
+
+                       case 'ccsid1147':
+                       case 'cp1147':
+                       case 'ebcdicfr297euro':
+                       case 'ibm1147':
+                               return 'IBM01147';
+
+                       case 'ccsid1148':
+                       case 'cp1148':
+                       case 'ebcdicinternational500euro':
+                       case 'ibm1148':
+                               return 'IBM01148';
+
+                       case 'ccsid1149':
+                       case 'cp1149':
+                       case 'ebcdicis871euro':
+                       case 'ibm1149':
+                               return 'IBM01149';
+
+                       case 'csiso143iecp271':
+                       case 'iecp271':
+                       case 'isoir143':
+                               return 'IEC_P27-1';
+
+                       case 'csiso49inis':
+                       case 'inis':
+                       case 'isoir49':
+                               return 'INIS';
+
+                       case 'csiso50inis8':
+                       case 'inis8':
+                       case 'isoir50':
+                               return 'INIS-8';
+
+                       case 'csiso51iniscyrillic':
+                       case 'iniscyrillic':
+                       case 'isoir51':
+                               return 'INIS-cyrillic';
+
+                       case 'csinvariant':
+                       case 'invariant':
+                               return 'INVARIANT';
+
+                       case 'iso2022cn':
+                               return 'ISO-2022-CN';
+
+                       case 'iso2022cnext':
+                               return 'ISO-2022-CN-EXT';
+
+                       case 'csiso2022jp':
+                       case 'iso2022jp':
+                               return 'ISO-2022-JP';
+
+                       case 'csiso2022jp2':
+                       case 'iso2022jp2':
+                               return 'ISO-2022-JP-2';
+
+                       case 'csiso2022kr':
+                       case 'iso2022kr':
+                               return 'ISO-2022-KR';
+
+                       case 'cswindows30latin1':
+                       case 'iso88591windows30latin1':
+                               return 'ISO-8859-1-Windows-3.0-Latin-1';
+
+                       case 'cswindows31latin1':
+                       case 'iso88591windows31latin1':
+                               return 'ISO-8859-1-Windows-3.1-Latin-1';
+
+                       case 'csisolatin2':
+                       case 'iso88592':
+                       case 'iso885921987':
+                       case 'isoir101':
+                       case 'l2':
+                       case 'latin2':
+                               return 'ISO-8859-2';
+
+                       case 'cswindows31latin2':
+                       case 'iso88592windowslatin2':
+                               return 'ISO-8859-2-Windows-Latin-2';
+
+                       case 'csisolatin3':
+                       case 'iso88593':
+                       case 'iso885931988':
+                       case 'isoir109':
+                       case 'l3':
+                       case 'latin3':
+                               return 'ISO-8859-3';
+
+                       case 'csisolatin4':
+                       case 'iso88594':
+                       case 'iso885941988':
+                       case 'isoir110':
+                       case 'l4':
+                       case 'latin4':
+                               return 'ISO-8859-4';
+
+                       case 'csisolatincyrillic':
+                       case 'cyrillic':
+                       case 'iso88595':
+                       case 'iso885951988':
+                       case 'isoir144':
+                               return 'ISO-8859-5';
+
+                       case 'arabic':
+                       case 'asmo708':
+                       case 'csisolatinarabic':
+                       case 'ecma114':
+                       case 'iso88596':
+                       case 'iso885961987':
+                       case 'isoir127':
+                               return 'ISO-8859-6';
+
+                       case 'csiso88596e':
+                       case 'iso88596e':
+                               return 'ISO-8859-6-E';
+
+                       case 'csiso88596i':
+                       case 'iso88596i':
+                               return 'ISO-8859-6-I';
+
+                       case 'csisolatingreek':
+                       case 'ecma118':
+                       case 'elot928':
+                       case 'greek':
+                       case 'greek8':
+                       case 'iso88597':
+                       case 'iso885971987':
+                       case 'isoir126':
+                               return 'ISO-8859-7';
+
+                       case 'csisolatinhebrew':
+                       case 'hebrew':
+                       case 'iso88598':
+                       case 'iso885981988':
+                       case 'isoir138':
+                               return 'ISO-8859-8';
+
+                       case 'csiso88598e':
+                       case 'iso88598e':
+                               return 'ISO-8859-8-E';
+
+                       case 'csiso88598i':
+                       case 'iso88598i':
+                               return 'ISO-8859-8-I';
+
+                       case 'cswindows31latin5':
+                       case 'iso88599windowslatin5':
+                               return 'ISO-8859-9-Windows-Latin-5';
+
+                       case 'csisolatin6':
+                       case 'iso885910':
+                       case 'iso8859101992':
+                       case 'isoir157':
+                       case 'l6':
+                       case 'latin6':
+                               return 'ISO-8859-10';
+
+                       case 'iso885913':
+                               return 'ISO-8859-13';
+
+                       case 'iso885914':
+                       case 'iso8859141998':
+                       case 'isoceltic':
+                       case 'isoir199':
+                       case 'l8':
+                       case 'latin8':
+                               return 'ISO-8859-14';
+
+                       case 'iso885915':
+                       case 'latin9':
+                               return 'ISO-8859-15';
+
+                       case 'iso885916':
+                       case 'iso8859162001':
+                       case 'isoir226':
+                       case 'l10':
+                       case 'latin10':
+                               return 'ISO-8859-16';
+
+                       case 'iso10646j1':
+                               return 'ISO-10646-J-1';
+
+                       case 'csunicode':
+                       case 'iso10646ucs2':
+                               return 'ISO-10646-UCS-2';
+
+                       case 'csucs4':
+                       case 'iso10646ucs4':
+                               return 'ISO-10646-UCS-4';
+
+                       case 'csunicodeascii':
+                       case 'iso10646ucsbasic':
+                               return 'ISO-10646-UCS-Basic';
+
+                       case 'csunicodelatin1':
+                       case 'iso10646':
+                       case 'iso10646unicodelatin1':
+                               return 'ISO-10646-Unicode-Latin1';
+
+                       case 'csiso10646utf1':
+                       case 'iso10646utf1':
+                               return 'ISO-10646-UTF-1';
+
+                       case 'csiso115481':
+                       case 'iso115481':
+                       case 'isotr115481':
+                               return 'ISO-11548-1';
+
+                       case 'csiso90':
+                       case 'isoir90':
+                               return 'iso-ir-90';
+
+                       case 'csunicodeibm1261':
+                       case 'isounicodeibm1261':
+                               return 'ISO-Unicode-IBM-1261';
+
+                       case 'csunicodeibm1264':
+                       case 'isounicodeibm1264':
+                               return 'ISO-Unicode-IBM-1264';
+
+                       case 'csunicodeibm1265':
+                       case 'isounicodeibm1265':
+                               return 'ISO-Unicode-IBM-1265';
+
+                       case 'csunicodeibm1268':
+                       case 'isounicodeibm1268':
+                               return 'ISO-Unicode-IBM-1268';
+
+                       case 'csunicodeibm1276':
+                       case 'isounicodeibm1276':
+                               return 'ISO-Unicode-IBM-1276';
+
+                       case 'csiso646basic1983':
+                       case 'iso646basic1983':
+                       case 'ref':
+                               return 'ISO_646.basic:1983';
+
+                       case 'csiso2intlrefversion':
+                       case 'irv':
+                       case 'iso646irv1983':
+                       case 'isoir2':
+                               return 'ISO_646.irv:1983';
+
+                       case 'csiso2033':
+                       case 'e13b':
+                       case 'iso20331983':
+                       case 'isoir98':
+                               return 'ISO_2033-1983';
+
+                       case 'csiso5427cyrillic':
+                       case 'iso5427':
+                       case 'isoir37':
+                               return 'ISO_5427';
+
+                       case 'iso5427cyrillic1981':
+                       case 'iso54271981':
+                       case 'isoir54':
+                               return 'ISO_5427:1981';
+
+                       case 'csiso5428greek':
+                       case 'iso54281980':
+                       case 'isoir55':
+                               return 'ISO_5428:1980';
+
+                       case 'csiso6937add':
+                       case 'iso6937225':
+                       case 'isoir152':
+                               return 'ISO_6937-2-25';
+
+                       case 'csisotextcomm':
+                       case 'iso69372add':
+                       case 'isoir142':
+                               return 'ISO_6937-2-add';
+
+                       case 'csiso8859supp':
+                       case 'iso8859supp':
+                       case 'isoir154':
+                       case 'latin125':
+                               return 'ISO_8859-supp';
+
+                       case 'csiso10367box':
+                       case 'iso10367box':
+                       case 'isoir155':
+                               return 'ISO_10367-box';
+
+                       case 'csiso15italian':
+                       case 'iso646it':
+                       case 'isoir15':
+                       case 'it':
+                               return 'IT';
+
+                       case 'csiso13jisc6220jp':
+                       case 'isoir13':
+                       case 'jisc62201969':
+                       case 'jisc62201969jp':
+                       case 'katakana':
+                       case 'x2017':
+                               return 'JIS_C6220-1969-jp';
+
+                       case 'csiso14jisc6220ro':
+                       case 'iso646jp':
+                       case 'isoir14':
+                       case 'jisc62201969ro':
+                       case 'jp':
+                               return 'JIS_C6220-1969-ro';
+
+                       case 'csiso42jisc62261978':
+                       case 'isoir42':
+                       case 'jisc62261978':
+                               return 'JIS_C6226-1978';
+
+                       case 'csiso87jisx208':
+                       case 'isoir87':
+                       case 'jisc62261983':
+                       case 'jisx2081983':
+                       case 'x208':
+                               return 'JIS_C6226-1983';
+
+                       case 'csiso91jisc62291984a':
+                       case 'isoir91':
+                       case 'jisc62291984a':
+                       case 'jpocra':
+                               return 'JIS_C6229-1984-a';
+
+                       case 'csiso92jisc62991984b':
+                       case 'iso646jpocrb':
+                       case 'isoir92':
+                       case 'jisc62291984b':
+                       case 'jpocrb':
+                               return 'JIS_C6229-1984-b';
+
+                       case 'csiso93jis62291984badd':
+                       case 'isoir93':
+                       case 'jisc62291984badd':
+                       case 'jpocrbadd':
+                               return 'JIS_C6229-1984-b-add';
+
+                       case 'csiso94jis62291984hand':
+                       case 'isoir94':
+                       case 'jisc62291984hand':
+                       case 'jpocrhand':
+                               return 'JIS_C6229-1984-hand';
+
+                       case 'csiso95jis62291984handadd':
+                       case 'isoir95':
+                       case 'jisc62291984handadd':
+                       case 'jpocrhandadd':
+                               return 'JIS_C6229-1984-hand-add';
+
+                       case 'csiso96jisc62291984kana':
+                       case 'isoir96':
+                       case 'jisc62291984kana':
+                               return 'JIS_C6229-1984-kana';
+
+                       case 'csjisencoding':
+                       case 'jisencoding':
+                               return 'JIS_Encoding';
+
+                       case 'cshalfwidthkatakana':
+                       case 'jisx201':
+                       case 'x201':
+                               return 'JIS_X0201';
+
+                       case 'csiso159jisx2121990':
+                       case 'isoir159':
+                       case 'jisx2121990':
+                       case 'x212':
+                               return 'JIS_X0212-1990';
+
+                       case 'csiso141jusib1002':
+                       case 'iso646yu':
+                       case 'isoir141':
+                       case 'js':
+                       case 'jusib1002':
+                       case 'yu':
+                               return 'JUS_I.B1.002';
+
+                       case 'csiso147macedonian':
+                       case 'isoir147':
+                       case 'jusib1003mac':
+                       case 'macedonian':
+                               return 'JUS_I.B1.003-mac';
+
+                       case 'csiso146serbian':
+                       case 'isoir146':
+                       case 'jusib1003serb':
+                       case 'serbian':
+                               return 'JUS_I.B1.003-serb';
+
+                       case 'koi7switched':
+                               return 'KOI7-switched';
+
+                       case 'cskoi8r':
+                       case 'koi8r':
+                               return 'KOI8-R';
+
+                       case 'koi8u':
+                               return 'KOI8-U';
+
+                       case 'csksc5636':
+                       case 'iso646kr':
+                       case 'ksc5636':
+                               return 'KSC5636';
+
+                       case 'cskz1048':
+                       case 'kz1048':
+                       case 'rk1048':
+                       case 'strk10482002':
+                               return 'KZ-1048';
+
+                       case 'csiso19latingreek':
+                       case 'isoir19':
+                       case 'latingreek':
+                               return 'latin-greek';
+
+                       case 'csiso27latingreek1':
+                       case 'isoir27':
+                       case 'latingreek1':
+                               return 'Latin-greek-1';
+
+                       case 'csiso158lap':
+                       case 'isoir158':
+                       case 'lap':
+                       case 'latinlap':
+                               return 'latin-lap';
+
+                       case 'csmacintosh':
+                       case 'mac':
+                       case 'macintosh':
+                               return 'macintosh';
+
+                       case 'csmicrosoftpublishing':
+                       case 'microsoftpublishing':
+                               return 'Microsoft-Publishing';
+
+                       case 'csmnem':
+                       case 'mnem':
+                               return 'MNEM';
+
+                       case 'csmnemonic':
+                       case 'mnemonic':
+                               return 'MNEMONIC';
+
+                       case 'csiso86hungarian':
+                       case 'hu':
+                       case 'iso646hu':
+                       case 'isoir86':
+                       case 'msz77953':
+                               return 'MSZ_7795.3';
+
+                       case 'csnatsdano':
+                       case 'isoir91':
+                       case 'natsdano':
+                               return 'NATS-DANO';
+
+                       case 'csnatsdanoadd':
+                       case 'isoir92':
+                       case 'natsdanoadd':
+                               return 'NATS-DANO-ADD';
+
+                       case 'csnatssefi':
+                       case 'isoir81':
+                       case 'natssefi':
+                               return 'NATS-SEFI';
+
+                       case 'csnatssefiadd':
+                       case 'isoir82':
+                       case 'natssefiadd':
+                               return 'NATS-SEFI-ADD';
+
+                       case 'csiso151cuba':
+                       case 'cuba':
+                       case 'iso646cu':
+                       case 'isoir151':
+                       case 'ncnc1081':
+                               return 'NC_NC00-10:81';
+
+                       case 'csiso69french':
+                       case 'fr':
+                       case 'iso646fr':
+                       case 'isoir69':
+                       case 'nfz62010':
+                               return 'NF_Z_62-010';
+
+                       case 'csiso25french':
+                       case 'iso646fr1':
+                       case 'isoir25':
+                       case 'nfz620101973':
+                               return 'NF_Z_62-010_(1973)';
+
+                       case 'csiso60danishnorwegian':
+                       case 'csiso60norwegian1':
+                       case 'iso646no':
+                       case 'isoir60':
+                       case 'no':
+                       case 'ns45511':
+                               return 'NS_4551-1';
+
+                       case 'csiso61norwegian2':
+                       case 'iso646no2':
+                       case 'isoir61':
+                       case 'no2':
+                       case 'ns45512':
+                               return 'NS_4551-2';
+
+                       case 'osdebcdicdf3irv':
+                               return 'OSD_EBCDIC_DF03_IRV';
+
+                       case 'osdebcdicdf41':
+                               return 'OSD_EBCDIC_DF04_1';
+
+                       case 'osdebcdicdf415':
+                               return 'OSD_EBCDIC_DF04_15';
+
+                       case 'cspc8danishnorwegian':
+                       case 'pc8danishnorwegian':
+                               return 'PC8-Danish-Norwegian';
+
+                       case 'cspc8turkish':
+                       case 'pc8turkish':
+                               return 'PC8-Turkish';
+
+                       case 'csiso16portuguese':
+                       case 'iso646pt':
+                       case 'isoir16':
+                       case 'pt':
+                               return 'PT';
+
+                       case 'csiso84portuguese2':
+                       case 'iso646pt2':
+                       case 'isoir84':
+                       case 'pt2':
+                               return 'PT2';
+
+                       case 'cp154':
+                       case 'csptcp154':
+                       case 'cyrillicasian':
+                       case 'pt154':
+                       case 'ptcp154':
+                               return 'PTCP154';
+
+                       case 'scsu':
+                               return 'SCSU';
+
+                       case 'csiso10swedish':
+                       case 'fi':
+                       case 'iso646fi':
+                       case 'iso646se':
+                       case 'isoir10':
+                       case 'se':
+                       case 'sen850200b':
+                               return 'SEN_850200_B';
+
+                       case 'csiso11swedishfornames':
+                       case 'iso646se2':
+                       case 'isoir11':
+                       case 'se2':
+                       case 'sen850200c':
+                               return 'SEN_850200_C';
+
+                       case 'csiso102t617bit':
+                       case 'isoir102':
+                       case 't617bit':
+                               return 'T.61-7bit';
+
+                       case 'csiso103t618bit':
+                       case 'isoir103':
+                       case 't61':
+                       case 't618bit':
+                               return 'T.61-8bit';
+
+                       case 'csiso128t101g2':
+                       case 'isoir128':
+                       case 't101g2':
+                               return 'T.101-G2';
+
+                       case 'cstscii':
+                       case 'tscii':
+                               return 'TSCII';
+
+                       case 'csunicode11':
+                       case 'unicode11':
+                               return 'UNICODE-1-1';
+
+                       case 'csunicode11utf7':
+                       case 'unicode11utf7':
+                               return 'UNICODE-1-1-UTF-7';
+
+                       case 'csunknown8bit':
+                       case 'unknown8bit':
+                               return 'UNKNOWN-8BIT';
+
+                       case 'ansix341968':
+                       case 'ansix341986':
+                       case 'ascii':
+                       case 'cp367':
+                       case 'csascii':
+                       case 'ibm367':
+                       case 'iso646irv1991':
+                       case 'iso646us':
+                       case 'isoir6':
+                       case 'us':
+                       case 'usascii':
+                               return 'US-ASCII';
+
+                       case 'csusdk':
+                       case 'usdk':
+                               return 'us-dk';
+
+                       case 'utf7':
+                               return 'UTF-7';
+
+                       case 'utf8':
+                               return 'UTF-8';
+
+                       case 'utf16':
+                               return 'UTF-16';
+
+                       case 'utf16be':
+                               return 'UTF-16BE';
+
+                       case 'utf16le':
+                               return 'UTF-16LE';
+
+                       case 'utf32':
+                               return 'UTF-32';
+
+                       case 'utf32be':
+                               return 'UTF-32BE';
+
+                       case 'utf32le':
+                               return 'UTF-32LE';
+
+                       case 'csventurainternational':
+                       case 'venturainternational':
+                               return 'Ventura-International';
+
+                       case 'csventuramath':
+                       case 'venturamath':
+                               return 'Ventura-Math';
+
+                       case 'csventuraus':
+                       case 'venturaus':
+                               return 'Ventura-US';
+
+                       case 'csiso70videotexsupp1':
+                       case 'isoir70':
+                       case 'videotexsuppl':
+                               return 'videotex-suppl';
+
+                       case 'csviqr':
+                       case 'viqr':
+                               return 'VIQR';
+
+                       case 'csviscii':
+                       case 'viscii':
+                               return 'VISCII';
+
+                       case 'csshiftjis':
+                       case 'cswindows31j':
+                       case 'mskanji':
+                       case 'shiftjis':
+                       case 'windows31j':
+                               return 'Windows-31J';
+
+                       case 'iso885911':
+                       case 'tis620':
+                               return 'windows-874';
+
+                       case 'cseuckr':
+                       case 'csksc56011987':
+                       case 'euckr':
+                       case 'isoir149':
+                       case 'korean':
+                       case 'ksc5601':
+                       case 'ksc56011987':
+                       case 'ksc56011989':
+                       case 'windows949':
+                               return 'windows-949';
+
+                       case 'windows1250':
+                               return 'windows-1250';
+
+                       case 'windows1251':
+                               return 'windows-1251';
+
+                       case 'cp819':
+                       case 'csisolatin1':
+                       case 'ibm819':
+                       case 'iso88591':
+                       case 'iso885911987':
+                       case 'isoir100':
+                       case 'l1':
+                       case 'latin1':
+                       case 'windows1252':
+                               return 'windows-1252';
+
+                       case 'windows1253':
+                               return 'windows-1253';
+
+                       case 'csisolatin5':
+                       case 'iso88599':
+                       case 'iso885991989':
+                       case 'isoir148':
+                       case 'l5':
+                       case 'latin5':
+                       case 'windows1254':
+                               return 'windows-1254';
+
+                       case 'windows1255':
+                               return 'windows-1255';
+
+                       case 'windows1256':
+                               return 'windows-1256';
+
+                       case 'windows1257':
+                               return 'windows-1257';
+
+                       case 'windows1258':
+                               return 'windows-1258';
+
+                       default:
+                               return $charset;
+               }
+       }
+
+       public static function get_curl_version()
+       {
+               if (is_array($curl = curl_version()))
+               {
+                       $curl = $curl['version'];
+               }
+               elseif (substr($curl, 0, 5) === 'curl/')
+               {
+                       $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
+               }
+               elseif (substr($curl, 0, 8) === 'libcurl/')
+               {
+                       $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
+               }
+               else
+               {
+                       $curl = 0;
+               }
+               return $curl;
+       }
+
+       /**
+        * Strip HTML comments
+        *
+        * @param string $data Data to strip comments from
+        * @return string Comment stripped string
+        */
+       public static function strip_comments($data)
+       {
+               $output = '';
+               while (($start = strpos($data, '<!--')) !== false)
+               {
+                       $output .= substr($data, 0, $start);
+                       if (($end = strpos($data, '-->', $start)) !== false)
+                       {
+                               $data = substr_replace($data, '', 0, $end + 3);
+                       }
+                       else
+                       {
+                               $data = '';
+                       }
+               }
+               return $output . $data;
+       }
+
+       public static function parse_date($dt)
+       {
+               $parser = SimplePie_Parse_Date::get();
+               return $parser->parse($dt);
+       }
+
+       /**
+        * Decode HTML entities
+        *
+        * @deprecated Use DOMDocument instead
+        * @param string $data Input data
+        * @return string Output data
+        */
+       public static function entities_decode($data)
+       {
+               $decoder = new SimplePie_Decode_HTML_Entities($data);
+               return $decoder->parse();
+       }
+
+       /**
+        * Remove RFC822 comments
+        *
+        * @param string $data Data to strip comments from
+        * @return string Comment stripped string
+        */
+       public static function uncomment_rfc822($string)
+       {
+               $string = (string) $string;
+               $position = 0;
+               $length = strlen($string);
+               $depth = 0;
+
+               $output = '';
+
+               while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+               {
+                       $output .= substr($string, $position, $pos - $position);
+                       $position = $pos + 1;
+                       if ($string[$pos - 1] !== '\\')
+                       {
+                               $depth++;
+                               while ($depth && $position < $length)
+                               {
+                                       $position += strcspn($string, '()', $position);
+                                       if ($string[$position - 1] === '\\')
+                                       {
+                                               $position++;
+                                               continue;
+                                       }
+                                       elseif (isset($string[$position]))
+                                       {
+                                               switch ($string[$position])
+                                               {
+                                                       case '(':
+                                                               $depth++;
+                                                               break;
+
+                                                       case ')':
+                                                               $depth--;
+                                                               break;
+                                               }
+                                               $position++;
+                                       }
+                                       else
+                                       {
+                                               break;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $output .= '(';
+                       }
+               }
+               $output .= substr($string, $position);
+
+               return $output;
+       }
+
+       public static function parse_mime($mime)
+       {
+               if (($pos = strpos($mime, ';')) === false)
+               {
+                       return trim($mime);
+               }
+               else
+               {
+                       return trim(substr($mime, 0, $pos));
+               }
+       }
+
+       public static function atom_03_construct_type($attribs)
+       {
+               if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) === 'base64'))
+               {
+                       $mode = SIMPLEPIE_CONSTRUCT_BASE64;
+               }
+               else
+               {
+                       $mode = SIMPLEPIE_CONSTRUCT_NONE;
+               }
+               if (isset($attribs['']['type']))
+               {
+                       switch (strtolower(trim($attribs['']['type'])))
+                       {
+                               case 'text':
+                               case 'text/plain':
+                                       return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+
+                               case 'html':
+                               case 'text/html':
+                                       return SIMPLEPIE_CONSTRUCT_HTML | $mode;
+
+                               case 'xhtml':
+                               case 'application/xhtml+xml':
+                                       return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
+
+                               default:
+                                       return SIMPLEPIE_CONSTRUCT_NONE | $mode;
+                       }
+               }
+               else
+               {
+                       return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+               }
+       }
+
+       public static function atom_10_construct_type($attribs)
+       {
+               if (isset($attribs['']['type']))
+               {
+                       switch (strtolower(trim($attribs['']['type'])))
+                       {
+                               case 'text':
+                                       return SIMPLEPIE_CONSTRUCT_TEXT;
+
+                               case 'html':
+                                       return SIMPLEPIE_CONSTRUCT_HTML;
+
+                               case 'xhtml':
+                                       return SIMPLEPIE_CONSTRUCT_XHTML;
+
+                               default:
+                                       return SIMPLEPIE_CONSTRUCT_NONE;
+                       }
+               }
+               return SIMPLEPIE_CONSTRUCT_TEXT;
+       }
+
+       public static function atom_10_content_construct_type($attribs)
+       {
+               if (isset($attribs['']['type']))
+               {
+                       $type = strtolower(trim($attribs['']['type']));
+                       switch ($type)
+                       {
+                               case 'text':
+                                       return SIMPLEPIE_CONSTRUCT_TEXT;
+
+                               case 'html':
+                                       return SIMPLEPIE_CONSTRUCT_HTML;
+
+                               case 'xhtml':
+                                       return SIMPLEPIE_CONSTRUCT_XHTML;
+                       }
+                       if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) === 'text/')
+                       {
+                               return SIMPLEPIE_CONSTRUCT_NONE;
+                       }
+                       else
+                       {
+                               return SIMPLEPIE_CONSTRUCT_BASE64;
+                       }
+               }
+               else
+               {
+                       return SIMPLEPIE_CONSTRUCT_TEXT;
+               }
+       }
+
+       public static function is_isegment_nz_nc($string)
+       {
+               return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
+       }
+
+       public static function space_seperated_tokens($string)
+       {
+               $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
+               $string_length = strlen($string);
+
+               $position = strspn($string, $space_characters);
+               $tokens = array();
+
+               while ($position < $string_length)
+               {
+                       $len = strcspn($string, $space_characters, $position);
+                       $tokens[] = substr($string, $position, $len);
+                       $position += $len;
+                       $position += strspn($string, $space_characters, $position);
+               }
+
+               return $tokens;
+       }
+
+       /**
+        * Converts a unicode codepoint to a UTF-8 character
+        *
+        * @static
+        * @param int $codepoint Unicode codepoint
+        * @return string UTF-8 character
+        */
+       public static function codepoint_to_utf8($codepoint)
+       {
+               $codepoint = (int) $codepoint;
+               if ($codepoint < 0)
+               {
+                       return false;
+               }
+               else if ($codepoint <= 0x7f)
+               {
+                       return chr($codepoint);
+               }
+               else if ($codepoint <= 0x7ff)
+               {
+                       return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
+               }
+               else if ($codepoint <= 0xffff)
+               {
+                       return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+               }
+               else if ($codepoint <= 0x10ffff)
+               {
+                       return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+               }
+               else
+               {
+                       // U+FFFD REPLACEMENT CHARACTER
+                       return "\xEF\xBF\xBD";
+               }
+       }
+
+       /**
+        * Similar to parse_str()
+        *
+        * Returns an associative array of name/value pairs, where the value is an
+        * array of values that have used the same name
+        *
+        * @static
+        * @param string $str The input string.
+        * @return array
+        */
+       public static function parse_str($str)
+       {
+               $return = array();
+               $str = explode('&', $str);
+
+               foreach ($str as $section)
+               {
+                       if (strpos($section, '=') !== false)
+                       {
+                               list($name, $value) = explode('=', $section, 2);
+                               $return[urldecode($name)][] = urldecode($value);
+                       }
+                       else
+                       {
+                               $return[urldecode($section)][] = null;
+                       }
+               }
+
+               return $return;
+       }
+
+       /**
+        * Detect XML encoding, as per XML 1.0 Appendix F.1
+        *
+        * @todo Add support for EBCDIC
+        * @param string $data XML data
+        * @param SimplePie_Registry $registry Class registry
+        * @return array Possible encodings
+        */
+       public static function xml_encoding($data, $registry)
+       {
+               // UTF-32 Big Endian BOM
+               if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+               {
+                       $encoding[] = 'UTF-32BE';
+               }
+               // UTF-32 Little Endian BOM
+               elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+               {
+                       $encoding[] = 'UTF-32LE';
+               }
+               // UTF-16 Big Endian BOM
+               elseif (substr($data, 0, 2) === "\xFE\xFF")
+               {
+                       $encoding[] = 'UTF-16BE';
+               }
+               // UTF-16 Little Endian BOM
+               elseif (substr($data, 0, 2) === "\xFF\xFE")
+               {
+                       $encoding[] = 'UTF-16LE';
+               }
+               // UTF-8 BOM
+               elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+               {
+                       $encoding[] = 'UTF-8';
+               }
+               // UTF-32 Big Endian Without BOM
+               elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C")
+               {
+                       if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E"))
+                       {
+                               $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8')));
+                               if ($parser->parse())
+                               {
+                                       $encoding[] = $parser->encoding;
+                               }
+                       }
+                       $encoding[] = 'UTF-32BE';
+               }
+               // UTF-32 Little Endian Without BOM
+               elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00")
+               {
+                       if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00"))
+                       {
+                               $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8')));
+                               if ($parser->parse())
+                               {
+                                       $encoding[] = $parser->encoding;
+                               }
+                       }
+                       $encoding[] = 'UTF-32LE';
+               }
+               // UTF-16 Big Endian Without BOM
+               elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C")
+               {
+                       if ($pos = strpos($data, "\x00\x3F\x00\x3E"))
+                       {
+                               $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8')));
+                               if ($parser->parse())
+                               {
+                                       $encoding[] = $parser->encoding;
+                               }
+                       }
+                       $encoding[] = 'UTF-16BE';
+               }
+               // UTF-16 Little Endian Without BOM
+               elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00")
+               {
+                       if ($pos = strpos($data, "\x3F\x00\x3E\x00"))
+                       {
+                               $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8')));
+                               if ($parser->parse())
+                               {
+                                       $encoding[] = $parser->encoding;
+                               }
+                       }
+                       $encoding[] = 'UTF-16LE';
+               }
+               // US-ASCII (or superset)
+               elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C")
+               {
+                       if ($pos = strpos($data, "\x3F\x3E"))
+                       {
+                               $parser = $registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5)));
+                               if ($parser->parse())
+                               {
+                                       $encoding[] = $parser->encoding;
+                               }
+                       }
+                       $encoding[] = 'UTF-8';
+               }
+               // Fallback to UTF-8
+               else
+               {
+                       $encoding[] = 'UTF-8';
+               }
+               return $encoding;
+       }
+
+       public static function output_javascript()
+       {
+               if (function_exists('ob_gzhandler'))
+               {
+                       ob_start('ob_gzhandler');
+               }
+               header('Content-type: text/javascript; charset: UTF-8');
+               header('Cache-Control: must-revalidate');
+               header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+               ?>
+function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
+       if (placeholder != '') {
+               document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+       }
+       else {
+               document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+       }
+}
+
+function embed_flash(bgcolor, width, height, link, loop, type) {
+       document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
+}
+
+function embed_flv(width, height, link, placeholder, loop, player) {
+       document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
+}
+
+function embed_wmedia(width, height, link) {
+       document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
+}
+               <?php
+       }
+
+       /**
+        * Get the SimplePie build timestamp
+        *
+        * Uses the git index if it exists, otherwise uses the modification time
+        * of the newest file.
+        */
+       public static function get_build()
+       {
+               $root = dirname(dirname(__FILE__));
+               if (file_exists($root . '/.git/index'))
+               {
+                       return filemtime($root . '/.git/index');
+               }
+               elseif (file_exists($root . '/SimplePie'))
+               {
+                       $time = 0;
+                       foreach (glob($root . '/SimplePie/*.php') as $file)
+                       {
+                               if (($mtime = filemtime($file)) > $time)
+                               {
+                                       $time = $mtime;
+                               }
+                       }
+                       return $time;
+               }
+               elseif (file_exists(dirname(__FILE__) . '/Core.php'))
+               {
+                       return filemtime(dirname(__FILE__) . '/Core.php');
+               }
+               else
+               {
+                       return filemtime(__FILE__);
+               }
+       }
+
+       /**
+        * Format debugging information
+        */
+       public static function debug(&$sp)
+       {
+               $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
+               $info .= 'PHP ' . PHP_VERSION . "\n";
+               if ($sp->error() !== null)
+               {
+                       $info .= 'Error occurred: ' . $sp->error() . "\n";
+               }
+               else
+               {
+                       $info .= "No error found.\n";
+               }
+               $info .= "Extensions:\n";
+               $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
+               foreach ($extensions as $ext)
+               {
+                       if (extension_loaded($ext))
+                       {
+                               $info .= "    $ext loaded\n";
+                               switch ($ext)
+                               {
+                                       case 'pcre':
+                                               $info .= '      Version ' . PCRE_VERSION . "\n";
+                                               break;
+                                       case 'curl':
+                                               $version = curl_version();
+                                               $info .= '      Version ' . $version['version'] . "\n";
+                                               break;
+                                       case 'mbstring':
+                                               $info .= '      Overloading: ' . mb_get_info('func_overload') . "\n";
+                                               break;
+                                       case 'iconv':
+                                               $info .= '      Version ' . ICONV_VERSION . "\n";
+                                               break;
+                                       case 'xml':
+                                               $info .= '      Version ' . LIBXML_DOTTED_VERSION . "\n";
+                                               break;
+                               }
+                       }
+                       else
+                       {
+                               $info .= "    $ext not loaded\n";
+                       }
+               }
+               return $info;
+       }
+
+       public static function silence_errors($num, $str)
+       {
+               // No-op
+       }
+}
+
diff --git a/wp-includes/SimplePie/Net/IPv6.php b/wp-includes/SimplePie/Net/IPv6.php
new file mode 100644 (file)
index 0000000..da80d8a
--- /dev/null
@@ -0,0 +1,276 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Class to validate and to work with IPv6 addresses.
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ * @copyright 2003-2005 The PHP Group
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @link http://pear.php.net/package/Net_IPv6
+ * @author Alexander Merz <alexander.merz@web.de>
+ * @author elfrink at introweb dot nl
+ * @author Josh Peck <jmp at joshpeck dot org>
+ * @author Geoffrey Sneddon <geoffers@gmail.com>
+ */
+class SimplePie_Net_IPv6
+{
+       /**
+        * Uncompresses an IPv6 address
+        *
+        * RFC 4291 allows you to compress concecutive zero pieces in an address to
+        * '::'. This method expects a valid IPv6 address and expands the '::' to
+        * the required number of zero pieces.
+        *
+        * Example:  FF01::101   ->  FF01:0:0:0:0:0:0:101
+        *           ::1         ->  0:0:0:0:0:0:0:1
+        *
+        * @author Alexander Merz <alexander.merz@web.de>
+        * @author elfrink at introweb dot nl
+        * @author Josh Peck <jmp at joshpeck dot org>
+        * @copyright 2003-2005 The PHP Group
+        * @license http://www.opensource.org/licenses/bsd-license.php
+        * @param string $ip An IPv6 address
+        * @return string The uncompressed IPv6 address
+        */
+       public static function uncompress($ip)
+       {
+               $c1 = -1;
+               $c2 = -1;
+               if (substr_count($ip, '::') === 1)
+               {
+                       list($ip1, $ip2) = explode('::', $ip);
+                       if ($ip1 === '')
+                       {
+                               $c1 = -1;
+                       }
+                       else
+                       {
+                               $c1 = substr_count($ip1, ':');
+                       }
+                       if ($ip2 === '')
+                       {
+                               $c2 = -1;
+                       }
+                       else
+                       {
+                               $c2 = substr_count($ip2, ':');
+                       }
+                       if (strpos($ip2, '.') !== false)
+                       {
+                               $c2++;
+                       }
+                       // ::
+                       if ($c1 === -1 && $c2 === -1)
+                       {
+                               $ip = '0:0:0:0:0:0:0:0';
+                       }
+                       // ::xxx
+                       else if ($c1 === -1)
+                       {
+                               $fill = str_repeat('0:', 7 - $c2);
+                               $ip = str_replace('::', $fill, $ip);
+                       }
+                       // xxx::
+                       else if ($c2 === -1)
+                       {
+                               $fill = str_repeat(':0', 7 - $c1);
+                               $ip = str_replace('::', $fill, $ip);
+                       }
+                       // xxx::xxx
+                       else
+                       {
+                               $fill = ':' . str_repeat('0:', 6 - $c2 - $c1);
+                               $ip = str_replace('::', $fill, $ip);
+                       }
+               }
+               return $ip;
+       }
+
+       /**
+        * Compresses an IPv6 address
+        *
+        * RFC 4291 allows you to compress concecutive zero pieces in an address to
+        * '::'. This method expects a valid IPv6 address and compresses consecutive
+        * zero pieces to '::'.
+        *
+        * Example:  FF01:0:0:0:0:0:0:101   ->  FF01::101
+        *           0:0:0:0:0:0:0:1        ->  ::1
+        *
+        * @see uncompress()
+        * @param string $ip An IPv6 address
+        * @return string The compressed IPv6 address
+        */
+       public static function compress($ip)
+       {
+               // Prepare the IP to be compressed
+               $ip = self::uncompress($ip);
+               $ip_parts = self::split_v6_v4($ip);
+
+               // Replace all leading zeros
+               $ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]);
+
+               // Find bunches of zeros
+               if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE))
+               {
+                       $max = 0;
+                       $pos = null;
+                       foreach ($matches[0] as $match)
+                       {
+                               if (strlen($match[0]) > $max)
+                               {
+                                       $max = strlen($match[0]);
+                                       $pos = $match[1];
+                               }
+                       }
+
+                       $ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max);
+               }
+
+               if ($ip_parts[1] !== '')
+               {
+                       return implode(':', $ip_parts);
+               }
+               else
+               {
+                       return $ip_parts[0];
+               }
+       }
+
+       /**
+        * Splits an IPv6 address into the IPv6 and IPv4 representation parts
+        *
+        * RFC 4291 allows you to represent the last two parts of an IPv6 address
+        * using the standard IPv4 representation
+        *
+        * Example:  0:0:0:0:0:0:13.1.68.3
+        *           0:0:0:0:0:FFFF:129.144.52.38
+        *
+        * @param string $ip An IPv6 address
+        * @return array [0] contains the IPv6 represented part, and [1] the IPv4 represented part
+        */
+       private static function split_v6_v4($ip)
+       {
+               if (strpos($ip, '.') !== false)
+               {
+                       $pos = strrpos($ip, ':');
+                       $ipv6_part = substr($ip, 0, $pos);
+                       $ipv4_part = substr($ip, $pos + 1);
+                       return array($ipv6_part, $ipv4_part);
+               }
+               else
+               {
+                       return array($ip, '');
+               }
+       }
+
+       /**
+        * Checks an IPv6 address
+        *
+        * Checks if the given IP is a valid IPv6 address
+        *
+        * @param string $ip An IPv6 address
+        * @return bool true if $ip is a valid IPv6 address
+        */
+       public static function check_ipv6($ip)
+       {
+               $ip = self::uncompress($ip);
+               list($ipv6, $ipv4) = self::split_v6_v4($ip);
+               $ipv6 = explode(':', $ipv6);
+               $ipv4 = explode('.', $ipv4);
+               if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4)
+               {
+                       foreach ($ipv6 as $ipv6_part)
+                       {
+                               // The section can't be empty
+                               if ($ipv6_part === '')
+                                       return false;
+
+                               // Nor can it be over four characters
+                               if (strlen($ipv6_part) > 4)
+                                       return false;
+
+                               // Remove leading zeros (this is safe because of the above)
+                               $ipv6_part = ltrim($ipv6_part, '0');
+                               if ($ipv6_part === '')
+                                       $ipv6_part = '0';
+
+                               // Check the value is valid
+                               $value = hexdec($ipv6_part);
+                               if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF)
+                                       return false;
+                       }
+                       if (count($ipv4) === 4)
+                       {
+                               foreach ($ipv4 as $ipv4_part)
+                               {
+                                       $value = (int) $ipv4_part;
+                                       if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF)
+                                               return false;
+                               }
+                       }
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Checks if the given IP is a valid IPv6 address
+        *
+        * @codeCoverageIgnore
+        * @deprecated Use {@see SimplePie_Net_IPv6::check_ipv6()} instead
+        * @see check_ipv6
+        * @param string $ip An IPv6 address
+        * @return bool true if $ip is a valid IPv6 address
+        */
+       public static function checkIPv6($ip)
+       {
+               return self::check_ipv6($ip);
+       }
+}
diff --git a/wp-includes/SimplePie/Parse/Date.php b/wp-includes/SimplePie/Parse/Date.php
new file mode 100644 (file)
index 0000000..d51f500
--- /dev/null
@@ -0,0 +1,983 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Date Parser
+ *
+ * @package SimplePie
+ * @subpackage Parsing
+ */
+class SimplePie_Parse_Date
+{
+       /**
+        * Input data
+        *
+        * @access protected
+        * @var string
+        */
+       var $date;
+
+       /**
+        * List of days, calendar day name => ordinal day number in the week
+        *
+        * @access protected
+        * @var array
+        */
+       var $day = array(
+               // English
+               'mon' => 1,
+               'monday' => 1,
+               'tue' => 2,
+               'tuesday' => 2,
+               'wed' => 3,
+               'wednesday' => 3,
+               'thu' => 4,
+               'thursday' => 4,
+               'fri' => 5,
+               'friday' => 5,
+               'sat' => 6,
+               'saturday' => 6,
+               'sun' => 7,
+               'sunday' => 7,
+               // Dutch
+               'maandag' => 1,
+               'dinsdag' => 2,
+               'woensdag' => 3,
+               'donderdag' => 4,
+               'vrijdag' => 5,
+               'zaterdag' => 6,
+               'zondag' => 7,
+               // French
+               'lundi' => 1,
+               'mardi' => 2,
+               'mercredi' => 3,
+               'jeudi' => 4,
+               'vendredi' => 5,
+               'samedi' => 6,
+               'dimanche' => 7,
+               // German
+               'montag' => 1,
+               'dienstag' => 2,
+               'mittwoch' => 3,
+               'donnerstag' => 4,
+               'freitag' => 5,
+               'samstag' => 6,
+               'sonnabend' => 6,
+               'sonntag' => 7,
+               // Italian
+               'lunedì' => 1,
+               'martedì' => 2,
+               'mercoledì' => 3,
+               'giovedì' => 4,
+               'venerdì' => 5,
+               'sabato' => 6,
+               'domenica' => 7,
+               // Spanish
+               'lunes' => 1,
+               'martes' => 2,
+               'miércoles' => 3,
+               'jueves' => 4,
+               'viernes' => 5,
+               'sábado' => 6,
+               'domingo' => 7,
+               // Finnish
+               'maanantai' => 1,
+               'tiistai' => 2,
+               'keskiviikko' => 3,
+               'torstai' => 4,
+               'perjantai' => 5,
+               'lauantai' => 6,
+               'sunnuntai' => 7,
+               // Hungarian
+               'hétfő' => 1,
+               'kedd' => 2,
+               'szerda' => 3,
+               'csütörtok' => 4,
+               'péntek' => 5,
+               'szombat' => 6,
+               'vasárnap' => 7,
+               // Greek
+               'Δευ' => 1,
+               'Τρι' => 2,
+               'Τετ' => 3,
+               'Πεμ' => 4,
+               'Παρ' => 5,
+               'Σαβ' => 6,
+               'Κυρ' => 7,
+       );
+
+       /**
+        * List of months, calendar month name => calendar month number
+        *
+        * @access protected
+        * @var array
+        */
+       var $month = array(
+               // English
+               'jan' => 1,
+               'january' => 1,
+               'feb' => 2,
+               'february' => 2,
+               'mar' => 3,
+               'march' => 3,
+               'apr' => 4,
+               'april' => 4,
+               'may' => 5,
+               // No long form of May
+               'jun' => 6,
+               'june' => 6,
+               'jul' => 7,
+               'july' => 7,
+               'aug' => 8,
+               'august' => 8,
+               'sep' => 9,
+               'september' => 8,
+               'oct' => 10,
+               'october' => 10,
+               'nov' => 11,
+               'november' => 11,
+               'dec' => 12,
+               'december' => 12,
+               // Dutch
+               'januari' => 1,
+               'februari' => 2,
+               'maart' => 3,
+               'april' => 4,
+               'mei' => 5,
+               'juni' => 6,
+               'juli' => 7,
+               'augustus' => 8,
+               'september' => 9,
+               'oktober' => 10,
+               'november' => 11,
+               'december' => 12,
+               // French
+               'janvier' => 1,
+               'février' => 2,
+               'mars' => 3,
+               'avril' => 4,
+               'mai' => 5,
+               'juin' => 6,
+               'juillet' => 7,
+               'août' => 8,
+               'septembre' => 9,
+               'octobre' => 10,
+               'novembre' => 11,
+               'décembre' => 12,
+               // German
+               'januar' => 1,
+               'februar' => 2,
+               'märz' => 3,
+               'april' => 4,
+               'mai' => 5,
+               'juni' => 6,
+               'juli' => 7,
+               'august' => 8,
+               'september' => 9,
+               'oktober' => 10,
+               'november' => 11,
+               'dezember' => 12,
+               // Italian
+               'gennaio' => 1,
+               'febbraio' => 2,
+               'marzo' => 3,
+               'aprile' => 4,
+               'maggio' => 5,
+               'giugno' => 6,
+               'luglio' => 7,
+               'agosto' => 8,
+               'settembre' => 9,
+               'ottobre' => 10,
+               'novembre' => 11,
+               'dicembre' => 12,
+               // Spanish
+               'enero' => 1,
+               'febrero' => 2,
+               'marzo' => 3,
+               'abril' => 4,
+               'mayo' => 5,
+               'junio' => 6,
+               'julio' => 7,
+               'agosto' => 8,
+               'septiembre' => 9,
+               'setiembre' => 9,
+               'octubre' => 10,
+               'noviembre' => 11,
+               'diciembre' => 12,
+               // Finnish
+               'tammikuu' => 1,
+               'helmikuu' => 2,
+               'maaliskuu' => 3,
+               'huhtikuu' => 4,
+               'toukokuu' => 5,
+               'kesäkuu' => 6,
+               'heinäkuu' => 7,
+               'elokuu' => 8,
+               'suuskuu' => 9,
+               'lokakuu' => 10,
+               'marras' => 11,
+               'joulukuu' => 12,
+               // Hungarian
+               'január' => 1,
+               'február' => 2,
+               'március' => 3,
+               'április' => 4,
+               'május' => 5,
+               'június' => 6,
+               'július' => 7,
+               'augusztus' => 8,
+               'szeptember' => 9,
+               'október' => 10,
+               'november' => 11,
+               'december' => 12,
+               // Greek
+               'Ιαν' => 1,
+               'Φεβ' => 2,
+               'Μάώ' => 3,
+               'Μαώ' => 3,
+               'Απρ' => 4,
+               'Μάι' => 5,
+               'Μαϊ' => 5,
+               'Μαι' => 5,
+               'Ιούν' => 6,
+               'Ιον' => 6,
+               'Ιούλ' => 7,
+               'Ιολ' => 7,
+               'Αύγ' => 8,
+               'Αυγ' => 8,
+               'Σεπ' => 9,
+               'Οκτ' => 10,
+               'Νοέ' => 11,
+               'Δεκ' => 12,
+       );
+
+       /**
+        * List of timezones, abbreviation => offset from UTC
+        *
+        * @access protected
+        * @var array
+        */
+       var $timezone = array(
+               'ACDT' => 37800,
+               'ACIT' => 28800,
+               'ACST' => 34200,
+               'ACT' => -18000,
+               'ACWDT' => 35100,
+               'ACWST' => 31500,
+               'AEDT' => 39600,
+               'AEST' => 36000,
+               'AFT' => 16200,
+               'AKDT' => -28800,
+               'AKST' => -32400,
+               'AMDT' => 18000,
+               'AMT' => -14400,
+               'ANAST' => 46800,
+               'ANAT' => 43200,
+               'ART' => -10800,
+               'AZOST' => -3600,
+               'AZST' => 18000,
+               'AZT' => 14400,
+               'BIOT' => 21600,
+               'BIT' => -43200,
+               'BOT' => -14400,
+               'BRST' => -7200,
+               'BRT' => -10800,
+               'BST' => 3600,
+               'BTT' => 21600,
+               'CAST' => 18000,
+               'CAT' => 7200,
+               'CCT' => 23400,
+               'CDT' => -18000,
+               'CEDT' => 7200,
+               'CET' => 3600,
+               'CGST' => -7200,
+               'CGT' => -10800,
+               'CHADT' => 49500,
+               'CHAST' => 45900,
+               'CIST' => -28800,
+               'CKT' => -36000,
+               'CLDT' => -10800,
+               'CLST' => -14400,
+               'COT' => -18000,
+               'CST' => -21600,
+               'CVT' => -3600,
+               'CXT' => 25200,
+               'DAVT' => 25200,
+               'DTAT' => 36000,
+               'EADT' => -18000,
+               'EAST' => -21600,
+               'EAT' => 10800,
+               'ECT' => -18000,
+               'EDT' => -14400,
+               'EEST' => 10800,
+               'EET' => 7200,
+               'EGT' => -3600,
+               'EKST' => 21600,
+               'EST' => -18000,
+               'FJT' => 43200,
+               'FKDT' => -10800,
+               'FKST' => -14400,
+               'FNT' => -7200,
+               'GALT' => -21600,
+               'GEDT' => 14400,
+               'GEST' => 10800,
+               'GFT' => -10800,
+               'GILT' => 43200,
+               'GIT' => -32400,
+               'GST' => 14400,
+               'GST' => -7200,
+               'GYT' => -14400,
+               'HAA' => -10800,
+               'HAC' => -18000,
+               'HADT' => -32400,
+               'HAE' => -14400,
+               'HAP' => -25200,
+               'HAR' => -21600,
+               'HAST' => -36000,
+               'HAT' => -9000,
+               'HAY' => -28800,
+               'HKST' => 28800,
+               'HMT' => 18000,
+               'HNA' => -14400,
+               'HNC' => -21600,
+               'HNE' => -18000,
+               'HNP' => -28800,
+               'HNR' => -25200,
+               'HNT' => -12600,
+               'HNY' => -32400,
+               'IRDT' => 16200,
+               'IRKST' => 32400,
+               'IRKT' => 28800,
+               'IRST' => 12600,
+               'JFDT' => -10800,
+               'JFST' => -14400,
+               'JST' => 32400,
+               'KGST' => 21600,
+               'KGT' => 18000,
+               'KOST' => 39600,
+               'KOVST' => 28800,
+               'KOVT' => 25200,
+               'KRAST' => 28800,
+               'KRAT' => 25200,
+               'KST' => 32400,
+               'LHDT' => 39600,
+               'LHST' => 37800,
+               'LINT' => 50400,
+               'LKT' => 21600,
+               'MAGST' => 43200,
+               'MAGT' => 39600,
+               'MAWT' => 21600,
+               'MDT' => -21600,
+               'MESZ' => 7200,
+               'MEZ' => 3600,
+               'MHT' => 43200,
+               'MIT' => -34200,
+               'MNST' => 32400,
+               'MSDT' => 14400,
+               'MSST' => 10800,
+               'MST' => -25200,
+               'MUT' => 14400,
+               'MVT' => 18000,
+               'MYT' => 28800,
+               'NCT' => 39600,
+               'NDT' => -9000,
+               'NFT' => 41400,
+               'NMIT' => 36000,
+               'NOVST' => 25200,
+               'NOVT' => 21600,
+               'NPT' => 20700,
+               'NRT' => 43200,
+               'NST' => -12600,
+               'NUT' => -39600,
+               'NZDT' => 46800,
+               'NZST' => 43200,
+               'OMSST' => 25200,
+               'OMST' => 21600,
+               'PDT' => -25200,
+               'PET' => -18000,
+               'PETST' => 46800,
+               'PETT' => 43200,
+               'PGT' => 36000,
+               'PHOT' => 46800,
+               'PHT' => 28800,
+               'PKT' => 18000,
+               'PMDT' => -7200,
+               'PMST' => -10800,
+               'PONT' => 39600,
+               'PST' => -28800,
+               'PWT' => 32400,
+               'PYST' => -10800,
+               'PYT' => -14400,
+               'RET' => 14400,
+               'ROTT' => -10800,
+               'SAMST' => 18000,
+               'SAMT' => 14400,
+               'SAST' => 7200,
+               'SBT' => 39600,
+               'SCDT' => 46800,
+               'SCST' => 43200,
+               'SCT' => 14400,
+               'SEST' => 3600,
+               'SGT' => 28800,
+               'SIT' => 28800,
+               'SRT' => -10800,
+               'SST' => -39600,
+               'SYST' => 10800,
+               'SYT' => 7200,
+               'TFT' => 18000,
+               'THAT' => -36000,
+               'TJT' => 18000,
+               'TKT' => -36000,
+               'TMT' => 18000,
+               'TOT' => 46800,
+               'TPT' => 32400,
+               'TRUT' => 36000,
+               'TVT' => 43200,
+               'TWT' => 28800,
+               'UYST' => -7200,
+               'UYT' => -10800,
+               'UZT' => 18000,
+               'VET' => -14400,
+               'VLAST' => 39600,
+               'VLAT' => 36000,
+               'VOST' => 21600,
+               'VUT' => 39600,
+               'WAST' => 7200,
+               'WAT' => 3600,
+               'WDT' => 32400,
+               'WEST' => 3600,
+               'WFT' => 43200,
+               'WIB' => 25200,
+               'WIT' => 32400,
+               'WITA' => 28800,
+               'WKST' => 18000,
+               'WST' => 28800,
+               'YAKST' => 36000,
+               'YAKT' => 32400,
+               'YAPT' => 36000,
+               'YEKST' => 21600,
+               'YEKT' => 18000,
+       );
+
+       /**
+        * Cached PCRE for SimplePie_Parse_Date::$day
+        *
+        * @access protected
+        * @var string
+        */
+       var $day_pcre;
+
+       /**
+        * Cached PCRE for SimplePie_Parse_Date::$month
+        *
+        * @access protected
+        * @var string
+        */
+       var $month_pcre;
+
+       /**
+        * Array of user-added callback methods
+        *
+        * @access private
+        * @var array
+        */
+       var $built_in = array();
+
+       /**
+        * Array of user-added callback methods
+        *
+        * @access private
+        * @var array
+        */
+       var $user = array();
+
+       /**
+        * Create new SimplePie_Parse_Date object, and set self::day_pcre,
+        * self::month_pcre, and self::built_in
+        *
+        * @access private
+        */
+       public function __construct()
+       {
+               $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
+               $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
+
+               static $cache;
+               if (!isset($cache[get_class($this)]))
+               {
+                       $all_methods = get_class_methods($this);
+
+                       foreach ($all_methods as $method)
+                       {
+                               if (strtolower(substr($method, 0, 5)) === 'date_')
+                               {
+                                       $cache[get_class($this)][] = $method;
+                               }
+                       }
+               }
+
+               foreach ($cache[get_class($this)] as $method)
+               {
+                       $this->built_in[] = $method;
+               }
+       }
+
+       /**
+        * Get the object
+        *
+        * @access public
+        */
+       public static function get()
+       {
+               static $object;
+               if (!$object)
+               {
+                       $object = new SimplePie_Parse_Date;
+               }
+               return $object;
+       }
+
+       /**
+        * Parse a date
+        *
+        * @final
+        * @access public
+        * @param string $date Date to parse
+        * @return int Timestamp corresponding to date string, or false on failure
+        */
+       public function parse($date)
+       {
+               foreach ($this->user as $method)
+               {
+                       if (($returned = call_user_func($method, $date)) !== false)
+                       {
+                               return $returned;
+                       }
+               }
+
+               foreach ($this->built_in as $method)
+               {
+                       if (($returned = call_user_func(array($this, $method), $date)) !== false)
+                       {
+                               return $returned;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Add a callback method to parse a date
+        *
+        * @final
+        * @access public
+        * @param callback $callback
+        */
+       public function add_callback($callback)
+       {
+               if (is_callable($callback))
+               {
+                       $this->user[] = $callback;
+               }
+               else
+               {
+                       trigger_error('User-supplied function must be a valid callback', E_USER_WARNING);
+               }
+       }
+
+       /**
+        * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
+        * well as allowing any of upper or lower case "T", horizontal tabs, or
+        * spaces to be used as the time seperator (including more than one))
+        *
+        * @access protected
+        * @return int Timestamp
+        */
+       public function date_w3cdtf($date)
+       {
+               static $pcre;
+               if (!$pcre)
+               {
+                       $year = '([0-9]{4})';
+                       $month = $day = $hour = $minute = $second = '([0-9]{2})';
+                       $decimal = '([0-9]*)';
+                       $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
+                       $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
+               }
+               if (preg_match($pcre, $date, $match))
+               {
+                       /*
+                       Capturing subpatterns:
+                       1: Year
+                       2: Month
+                       3: Day
+                       4: Hour
+                       5: Minute
+                       6: Second
+                       7: Decimal fraction of a second
+                       8: Zulu
+                       9: Timezone ±
+                       10: Timezone hours
+                       11: Timezone minutes
+                       */
+
+                       // Fill in empty matches
+                       for ($i = count($match); $i <= 3; $i++)
+                       {
+                               $match[$i] = '1';
+                       }
+
+                       for ($i = count($match); $i <= 7; $i++)
+                       {
+                               $match[$i] = '0';
+                       }
+
+                       // Numeric timezone
+                       if (isset($match[9]) && $match[9] !== '')
+                       {
+                               $timezone = $match[10] * 3600;
+                               $timezone += $match[11] * 60;
+                               if ($match[9] === '-')
+                               {
+                                       $timezone = 0 - $timezone;
+                               }
+                       }
+                       else
+                       {
+                               $timezone = 0;
+                       }
+
+                       // Convert the number of seconds to an integer, taking decimals into account
+                       $second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
+
+                       return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Remove RFC822 comments
+        *
+        * @access protected
+        * @param string $data Data to strip comments from
+        * @return string Comment stripped string
+        */
+       public function remove_rfc2822_comments($string)
+       {
+               $string = (string) $string;
+               $position = 0;
+               $length = strlen($string);
+               $depth = 0;
+
+               $output = '';
+
+               while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+               {
+                       $output .= substr($string, $position, $pos - $position);
+                       $position = $pos + 1;
+                       if ($string[$pos - 1] !== '\\')
+                       {
+                               $depth++;
+                               while ($depth && $position < $length)
+                               {
+                                       $position += strcspn($string, '()', $position);
+                                       if ($string[$position - 1] === '\\')
+                                       {
+                                               $position++;
+                                               continue;
+                                       }
+                                       elseif (isset($string[$position]))
+                                       {
+                                               switch ($string[$position])
+                                               {
+                                                       case '(':
+                                                               $depth++;
+                                                               break;
+
+                                                       case ')':
+                                                               $depth--;
+                                                               break;
+                                               }
+                                               $position++;
+                                       }
+                                       else
+                                       {
+                                               break;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $output .= '(';
+                       }
+               }
+               $output .= substr($string, $position);
+
+               return $output;
+       }
+
+       /**
+        * Parse RFC2822's date format
+        *
+        * @access protected
+        * @return int Timestamp
+        */
+       public function date_rfc2822($date)
+       {
+               static $pcre;
+               if (!$pcre)
+               {
+                       $wsp = '[\x09\x20]';
+                       $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
+                       $optional_fws = $fws . '?';
+                       $day_name = $this->day_pcre;
+                       $month = $this->month_pcre;
+                       $day = '([0-9]{1,2})';
+                       $hour = $minute = $second = '([0-9]{2})';
+                       $year = '([0-9]{2,4})';
+                       $num_zone = '([+\-])([0-9]{2})([0-9]{2})';
+                       $character_zone = '([A-Z]{1,5})';
+                       $zone = '(?:' . $num_zone . '|' . $character_zone . ')';
+                       $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
+               }
+               if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))
+               {
+                       /*
+                       Capturing subpatterns:
+                       1: Day name
+                       2: Day
+                       3: Month
+                       4: Year
+                       5: Hour
+                       6: Minute
+                       7: Second
+                       8: Timezone ±
+                       9: Timezone hours
+                       10: Timezone minutes
+                       11: Alphabetic timezone
+                       */
+
+                       // Find the month number
+                       $month = $this->month[strtolower($match[3])];
+
+                       // Numeric timezone
+                       if ($match[8] !== '')
+                       {
+                               $timezone = $match[9] * 3600;
+                               $timezone += $match[10] * 60;
+                               if ($match[8] === '-')
+                               {
+                                       $timezone = 0 - $timezone;
+                               }
+                       }
+                       // Character timezone
+                       elseif (isset($this->timezone[strtoupper($match[11])]))
+                       {
+                               $timezone = $this->timezone[strtoupper($match[11])];
+                       }
+                       // Assume everything else to be -0000
+                       else
+                       {
+                               $timezone = 0;
+                       }
+
+                       // Deal with 2/3 digit years
+                       if ($match[4] < 50)
+                       {
+                               $match[4] += 2000;
+                       }
+                       elseif ($match[4] < 1000)
+                       {
+                               $match[4] += 1900;
+                       }
+
+                       // Second is optional, if it is empty set it to zero
+                       if ($match[7] !== '')
+                       {
+                               $second = $match[7];
+                       }
+                       else
+                       {
+                               $second = 0;
+                       }
+
+                       return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Parse RFC850's date format
+        *
+        * @access protected
+        * @return int Timestamp
+        */
+       public function date_rfc850($date)
+       {
+               static $pcre;
+               if (!$pcre)
+               {
+                       $space = '[\x09\x20]+';
+                       $day_name = $this->day_pcre;
+                       $month = $this->month_pcre;
+                       $day = '([0-9]{1,2})';
+                       $year = $hour = $minute = $second = '([0-9]{2})';
+                       $zone = '([A-Z]{1,5})';
+                       $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
+               }
+               if (preg_match($pcre, $date, $match))
+               {
+                       /*
+                       Capturing subpatterns:
+                       1: Day name
+                       2: Day
+                       3: Month
+                       4: Year
+                       5: Hour
+                       6: Minute
+                       7: Second
+                       8: Timezone
+                       */
+
+                       // Month
+                       $month = $this->month[strtolower($match[3])];
+
+                       // Character timezone
+                       if (isset($this->timezone[strtoupper($match[8])]))
+                       {
+                               $timezone = $this->timezone[strtoupper($match[8])];
+                       }
+                       // Assume everything else to be -0000
+                       else
+                       {
+                               $timezone = 0;
+                       }
+
+                       // Deal with 2 digit year
+                       if ($match[4] < 50)
+                       {
+                               $match[4] += 2000;
+                       }
+                       else
+                       {
+                               $match[4] += 1900;
+                       }
+
+                       return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Parse C99's asctime()'s date format
+        *
+        * @access protected
+        * @return int Timestamp
+        */
+       public function date_asctime($date)
+       {
+               static $pcre;
+               if (!$pcre)
+               {
+                       $space = '[\x09\x20]+';
+                       $wday_name = $this->day_pcre;
+                       $mon_name = $this->month_pcre;
+                       $day = '([0-9]{1,2})';
+                       $hour = $sec = $min = '([0-9]{2})';
+                       $year = '([0-9]{4})';
+                       $terminator = '\x0A?\x00?';
+                       $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
+               }
+               if (preg_match($pcre, $date, $match))
+               {
+                       /*
+                       Capturing subpatterns:
+                       1: Day name
+                       2: Month
+                       3: Day
+                       4: Hour
+                       5: Minute
+                       6: Second
+                       7: Year
+                       */
+
+                       $month = $this->month[strtolower($match[2])];
+                       return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
+               }
+               else
+               {
+                       return false;
+               }
+       }
+
+       /**
+        * Parse dates using strtotime()
+        *
+        * @access protected
+        * @return int Timestamp
+        */
+       public function date_strtotime($date)
+       {
+               $strtotime = strtotime($date);
+               if ($strtotime === -1 || $strtotime === false)
+               {
+                       return false;
+               }
+               else
+               {
+                       return $strtotime;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/Parser.php b/wp-includes/SimplePie/Parser.php
new file mode 100644 (file)
index 0000000..d698552
--- /dev/null
@@ -0,0 +1,407 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Parses XML into something sane
+ *
+ *
+ * This class can be overloaded with {@see SimplePie::set_parser_class()}
+ *
+ * @package SimplePie
+ * @subpackage Parsing
+ */
+class SimplePie_Parser
+{
+       var $error_code;
+       var $error_string;
+       var $current_line;
+       var $current_column;
+       var $current_byte;
+       var $separator = ' ';
+       var $namespace = array('');
+       var $element = array('');
+       var $xml_base = array('');
+       var $xml_base_explicit = array(false);
+       var $xml_lang = array('');
+       var $data = array();
+       var $datas = array(array());
+       var $current_xhtml_construct = -1;
+       var $encoding;
+       protected $registry;
+
+       public function set_registry(SimplePie_Registry $registry)
+       {
+               $this->registry = $registry;
+       }
+
+       public function parse(&$data, $encoding)
+       {
+               // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
+               if (strtoupper($encoding) === 'US-ASCII')
+               {
+                       $this->encoding = 'UTF-8';
+               }
+               else
+               {
+                       $this->encoding = $encoding;
+               }
+
+               // Strip BOM:
+               // UTF-32 Big Endian BOM
+               if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+               {
+                       $data = substr($data, 4);
+               }
+               // UTF-32 Little Endian BOM
+               elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+               {
+                       $data = substr($data, 4);
+               }
+               // UTF-16 Big Endian BOM
+               elseif (substr($data, 0, 2) === "\xFE\xFF")
+               {
+                       $data = substr($data, 2);
+               }
+               // UTF-16 Little Endian BOM
+               elseif (substr($data, 0, 2) === "\xFF\xFE")
+               {
+                       $data = substr($data, 2);
+               }
+               // UTF-8 BOM
+               elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+               {
+                       $data = substr($data, 3);
+               }
+
+               if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
+               {
+                       $declaration = $this->registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5)));
+                       if ($declaration->parse())
+                       {
+                               $data = substr($data, $pos + 2);
+                               $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
+                       }
+                       else
+                       {
+                               $this->error_string = 'SimplePie bug! Please report this!';
+                               return false;
+                       }
+               }
+
+               $return = true;
+
+               static $xml_is_sane = null;
+               if ($xml_is_sane === null)
+               {
+                       $parser_check = xml_parser_create();
+                       xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
+                       xml_parser_free($parser_check);
+                       $xml_is_sane = isset($values[0]['value']);
+               }
+
+               // Create the parser
+               if ($xml_is_sane)
+               {
+                       $xml = xml_parser_create_ns($this->encoding, $this->separator);
+                       xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
+                       xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
+                       xml_set_object($xml, $this);
+                       xml_set_character_data_handler($xml, 'cdata');
+                       xml_set_element_handler($xml, 'tag_open', 'tag_close');
+
+                       // Parse!
+                       if (!xml_parse($xml, $data, true))
+                       {
+                               $this->error_code = xml_get_error_code($xml);
+                               $this->error_string = xml_error_string($this->error_code);
+                               $return = false;
+                       }
+                       $this->current_line = xml_get_current_line_number($xml);
+                       $this->current_column = xml_get_current_column_number($xml);
+                       $this->current_byte = xml_get_current_byte_index($xml);
+                       xml_parser_free($xml);
+                       return $return;
+               }
+               else
+               {
+                       libxml_clear_errors();
+                       $xml = new XMLReader();
+                       $xml->xml($data);
+                       while (@$xml->read())
+                       {
+                               switch ($xml->nodeType)
+                               {
+
+                                       case constant('XMLReader::END_ELEMENT'):
+                                               if ($xml->namespaceURI !== '')
+                                               {
+                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
+                                               }
+                                               else
+                                               {
+                                                       $tagName = $xml->localName;
+                                               }
+                                               $this->tag_close(null, $tagName);
+                                               break;
+                                       case constant('XMLReader::ELEMENT'):
+                                               $empty = $xml->isEmptyElement;
+                                               if ($xml->namespaceURI !== '')
+                                               {
+                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
+                                               }
+                                               else
+                                               {
+                                                       $tagName = $xml->localName;
+                                               }
+                                               $attributes = array();
+                                               while ($xml->moveToNextAttribute())
+                                               {
+                                                       if ($xml->namespaceURI !== '')
+                                                       {
+                                                               $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
+                                                       }
+                                                       else
+                                                       {
+                                                               $attrName = $xml->localName;
+                                                       }
+                                                       $attributes[$attrName] = $xml->value;
+                                               }
+                                               $this->tag_open(null, $tagName, $attributes);
+                                               if ($empty)
+                                               {
+                                                       $this->tag_close(null, $tagName);
+                                               }
+                                               break;
+                                       case constant('XMLReader::TEXT'):
+
+                                       case constant('XMLReader::CDATA'):
+                                               $this->cdata(null, $xml->value);
+                                               break;
+                               }
+                       }
+                       if ($error = libxml_get_last_error())
+                       {
+                               $this->error_code = $error->code;
+                               $this->error_string = $error->message;
+                               $this->current_line = $error->line;
+                               $this->current_column = $error->column;
+                               return false;
+                       }
+                       else
+                       {
+                               return true;
+                       }
+               }
+       }
+
+       public function get_error_code()
+       {
+               return $this->error_code;
+       }
+
+       public function get_error_string()
+       {
+               return $this->error_string;
+       }
+
+       public function get_current_line()
+       {
+               return $this->current_line;
+       }
+
+       public function get_current_column()
+       {
+               return $this->current_column;
+       }
+
+       public function get_current_byte()
+       {
+               return $this->current_byte;
+       }
+
+       public function get_data()
+       {
+               return $this->data;
+       }
+
+       public function tag_open($parser, $tag, $attributes)
+       {
+               list($this->namespace[], $this->element[]) = $this->split_ns($tag);
+
+               $attribs = array();
+               foreach ($attributes as $name => $value)
+               {
+                       list($attrib_namespace, $attribute) = $this->split_ns($name);
+                       $attribs[$attrib_namespace][$attribute] = $value;
+               }
+
+               if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
+               {
+                       $base = $this->registry->call('Misc', 'absolutize_url', array($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base)));
+                       if ($base !== false)
+                       {
+                               $this->xml_base[] = $base;
+                               $this->xml_base_explicit[] = true;
+                       }
+               }
+               else
+               {
+                       $this->xml_base[] = end($this->xml_base);
+                       $this->xml_base_explicit[] = end($this->xml_base_explicit);
+               }
+
+               if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
+               {
+                       $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
+               }
+               else
+               {
+                       $this->xml_lang[] = end($this->xml_lang);
+               }
+
+               if ($this->current_xhtml_construct >= 0)
+               {
+                       $this->current_xhtml_construct++;
+                       if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML)
+                       {
+                               $this->data['data'] .= '<' . end($this->element);
+                               if (isset($attribs['']))
+                               {
+                                       foreach ($attribs[''] as $name => $value)
+                                       {
+                                               $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
+                                       }
+                               }
+                               $this->data['data'] .= '>';
+                       }
+               }
+               else
+               {
+                       $this->datas[] =& $this->data;
+                       $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+                       $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
+                       if ((end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml')
+                       || (end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml')
+                       || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_20 && in_array(end($this->element), array('title')))
+                       || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_090 && in_array(end($this->element), array('title')))
+                       || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_10 && in_array(end($this->element), array('title'))))
+                       {
+                               $this->current_xhtml_construct = 0;
+                       }
+               }
+       }
+
+       public function cdata($parser, $cdata)
+       {
+               if ($this->current_xhtml_construct >= 0)
+               {
+                       $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
+               }
+               else
+               {
+                       $this->data['data'] .= $cdata;
+               }
+       }
+
+       public function tag_close($parser, $tag)
+       {
+               if ($this->current_xhtml_construct >= 0)
+               {
+                       $this->current_xhtml_construct--;
+                       if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
+                       {
+                               $this->data['data'] .= '</' . end($this->element) . '>';
+                       }
+               }
+               if ($this->current_xhtml_construct === -1)
+               {
+                       $this->data =& $this->datas[count($this->datas) - 1];
+                       array_pop($this->datas);
+               }
+
+               array_pop($this->element);
+               array_pop($this->namespace);
+               array_pop($this->xml_base);
+               array_pop($this->xml_base_explicit);
+               array_pop($this->xml_lang);
+       }
+
+       public function split_ns($string)
+       {
+               static $cache = array();
+               if (!isset($cache[$string]))
+               {
+                       if ($pos = strpos($string, $this->separator))
+                       {
+                               static $separator_length;
+                               if (!$separator_length)
+                               {
+                                       $separator_length = strlen($this->separator);
+                               }
+                               $namespace = substr($string, 0, $pos);
+                               $local_name = substr($string, $pos + $separator_length);
+                               if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES)
+                               {
+                                       $namespace = SIMPLEPIE_NAMESPACE_ITUNES;
+                               }
+
+                               // Normalize the Media RSS namespaces
+                               if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG ||
+                                       $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2 ||
+                                       $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3 ||
+                                       $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4 ||
+                                       $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5 )
+                               {
+                                       $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS;
+                               }
+                               $cache[$string] = array($namespace, $local_name);
+                       }
+                       else
+                       {
+                               $cache[$string] = array('', $string);
+                       }
+               }
+               return $cache[$string];
+       }
+}
diff --git a/wp-includes/SimplePie/Rating.php b/wp-includes/SimplePie/Rating.php
new file mode 100644 (file)
index 0000000..8689e5d
--- /dev/null
@@ -0,0 +1,129 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles `<media:rating>` or `<itunes:explicit>` tags as defined in Media RSS and iTunes RSS respectively
+ *
+ * Used by {@see SimplePie_Enclosure::get_rating()} and {@see SimplePie_Enclosure::get_ratings()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_rating_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Rating
+{
+       /**
+        * Rating scheme
+        *
+        * @var string
+        * @see get_scheme()
+        */
+       var $scheme;
+
+       /**
+        * Rating value
+        *
+        * @var string
+        * @see get_value()
+        */
+       var $value;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        */
+       public function __construct($scheme = null, $value = null)
+       {
+               $this->scheme = $scheme;
+               $this->value = $value;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the organizational scheme for the rating
+        *
+        * @return string|null
+        */
+       public function get_scheme()
+       {
+               if ($this->scheme !== null)
+               {
+                       return $this->scheme;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the value of the rating
+        *
+        * @return string|null
+        */
+       public function get_value()
+       {
+               if ($this->value !== null)
+               {
+                       return $this->value;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/Registry.php b/wp-includes/SimplePie/Registry.php
new file mode 100644 (file)
index 0000000..1072cde
--- /dev/null
@@ -0,0 +1,225 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles creating objects and calling methods
+ *
+ * Access this via {@see SimplePie::get_registry()}
+ *
+ * @package SimplePie
+ */
+class SimplePie_Registry
+{
+       /**
+        * Default class mapping
+        *
+        * Overriding classes *must* subclass these.
+        *
+        * @var array
+        */
+       protected $default = array(
+               'Cache' => 'SimplePie_Cache',
+               'Locator' => 'SimplePie_Locator',
+               'Parser' => 'SimplePie_Parser',
+               'File' => 'SimplePie_File',
+               'Sanitize' => 'SimplePie_Sanitize',
+               'Item' => 'SimplePie_Item',
+               'Author' => 'SimplePie_Author',
+               'Category' => 'SimplePie_Category',
+               'Enclosure' => 'SimplePie_Enclosure',
+               'Caption' => 'SimplePie_Caption',
+               'Copyright' => 'SimplePie_Copyright',
+               'Credit' => 'SimplePie_Credit',
+               'Rating' => 'SimplePie_Rating',
+               'Restriction' => 'SimplePie_Restriction',
+               'Content_Type_Sniffer' => 'SimplePie_Content_Type_Sniffer',
+               'Source' => 'SimplePie_Source',
+               'Misc' => 'SimplePie_Misc',
+               'XML_Declaration_Parser' => 'SimplePie_XML_Declaration_Parser',
+               'Parse_Date' => 'SimplePie_Parse_Date',
+       );
+
+       /**
+        * Class mapping
+        *
+        * @see register()
+        * @var array
+        */
+       protected $classes = array();
+
+       /**
+        * Legacy classes
+        *
+        * @see register()
+        * @var array
+        */
+       protected $legacy = array();
+
+       /**
+        * Constructor
+        *
+        * No-op
+        */
+       public function __construct() { }
+
+       /**
+        * Register a class
+        *
+        * @param string $type See {@see $default} for names
+        * @param string $class Class name, must subclass the corresponding default
+        * @param bool $legacy Whether to enable legacy support for this class
+        * @return bool Successfulness
+        */
+       public function register($type, $class, $legacy = false)
+       {
+               if (!is_subclass_of($class, $this->default[$type]))
+               {
+                       return false;
+               }
+
+               $this->classes[$type] = $class;
+
+               if ($legacy)
+               {
+                       $this->legacy[] = $class;
+               }
+
+               return true;
+       }
+
+       /**
+        * Get the class registered for a type
+        *
+        * Where possible, use {@see create()} or {@see call()} instead
+        *
+        * @param string $type
+        * @return string|null
+        */
+       public function get_class($type)
+       {
+               if (!empty($this->classes[$type]))
+               {
+                       return $this->classes[$type];
+               }
+               if (!empty($this->default[$type]))
+               {
+                       return $this->default[$type];
+               }
+
+               return null;
+       }
+
+       /**
+        * Create a new instance of a given type
+        *
+        * @param string $type
+        * @param array $parameters Parameters to pass to the constructor
+        * @return object Instance of class
+        */
+       public function &create($type, $parameters = array())
+       {
+               $class = $this->get_class($type);
+
+               if (in_array($class, $this->legacy))
+               {
+                       switch ($type)
+                       {
+                               case 'locator':
+                                       // Legacy: file, timeout, useragent, file_class, max_checked_feeds, content_type_sniffer_class
+                                       // Specified: file, timeout, useragent, max_checked_feeds
+                                       $replacement = array($this->get_class('file'), $parameters[3], $this->get_class('content_type_sniffer'));
+                                       array_splice($parameters, 3, 1, $replacement);
+                                       break;
+                       }
+               }
+
+               if (!method_exists($class, '__construct'))
+               {
+                       $instance = new $class;
+               }
+               else
+               {
+                       $reflector = new ReflectionClass($class);
+                       $instance = $reflector->newInstanceArgs($parameters);
+               }
+
+               if (method_exists($instance, 'set_registry'))
+               {
+                       $instance->set_registry($this);
+               }
+               return $instance;
+       }
+
+       /**
+        * Call a static method for a type
+        *
+        * @param string $type
+        * @param string $method
+        * @param array $parameters
+        * @return mixed
+        */
+       public function &call($type, $method, $parameters = array())
+       {
+               $class = $this->get_class($type);
+
+               if (in_array($class, $this->legacy))
+               {
+                       switch ($type)
+                       {
+                               case 'Cache':
+                                       // For backwards compatibility with old non-static
+                                       // Cache::create() methods
+                                       if ($method === 'get_handler')
+                                       {
+                                               $result = @call_user_func_array(array($class, 'create'), $parameters);
+                                               return $result;
+                                       }
+                                       break;
+                       }
+               }
+
+               $result = call_user_func_array(array($class, $method), $parameters);
+               return $result;
+       }
+}
\ No newline at end of file
diff --git a/wp-includes/SimplePie/Restriction.php b/wp-includes/SimplePie/Restriction.php
new file mode 100644 (file)
index 0000000..4ba371b
--- /dev/null
@@ -0,0 +1,155 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles `<media:restriction>` as defined in Media RSS
+ *
+ * Used by {@see SimplePie_Enclosure::get_restriction()} and {@see SimplePie_Enclosure::get_restrictions()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_restriction_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Restriction
+{
+       /**
+        * Relationship ('allow'/'deny')
+        *
+        * @var string
+        * @see get_relationship()
+        */
+       var $relationship;
+
+       /**
+        * Type of restriction
+        *
+        * @var string
+        * @see get_type()
+        */
+       var $type;
+
+       /**
+        * Restricted values
+        *
+        * @var string
+        * @see get_value()
+        */
+       var $value;
+
+       /**
+        * Constructor, used to input the data
+        *
+        * For documentation on all the parameters, see the corresponding
+        * properties and their accessors
+        */
+       public function __construct($relationship = null, $type = null, $value = null)
+       {
+               $this->relationship = $relationship;
+               $this->type = $type;
+               $this->value = $value;
+       }
+
+       /**
+        * String-ified version
+        *
+        * @return string
+        */
+       public function __toString()
+       {
+               // There is no $this->data here
+               return md5(serialize($this));
+       }
+
+       /**
+        * Get the relationship
+        *
+        * @return string|null Either 'allow' or 'deny'
+        */
+       public function get_relationship()
+       {
+               if ($this->relationship !== null)
+               {
+                       return $this->relationship;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the type
+        *
+        * @return string|null
+        */
+       public function get_type()
+       {
+               if ($this->type !== null)
+               {
+                       return $this->type;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Get the list of restricted things
+        *
+        * @return string|null
+        */
+       public function get_value()
+       {
+               if ($this->value !== null)
+               {
+                       return $this->value;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/Sanitize.php b/wp-includes/SimplePie/Sanitize.php
new file mode 100644 (file)
index 0000000..442e8e2
--- /dev/null
@@ -0,0 +1,554 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Used for data cleanup and post-processing
+ *
+ *
+ * This class can be overloaded with {@see SimplePie::set_sanitize_class()}
+ *
+ * @package SimplePie
+ * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
+ */
+class SimplePie_Sanitize
+{
+       // Private vars
+       var $base;
+
+       // Options
+       var $remove_div = true;
+       var $image_handler = '';
+       var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+       var $encode_instead_of_strip = false;
+       var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+       var $strip_comments = false;
+       var $output_encoding = 'UTF-8';
+       var $enable_cache = true;
+       var $cache_location = './cache';
+       var $cache_name_function = 'md5';
+       var $timeout = 10;
+       var $useragent = '';
+       var $force_fsockopen = false;
+       var $replace_url_attributes = null;
+
+       public function __construct()
+       {
+               // Set defaults
+               $this->set_url_replacements(null);
+       }
+
+       public function remove_div($enable = true)
+       {
+               $this->remove_div = (bool) $enable;
+       }
+
+       public function set_image_handler($page = false)
+       {
+               if ($page)
+               {
+                       $this->image_handler = (string) $page;
+               }
+               else
+               {
+                       $this->image_handler = false;
+               }
+       }
+
+       public function set_registry(SimplePie_Registry $registry)
+       {
+               $this->registry = $registry;
+       }
+
+       public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
+       {
+               if (isset($enable_cache))
+               {
+                       $this->enable_cache = (bool) $enable_cache;
+               }
+
+               if ($cache_location)
+               {
+                       $this->cache_location = (string) $cache_location;
+               }
+
+               if ($cache_name_function)
+               {
+                       $this->cache_name_function = (string) $cache_name_function;
+               }
+       }
+
+       public function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
+       {
+               if ($timeout)
+               {
+                       $this->timeout = (string) $timeout;
+               }
+
+               if ($useragent)
+               {
+                       $this->useragent = (string) $useragent;
+               }
+
+               if ($force_fsockopen)
+               {
+                       $this->force_fsockopen = (string) $force_fsockopen;
+               }
+       }
+
+       public function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
+       {
+               if ($tags)
+               {
+                       if (is_array($tags))
+                       {
+                               $this->strip_htmltags = $tags;
+                       }
+                       else
+                       {
+                               $this->strip_htmltags = explode(',', $tags);
+                       }
+               }
+               else
+               {
+                       $this->strip_htmltags = false;
+               }
+       }
+
+       public function encode_instead_of_strip($encode = false)
+       {
+               $this->encode_instead_of_strip = (bool) $encode;
+       }
+
+       public function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
+       {
+               if ($attribs)
+               {
+                       if (is_array($attribs))
+                       {
+                               $this->strip_attributes = $attribs;
+                       }
+                       else
+                       {
+                               $this->strip_attributes = explode(',', $attribs);
+                       }
+               }
+               else
+               {
+                       $this->strip_attributes = false;
+               }
+       }
+
+       public function strip_comments($strip = false)
+       {
+               $this->strip_comments = (bool) $strip;
+       }
+
+       public function set_output_encoding($encoding = 'UTF-8')
+       {
+               $this->output_encoding = (string) $encoding;
+       }
+
+       /**
+        * Set element/attribute key/value pairs of HTML attributes
+        * containing URLs that need to be resolved relative to the feed
+        *
+        * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
+        * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
+        * |q|@cite
+        *
+        * @since 1.0
+        * @param array|null $element_attribute Element/attribute key/value pairs, null for default
+        */
+       public function set_url_replacements($element_attribute = null)
+       {
+               if ($element_attribute === null)
+               {
+                       $element_attribute = array(
+                               'a' => 'href',
+                               'area' => 'href',
+                               'blockquote' => 'cite',
+                               'del' => 'cite',
+                               'form' => 'action',
+                               'img' => array(
+                                       'longdesc',
+                                       'src'
+                               ),
+                               'input' => 'src',
+                               'ins' => 'cite',
+                               'q' => 'cite'
+                       );
+               }
+               $this->replace_url_attributes = (array) $element_attribute;
+       }
+
+       public function sanitize($data, $type, $base = '')
+       {
+               $data = trim($data);
+               if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
+               {
+                       if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
+                       {
+                               if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
+                               {
+                                       $type |= SIMPLEPIE_CONSTRUCT_HTML;
+                               }
+                               else
+                               {
+                                       $type |= SIMPLEPIE_CONSTRUCT_TEXT;
+                               }
+                       }
+
+                       if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
+                       {
+                               $data = base64_decode($data);
+                       }
+
+                       if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
+                       {
+
+                               if (!class_exists('DOMDocument'))
+                               {
+                                       $this->registry->call('Misc', 'error', array('DOMDocument not found, unable to use sanitizer', E_USER_WARNING, __FILE__, __LINE__));
+                                       return '';
+                               }
+                               $document = new DOMDocument();
+                               $document->encoding = 'UTF-8';
+                               $data = $this->preprocess($data, $type);
+
+                               set_error_handler(array('SimplePie_Misc', 'silence_errors'));
+                               $document->loadHTML($data);
+                               restore_error_handler();
+
+                               // Strip comments
+                               if ($this->strip_comments)
+                               {
+                                       $xpath = new DOMXPath($document);
+                                       $comments = $xpath->query('//comment()');
+
+                                       foreach ($comments as $comment)
+                                       {
+                                               $comment->parentNode->removeChild($comment);
+                                       }
+                               }
+
+                               // Strip out HTML tags and attributes that might cause various security problems.
+                               // Based on recommendations by Mark Pilgrim at:
+                               // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
+                               if ($this->strip_htmltags)
+                               {
+                                       foreach ($this->strip_htmltags as $tag)
+                                       {
+                                               $this->strip_tag($tag, $document, $type);
+                                       }
+                               }
+
+                               if ($this->strip_attributes)
+                               {
+                                       foreach ($this->strip_attributes as $attrib)
+                                       {
+                                               $this->strip_attr($attrib, $document);
+                                       }
+                               }
+
+                               // Replace relative URLs
+                               $this->base = $base;
+                               foreach ($this->replace_url_attributes as $element => $attributes)
+                               {
+                                       $this->replace_urls($document, $element, $attributes);
+                               }
+
+                               // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
+                               if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
+                               {
+                                       $images = $document->getElementsByTagName('img');
+                                       foreach ($images as $img)
+                                       {
+                                               if ($img->hasAttribute('src'))
+                                               {
+                                                       $image_url = call_user_func($this->cache_name_function, $img->getAttribute('src'));
+                                                       $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $image_url, 'spi'));
+
+                                                       if ($cache->load())
+                                                       {
+                                                               $img->setAttribute('src', $this->image_handler . $image_url);
+                                                       }
+                                                       else
+                                                       {
+                                                               $file = $this->registry->create('File', array($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen));
+                                                               $headers = $file->headers;
+
+                                                               if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
+                                                               {
+                                                                       if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+                                                                       {
+                                                                               $img->setAttribute('src', $this->image_handler . $image_url);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Remove the DOCTYPE
+                               // Seems to cause segfaulting if we don't do this
+                               if ($document->firstChild instanceof DOMDocumentType)
+                               {
+                                       $document->removeChild($document->firstChild);
+                               }
+
+                               // Move everything from the body to the root
+                               $real_body = $document->getElementsByTagName('body')->item(0)->childNodes->item(0);
+                               $document->replaceChild($real_body, $document->firstChild);
+
+                               // Finally, convert to a HTML string
+                               $data = trim($document->saveHTML());
+
+                               if ($this->remove_div)
+                               {
+                                       $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
+                                       $data = preg_replace('/<\/div>$/', '', $data);
+                               }
+                               else
+                               {
+                                       $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
+                               }
+                       }
+
+                       if ($type & SIMPLEPIE_CONSTRUCT_IRI)
+                       {
+                               $absolute = $this->registry->call('Misc', 'absolutize_url', array($data, $base));
+                               if ($absolute !== false)
+                               {
+                                       $data = $absolute;
+                               }
+                       }
+
+                       if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
+                       {
+                               $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
+                       }
+
+                       if ($this->output_encoding !== 'UTF-8')
+                       {
+                               $data = $this->registry->call('Misc', 'change_encoding', array($data, 'UTF-8', $this->output_encoding));
+                       }
+               }
+               return $data;
+       }
+
+       protected function preprocess($html, $type)
+       {
+               $ret = '';
+               if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML)
+               {
+                       // Atom XHTML constructs are wrapped with a div by default
+                       // Note: No protection if $html contains a stray </div>!
+                       $html = '<div>' . $html . '</div>';
+                       $ret .= '<!DOCTYPE html>';
+                       $content_type = 'text/html';
+               }
+               else
+               {
+                       $ret .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
+                       $content_type = 'application/xhtml+xml';
+               }
+
+               $ret .= '<html><head>';
+               $ret .= '<meta http-equiv="Content-Type" content="' . $content_type . '; charset=utf-8" />';
+               $ret .= '</head><body>' . $html . '</body></html>';
+               return $ret;
+       }
+
+       public function replace_urls($document, $tag, $attributes)
+       {
+               if (!is_array($attributes))
+               {
+                       $attributes = array($attributes);
+               }
+
+               if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
+               {
+                       $elements = $document->getElementsByTagName($tag);
+                       foreach ($elements as $element)
+                       {
+                               foreach ($attributes as $attribute)
+                               {
+                                       if ($element->hasAttribute($attribute))
+                                       {
+                                               $value = $this->registry->call('Misc', 'absolutize_url', array($element->getAttribute($attribute), $this->base));
+                                               if ($value !== false)
+                                               {
+                                                       $element->setAttribute($attribute, $value);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       public function do_strip_htmltags($match)
+       {
+               if ($this->encode_instead_of_strip)
+               {
+                       if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+                       {
+                               $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
+                               $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
+                               return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
+                       }
+                       else
+                       {
+                               return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
+                       }
+               }
+               elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+               {
+                       return $match[4];
+               }
+               else
+               {
+                       return '';
+               }
+       }
+
+       protected function strip_tag($tag, $document, $type)
+       {
+               $xpath = new DOMXPath($document);
+               $elements = $xpath->query('body//' . $tag);
+               if ($this->encode_instead_of_strip)
+               {
+                       foreach ($elements as $element)
+                       {
+                               $fragment = $document->createDocumentFragment();
+
+                               // For elements which aren't script or style, include the tag itself
+                               if (!in_array($tag, array('script', 'style')))
+                               {
+                                       $text = '<' . $tag;
+                                       if ($element->hasAttributes())
+                                       {
+                                               $attrs = array();
+                                               foreach ($element->attributes as $name => $attr)
+                                               {
+                                                       $value = $attr->value;
+
+                                                       // In XHTML, empty values should never exist, so we repeat the value
+                                                       if (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_XHTML))
+                                                       {
+                                                               $value = $name;
+                                                       }
+                                                       // For HTML, empty is fine
+                                                       elseif (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_HTML))
+                                                       {
+                                                               $attrs[] = $name;
+                                                               continue;
+                                                       }
+
+                                                       // Standard attribute text
+                                                       $attrs[] = $name . '="' . $attr->value . '"';
+                                               }
+                                               $text .= ' ' . implode(' ', $attrs);
+                                       }
+                                       $text .= '>';
+                                       $fragment->appendChild(new DOMText($text));
+                               }
+
+                               $number = $element->childNodes->length;
+                               for ($i = $number; $i > 0; $i--)
+                               {
+                                       $child = $element->childNodes->item(0);
+                                       $fragment->appendChild($child);
+                               }
+
+                               if (!in_array($tag, array('script', 'style')))
+                               {
+                                       $fragment->appendChild(new DOMText('</' . $tag . '>'));
+                               }
+
+                               $element->parentNode->replaceChild($fragment, $element);
+                       }
+
+                       return;
+               }
+               elseif (in_array($tag, array('script', 'style')))
+               {
+                       foreach ($elements as $element)
+                       {
+                               $element->parentNode->removeChild($element);
+                       }
+
+                       return;
+               }
+               else
+               {
+                       foreach ($elements as $element)
+                       {
+                               $fragment = $document->createDocumentFragment();
+                               $number = $element->childNodes->length;
+                               for ($i = $number; $i > 0; $i--)
+                               {
+                                       $child = $element->childNodes->item(0);
+                                       $fragment->appendChild($child);
+                               }
+
+                               $element->parentNode->replaceChild($fragment, $element);
+                       }
+               }
+       }
+
+       protected function strip_attr($attrib, $document)
+       {
+               $xpath = new DOMXPath($document);
+               $elements = $xpath->query('//*[@' . $attrib . ']');
+
+               foreach ($elements as $element)
+               {
+                       $element->removeAttribute($attrib);
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/Source.php b/wp-includes/SimplePie/Source.php
new file mode 100644 (file)
index 0000000..51d8e6c
--- /dev/null
@@ -0,0 +1,611 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Handles `<atom:source>`
+ *
+ * Used by {@see SimplePie_Item::get_source()}
+ *
+ * This class can be overloaded with {@see SimplePie::set_source_class()}
+ *
+ * @package SimplePie
+ * @subpackage API
+ */
+class SimplePie_Source
+{
+       var $item;
+       var $data = array();
+       protected $registry;
+
+       public function __construct($item, $data)
+       {
+               $this->item = $item;
+               $this->data = $data;
+       }
+
+       public function set_registry(SimplePie_Registry $registry)
+       {
+               $this->registry = $registry;
+       }
+
+       public function __toString()
+       {
+               return md5(serialize($this->data));
+       }
+
+       public function get_source_tags($namespace, $tag)
+       {
+               if (isset($this->data['child'][$namespace][$tag]))
+               {
+                       return $this->data['child'][$namespace][$tag];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_base($element = array())
+       {
+               return $this->item->get_base($element);
+       }
+
+       public function sanitize($data, $type, $base = '')
+       {
+               return $this->item->sanitize($data, $type, $base);
+       }
+
+       public function get_item()
+       {
+               return $this->item;
+       }
+
+       public function get_title()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_category($key = 0)
+       {
+               $categories = $this->get_categories();
+               if (isset($categories[$key]))
+               {
+                       return $categories[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_categories()
+       {
+               $categories = array();
+
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+               {
+                       $term = null;
+                       $scheme = null;
+                       $label = null;
+                       if (isset($category['attribs']['']['term']))
+                       {
+                               $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($category['attribs']['']['scheme']))
+                       {
+                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($category['attribs']['']['label']))
+                       {
+                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
+               {
+                       // This is really the label, but keep this as the term also for BC.
+                       // Label will also work on retrieving because that falls back to term.
+                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       if (isset($category['attribs']['']['domain']))
+                       {
+                               $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       else
+                       {
+                               $scheme = null;
+                       }
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, null));
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+               {
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+               {
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+
+               if (!empty($categories))
+               {
+                       return array_unique($categories);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_author($key = 0)
+       {
+               $authors = $this->get_authors();
+               if (isset($authors[$key]))
+               {
+                       return $authors[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_authors()
+       {
+               $authors = array();
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+               {
+                       $name = null;
+                       $uri = null;
+                       $email = null;
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+                       {
+                               $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+                       }
+                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $uri !== null)
+                       {
+                               $authors[] = $this->registry->create('Author', array($name, $uri, $email));
+                       }
+               }
+               if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+               {
+                       $name = null;
+                       $url = null;
+                       $email = null;
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+                       {
+                               $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+                       }
+                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $url !== null)
+                       {
+                               $authors[] = $this->registry->create('Author', array($name, $url, $email));
+                       }
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+               {
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
+               }
+
+               if (!empty($authors))
+               {
+                       return array_unique($authors);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_contributor($key = 0)
+       {
+               $contributors = $this->get_contributors();
+               if (isset($contributors[$key]))
+               {
+                       return $contributors[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_contributors()
+       {
+               $contributors = array();
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+               {
+                       $name = null;
+                       $uri = null;
+                       $email = null;
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+                       {
+                               $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $uri !== null)
+                       {
+                               $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
+                       }
+               }
+               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+               {
+                       $name = null;
+                       $url = null;
+                       $email = null;
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+                       {
+                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+                       {
+                               $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+                       }
+                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+                       {
+                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                       }
+                       if ($name !== null || $email !== null || $url !== null)
+                       {
+                               $contributors[] = $this->registry->create('Author', array($name, $url, $email));
+                       }
+               }
+
+               if (!empty($contributors))
+               {
+                       return array_unique($contributors);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_link($key = 0, $rel = 'alternate')
+       {
+               $links = $this->get_links($rel);
+               if (isset($links[$key]))
+               {
+                       return $links[$key];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       /**
+        * Added for parity between the parent-level and the item/entry-level.
+        */
+       public function get_permalink()
+       {
+               return $this->get_link(0);
+       }
+
+       public function get_links($rel = 'alternate')
+       {
+               if (!isset($this->data['links']))
+               {
+                       $this->data['links'] = array();
+                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+                       {
+                               foreach ($links as $link)
+                               {
+                                       if (isset($link['attribs']['']['href']))
+                                       {
+                                               $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+                                               $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+                                       }
+                               }
+                       }
+                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+                       {
+                               foreach ($links as $link)
+                               {
+                                       if (isset($link['attribs']['']['href']))
+                                       {
+                                               $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+                                               $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+                                       }
+                               }
+                       }
+                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
+                       {
+                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+                       }
+
+                       $keys = array_keys($this->data['links']);
+                       foreach ($keys as $key)
+                       {
+                               if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
+                               {
+                                       if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+                                       {
+                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+                                               $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+                                       }
+                                       else
+                                       {
+                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+                                       }
+                               }
+                               elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+                               {
+                                       $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+                               }
+                               $this->data['links'][$key] = array_unique($this->data['links'][$key]);
+                       }
+               }
+
+               if (isset($this->data['links'][$rel]))
+               {
+                       return $this->data['links'][$rel];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_description()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_copyright()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
+               {
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_language()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               elseif (isset($this->data['xml_lang']))
+               {
+                       return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_latitude()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
+               {
+                       return (float) $match[1];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_longitude()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+               {
+                       return (float) $return[0]['data'];
+               }
+               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
+               {
+                       return (float) $match[2];
+               }
+               else
+               {
+                       return null;
+               }
+       }
+
+       public function get_image_url()
+       {
+               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+               {
+                       return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+               }
+               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+               }
+               else
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/wp-includes/SimplePie/XML/Declaration/Parser.php b/wp-includes/SimplePie/XML/Declaration/Parser.php
new file mode 100644 (file)
index 0000000..aec19f1
--- /dev/null
@@ -0,0 +1,362 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Parses the XML Declaration
+ *
+ * @package SimplePie
+ * @subpackage Parsing
+ */
+class SimplePie_XML_Declaration_Parser
+{
+       /**
+        * XML Version
+        *
+        * @access public
+        * @var string
+        */
+       var $version = '1.0';
+
+       /**
+        * Encoding
+        *
+        * @access public
+        * @var string
+        */
+       var $encoding = 'UTF-8';
+
+       /**
+        * Standalone
+        *
+        * @access public
+        * @var bool
+        */
+       var $standalone = false;
+
+       /**
+        * Current state of the state machine
+        *
+        * @access private
+        * @var string
+        */
+       var $state = 'before_version_name';
+
+       /**
+        * Input data
+        *
+        * @access private
+        * @var string
+        */
+       var $data = '';
+
+       /**
+        * Input data length (to avoid calling strlen() everytime this is needed)
+        *
+        * @access private
+        * @var int
+        */
+       var $data_length = 0;
+
+       /**
+        * Current position of the pointer
+        *
+        * @var int
+        * @access private
+        */
+       var $position = 0;
+
+       /**
+        * Create an instance of the class with the input data
+        *
+        * @access public
+        * @param string $data Input data
+        */
+       public function __construct($data)
+       {
+               $this->data = $data;
+               $this->data_length = strlen($this->data);
+       }
+
+       /**
+        * Parse the input data
+        *
+        * @access public
+        * @return bool true on success, false on failure
+        */
+       public function parse()
+       {
+               while ($this->state && $this->state !== 'emit' && $this->has_data())
+               {
+                       $state = $this->state;
+                       $this->$state();
+               }
+               $this->data = '';
+               if ($this->state === 'emit')
+               {
+                       return true;
+               }
+               else
+               {
+                       $this->version = '';
+                       $this->encoding = '';
+                       $this->standalone = '';
+                       return false;
+               }
+       }
+
+       /**
+        * Check whether there is data beyond the pointer
+        *
+        * @access private
+        * @return bool true if there is further data, false if not
+        */
+       public function has_data()
+       {
+               return (bool) ($this->position < $this->data_length);
+       }
+
+       /**
+        * Advance past any whitespace
+        *
+        * @return int Number of whitespace characters passed
+        */
+       public function skip_whitespace()
+       {
+               $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
+               $this->position += $whitespace;
+               return $whitespace;
+       }
+
+       /**
+        * Read value
+        */
+       public function get_value()
+       {
+               $quote = substr($this->data, $this->position, 1);
+               if ($quote === '"' || $quote === "'")
+               {
+                       $this->position++;
+                       $len = strcspn($this->data, $quote, $this->position);
+                       if ($this->has_data())
+                       {
+                               $value = substr($this->data, $this->position, $len);
+                               $this->position += $len + 1;
+                               return $value;
+                       }
+               }
+               return false;
+       }
+
+       public function before_version_name()
+       {
+               if ($this->skip_whitespace())
+               {
+                       $this->state = 'version_name';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function version_name()
+       {
+               if (substr($this->data, $this->position, 7) === 'version')
+               {
+                       $this->position += 7;
+                       $this->skip_whitespace();
+                       $this->state = 'version_equals';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function version_equals()
+       {
+               if (substr($this->data, $this->position, 1) === '=')
+               {
+                       $this->position++;
+                       $this->skip_whitespace();
+                       $this->state = 'version_value';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function version_value()
+       {
+               if ($this->version = $this->get_value())
+               {
+                       $this->skip_whitespace();
+                       if ($this->has_data())
+                       {
+                               $this->state = 'encoding_name';
+                       }
+                       else
+                       {
+                               $this->state = 'emit';
+                       }
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function encoding_name()
+       {
+               if (substr($this->data, $this->position, 8) === 'encoding')
+               {
+                       $this->position += 8;
+                       $this->skip_whitespace();
+                       $this->state = 'encoding_equals';
+               }
+               else
+               {
+                       $this->state = 'standalone_name';
+               }
+       }
+
+       public function encoding_equals()
+       {
+               if (substr($this->data, $this->position, 1) === '=')
+               {
+                       $this->position++;
+                       $this->skip_whitespace();
+                       $this->state = 'encoding_value';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function encoding_value()
+       {
+               if ($this->encoding = $this->get_value())
+               {
+                       $this->skip_whitespace();
+                       if ($this->has_data())
+                       {
+                               $this->state = 'standalone_name';
+                       }
+                       else
+                       {
+                               $this->state = 'emit';
+                       }
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function standalone_name()
+       {
+               if (substr($this->data, $this->position, 10) === 'standalone')
+               {
+                       $this->position += 10;
+                       $this->skip_whitespace();
+                       $this->state = 'standalone_equals';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function standalone_equals()
+       {
+               if (substr($this->data, $this->position, 1) === '=')
+               {
+                       $this->position++;
+                       $this->skip_whitespace();
+                       $this->state = 'standalone_value';
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+
+       public function standalone_value()
+       {
+               if ($standalone = $this->get_value())
+               {
+                       switch ($standalone)
+                       {
+                               case 'yes':
+                                       $this->standalone = true;
+                                       break;
+
+                               case 'no':
+                                       $this->standalone = false;
+                                       break;
+
+                               default:
+                                       $this->state = false;
+                                       return;
+                       }
+
+                       $this->skip_whitespace();
+                       if ($this->has_data())
+                       {
+                               $this->state = false;
+                       }
+                       else
+                       {
+                               $this->state = 'emit';
+                       }
+               }
+               else
+               {
+                       $this->state = false;
+               }
+       }
+}
diff --git a/wp-includes/SimplePie/gzdecode.php b/wp-includes/SimplePie/gzdecode.php
new file mode 100644 (file)
index 0000000..52e024e
--- /dev/null
@@ -0,0 +1,371 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+
+/**
+ * Decode 'gzip' encoded HTTP data
+ *
+ * @package SimplePie
+ * @subpackage HTTP
+ * @link http://www.gzip.org/format.txt
+ */
+class SimplePie_gzdecode
+{
+       /**
+        * Compressed data
+        *
+        * @access private
+        * @var string
+        * @see gzdecode::$data
+        */
+       var $compressed_data;
+
+       /**
+        * Size of compressed data
+        *
+        * @access private
+        * @var int
+        */
+       var $compressed_size;
+
+       /**
+        * Minimum size of a valid gzip string
+        *
+        * @access private
+        * @var int
+        */
+       var $min_compressed_size = 18;
+
+       /**
+        * Current position of pointer
+        *
+        * @access private
+        * @var int
+        */
+       var $position = 0;
+
+       /**
+        * Flags (FLG)
+        *
+        * @access private
+        * @var int
+        */
+       var $flags;
+
+       /**
+        * Uncompressed data
+        *
+        * @access public
+        * @see gzdecode::$compressed_data
+        * @var string
+        */
+       var $data;
+
+       /**
+        * Modified time
+        *
+        * @access public
+        * @var int
+        */
+       var $MTIME;
+
+       /**
+        * Extra Flags
+        *
+        * @access public
+        * @var int
+        */
+       var $XFL;
+
+       /**
+        * Operating System
+        *
+        * @access public
+        * @var int
+        */
+       var $OS;
+
+       /**
+        * Subfield ID 1
+        *
+        * @access public
+        * @see gzdecode::$extra_field
+        * @see gzdecode::$SI2
+        * @var string
+        */
+       var $SI1;
+
+       /**
+        * Subfield ID 2
+        *
+        * @access public
+        * @see gzdecode::$extra_field
+        * @see gzdecode::$SI1
+        * @var string
+        */
+       var $SI2;
+
+       /**
+        * Extra field content
+        *
+        * @access public
+        * @see gzdecode::$SI1
+        * @see gzdecode::$SI2
+        * @var string
+        */
+       var $extra_field;
+
+       /**
+        * Original filename
+        *
+        * @access public
+        * @var string
+        */
+       var $filename;
+
+       /**
+        * Human readable comment
+        *
+        * @access public
+        * @var string
+        */
+       var $comment;
+
+       /**
+        * Don't allow anything to be set
+        *
+        * @param string $name
+        * @param mixed $value
+        */
+       public function __set($name, $value)
+       {
+               trigger_error("Cannot write property $name", E_USER_ERROR);
+       }
+
+       /**
+        * Set the compressed string and related properties
+        *
+        * @param string $data
+        */
+       public function __construct($data)
+       {
+               $this->compressed_data = $data;
+               $this->compressed_size = strlen($data);
+       }
+
+       /**
+        * Decode the GZIP stream
+        *
+        * @return bool Successfulness
+        */
+       public function parse()
+       {
+               if ($this->compressed_size >= $this->min_compressed_size)
+               {
+                       // Check ID1, ID2, and CM
+                       if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08")
+                       {
+                               return false;
+                       }
+
+                       // Get the FLG (FLaGs)
+                       $this->flags = ord($this->compressed_data[3]);
+
+                       // FLG bits above (1 << 4) are reserved
+                       if ($this->flags > 0x1F)
+                       {
+                               return false;
+                       }
+
+                       // Advance the pointer after the above
+                       $this->position += 4;
+
+                       // MTIME
+                       $mtime = substr($this->compressed_data, $this->position, 4);
+                       // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness
+                       if (current(unpack('S', "\x00\x01")) === 1)
+                       {
+                               $mtime = strrev($mtime);
+                       }
+                       $this->MTIME = current(unpack('l', $mtime));
+                       $this->position += 4;
+
+                       // Get the XFL (eXtra FLags)
+                       $this->XFL = ord($this->compressed_data[$this->position++]);
+
+                       // Get the OS (Operating System)
+                       $this->OS = ord($this->compressed_data[$this->position++]);
+
+                       // Parse the FEXTRA
+                       if ($this->flags & 4)
+                       {
+                               // Read subfield IDs
+                               $this->SI1 = $this->compressed_data[$this->position++];
+                               $this->SI2 = $this->compressed_data[$this->position++];
+
+                               // SI2 set to zero is reserved for future use
+                               if ($this->SI2 === "\x00")
+                               {
+                                       return false;
+                               }
+
+                               // Get the length of the extra field
+                               $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
+                               $this->position += 2;
+
+                               // Check the length of the string is still valid
+                               $this->min_compressed_size += $len + 4;
+                               if ($this->compressed_size >= $this->min_compressed_size)
+                               {
+                                       // Set the extra field to the given data
+                                       $this->extra_field = substr($this->compressed_data, $this->position, $len);
+                                       $this->position += $len;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
+                       }
+
+                       // Parse the FNAME
+                       if ($this->flags & 8)
+                       {
+                               // Get the length of the filename
+                               $len = strcspn($this->compressed_data, "\x00", $this->position);
+
+                               // Check the length of the string is still valid
+                               $this->min_compressed_size += $len + 1;
+                               if ($this->compressed_size >= $this->min_compressed_size)
+                               {
+                                       // Set the original filename to the given string
+                                       $this->filename = substr($this->compressed_data, $this->position, $len);
+                                       $this->position += $len + 1;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
+                       }
+
+                       // Parse the FCOMMENT
+                       if ($this->flags & 16)
+                       {
+                               // Get the length of the comment
+                               $len = strcspn($this->compressed_data, "\x00", $this->position);
+
+                               // Check the length of the string is still valid
+                               $this->min_compressed_size += $len + 1;
+                               if ($this->compressed_size >= $this->min_compressed_size)
+                               {
+                                       // Set the original comment to the given string
+                                       $this->comment = substr($this->compressed_data, $this->position, $len);
+                                       $this->position += $len + 1;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
+                       }
+
+                       // Parse the FHCRC
+                       if ($this->flags & 2)
+                       {
+                               // Check the length of the string is still valid
+                               $this->min_compressed_size += $len + 2;
+                               if ($this->compressed_size >= $this->min_compressed_size)
+                               {
+                                       // Read the CRC
+                                       $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
+
+                                       // Check the CRC matches
+                                       if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc)
+                                       {
+                                               $this->position += 2;
+                                       }
+                                       else
+                                       {
+                                               return false;
+                                       }
+                               }
+                               else
+                               {
+                                       return false;
+                               }
+                       }
+
+                       // Decompress the actual data
+                       if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false)
+                       {
+                               return false;
+                       }
+                       else
+                       {
+                               $this->position = $this->compressed_size - 8;
+                       }
+
+                       // Check CRC of data
+                       $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
+                       $this->position += 4;
+                       /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc))
+                       {
+                               return false;
+                       }*/
+
+                       // Check ISIZE of data
+                       $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
+                       $this->position += 4;
+                       if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize))
+                       {
+                               return false;
+                       }
+
+                       // Wow, against all odds, we've actually got a valid gzip string
+                       return true;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+}
index 1b23dad80f0cfb129599fe99b259cb67c3670368..6af10214533942f0722cfcfa1323c38afba060de 100644 (file)
@@ -341,12 +341,10 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
                ),
        ) );
 
-       $blue_wp_logo_url = includes_url('images/wpmini-blue.png');
-
        foreach ( (array) $wp_admin_bar->user->blogs as $blog ) {
-               // @todo Replace with some favicon lookup.
-               //$blavatar = '<img src="' . esc_url( blavatar_url( blavatar_domain( $blog->siteurl ), 'img', 16, $blue_wp_logo_url ) ) . '" alt="Blavatar" width="16" height="16" />';
-               $blavatar = '<img src="' . esc_url($blue_wp_logo_url) . '" alt="' . esc_attr__( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>';
+               switch_to_blog( $blog->userblog_id );
+
+               $blavatar = '<div class="blavatar"></div>';
 
                $blogname = empty( $blog->blogname ) ? $blog->domain : $blog->blogname;
                $menu_id  = 'blog-' . $blog->userblog_id;
@@ -355,28 +353,31 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
                        'parent'    => 'my-sites-list',
                        'id'        => $menu_id,
                        'title'     => $blavatar . $blogname,
-                       'href'      => get_admin_url( $blog->userblog_id ),
+                       'href'      => admin_url(),
                ) );
 
                $wp_admin_bar->add_menu( array(
                        'parent' => $menu_id,
                        'id'     => $menu_id . '-d',
                        'title'  => __( 'Dashboard' ),
-                       'href'   => get_admin_url( $blog->userblog_id ),
+                       'href'   => admin_url(),
                ) );
 
-               if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) ) {
+               if ( current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
                        $wp_admin_bar->add_menu( array(
                                'parent' => $menu_id,
                                'id'     => $menu_id . '-n',
                                'title'  => __( 'New Post' ),
-                               'href'   => get_admin_url( $blog->userblog_id, 'post-new.php' ),
+                               'href'   => admin_url( 'post-new.php' ),
                        ) );
+               }
+
+               if ( current_user_can( 'edit_posts' ) ) {
                        $wp_admin_bar->add_menu( array(
                                'parent' => $menu_id,
                                'id'     => $menu_id . '-c',
                                'title'  => __( 'Manage Comments' ),
-                               'href'   => get_admin_url( $blog->userblog_id, 'edit-comments.php' ),
+                               'href'   => admin_url( 'edit-comments.php' ),
                        ) );
                }
 
@@ -384,8 +385,10 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
                        'parent' => $menu_id,
                        'id'     => $menu_id . '-v',
                        'title'  => __( 'Visit Site' ),
-                       'href'   => get_home_url( $blog->userblog_id, '/' ),
+                       'href'   => home_url( '/' ),
                ) );
+
+               restore_current_blog();
        }
 }
 
@@ -417,16 +420,18 @@ function wp_admin_bar_shortlink_menu( $wp_admin_bar ) {
  * @since 3.1.0
  */
 function wp_admin_bar_edit_menu( $wp_admin_bar ) {
-       global $post, $tag, $wp_the_query;
+       global $tag, $wp_the_query;
 
        if ( is_admin() ) {
                $current_screen = get_current_screen();
+               $post = get_post();
 
                if ( 'post' == $current_screen->base
                        && 'add' != $current_screen->action
                        && ( $post_type_object = get_post_type_object( $post->post_type ) )
                        && current_user_can( $post_type_object->cap->read_post, $post->ID )
-                       && ( $post_type_object->public ) )
+                       && ( $post_type_object->public )
+                       && ( $post_type_object->show_in_admin_bar ) )
                {
                        $wp_admin_bar->add_menu( array(
                                'id' => 'view',
@@ -453,7 +458,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
                if ( ! empty( $current_object->post_type )
                        && ( $post_type_object = get_post_type_object( $current_object->post_type ) )
                        && current_user_can( $post_type_object->cap->edit_post, $current_object->ID )
-                       && ( $post_type_object->show_ui || 'attachment' == $current_object->post_type ) )
+                       && $post_type_object->show_ui && $post_type_object->show_in_admin_bar )
                {
                        $wp_admin_bar->add_menu( array(
                                'id' => 'edit',
@@ -484,30 +489,31 @@ function wp_admin_bar_new_content_menu( $wp_admin_bar ) {
 
        $cpts = (array) get_post_types( array( 'show_in_admin_bar' => true ), 'objects' );
 
-       if ( isset( $cpts['post'] ) && current_user_can( $cpts['post']->cap->edit_posts ) ) {
+       if ( isset( $cpts['post'] ) && current_user_can( $cpts['post']->cap->create_posts ) )
                $actions[ 'post-new.php' ] = array( $cpts['post']->labels->name_admin_bar, 'new-post' );
-               unset( $cpts['post'] );
-       }
 
-       if ( current_user_can( 'upload_files' ) )
-               $actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
+       if ( isset( $cpts['attachment'] ) && current_user_can( 'upload_files' ) )
+               $actions[ 'media-new.php' ] = array( $cpts['attachment']->labels->name_admin_bar, 'new-media' );
 
        if ( current_user_can( 'manage_links' ) )
                $actions[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' );
 
-       if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->edit_posts ) ) {
+       if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->create_posts ) )
                $actions[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' );
-               unset( $cpts['page'] );
-       }
+
+       unset( $cpts['post'], $cpts['page'], $cpts['attachment'] );
 
        // Add any additional custom post types.
        foreach ( $cpts as $cpt ) {
-               if ( ! current_user_can( $cpt->cap->edit_posts ) )
+               if ( ! current_user_can( $cpt->cap->create_posts ) )
                        continue;
 
                $key = 'post-new.php?post_type=' . $cpt->name;
                $actions[ $key ] = array( $cpt->labels->name_admin_bar, 'new-' . $cpt->name );
        }
+       // Avoid clash with parent node and a 'content' post type.
+       if ( isset( $actions['post-new.php?post_type=content'] ) )
+               $actions['post-new.php?post_type=content'][1] = 'add-new-content';
 
        if ( current_user_can( 'create_users' ) || current_user_can( 'promote_users' ) )
                $actions[ 'user-new.php' ] = array( _x( 'User', 'add new from admin bar' ), 'new-user' );
@@ -614,6 +620,7 @@ function wp_admin_bar_updates_menu( $wp_admin_bar ) {
                return;
 
        $title = '<span class="ab-icon"></span><span class="ab-label">' . number_format_i18n( $update_data['counts']['total'] ) . '</span>';
+       $title .= '<span class="screen-reader-text">' . $update_data['title'] . '</span>';
 
        $wp_admin_bar->add_menu( array(
                'id'    => 'updates',
@@ -635,7 +642,7 @@ function wp_admin_bar_search_menu( $wp_admin_bar ) {
                return;
 
        $form  = '<form action="' . esc_url( home_url( '/' ) ) . '" method="get" id="adminbarsearch">';
-       $form .= '<input class="adminbar-input" name="s" id="adminbar-search" tabindex="10" type="text" value="" maxlength="150" />';
+       $form .= '<input class="adminbar-input" name="s" id="adminbar-search" type="text" value="" maxlength="150" />';
        $form .= '<input type="submit" class="adminbar-button" value="' . __('Search') . '"/>';
        $form .= '</form>';
 
@@ -723,7 +730,7 @@ function is_admin_bar_showing() {
        global $show_admin_bar, $pagenow;
 
        // For all these types of requests, we never want an admin bar.
-       if ( defined('XMLRPC_REQUEST') || defined('APP_REQUEST') || defined('DOING_AJAX') || defined('IFRAME_REQUEST') )
+       if ( defined('XMLRPC_REQUEST') || defined('DOING_AJAX') || defined('IFRAME_REQUEST') )
                return false;
 
        // Integrated into the admin.
index ab2737c563e3b3af267719e2a10e60aa8ab22457..1e65baa1e65b7ca40c09cd5587499a1b37486096 100644 (file)
@@ -69,8 +69,7 @@ function the_author( $deprecated = '', $deprecated_echo = true ) {
  * @return string The author's display name.
  */
 function get_the_modified_author() {
-       global $post;
-       if ( $last_id = get_post_meta($post->ID, '_edit_last', true) ) {
+       if ( $last_id = get_post_meta( get_post()->ID, '_edit_last', true) ) {
                $last_user = get_userdata($last_id);
                return apply_filters('the_modified_author', $last_user->display_name);
        }
@@ -164,8 +163,7 @@ function the_author_link() {
  * @return int The number of posts by the author.
  */
 function get_the_author_posts() {
-       global $post;
-       return count_user_posts($post->post_author);
+       return count_user_posts( get_post()->post_author );
 }
 
 /**
index 2dc5b7b2e3e3f030e10faf419f3d81732519938b..cb30b896a977c340d7c62211475d9a1b42e2ddcc 100644 (file)
@@ -42,7 +42,6 @@
  *
  * @since 2.1.0
  * @access private
- * @usedby wp_list_bookmarks()
  *
  * @param array $bookmarks List of bookmarks to traverse
  * @param string|array $args Optional. Overwrite the defaults.
@@ -79,7 +78,7 @@ function _walk_bookmarks($bookmarks, $args = '' ) {
                if ( $show_updated )
                        if ( '00' != substr($bookmark->link_updated_f, 0, 2) ) {
                                $title .= ' (';
-                               $title .= sprintf(__('Last updated: %s'), date(get_option('links_updated_date_format'), $bookmark->link_updated_f + (get_option('gmt_offset') * 3600)));
+                               $title .= sprintf(__('Last updated: %s'), date(get_option('links_updated_date_format'), $bookmark->link_updated_f + (get_option('gmt_offset') * HOUR_IN_SECONDS)));
                                $title .= ')';
                        }
 
@@ -189,7 +188,7 @@ function _walk_bookmarks($bookmarks, $args = '' ) {
  * @link http://codex.wordpress.org/Template_Tags/wp_list_bookmarks
  *
  * @since 2.1.0
- * @uses _list_bookmarks() Used to iterate over all of the bookmarks and return
+ * @uses _walk_bookmarks() Used to iterate over all of the bookmarks and return
  *             the html
  * @uses get_terms() Gets all of the categories that are for links.
  *
@@ -216,9 +215,13 @@ function wp_list_bookmarks($args = '') {
        $output = '';
 
        if ( $categorize ) {
-               //Split the bookmarks into ul's for each category
-               $cats = get_terms('link_category', array('name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0));
+               $cats = get_terms( 'link_category', array( 'name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0 ) );
+               if ( empty( $cats ) )
+                       $categorize = false;
+       }
 
+       if ( $categorize ) {
+               // Split the bookmarks into ul's for each category
                foreach ( (array) $cats as $cat ) {
                        $params = array_merge($r, array('category'=>$cat->term_id));
                        $bookmarks = get_bookmarks($params);
index 8248e3a64f69653647c6e0c379d16d4be1775169..ab4b8c8c6b4dcd5ff445997c208d000ab74524d9 100644 (file)
@@ -33,11 +33,16 @@ function get_bookmark($bookmark, $output = OBJECT, $filter = 'raw') {
                        $_bookmark = & $GLOBALS['link'];
                } elseif ( ! $_bookmark = wp_cache_get($bookmark, 'bookmark') ) {
                        $_bookmark = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark));
-                       $_bookmark->link_category = array_unique( wp_get_object_terms($_bookmark->link_id, 'link_category', array('fields' => 'ids')) );
-                       wp_cache_add($_bookmark->link_id, $_bookmark, 'bookmark');
+                       if ( $_bookmark ) {
+                               $_bookmark->link_category = array_unique( wp_get_object_terms( $_bookmark->link_id, 'link_category', array( 'fields' => 'ids' ) ) );
+                               wp_cache_add( $_bookmark->link_id, $_bookmark, 'bookmark' );
+                       }
                }
        }
 
+       if ( ! $_bookmark )
+               return $_bookmark;
+
        $_bookmark = sanitize_bookmark($_bookmark, $filter);
 
        if ( $output == OBJECT ) {
index bb61249cfb3d2470572911b68d920abd77dcad2e..933c7b2ec1af9ddb05ade3dfb3ba490f8ddd27d4 100644 (file)
@@ -179,6 +179,21 @@ function wp_cache_set($key, $data, $group = '', $expire = 0) {
        return $wp_object_cache->set($key, $data, $group, $expire);
 }
 
+/**
+ * Switch the interal blog id.
+ *
+ * This changes the blog id used to create keys in blog specific groups.
+ *
+ * @since 3.5.0
+ *
+ * @param int $blog_id Blog ID
+ */
+function wp_cache_switch_to_blog( $blog_id ) {
+       global $wp_object_cache;
+
+       return $wp_object_cache->switch_to_blog( $blog_id );
+}
+
 /**
  * Adds a group or set of groups to the list of global groups.
  *
@@ -189,7 +204,7 @@ function wp_cache_set($key, $data, $group = '', $expire = 0) {
 function wp_cache_add_global_groups( $groups ) {
        global $wp_object_cache;
 
-       return $wp_object_cache->add_global_groups($groups);
+       return $wp_object_cache->add_global_groups( $groups );
 }
 
 /**
@@ -205,12 +220,23 @@ function wp_cache_add_non_persistent_groups( $groups ) {
 }
 
 /**
- * Reset internal cache keys and structures. If the cache backend uses global blog or site IDs as part of its cache keys,
- * this function instructs the backend to reset those keys and perform any cleanup since blog or site IDs have changed since cache init.
+ * Reset internal cache keys and structures. If the cache backend uses global
+ * blog or site IDs as part of its cache keys, this function instructs the
+ * backend to reset those keys and perform any cleanup since blog or site IDs
+ * have changed since cache init.
+ *
+ * This function is deprecated. Use wp_cache_switch_to_blog() instead of this
+ * function when preparing the cache for a blog switch. For clearing the cache
+ * during unit tests, consider using wp_cache_init(). wp_cache_init() is not
+ * recommended outside of unit tests as the performance penality for using it is
+ * high.
  *
  * @since 2.6.0
+ * @deprecated 3.5.0
  */
 function wp_cache_reset() {
+       _deprecated_function( __FUNCTION__, '3.5' );
+
        global $wp_object_cache;
 
        return $wp_object_cache->reset();
@@ -270,6 +296,15 @@ class WP_Object_Cache {
         */
        var $global_groups = array();
 
+       /**
+        * The blog prefix to prepend to keys in non-global groups.
+        *
+        * @var int
+        * @access private
+        * @since 3.5.0
+        */
+       var $blog_prefix;
+
        /**
         * Adds data to the cache if it doesn't already exist.
         *
@@ -292,7 +327,11 @@ class WP_Object_Cache {
                if ( empty( $group ) )
                        $group = 'default';
 
-               if ( $this->_exists($key, $group) )
+               $id = $key;
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $id = $this->blog_prefix . $key;
+
+               if ( $this->_exists( $id, $group ) )
                        return false;
 
                return $this->set($key, $data, $group, $expire);
@@ -308,8 +347,8 @@ class WP_Object_Cache {
        function add_global_groups( $groups ) {
                $groups = (array) $groups;
 
-               $this->global_groups = array_merge($this->global_groups, $groups);
-               $this->global_groups = array_unique($this->global_groups);
+               $groups = array_fill_keys( $groups, true );
+               $this->global_groups = array_merge( $this->global_groups, $groups );
        }
 
        /**
@@ -323,6 +362,12 @@ class WP_Object_Cache {
         * @return false|int False on failure, the item's new value on success.
         */
        function decr( $key, $offset = 1, $group = 'default' ) {
+               if ( empty( $group ) )
+                       $group = 'default';
+
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $key = $this->blog_prefix . $key;
+
                if ( ! $this->_exists( $key, $group ) )
                        return false;
 
@@ -358,6 +403,9 @@ class WP_Object_Cache {
                if ( empty( $group ) )
                        $group = 'default';
 
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $key = $this->blog_prefix . $key;
+
                if ( ! $force && ! $this->_exists( $key, $group ) )
                        return false;
 
@@ -399,6 +447,9 @@ class WP_Object_Cache {
                if ( empty( $group ) )
                        $group = 'default';
 
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $key = $this->blog_prefix . $key;
+
                if ( $this->_exists( $key, $group ) ) {
                        $found = true;
                        $this->cache_hits += 1;
@@ -427,6 +478,9 @@ class WP_Object_Cache {
                if ( empty( $group ) )
                        $group = 'default';
 
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $key = $this->blog_prefix . $key;
+
                if ( ! $this->_exists( $key, $group ) )
                        return false;
 
@@ -455,26 +509,33 @@ class WP_Object_Cache {
         * @param int $expire When to expire the cache contents
         * @return bool False if not exists, true if contents were replaced
         */
-       function replace($key, $data, $group = 'default', $expire = '') {
+       function replace( $key, $data, $group = 'default', $expire = '' ) {
                if ( empty( $group ) )
                        $group = 'default';
 
-               if ( ! $this->_exists( $key, $group ) )
+               $id = $key;
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $id = $this->blog_prefix . $key;
+
+               if ( ! $this->_exists( $id, $group ) )
                        return false;
 
-               return $this->set($key, $data, $group, $expire);
+               return $this->set( $key, $data, $group, $expire );
        }
 
        /**
         * Reset keys
         *
         * @since 3.0.0
+        * @deprecated 3.5.0
         */
        function reset() {
+               _deprecated_function( __FUNCTION__, '3.5', 'switch_to_blog()' );
+
                // Clear out non-global caches since the blog ID has changed.
-               foreach ( array_keys($this->cache) as $group ) {
-                       if ( !in_array($group, $this->global_groups) )
-                               unset($this->cache[$group]);
+               foreach ( array_keys( $this->cache ) as $group ) {
+                       if ( ! isset( $this->global_groups[ $group ] ) )
+                               unset( $this->cache[ $group ] );
                }
        }
 
@@ -502,7 +563,10 @@ class WP_Object_Cache {
                if ( empty( $group ) )
                        $group = 'default';
 
-               if ( is_object($data) )
+               if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) )
+                       $key = $this->blog_prefix . $key;
+
+               if ( is_object( $data ) )
                        $data = clone $data;
 
                $this->cache[$group][$key] = $data;
@@ -529,12 +593,29 @@ class WP_Object_Cache {
                echo '</ul>';
        }
 
+       /**
+        * Switch the interal blog id.
+        *
+        * This changes the blog id used to create keys in blog specific groups.
+        *
+        * @since 3.5.0
+        *
+        * @param int $blog_id Blog ID
+        */
+       function switch_to_blog( $blog_id ) {
+               $blog_id = (int) $blog_id;
+               $this->blog_prefix = $this->multisite ? $blog_id . ':' : '';
+       }
+
        /**
         * Utility function to determine whether a key exists in the cache.
-        * @access private
+        *
+        * @since 3.4.0
+        *
+        * @access protected
         */
-       protected function _exists($key, $group) {
-               return isset( $this->cache[$group] ) && is_array( $this->cache[$group] ) && array_key_exists( $key, $this->cache[$group] );
+       protected function _exists( $key, $group ) {
+               return isset( $this->cache[ $group ] ) && ( isset( $this->cache[ $group ][ $key ] ) || array_key_exists( $key, $this->cache[ $group ] ) );
        }
 
        /**
@@ -544,11 +625,17 @@ class WP_Object_Cache {
         * @return null|WP_Object_Cache If cache is disabled, returns null.
         */
        function __construct() {
+               global $blog_id;
+
+               $this->multisite = is_multisite();
+               $this->blog_prefix =  $this->multisite ? $blog_id . ':' : '';
+
+
                /**
                 * @todo This should be moved to the PHP4 style constructor, PHP5
                 * already calls __destruct()
                 */
-               register_shutdown_function(array(&$this, "__destruct"));
+               register_shutdown_function( array( $this, '__destruct' ) );
        }
 
        /**
index 7001c98bcbb736ed5ba31497dd51bedb4350b831..7cd12564f73e3e954b600161cf62e7dcc1007d28 100644 (file)
@@ -18,7 +18,9 @@
  * one or the other.
  *
  * Prevents redirection for feeds, trackbacks, searches, comment popup, and
- * admin URLs. Does not redirect on IIS, page/post previews, and on form data.
+ * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7,
+ * page/post previews, WP admin, Trackbacks, robots.txt, searches, or on POST
+ * requests.
  *
  * Will also attempt to find the correct link when a user enters a URL that does
  * not exist based on exact WordPress query. Will instead try to parse the URL
@@ -37,7 +39,7 @@
 function redirect_canonical( $requested_url = null, $do_redirect = true ) {
        global $wp_rewrite, $is_IIS, $wp_query, $wpdb;
 
-       if ( is_trackback() || is_search() || is_comments_popup() || is_admin() || !empty($_POST) || is_preview() || is_robots() || $is_IIS )
+       if ( is_trackback() || is_search() || is_comments_popup() || is_admin() || !empty($_POST) || is_preview() || is_robots() || ( $is_IIS && !iis7_supports_permalinks() ) )
                return;
 
        if ( !$requested_url ) {
@@ -280,7 +282,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 
                if ( 'wp-register.php' == basename( $redirect['path'] ) ) {
                        if ( is_multisite() )
-                               $redirect_url = apply_filters( 'wp_signup_location', site_url( 'wp-signup.php' ) );
+                               $redirect_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
                        else
                                $redirect_url = site_url( 'wp-login.php?action=register' );
                        wp_redirect( $redirect_url, 301 );
index 2840a1e2f900fde43f1cfd3c96523030906db974..3503316ccfe5aad3bff752d3d4d897bdba6d022d 100644 (file)
@@ -108,7 +108,37 @@ class WP_Roles {
 
                $this->role_objects = array();
                $this->role_names =  array();
-               foreach ( (array) $this->roles as $role => $data ) {
+               foreach ( array_keys( $this->roles ) as $role ) {
+                       $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
+                       $this->role_names[$role] = $this->roles[$role]['name'];
+               }
+       }
+
+       /**
+        * Reinitialize the object
+        *
+        * Recreates the role objects. This is typically called only by switch_to_blog()
+        * after switching wpdb to a new blog ID.
+        *
+        * @since 3.5.0
+        * @access public
+        */
+       function reinit() {
+               // There is no need to reinit if using the wp_user_roles global.
+               if ( ! $this->use_db )
+                       return;
+
+               global $wpdb, $wp_user_roles;
+
+               // Duplicated from _init() to avoid an extra function call.
+               $this->role_key = $wpdb->prefix . 'user_roles';
+               $this->roles = get_option( $this->role_key );
+               if ( empty( $this->roles ) )
+                       return;
+
+               $this->role_objects = array();
+               $this->role_names =  array();
+               foreach ( array_keys( $this->roles ) as $role ) {
                        $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
                        $this->role_names[$role] = $this->roles[$role]['name'];
                }
@@ -176,6 +206,9 @@ class WP_Roles {
         * @param bool $grant Optional, default is true. Whether role is capable of performing capability.
         */
        function add_cap( $role, $cap, $grant = true ) {
+               if ( ! isset( $this->roles[$role] ) )
+                       return;
+
                $this->roles[$role]['capabilities'][$cap] = $grant;
                if ( $this->use_db )
                        update_option( $this->role_key, $this->roles );
@@ -191,6 +224,9 @@ class WP_Roles {
         * @param string $cap Capability name.
         */
        function remove_cap( $role, $cap ) {
+               if ( ! isset( $this->roles[$role] ) )
+                       return;
+
                unset( $this->roles[$role]['capabilities'][$cap] );
                if ( $this->use_db )
                        update_option( $this->role_key, $this->roles );
@@ -233,8 +269,7 @@ class WP_Roles {
         * @param string $role Role name to look up.
         * @return bool
         */
-       function is_role( $role )
-       {
+       function is_role( $role ) {
                return isset( $this->role_names[$role] );
        }
 }
@@ -430,7 +465,7 @@ class WP_User {
         * @since 2.0.0
         * @access public
         *
-        * @param int|string $id User's ID
+        * @param int|string|stdClass|WP_User $id User's ID, a WP_User object, or a user object from the DB.
         * @param string $name Optional. User's username
         * @param int $blog_id Optional Blog ID, defaults to current blog.
         * @return WP_User
@@ -448,6 +483,14 @@ class WP_User {
                        );
                }
 
+               if ( is_a( $id, 'WP_User' ) ) {
+                       $this->init( $id->data, $blog_id );
+                       return;
+               } elseif ( is_object( $id ) ) {
+                       $this->init( $id, $blog_id );
+                       return;
+               }
+
                if ( ! empty( $id ) && ! is_numeric( $id ) ) {
                        $name = $id;
                        $id = 0;
@@ -636,6 +679,17 @@ class WP_User {
                return $this->__isset( $key );
        }
 
+       /*
+        * Return an array representation.
+        *
+        * @since 3.5.0
+        *
+        * @return array Array representation.
+        */
+       function to_array() {
+               return get_object_vars( $this->data );
+       }
+
        /**
         * Set up capability object properties.
         *
@@ -685,7 +739,7 @@ class WP_User {
 
                //Filter out caps that are not role names and assign to $this->roles
                if ( is_array( $this->caps ) )
-                       $this->roles = array_filter( array_keys( $this->caps ), array( &$wp_roles, 'is_role' ) );
+                       $this->roles = array_filter( array_keys( $this->caps ), array( $wp_roles, 'is_role' ) );
 
                //Build $allcaps from role caps, overlay user's $caps
                $this->allcaps = array();
@@ -743,12 +797,12 @@ class WP_User {
         * @param string $role Role name.
         */
        function set_role( $role ) {
+               if ( 1 == count( $this->roles ) && $role == current( $this->roles ) )
+                       return;
+
                foreach ( (array) $this->roles as $oldrole )
                        unset( $this->caps[$oldrole] );
 
-               if ( 1 == count( $this->roles ) && $role == $this->roles[0] )
-                       return;
-
                if ( !empty( $role ) ) {
                        $this->caps[$role] = true;
                        $this->roles = array( $role => true );
@@ -828,7 +882,7 @@ class WP_User {
         * @param string $cap Capability name.
         */
        function remove_cap( $cap ) {
-               if ( empty( $this->caps[$cap] ) )
+               if ( ! isset( $this->caps[$cap] ) )
                        return;
                unset( $this->caps[$cap] );
                update_user_meta( $this->ID, $this->cap_key, $this->caps );
@@ -947,20 +1001,19 @@ function map_meta_cap( $cap, $user_id ) {
                $caps[] = 'promote_users';
                break;
        case 'edit_user':
+       case 'edit_users':
                // Allow user to edit itself
-               if ( isset( $args[0] ) && $user_id == $args[0] )
+               if ( 'edit_user' == $cap && isset( $args[0] ) && $user_id == $args[0] )
                        break;
-               // Fall through
-       case 'edit_users':
+
                // If multisite these caps are allowed only for super admins.
                if ( is_multisite() && !is_super_admin( $user_id ) )
                        $caps[] = 'do_not_allow';
                else
-                       $caps[] = 'edit_users'; // Explicit due to primitive fall through
+                       $caps[] = 'edit_users'; // edit_user maps to edit_users.
                break;
        case 'delete_post':
        case 'delete_page':
-               $author_data = get_userdata( $user_id );
                $post = get_post( $args[0] );
 
                if ( 'revision' == $post->post_type ) {
@@ -977,12 +1030,13 @@ function map_meta_cap( $cap, $user_id ) {
                        break;
                }
 
-               if ( '' != $post->post_author ) {
-                       $post_author_data = get_userdata( $post->post_author );
-               } else {
-                       // No author set yet, so default to current user for cap checks.
-                       $post_author_data = $author_data;
-               }
+               $post_author_id = $post->post_author;
+
+               // If no author set yet, default to current user for cap checks.
+               if ( ! $post_author_id )
+                       $post_author_id = $user_id;
+
+               $post_author_data = $post_author_id == get_current_user_id() ? wp_get_current_user() : get_userdata( $post_author_id );
 
                // If the user is the author...
                if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID ) {
@@ -1010,7 +1064,6 @@ function map_meta_cap( $cap, $user_id ) {
                // edit_others_posts
        case 'edit_post':
        case 'edit_page':
-               $author_data = get_userdata( $user_id );
                $post = get_post( $args[0] );
 
                if ( 'revision' == $post->post_type ) {
@@ -1027,14 +1080,14 @@ function map_meta_cap( $cap, $user_id ) {
                        break;
                }
 
-               if ( '' != $post->post_author ) {
-                       $post_author_data = get_userdata( $post->post_author );
-               } else {
-                       // No author set yet, so default to current user for cap checks.
-                       $post_author_data = $author_data;
-               }
+               $post_author_id = $post->post_author;
+
+               // If no author set yet, default to current user for cap checks.
+               if ( ! $post_author_id )
+                       $post_author_id = $user_id;
+
+               $post_author_data = $post_author_id == get_current_user_id() ? wp_get_current_user() : get_userdata( $post_author_id );
 
-               //echo "current user id : $user_id, post author id: " . $post_author_data->ID . "<br />";
                // If the user is the author...
                if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID ) {
                        // If the post is published...
@@ -1059,7 +1112,6 @@ function map_meta_cap( $cap, $user_id ) {
                break;
        case 'read_post':
        case 'read_page':
-               $author_data = get_userdata( $user_id );
                $post = get_post( $args[0] );
 
                if ( 'revision' == $post->post_type ) {
@@ -1082,12 +1134,13 @@ function map_meta_cap( $cap, $user_id ) {
                        break;
                }
 
-               if ( '' != $post->post_author ) {
-                       $post_author_data = get_userdata( $post->post_author );
-               } else {
-                       // No author set yet, so default to current user for cap checks.
-                       $post_author_data = $author_data;
-               }
+               $post_author_id = $post->post_author;
+
+               // If no author set yet, default to current user for cap checks.
+               if ( ! $post_author_id )
+                       $post_author_id = $user_id;
+
+               $post_author_data = $post_author_id == get_current_user_id() ? wp_get_current_user() : get_userdata( $post_author_id );
 
                if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID )
                        $caps[] = $post_type->cap->read;
@@ -1096,6 +1149,12 @@ function map_meta_cap( $cap, $user_id ) {
                else
                        $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
                break;
+       case 'publish_post':
+               $post = get_post( $args[0] );
+               $post_type = get_post_type_object( $post->post_type );
+
+               $caps[] = $post_type->cap->publish_posts;
+               break;
        case 'edit_post_meta':
        case 'delete_post_meta':
        case 'add_post_meta':
@@ -1138,11 +1197,16 @@ function map_meta_cap( $cap, $user_id ) {
        case 'edit_files':
        case 'edit_plugins':
        case 'edit_themes':
-               if ( defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ) {
+               // Disallow the file editors.
+               if ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT )
                        $caps[] = 'do_not_allow';
-                       break;
-               }
-               // Fall through if not DISALLOW_FILE_EDIT.
+               elseif ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS )
+                       $caps[] = 'do_not_allow';
+               elseif ( is_multisite() && ! is_super_admin( $user_id ) )
+                       $caps[] = 'do_not_allow';
+               else
+                       $caps[] = $cap;
+               break;
        case 'update_plugins':
        case 'delete_plugins':
        case 'install_plugins':
@@ -1150,23 +1214,31 @@ function map_meta_cap( $cap, $user_id ) {
        case 'delete_themes':
        case 'install_themes':
        case 'update_core':
-               // Disallow anything that creates, deletes, or edits core, plugin, or theme files.
+               // Disallow anything that creates, deletes, or updates core, plugin, or theme files.
                // Files in uploads are excepted.
-               if ( defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS ) {
+               if ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS )
                        $caps[] = 'do_not_allow';
-                       break;
+               elseif ( is_multisite() && ! is_super_admin( $user_id ) )
+                       $caps[] = 'do_not_allow';
+               else
+                       $caps[] = $cap;
+               break;
+       case 'activate_plugins':
+               $caps[] = $cap;
+               if ( is_multisite() ) {
+                       // update_, install_, and delete_ are handled above with is_super_admin().
+                       $menu_perms = get_site_option( 'menu_items', array() );
+                       if ( empty( $menu_perms['plugins'] ) )
+                               $caps[] = 'manage_network_plugins';
                }
-               // Fall through if not DISALLOW_FILE_MODS.
+               break;
        case 'delete_user':
        case 'delete_users':
-               // If multisite these caps are allowed only for super admins.
-               if ( is_multisite() && !is_super_admin( $user_id ) ) {
+               // If multisite only super admins can delete users.
+               if ( is_multisite() && ! is_super_admin( $user_id ) )
                        $caps[] = 'do_not_allow';
-               } else {
-                       if ( 'delete_user' == $cap )
-                               $cap = 'delete_users';
-                       $caps[] = $cap;
-               }
+               else
+                       $caps[] = 'delete_users'; // delete_user maps to delete_users.
                break;
        case 'create_users':
                if ( !is_multisite() )
@@ -1176,6 +1248,12 @@ function map_meta_cap( $cap, $user_id ) {
                else
                        $caps[] = 'do_not_allow';
                break;
+       case 'manage_links' :
+               if ( get_option( 'link_manager_enabled' ) )
+                       $caps[] = $cap;
+               else
+                       $caps[] = 'do_not_allow';
+               break;
        default:
                // Handle meta capabilities for custom post types.
                $post_type_meta_caps = _post_type_meta_capabilities();
@@ -1221,21 +1299,23 @@ function current_user_can( $capability ) {
  * @return bool
  */
 function current_user_can_for_blog( $blog_id, $capability ) {
+       if ( is_multisite() )
+               switch_to_blog( $blog_id );
+
        $current_user = wp_get_current_user();
 
        if ( empty( $current_user ) )
                return false;
 
-       // Create new object to avoid stomping the global current_user.
-       $user = new WP_User( $current_user->ID) ;
-
-       // Set the blog id. @todo add blog id arg to WP_User constructor?
-       $user->for_blog( $blog_id );
-
        $args = array_slice( func_get_args(), 2 );
        $args = array_merge( array( $capability ), $args );
 
-       return call_user_func_array( array( &$user, 'has_cap' ), $args );
+       $can = call_user_func_array( array( $current_user, 'has_cap' ), $args );
+
+       if ( is_multisite() )
+               restore_current_blog();
+
+       return $can;
 }
 
 /**
@@ -1251,15 +1331,15 @@ function author_can( $post, $capability ) {
        if ( !$post = get_post($post) )
                return false;
 
-       $author = new WP_User( $post->post_author );
+       $author = get_userdata( $post->post_author );
 
-       if ( empty( $author->ID ) )
+       if ( ! $author )
                return false;
 
        $args = array_slice( func_get_args(), 2 );
        $args = array_merge( array( $capability ), $args );
 
-       return call_user_func_array( array( &$author, 'has_cap' ), $args );
+       return call_user_func_array( array( $author, 'has_cap' ), $args );
 }
 
 /**
@@ -1273,7 +1353,7 @@ function author_can( $post, $capability ) {
  */
 function user_can( $user, $capability ) {
        if ( ! is_object( $user ) )
-               $user = new WP_User( $user );
+               $user = get_userdata( $user );
 
        if ( ! $user || ! $user->exists() )
                return false;
@@ -1281,7 +1361,7 @@ function user_can( $user, $capability ) {
        $args = array_slice( func_get_args(), 2 );
        $args = array_merge( array( $capability ), $args );
 
-       return call_user_func_array( array( &$user, 'has_cap' ), $args );
+       return call_user_func_array( array( $user, 'has_cap' ), $args );
 }
 
 /**
@@ -1367,12 +1447,12 @@ function get_super_admins() {
  * @return bool True if the user is a site admin.
  */
 function is_super_admin( $user_id = false ) {
-       if ( $user_id )
-               $user = new WP_User( $user_id );
-       else
+       if ( ! $user_id || $user_id == get_current_user_id() )
                $user = wp_get_current_user();
+       else
+               $user = get_userdata( $user_id );
 
-       if ( ! $user->exists() )
+       if ( ! $user || ! $user->exists() )
                return false;
 
        if ( is_multisite() ) {
index 2e23f8a3feabb751dad6caa78cc8347b97df16e8..e45734abbbaf334f9bf4110af88325df3f09a333 100644 (file)
@@ -41,7 +41,7 @@ function get_category_link( $category ) {
  */
 function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
        $chain = '';
-       $parent = &get_category( $id );
+       $parent = get_category( $id );
        if ( is_wp_error( $parent ) )
                return $parent;
 
@@ -73,7 +73,7 @@ function get_category_parents( $id, $link = false, $separator = '/', $nicename =
  */
 function get_the_category( $id = false ) {
        $categories = get_the_terms( $id, 'category' );
-       if ( ! $categories )
+       if ( ! $categories || is_wp_error( $categories ) )
                $categories = array();
 
        $categories = array_values( $categories );
@@ -135,7 +135,7 @@ function _usort_terms_by_ID( $a, $b ) {
  */
 function get_the_category_by_ID( $cat_ID ) {
        $cat_ID = (int) $cat_ID;
-       $category = &get_category( $cat_ID );
+       $category = get_category( $cat_ID );
        if ( is_wp_error( $category ) )
                return $category;
        return $category->name;
@@ -1054,29 +1054,21 @@ function term_description( $term = 0, $taxonomy = 'post_tag' ) {
  *
  * @since 2.5.0
  *
- * @param int $id Post ID.
+ * @param mixed $post Post ID or object.
  * @param string $taxonomy Taxonomy name.
  * @return array|bool False on failure. Array of term objects on success.
  */
-function get_the_terms( $id, $taxonomy ) {
-       global $post;
-
-       $id = (int) $id;
-
-       if ( !$id ) {
-               if ( empty( $post->ID ) )
-                       return false;
-               else
-                       $id = (int) $post->ID;
-       }
+function get_the_terms( $post, $taxonomy ) {
+       if ( ! $post = get_post( $post ) )
+               return false;
 
-       $terms = get_object_term_cache( $id, $taxonomy );
+       $terms = get_object_term_cache( $post->ID, $taxonomy );
        if ( false === $terms ) {
-               $terms = wp_get_object_terms( $id, $taxonomy );
-               wp_cache_add($id, $terms, $taxonomy . '_relationships');
+               $terms = wp_get_object_terms( $post->ID, $taxonomy );
+               wp_cache_add($post->ID, $terms, $taxonomy . '_relationships');
        }
 
-       $terms = apply_filters( 'get_the_terms', $terms, $id, $taxonomy );
+       $terms = apply_filters( 'get_the_terms', $terms, $post->ID, $taxonomy );
 
        if ( empty( $terms ) )
                return false;
index 17283d01a9186b587bce76b76e7fb25d992a5a50..adac2475bf2569da38663b214195155a919866e7 100644 (file)
@@ -36,7 +36,7 @@ function get_all_category_ids() {
  * @param string|array $args Optional. Change the defaults retrieving categories.
  * @return array List of categories.
  */
-function &get_categories( $args = '' ) {
+function get_categories( $args = '' ) {
        $defaults = array( 'taxonomy' => 'category' );
        $args = wp_parse_args( $args, $defaults );
 
@@ -78,7 +78,7 @@ function &get_categories( $args = '' ) {
  * @param string $filter Optional. Default is raw or no WordPress defined filter will applied.
  * @return mixed Category data in type defined by $output parameter.
  */
-function &get_category( $category, $output = OBJECT, $filter = 'raw' ) {
+function get_category( $category, $output = OBJECT, $filter = 'raw' ) {
        $category = get_term( $category, 'category', $output, $filter );
        if ( is_wp_error( $category ) )
                return $category;
@@ -165,10 +165,10 @@ function get_category_by_slug( $slug  ) {
  *
  * @since 1.0.0
  *
- * @param string $cat_name Optional. Default is 'General' and can be any category name.
+ * @param string $cat_name Category name.
  * @return int 0, if failure and ID of category on success.
  */
-function get_cat_ID( $cat_name='General' ) {
+function get_cat_ID( $cat_name ) {
        $cat = get_term_by( 'name', $cat_name, 'category' );
        if ( $cat )
                return $cat->term_id;
@@ -185,7 +185,7 @@ function get_cat_ID( $cat_name='General' ) {
  */
 function get_cat_name( $cat_id ) {
        $cat_id = (int) $cat_id;
-       $category = &get_category( $cat_id );
+       $category = get_category( $cat_id );
        if ( ! $category || is_wp_error( $category ) )
                return '';
        return $category->name;
@@ -249,7 +249,7 @@ function sanitize_category_field( $field, $value, $cat_id, $context ) {
  * @param string|array $args Tag arguments to use when retrieving tags.
  * @return array List of tags.
  */
-function &get_tags( $args = '' ) {
+function get_tags( $args = '' ) {
        $tags = get_terms( 'post_tag', $args );
 
        if ( empty( $tags ) ) {
@@ -280,7 +280,7 @@ function &get_tags( $args = '' ) {
  * @param string $filter Optional. Default is raw or no WordPress defined filter will applied.
  * @return object|array Return type based on $output value.
  */
-function &get_tag( $tag, $output = OBJECT, $filter = 'raw' ) {
+function get_tag( $tag, $output = OBJECT, $filter = 'raw' ) {
        return get_term( $tag, 'post_tag', $output, $filter );
 }
 
index 64a60d46b31ed799fb52a0cdd1ef3bbfab35966b..f8fbc00b10f67b8d154c4dc9a8e8d50bf8de229a 100644 (file)
@@ -466,11 +466,18 @@ EOD;
 
     function output($xml)
     {
-        $xml = '<?xml version="1.0"?>'."\n".$xml;
+        $charset = function_exists('get_option') ? get_option('blog_charset') : '';
+        if ($charset)
+            $xml = '<?xml version="1.0" encoding="'.$charset.'"?>'."\n".$xml;
+        else
+            $xml = '<?xml version="1.0"?>'."\n".$xml;
         $length = strlen($xml);
         header('Connection: close');
         header('Content-Length: '.$length);
-        header('Content-Type: text/xml');
+        if ($charset)
+            header('Content-Type: text/xml; charset='.$charset);
+        else
+            header('Content-Type: text/xml');
         header('Date: '.date('r'));
         echo $xml;
         exit;
index 067f36c2c65bd295baecb94e5d106adbb9ad8dd1..c442050c12d64c3f1dd21deb829314d824670f79 100644 (file)
@@ -85,10 +85,45 @@ class WP_SimplePie_File extends SimplePie_File {
                                $this->status_code = wp_remote_retrieve_response_code( $res );
                        }
                } else {
-                       if ( ! $this->body = file_get_contents($url) ) {
+                       if ( ! file_exists($url) || ( ! $this->body = file_get_contents($url) ) ) {
                                $this->error = 'file_get_contents could not read the file';
                                $this->success = false;
                        }
                }
        }
 }
+
+/**
+ * WordPress SimplePie Sanitization Class
+ *
+ * Extension of the SimplePie_Sanitize class to use KSES, because
+ * we cannot universally count on DOMDocument being available
+ *
+ * @package WordPress
+ * @since 3.5.0
+ */
+class WP_SimplePie_Sanitize_KSES extends SimplePie_Sanitize {
+       public function sanitize( $data, $type, $base = '' ) {
+               $data = trim( $data );
+               if ( $type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML ) {
+                       if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) {
+                               $type |= SIMPLEPIE_CONSTRUCT_HTML;
+                       }
+                       else {
+                               $type |= SIMPLEPIE_CONSTRUCT_TEXT;
+                       }
+               }
+               if ( $type & SIMPLEPIE_CONSTRUCT_BASE64 ) {
+                       $data = base64_decode( $data );
+               }
+               if ( $type & ( SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML ) ) {
+                       $data = wp_kses_post( $data );
+                       if ( $this->output_encoding !== 'UTF-8' ) {
+                               $data = $this->registry->call( 'Misc', 'change_encoding', array( $data, 'UTF-8', $this->output_encoding ) );
+                       }
+                       return $data;
+               } else {
+                       return parent::sanitize( $data, $type, $base );
+               }
+       }
+}
index 31a13ea6d1ae040aaef4ceb86fa34c0876b884a4..b50909fd9f991a13267ea7c6d6be51ea6baee1a9 100644 (file)
@@ -169,21 +169,17 @@ class WP_Http {
                if ( WP_Http_Encoding::is_available() )
                        $r['headers']['Accept-Encoding'] = WP_Http_Encoding::accept_encoding();
 
-               if ( empty($r['body']) ) {
-                       $r['body'] = null;
-                       // Some servers fail when sending content without the content-length header being set.
-                       // Also, to fix another bug, we only send when doing POST and PUT and the content-length
-                       // header isn't already set.
-                       if ( ($r['method'] == 'POST' || $r['method'] == 'PUT') && ! isset( $r['headers']['Content-Length'] ) )
-                               $r['headers']['Content-Length'] = 0;
-               } else {
+               if ( ( ! is_null( $r['body'] ) && '' != $r['body'] ) || 'POST' == $r['method'] || 'PUT' == $r['method'] ) {
                        if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) {
                                $r['body'] = http_build_query( $r['body'], null, '&' );
+
                                if ( ! isset( $r['headers']['Content-Type'] ) )
                                        $r['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' );
-                               $r['headers']['Content-Length'] = strlen( $r['body'] );
                        }
 
+                       if ( '' === $r['body'] )
+                               $r['body'] = null;
+
                        if ( ! isset( $r['headers']['Content-Length'] ) && ! isset( $r['headers']['content-length'] ) )
                                $r['headers']['Content-Length'] = strlen( $r['body'] );
                }
@@ -200,7 +196,7 @@ class WP_Http {
         * @param array $args Request arguments
         * @param string $url URL to Request
         *
-        * @return string|false Class name for the first transport that claims to support the request. False if no transport claims to support the request.
+        * @return string|bool Class name for the first transport that claims to support the request. False if no transport claims to support the request.
         */
        public function _get_first_available_transport( $args, $url = null ) {
                $request_order = array( 'curl', 'streams', 'fsockopen' );
@@ -382,18 +378,18 @@ class WP_Http {
 
                        list($key, $value) = explode(':', $tempheader, 2);
 
-                       if ( !empty( $value ) ) {
-                               $key = strtolower( $key );
-                               if ( isset( $newheaders[$key] ) ) {
-                                       if ( !is_array($newheaders[$key]) )
-                                               $newheaders[$key] = array($newheaders[$key]);
-                                       $newheaders[$key][] = trim( $value );
-                               } else {
-                                       $newheaders[$key] = trim( $value );
-                               }
-                               if ( 'set-cookie' == $key )
-                                       $cookies[] = new WP_Http_Cookie( $value );
+                       $key = strtolower( $key );
+                       $value = trim( $value );
+
+                       if ( isset( $newheaders[ $key ] ) ) {
+                               if ( ! is_array( $newheaders[ $key ] ) )
+                                       $newheaders[$key] = array( $newheaders[ $key ] );
+                               $newheaders[ $key ][] = $value;
+                       } else {
+                               $newheaders[ $key ] = $value;
                        }
+                       if ( 'set-cookie' == $key )
+                               $cookies[] = new WP_Http_Cookie( $value );
                }
 
                return array('response' => $response, 'headers' => $newheaders, 'cookies' => $cookies);
@@ -429,6 +425,8 @@ class WP_Http {
         * Based off the HTTP http_encoding_dechunk function. Does not support UTF-8. Does not support
         * returning footer headers. Shouldn't be too difficult to support it though.
         *
+        * @link http://tools.ietf.org/html/rfc2616#section-19.4.6 Process for chunked decoding.
+        *
         * @todo Add support for footer chunked headers.
         * @access public
         * @since 2.7.0
@@ -806,7 +804,7 @@ class WP_Http_Fsockopen {
                if ( ! function_exists( 'fsockopen' ) )
                        return false;
 
-               if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
+               if ( false !== ( $option = get_option( 'disable_fsockopen' ) ) && time() - $option < 12 * HOUR_IN_SECONDS )
                        return false;
 
                $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
@@ -912,7 +910,7 @@ class WP_Http_Streams {
                                $arrContext['http']['header'] .= $proxy->authentication_header() . "\r\n";
                }
 
-               if ( ! empty($r['body'] ) )
+               if ( ! is_null( $r['body'] ) )
                        $arrContext['http']['content'] = $r['body'];
 
                $context = stream_context_create($arrContext);
@@ -1105,13 +1103,13 @@ class WP_Http_Curl {
                                break;
                        default:
                                curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $r['method'] );
-                               if ( ! empty( $r['body'] ) )
+                               if ( ! is_null( $r['body'] ) )
                                        curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
                                break;
                }
 
                if ( true === $r['blocking'] )
-                       curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( &$this, 'stream_headers' ) );
+                       curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) );
 
                curl_setopt( $handle, CURLOPT_HEADER, false );
 
@@ -1392,6 +1390,10 @@ class WP_HTTP_Proxy {
 
                $home = parse_url( get_option('siteurl') );
 
+               $result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home );
+               if ( ! is_null( $result ) )
+                       return $result;
+
                if ( $check['host'] == 'localhost' || $check['host'] == $home['host'] )
                        return false;
 
@@ -1546,7 +1548,7 @@ class WP_Http_Cookie {
         */
        function test( $url ) {
                // Expires - if expired then nothing else matters
-               if ( time() > $this->expires )
+               if ( isset( $this->expires ) && time() > $this->expires )
                        return false;
 
                // Get details on the URL we're thinking about sending to
@@ -1586,7 +1588,7 @@ class WP_Http_Cookie {
         * @return string Header encoded cookie name and value.
         */
        function getHeaderValue() {
-               if ( empty( $this->name ) || empty( $this->value ) )
+               if ( ! isset( $this->name ) || ! isset( $this->value ) )
                        return '';
 
                return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name );
@@ -1673,7 +1675,7 @@ class WP_Http_Encoding {
        /**
         * Decompression of deflated string while staying compatible with the majority of servers.
         *
-        * Certain Servers will return deflated data with headers which PHP's gziniflate()
+        * Certain Servers will return deflated data with headers which PHP's gzinflate()
         * function cannot handle out of the box. The following function has been created from
         * various snippets on the gzinflate() PHP documentation.
         *
index f2fc024702a801b05be7f45ba13b6a5507da8ad6..46d5f6290db6b15cfd9e67bf4ce6dbc27de75663 100644 (file)
@@ -30,28 +30,31 @@ class WP_oEmbed {
                // The WP_Embed class disables discovery for non-unfiltered_html users, so only providers in this array will be used for them.
                // Add to this list using the wp_oembed_add_provider() function (see its PHPDoc for details).
                $this->providers = apply_filters( 'oembed_providers', array(
-                       '#http://(www\.)?youtube.com/watch.*#i'              => array( 'http://www.youtube.com/oembed',                     true  ),
+                       '#https?://(www\.)?youtube.com/watch.*#i'            => array( 'http://www.youtube.com/oembed',                     true  ),
                        'http://youtu.be/*'                                  => array( 'http://www.youtube.com/oembed',                     false ),
                        'http://blip.tv/*'                                   => array( 'http://blip.tv/oembed/',                            false ),
-                       '#http://(www\.)?vimeo\.com/.*#i'                    => array( 'http://vimeo.com/api/oembed.{format}',              true  ),
-                       '#http://(www\.)?dailymotion\.com/.*#i'              => array( 'http://www.dailymotion.com/services/oembed',        true  ),
-                       '#http://(www\.)?flickr\.com/.*#i'                   => array( 'http://www.flickr.com/services/oembed/',            true  ),
-                       '#http://(.+\.)?smugmug\.com/.*#i'                   => array( 'http://api.smugmug.com/services/oembed/',           true  ),
-                       '#http://(www\.)?hulu\.com/watch/.*#i'               => array( 'http://www.hulu.com/api/oembed.{format}',           true  ),
-                       '#http://(www\.)?viddler\.com/.*#i'                  => array( 'http://lab.viddler.com/services/oembed/',           true  ),
+                       '#https?://(www\.)?vimeo\.com/.*#i'                  => array( 'http://vimeo.com/api/oembed.{format}',              true  ),
+                       '#https?://(www\.)?dailymotion\.com/.*#i'            => array( 'http://www.dailymotion.com/services/oembed',        true  ),
+                       '#https?://(www\.)?flickr\.com/.*#i'                 => array( 'http://www.flickr.com/services/oembed/',            true  ),
+                       '#https?://(.+\.)?smugmug\.com/.*#i'                 => array( 'http://api.smugmug.com/services/oembed/',           true  ),
+                       '#https?://(www\.)?hulu\.com/watch/.*#i'             => array( 'http://www.hulu.com/api/oembed.{format}',           true  ),
+                       '#https?://(www\.)?viddler\.com/.*#i'                => array( 'http://lab.viddler.com/services/oembed/',           true  ),
                        'http://qik.com/*'                                   => array( 'http://qik.com/api/oembed.{format}',                false ),
                        'http://revision3.com/*'                             => array( 'http://revision3.com/api/oembed/',                  false ),
                        'http://i*.photobucket.com/albums/*'                 => array( 'http://photobucket.com/oembed',                     false ),
                        'http://gi*.photobucket.com/groups/*'                => array( 'http://photobucket.com/oembed',                     false ),
-                       '#http://(www\.)?scribd\.com/.*#i'                   => array( 'http://www.scribd.com/services/oembed',             true  ),
+                       '#https?://(www\.)?scribd\.com/.*#i'                 => array( 'http://www.scribd.com/services/oembed',             true  ),
                        'http://wordpress.tv/*'                              => array( 'http://wordpress.tv/oembed/',                       false ),
-                       '#http://(.+\.)?polldaddy\.com/.*#i'                 => array( 'http://polldaddy.com/oembed/',                      true  ),
-                       '#http://(www\.)?funnyordie\.com/videos/.*#i'        => array( 'http://www.funnyordie.com/oembed',                  true  ),
+                       '#https?://(.+\.)?polldaddy\.com/.*#i'               => array( 'http://polldaddy.com/oembed/',                      true  ),
+                       '#https?://(www\.)?funnyordie\.com/videos/.*#i'      => array( 'http://www.funnyordie.com/oembed',                  true  ),
                        '#https?://(www\.)?twitter.com/.+?/status(es)?/.*#i' => array( 'http://api.twitter.com/1/statuses/oembed.{format}', true  ),
+                       '#https?://(www\.)?soundcloud\.com/.*#i'             => array( 'http://soundcloud.com/oembed',                      true  ),
+                       '#https?://(www\.)?slideshare.net/*#'                => array( 'http://www.slideshare.net/api/oembed/2',            true  ),
+                       '#http://instagr(\.am|am\.com)/p/.*#i'               => array( 'http://api.instagram.com/oembed',                   true  ),
                ) );
 
                // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
-               add_filter( 'oembed_dataparse', array(&$this, '_strip_newlines'), 10, 3 );
+               add_filter( 'oembed_dataparse', array($this, '_strip_newlines'), 10, 3 );
        }
 
        /**
@@ -75,8 +78,10 @@ class WP_oEmbed {
                        list( $providerurl, $regex ) = $data;
 
                        // Turn the asterisk-type provider URLs into regex
-                       if ( !$regex )
+                       if ( !$regex ) {
                                $matchmask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $matchmask ), '#' ) ) . '#i';
+                               $matchmask = preg_replace( '|^#http\\\://|', '#https?\://', $matchmask );
+                       }
 
                        if ( preg_match( $matchmask, $url ) ) {
                                $provider = str_replace( '{format}', 'json', $providerurl ); // JSON is easier to deal with than XML
@@ -163,6 +168,8 @@ class WP_oEmbed {
                $provider = add_query_arg( 'maxheight', (int) $args['height'], $provider );
                $provider = add_query_arg( 'url', urlencode($url), $provider );
 
+               $provider = apply_filters( 'oembed_fetch_url', $provider, $url, $args );
+
                foreach( array( 'json', 'xml' ) as $format ) {
                        $result = $this->_fetch_with_format( $provider, $format );
                        if ( is_wp_error( $result ) && 'not-implemented' == $result->get_error_code() )
@@ -209,20 +216,39 @@ class WP_oEmbed {
         * @access private
         */
        function _parse_xml( $response_body ) {
-               if ( function_exists('simplexml_load_string') ) {
-                       $errors = libxml_use_internal_errors( 'true' );
-                       $data = simplexml_load_string( $response_body );
-                       libxml_use_internal_errors( $errors );
-                       if ( ! is_object( $data ) )
-                               return false;
-
-                       $return = new stdClass;
-                       foreach ( $data as $key => $value )
-                               $return->$key = (string) $value;
-
-                       return $return;
+               if ( !function_exists('simplexml_load_string') ) {
+                       return false;
                }
-               return false;
+
+               if ( ! class_exists( 'DOMDocument' ) )
+                       return false;
+
+               $errors = libxml_use_internal_errors( true );
+               $old_value = null;
+               if ( function_exists( 'libxml_disable_entity_loader' ) ) {
+                       $old_value = libxml_disable_entity_loader( true );
+               }
+
+               $dom = new DOMDocument;
+               $success = $dom->loadXML( $response_body );
+
+               if ( ! is_null( $old_value ) ) {
+                       libxml_disable_entity_loader( $old_value );
+               }
+               libxml_use_internal_errors( $errors );
+
+               if ( ! $success || isset( $dom->doctype ) ) {
+                       return false;
+               }
+
+               $data = simplexml_import_dom( $dom );
+               if ( ! is_object( $data ) )
+                       return false;
+
+               $return = new stdClass;
+               foreach ( $data as $key => $value )
+                       $return->$key = (string) $value;
+               return $return;
        }
 
        /**
@@ -296,7 +322,7 @@ class WP_oEmbed {
  *
  * @return WP_oEmbed object.
  */
-function &_wp_oembed_get_object() {
+function _wp_oembed_get_object() {
        static $wp_oembed;
 
        if ( is_null($wp_oembed) )
index 6128495d88c08007cc799d0c71f59ff83e310330..ba6f28dba0a5f98d31d023885fc25a7908db2e04 100644 (file)
@@ -1,12 +1,71 @@
 <?php
 if ( ! class_exists( 'SimplePie' ) ) :
+
+// Load classes we will need.
+require ABSPATH . WPINC . '/SimplePie/Misc.php';
+require ABSPATH . WPINC . '/SimplePie/Cache.php';
+require ABSPATH . WPINC . '/SimplePie/File.php';
+require ABSPATH . WPINC . '/SimplePie/Sanitize.php';
+require ABSPATH . WPINC . '/SimplePie/Registry.php';
+require ABSPATH . WPINC . '/SimplePie/IRI.php';
+require ABSPATH . WPINC . '/SimplePie/Locator.php';
+require ABSPATH . WPINC . '/SimplePie/Content/Type/Sniffer.php';
+require ABSPATH . WPINC . '/SimplePie/XML/Declaration/Parser.php';
+require ABSPATH . WPINC . '/SimplePie/Parser.php';
+require ABSPATH . WPINC . '/SimplePie/Item.php';
+require ABSPATH . WPINC . '/SimplePie/Parse/Date.php';
+require ABSPATH . WPINC . '/SimplePie/Author.php';
+
+/**
+ * WordPress autoloader for SimplePie.
+ *
+ * @since 3.5.0
+ */
+function wp_simplepie_autoload( $class ) {
+       if ( 0 !== strpos( $class, 'SimplePie_' ) )
+               return;
+
+       $file = ABSPATH . WPINC . '/' . str_replace( '_', '/', $class ) . '.php';
+       include $file;
+}
+
+if ( function_exists( 'spl_autoload_register' ) ) {
+       /**
+        * We autoload classes we may not need.
+        *
+        * If SPL is disabled, we load all of SimplePie manually.
+        *
+        * Core.php is not loaded manually, because SimplePie_Core (a deprecated class)
+        * was never included in WordPress core.
+        */
+       spl_autoload_register( 'wp_simplepie_autoload' );
+} else {
+       require ABSPATH . WPINC . '/SimplePie/Cache/Base.php';
+       require ABSPATH . WPINC . '/SimplePie/Cache/DB.php';
+       require ABSPATH . WPINC . '/SimplePie/Cache/File.php';
+       require ABSPATH . WPINC . '/SimplePie/Cache/Memcache.php';
+       require ABSPATH . WPINC . '/SimplePie/Cache/MySQL.php';
+       require ABSPATH . WPINC . '/SimplePie/Caption.php';
+       require ABSPATH . WPINC . '/SimplePie/Category.php';
+       require ABSPATH . WPINC . '/SimplePie/Copyright.php';
+       require ABSPATH . WPINC . '/SimplePie/Credit.php';
+       require ABSPATH . WPINC . '/SimplePie/Decode/HTML/Entities.php';
+       require ABSPATH . WPINC . '/SimplePie/Enclosure.php';
+       require ABSPATH . WPINC . '/SimplePie/gzdecode.php';
+       require ABSPATH . WPINC . '/SimplePie/HTTP/Parser.php';
+       require ABSPATH . WPINC . '/SimplePie/Net/IPv6.php';
+       require ABSPATH . WPINC . '/SimplePie/Rating.php';
+       require ABSPATH . WPINC . '/SimplePie/Restriction.php';
+       require ABSPATH . WPINC . '/SimplePie/Source.php';
+}
+
 /**
  * SimplePie
  *
  * A PHP-Based RSS and Atom Feed Framework.
  * Takes the hard work out of managing a complete RSS/Atom solution.
  *
- * Copyright (c) 2004-2011, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
+ * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modification, are
@@ -34,15 +93,13 @@ if ( ! class_exists( 'SimplePie' ) ) :
  * POSSIBILITY OF SUCH DAMAGE.
  *
  * @package SimplePie
- * @version 1.2.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
+ * @version 1.3.1
+ * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
  * @author Ryan Parman
  * @author Geoffrey Sneddon
  * @author Ryan McCue
  * @link http://simplepie.org/ SimplePie
- * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @todo phpDoc comments
  */
 
 /**
@@ -53,12 +110,13 @@ define('SIMPLEPIE_NAME', 'SimplePie');
 /**
  * SimplePie Version
  */
-define('SIMPLEPIE_VERSION', '1.2.1');
+define('SIMPLEPIE_VERSION', '1.3.1');
 
 /**
  * SimplePie Build
+ * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::get_build() only every load of simplepie.inc)
  */
-define('SIMPLEPIE_BUILD', '20111015034325');
+define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::get_build()));
 
 /**
  * SimplePie Website URL
@@ -335,10 +393,30 @@ define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
 define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
 
 /**
- * Wrong Media RSS Namespace
+ * Wrong Media RSS Namespace. Caused by a long-standing typo in the spec.
  */
 define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
 
+/**
+ * Wrong Media RSS Namespace #2. New namespace introduced in Media RSS 1.5.
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2', 'http://video.search.yahoo.com/mrss');
+
+/**
+ * Wrong Media RSS Namespace #3. A possible typo of the Media RSS 1.5 namespace.
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3', 'http://video.search.yahoo.com/mrss/');
+
+/**
+ * Wrong Media RSS Namespace #4. New spec location after the RSS Advisory Board takes it over, but not a valid namespace.
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4', 'http://www.rssboard.org/media-rss');
+
+/**
+ * Wrong Media RSS Namespace #5. A possible typo of the RSS Advisory Board URL.
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5', 'http://www.rssboard.org/media-rss/');
+
 /**
  * iTunes RSS Namespace
  */
@@ -354,11 +432,6 @@ define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
  */
 define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
 
-/**
- * Whether we're running on PHP5
- */
-define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
-
 /**
  * No file source
  */
@@ -389,10 +462,13 @@ define('SIMPLEPIE_FILE_SOURCE_CURL', 8);
  */
 define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16);
 
+
+
 /**
  * SimplePie
  *
  * @package SimplePie
+ * @subpackage API
  */
 class SimplePie
 {
@@ -400,55 +476,55 @@ class SimplePie
         * @var array Raw data
         * @access private
         */
-       var $data = array();
+       public $data = array();
 
        /**
         * @var mixed Error string
         * @access private
         */
-       var $error;
+       public $error;
 
        /**
         * @var object Instance of SimplePie_Sanitize (or other class)
         * @see SimplePie::set_sanitize_class()
         * @access private
         */
-       var $sanitize;
+       public $sanitize;
 
        /**
         * @var string SimplePie Useragent
         * @see SimplePie::set_useragent()
         * @access private
         */
-       var $useragent = SIMPLEPIE_USERAGENT;
+       public $useragent = SIMPLEPIE_USERAGENT;
 
        /**
         * @var string Feed URL
         * @see SimplePie::set_feed_url()
         * @access private
         */
-       var $feed_url;
+       public $feed_url;
 
        /**
         * @var object Instance of SimplePie_File to use as a feed
         * @see SimplePie::set_file()
         * @access private
         */
-       var $file;
+       public $file;
 
        /**
         * @var string Raw feed data
         * @see SimplePie::set_raw_data()
         * @access private
         */
-       var $raw_data;
+       public $raw_data;
 
        /**
         * @var int Timeout for fetching remote files
         * @see SimplePie::set_timeout()
         * @access private
         */
-       var $timeout = 10;
+       public $timeout = 10;
 
        /**
         * @var bool Forces fsockopen() to be used for remote files instead
@@ -456,7 +532,7 @@ class SimplePie
         * @see SimplePie::force_fsockopen()
         * @access private
         */
-       var $force_fsockopen = false;
+       public $force_fsockopen = false;
 
        /**
         * @var bool Force the given data/URL to be treated as a feed no matter what
@@ -464,56 +540,49 @@ class SimplePie
         * @see SimplePie::force_feed()
         * @access private
         */
-       var $force_feed = false;
-
-       /**
-        * @var bool Enable/Disable XML dump
-        * @see SimplePie::enable_xml_dump()
-        * @access private
-        */
-       var $xml_dump = false;
+       public $force_feed = false;
 
        /**
         * @var bool Enable/Disable Caching
         * @see SimplePie::enable_cache()
         * @access private
         */
-       var $cache = true;
+       public $cache = true;
 
        /**
         * @var int Cache duration (in seconds)
         * @see SimplePie::set_cache_duration()
         * @access private
         */
-       var $cache_duration = 3600;
+       public $cache_duration = 3600;
 
        /**
         * @var int Auto-discovery cache duration (in seconds)
         * @see SimplePie::set_autodiscovery_cache_duration()
         * @access private
         */
-       var $autodiscovery_cache_duration = 604800; // 7 Days.
+       public $autodiscovery_cache_duration = 604800; // 7 Days.
 
        /**
         * @var string Cache location (relative to executing script)
         * @see SimplePie::set_cache_location()
         * @access private
         */
-       var $cache_location = './cache';
+       public $cache_location = './cache';
 
        /**
         * @var string Function that creates the cache filename
         * @see SimplePie::set_cache_name_function()
         * @access private
         */
-       var $cache_name_function = 'md5';
+       public $cache_name_function = 'md5';
 
        /**
         * @var bool Reorder feed by date descending
         * @see SimplePie::enable_order_by_date()
         * @access private
         */
-       var $order_by_date = true;
+       public $order_by_date = true;
 
        /**
         * @var mixed Force input encoding to be set to the follow value
@@ -521,246 +590,132 @@ class SimplePie
         * @see SimplePie::set_input_encoding()
         * @access private
         */
-       var $input_encoding = false;
+       public $input_encoding = false;
 
        /**
         * @var int Feed Autodiscovery Level
         * @see SimplePie::set_autodiscovery_level()
         * @access private
         */
-       var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
-
-       /**
-        * @var string Class used for caching feeds
-        * @see SimplePie::set_cache_class()
-        * @access private
-        */
-       var $cache_class = 'SimplePie_Cache';
-
-       /**
-        * @var string Class used for locating feeds
-        * @see SimplePie::set_locator_class()
-        * @access private
-        */
-       var $locator_class = 'SimplePie_Locator';
-
-       /**
-        * @var string Class used for parsing feeds
-        * @see SimplePie::set_parser_class()
-        * @access private
-        */
-       var $parser_class = 'SimplePie_Parser';
-
-       /**
-        * @var string Class used for fetching feeds
-        * @see SimplePie::set_file_class()
-        * @access private
-        */
-       var $file_class = 'SimplePie_File';
-
-       /**
-        * @var string Class used for items
-        * @see SimplePie::set_item_class()
-        * @access private
-        */
-       var $item_class = 'SimplePie_Item';
-
-       /**
-        * @var string Class used for authors
-        * @see SimplePie::set_author_class()
-        * @access private
-        */
-       var $author_class = 'SimplePie_Author';
-
-       /**
-        * @var string Class used for categories
-        * @see SimplePie::set_category_class()
-        * @access private
-        */
-       var $category_class = 'SimplePie_Category';
-
-       /**
-        * @var string Class used for enclosures
-        * @see SimplePie::set_enclosures_class()
-        * @access private
-        */
-       var $enclosure_class = 'SimplePie_Enclosure';
-
-       /**
-        * @var string Class used for Media RSS <media:text> captions
-        * @see SimplePie::set_caption_class()
-        * @access private
-        */
-       var $caption_class = 'SimplePie_Caption';
-
-       /**
-        * @var string Class used for Media RSS <media:copyright>
-        * @see SimplePie::set_copyright_class()
-        * @access private
-        */
-       var $copyright_class = 'SimplePie_Copyright';
-
-       /**
-        * @var string Class used for Media RSS <media:credit>
-        * @see SimplePie::set_credit_class()
-        * @access private
-        */
-       var $credit_class = 'SimplePie_Credit';
-
-       /**
-        * @var string Class used for Media RSS <media:rating>
-        * @see SimplePie::set_rating_class()
-        * @access private
-        */
-       var $rating_class = 'SimplePie_Rating';
-
-       /**
-        * @var string Class used for Media RSS <media:restriction>
-        * @see SimplePie::set_restriction_class()
-        * @access private
-        */
-       var $restriction_class = 'SimplePie_Restriction';
-
-       /**
-        * @var string Class used for content-type sniffing
-        * @see SimplePie::set_content_type_sniffer_class()
-        * @access private
-        */
-       var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
-
-       /**
-        * @var string Class used for item sources.
-        * @see SimplePie::set_source_class()
-        * @access private
-        */
-       var $source_class = 'SimplePie_Source';
+       public $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
 
        /**
-        * @var mixed Set javascript query string parameter (false, or
-        * anything type-cast to false, disables this feature)
-        * @see SimplePie::set_javascript()
-        * @access private
+        * Class registry object
+        *
+        * @var SimplePie_Registry
         */
-       var $javascript = 'js';
+       public $registry;
 
        /**
         * @var int Maximum number of feeds to check with autodiscovery
         * @see SimplePie::set_max_checked_feeds()
         * @access private
         */
-       var $max_checked_feeds = 10;
+       public $max_checked_feeds = 10;
 
        /**
         * @var array All the feeds found during the autodiscovery process
         * @see SimplePie::get_all_discovered_feeds()
         * @access private
         */
-       var $all_discovered_feeds = array();
-
-       /**
-        * @var string Web-accessible path to the handler_favicon.php file.
-        * @see SimplePie::set_favicon_handler()
-        * @access private
-        */
-       var $favicon_handler = '';
+       public $all_discovered_feeds = array();
 
        /**
         * @var string Web-accessible path to the handler_image.php file.
         * @see SimplePie::set_image_handler()
         * @access private
         */
-       var $image_handler = '';
+       public $image_handler = '';
 
        /**
         * @var array Stores the URLs when multiple feeds are being initialized.
         * @see SimplePie::set_feed_url()
         * @access private
         */
-       var $multifeed_url = array();
+       public $multifeed_url = array();
 
        /**
         * @var array Stores SimplePie objects when multiple feeds initialized.
         * @access private
         */
-       var $multifeed_objects = array();
+       public $multifeed_objects = array();
 
        /**
         * @var array Stores the get_object_vars() array for use with multifeeds.
         * @see SimplePie::set_feed_url()
         * @access private
         */
-       var $config_settings = null;
+       public $config_settings = null;
 
        /**
         * @var integer Stores the number of items to return per-feed with multifeeds.
         * @see SimplePie::set_item_limit()
         * @access private
         */
-       var $item_limit = 0;
+       public $item_limit = 0;
 
        /**
         * @var array Stores the default attributes to be stripped by strip_attributes().
         * @see SimplePie::strip_attributes()
         * @access private
         */
-       var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+       public $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
 
        /**
         * @var array Stores the default tags to be stripped by strip_htmltags().
         * @see SimplePie::strip_htmltags()
         * @access private
         */
-       var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+       public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
 
        /**
         * The SimplePie class contains feed level data and options
         *
-        * There are two ways that you can create a new SimplePie object. The first
-        * is by passing a feed URL as a parameter to the SimplePie constructor
-        * (as well as optionally setting the cache location and cache expiry). This
-        * will initialise the whole feed with all of the default settings, and you
-        * can begin accessing methods and properties immediately.
-        *
-        * The second way is to create the SimplePie object with no parameters
-        * at all. This will enable you to set configuration options. After setting
+        * To use SimplePie, create the SimplePie object with no parameters. You can
+        * then set configuration options using the provided methods. After setting
         * them, you must initialise the feed using $feed->init(). At that point the
-        * object's methods and properties will be available to you. This format is
-        * what is used throughout this documentation.
+        * object's methods and properties will be available to you.
+        *
+        * Previously, it was possible to pass in the feed URL along with cache
+        * options directly into the constructor. This has been removed as of 1.3 as
+        * it caused a lot of confusion.
         *
-        * @access public
         * @since 1.0 Preview Release
-        * @param string $feed_url This is the URL you want to parse.
-        * @param string $cache_location This is where you want the cache to be stored.
-        * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
         */
-       function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
+       public function __construct()
        {
-               // Other objects, instances created here so we can set options on them
-               $this->sanitize =& new SimplePie_Sanitize;
-
-               // Set options if they're passed to the constructor
-               if ($cache_location !== null)
+               if (version_compare(PHP_VERSION, '5.2', '<'))
                {
-                       $this->set_cache_location($cache_location);
+                       trigger_error('PHP 4.x, 5.0 and 5.1 are no longer supported. Please upgrade to PHP 5.2 or newer.');
+                       die();
                }
 
-               if ($cache_duration !== null)
-               {
-                       $this->set_cache_duration($cache_duration);
-               }
+               // Other objects, instances created here so we can set options on them
+               $this->sanitize = new SimplePie_Sanitize();
+               $this->registry = new SimplePie_Registry();
 
-               // Only init the script if we're passed a feed URL
-               if ($feed_url !== null)
+               if (func_num_args() > 0)
                {
-                       $this->set_feed_url($feed_url);
-                       $this->init();
+                       $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
+                       trigger_error('Passing parameters to the constructor is no longer supported. Please use set_feed_url(), set_cache_location(), and set_cache_location() directly.', $level);
+
+                       $args = func_get_args();
+                       switch (count($args)) {
+                               case 3:
+                                       $this->set_cache_duration($args[2]);
+                               case 2:
+                                       $this->set_cache_location($args[1]);
+                               case 1:
+                                       $this->set_feed_url($args[0]);
+                                       $this->init();
+                       }
                }
        }
 
        /**
         * Used for converting object to a string
         */
-       function __toString()
+       public function __toString()
        {
                return md5(serialize($this->data));
        }
@@ -768,7 +723,7 @@ class SimplePie
        /**
         * Remove items that link back to this before destroying this object
         */
-       function __destruct()
+       public function __destruct()
        {
                if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
                {
@@ -792,20 +747,21 @@ class SimplePie
        }
 
        /**
-        * Force the given data/URL to be treated as a feed no matter what it
-        * appears like
+        * Force the given data/URL to be treated as a feed
+        *
+        * This tells SimplePie to ignore the content-type provided by the server.
+        * Be careful when using this option, as it will also disable autodiscovery.
         *
-        * @access public
         * @since 1.1
         * @param bool $enable Force the given data/URL to be treated as a feed
         */
-       function force_feed($enable = false)
+       public function force_feed($enable = false)
        {
                $this->force_feed = (bool) $enable;
        }
 
        /**
-        * This is the URL of the feed you want to parse.
+        * Set the URL of the feed you want to parse
         *
         * This allows you to enter the URL of the feed you want to parse, or the
         * website you want to try to use auto-discovery on. This takes priority
@@ -815,37 +771,35 @@ class SimplePie
         * of a string for the $url. Remember that with each additional feed comes
         * additional processing and resources.
         *
-        * @access public
         * @since 1.0 Preview Release
-        * @param mixed $url This is the URL (or array of URLs) that you want to parse.
-        * @see SimplePie::set_raw_data()
+        * @see set_raw_data()
+        * @param string|array $url This is the URL (or array of URLs) that you want to parse.
         */
-       function set_feed_url($url)
+       public function set_feed_url($url)
        {
+               $this->multifeed_url = array();
                if (is_array($url))
                {
-                       $this->multifeed_url = array();
                        foreach ($url as $value)
                        {
-                               $this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
+                               $this->multifeed_url[] = $this->registry->call('Misc', 'fix_protocol', array($value, 1));
                        }
                }
                else
                {
-                       $this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
+                       $this->feed_url = $this->registry->call('Misc', 'fix_protocol', array($url, 1));
                }
        }
 
        /**
-        * Provides an instance of SimplePie_File to use as a feed
+        * Set an instance of {@see SimplePie_File} to use as a feed
         *
-        * @access public
-        * @param object &$file Instance of SimplePie_File (or subclass)
+        * @param SimplePie_File &$file
         * @return bool True on success, false on failure
         */
-       function set_file(&$file)
+       public function set_file(&$file)
        {
-               if (is_a($file, 'SimplePie_File'))
+               if ($file instanceof SimplePie_File)
                {
                        $this->feed_url = $file->url;
                        $this->file =& $file;
@@ -855,138 +809,113 @@ class SimplePie
        }
 
        /**
+        * Set the raw XML data to parse
+        *
         * Allows you to use a string of RSS/Atom data instead of a remote feed.
         *
         * If you have a feed available as a string in PHP, you can tell SimplePie
         * to parse that data string instead of a remote feed. Any set feed URL
         * takes precedence.
         *
-        * @access public
         * @since 1.0 Beta 3
         * @param string $data RSS or Atom data as a string.
-        * @see SimplePie::set_feed_url()
+        * @see set_feed_url()
         */
-       function set_raw_data($data)
+       public function set_raw_data($data)
        {
                $this->raw_data = $data;
        }
 
        /**
-        * Allows you to override the default timeout for fetching remote feeds.
+        * Set the the default timeout for fetching remote feeds
         *
         * This allows you to change the maximum time the feed's server to respond
         * and send the feed back.
         *
-        * @access public
         * @since 1.0 Beta 3
         * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
         */
-       function set_timeout($timeout = 10)
+       public function set_timeout($timeout = 10)
        {
                $this->timeout = (int) $timeout;
        }
 
        /**
-        * Forces SimplePie to use fsockopen() instead of the preferred cURL
-        * functions.
+        * Force SimplePie to use fsockopen() instead of cURL
         *
-        * @access public
         * @since 1.0 Beta 3
         * @param bool $enable Force fsockopen() to be used
         */
-       function force_fsockopen($enable = false)
+       public function force_fsockopen($enable = false)
        {
                $this->force_fsockopen = (bool) $enable;
        }
 
        /**
-        * Outputs the raw XML content of the feed, after it has gone through
-        * SimplePie's filters.
-        *
-        * Used only for debugging, this function will output the XML content as
-        * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
-        * before trying to parse it. Many parts of the feed are re-written in
-        * memory, and in the end, you have a parsable feed. XML dump shows you the
-        * actual XML that SimplePie tries to parse, which may or may not be very
-        * different from the original feed.
-        *
-        * @access public
-        * @since 1.0 Preview Release
-        * @param bool $enable Enable XML dump
-        */
-       function enable_xml_dump($enable = false)
-       {
-               $this->xml_dump = (bool) $enable;
-       }
-
-       /**
-        * Enables/disables caching in SimplePie.
+        * Enable/disable caching in SimplePie.
         *
         * This option allows you to disable caching all-together in SimplePie.
         * However, disabling the cache can lead to longer load times.
         *
-        * @access public
         * @since 1.0 Preview Release
         * @param bool $enable Enable caching
         */
-       function enable_cache($enable = true)
+       public function enable_cache($enable = true)
        {
                $this->cache = (bool) $enable;
        }
 
        /**
-        * Set the length of time (in seconds) that the contents of a feed
-        * will be cached.
+        * Set the length of time (in seconds) that the contents of a feed will be
+        * cached
         *
-        * @access public
-        * @param int $seconds The feed content cache duration.
+        * @param int $seconds The feed content cache duration
         */
-       function set_cache_duration($seconds = 3600)
+       public function set_cache_duration($seconds = 3600)
        {
                $this->cache_duration = (int) $seconds;
        }
 
        /**
-        * Set the length of time (in seconds) that the autodiscovered feed
-        * URL will be cached.
+        * Set the length of time (in seconds) that the autodiscovered feed URL will
+        * be cached
         *
-        * @access public
         * @param int $seconds The autodiscovered feed URL cache duration.
         */
-       function set_autodiscovery_cache_duration($seconds = 604800)
+       public function set_autodiscovery_cache_duration($seconds = 604800)
        {
                $this->autodiscovery_cache_duration = (int) $seconds;
        }
 
        /**
-        * Set the file system location where the cached files should be stored.
+        * Set the file system location where the cached files should be stored
         *
-        * @access public
         * @param string $location The file system location.
         */
-       function set_cache_location($location = './cache')
+       public function set_cache_location($location = './cache')
        {
                $this->cache_location = (string) $location;
        }
 
        /**
-        * Determines whether feed items should be sorted into reverse chronological order.
+        * Set whether feed items should be sorted into reverse chronological order
         *
-        * @access public
         * @param bool $enable Sort as reverse chronological order.
         */
-       function enable_order_by_date($enable = true)
+       public function enable_order_by_date($enable = true)
        {
                $this->order_by_date = (bool) $enable;
        }
 
        /**
-        * Allows you to override the character encoding reported by the feed.
+        * Set the character encoding used to parse the feed
         *
-        * @access public
-        * @param string $encoding Character encoding.
+        * This overrides the encoding reported by the feed, however it will fall
+        * back to the normal encoding detection if the override fails
+        *
+        * @param string $encoding Character encoding
         */
-       function set_input_encoding($encoding = false)
+       public function set_input_encoding($encoding = false)
        {
                if ($encoding)
                {
@@ -1001,7 +930,6 @@ class SimplePie
        /**
         * Set how much feed autodiscovery to do
         *
-        * @access public
         * @see SIMPLEPIE_LOCATOR_NONE
         * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
         * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
@@ -1009,325 +937,168 @@ class SimplePie
         * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
         * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
         * @see SIMPLEPIE_LOCATOR_ALL
-        * @param int $level Feed Autodiscovery Level (level can be a
-        * combination of the above constants, see bitwise OR operator)
+        * @param int $level Feed Autodiscovery Level (level can be a combination of the above constants, see bitwise OR operator)
         */
-       function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
+       public function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
        {
                $this->autodiscovery = (int) $level;
        }
 
        /**
-        * Allows you to change which class SimplePie uses for caching.
-        * Useful when you are overloading or extending SimplePie's default classes.
+        * Get the class registry
         *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Use this to override SimplePie's default classes
+        * @see SimplePie_Registry
+        * @return SimplePie_Registry
         */
-       function set_cache_class($class = 'SimplePie_Cache')
+       public function &get_registry()
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
-               {
-                       $this->cache_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry;
        }
 
-       /**
-        * Allows you to change which class SimplePie uses for auto-discovery.
+       /**#@+
         * Useful when you are overloading or extending SimplePie's default classes.
         *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+        * @deprecated Use {@see get_registry()} instead
         * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * @param string $class Name of custom class
+        * @return boolean True on success, false otherwise
         */
-       function set_locator_class($class = 'SimplePie_Locator')
+       /**
+        * Set which class SimplePie uses for caching
+        */
+       public function set_cache_class($class = 'SimplePie_Cache')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
-               {
-                       $this->locator_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Cache', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for XML parsing.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for auto-discovery
         */
-       function set_parser_class($class = 'SimplePie_Parser')
+       public function set_locator_class($class = 'SimplePie_Locator')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
-               {
-                       $this->parser_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Locator', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for remote file fetching.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for XML parsing
         */
-       function set_file_class($class = 'SimplePie_File')
+       public function set_parser_class($class = 'SimplePie_Parser')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
-               {
-                       $this->file_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Parser', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for data sanitization.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for remote file fetching
         */
-       function set_sanitize_class($class = 'SimplePie_Sanitize')
+       public function set_file_class($class = 'SimplePie_File')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
-               {
-                       $this->sanitize =& new $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('File', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for handling feed items.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for data sanitization
         */
-       function set_item_class($class = 'SimplePie_Item')
+       public function set_sanitize_class($class = 'SimplePie_Sanitize')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
-               {
-                       $this->item_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Sanitize', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for handling author data.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for handling feed items
         */
-       function set_author_class($class = 'SimplePie_Author')
+       public function set_item_class($class = 'SimplePie_Item')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
-               {
-                       $this->author_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Item', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for handling category data.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for handling author data
         */
-       function set_category_class($class = 'SimplePie_Category')
+       public function set_author_class($class = 'SimplePie_Author')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
-               {
-                       $this->category_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Author', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for feed enclosures.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for handling category data
         */
-       function set_enclosure_class($class = 'SimplePie_Enclosure')
+       public function set_category_class($class = 'SimplePie_Category')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
-               {
-                       $this->enclosure_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Category', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for <media:text> captions
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for feed enclosures
         */
-       function set_caption_class($class = 'SimplePie_Caption')
+       public function set_enclosure_class($class = 'SimplePie_Enclosure')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
-               {
-                       $this->caption_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Enclosure', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for <media:copyright>
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for `<media:text>` captions
         */
-       function set_copyright_class($class = 'SimplePie_Copyright')
+       public function set_caption_class($class = 'SimplePie_Caption')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
-               {
-                       $this->copyright_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Caption', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for <media:credit>
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for `<media:copyright>`
         */
-       function set_credit_class($class = 'SimplePie_Credit')
+       public function set_copyright_class($class = 'SimplePie_Copyright')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
-               {
-                       $this->credit_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Copyright', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for <media:rating>
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for `<media:credit>`
         */
-       function set_rating_class($class = 'SimplePie_Rating')
+       public function set_credit_class($class = 'SimplePie_Credit')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
-               {
-                       $this->rating_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Credit', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for <media:restriction>
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for `<media:rating>`
         */
-       function set_restriction_class($class = 'SimplePie_Restriction')
+       public function set_rating_class($class = 'SimplePie_Rating')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
-               {
-                       $this->restriction_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Rating', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses for content-type sniffing.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for `<media:restriction>`
         */
-       function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
+       public function set_restriction_class($class = 'SimplePie_Restriction')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer'))
-               {
-                       $this->content_type_sniffer_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Restriction', $class, true);
        }
 
        /**
-        * Allows you to change which class SimplePie uses item sources.
-        * Useful when you are overloading or extending SimplePie's default classes.
-        *
-        * @access public
-        * @param string $class Name of custom class.
-        * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
-        * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+        * Set which class SimplePie uses for content-type sniffing
         */
-       function set_source_class($class = 'SimplePie_Source')
+       public function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
        {
-               if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source'))
-               {
-                       $this->source_class = $class;
-                       return true;
-               }
-               return false;
+               return $this->registry->register('Content_Type_Sniffer', $class, true);
+       }
+
+       /**
+        * Set which class SimplePie uses item sources
+        */
+       public function set_source_class($class = 'SimplePie_Source')
+       {
+               return $this->registry->register('Source', $class, true);
        }
+       /**#@-*/
 
        /**
-        * Allows you to override the default user agent string.
+        * Set the user agent string
         *
-        * @access public
         * @param string $ua New user agent string.
         */
-       function set_useragent($ua = SIMPLEPIE_USERAGENT)
+       public function set_useragent($ua = SIMPLEPIE_USERAGENT)
        {
                $this->useragent = (string) $ua;
        }
@@ -1335,10 +1106,9 @@ class SimplePie
        /**
         * Set callback function to create cache filename with
         *
-        * @access public
         * @param mixed $function Callback function
         */
-       function set_cache_name_function($function = 'md5')
+       public function set_cache_name_function($function = 'md5')
        {
                if (is_callable($function))
                {
@@ -1347,31 +1117,14 @@ class SimplePie
        }
 
        /**
-        * Set javascript query string parameter
+        * Set options to make SP as fast as possible
         *
-        * @access public
-        * @param mixed $get Javascript query string parameter
-        */
-       function set_javascript($get = 'js')
-       {
-               if ($get)
-               {
-                       $this->javascript = (string) $get;
-               }
-               else
-               {
-                       $this->javascript = false;
-               }
-       }
-
-       /**
-        * Set options to make SP as fast as possible.  Forgoes a
-        * substantial amount of data sanitization in favor of speed.
+        * Forgoes a substantial amount of data sanitization in favor of speed. This
+        * turns SimplePie into a dumb parser of feeds.
         *
-        * @access public
         * @param bool $set Whether to set them or not
         */
-       function set_stupidly_fast($set = false)
+       public function set_stupidly_fast($set = false)
        {
                if ($set)
                {
@@ -1387,20 +1140,19 @@ class SimplePie
        /**
         * Set maximum number of feeds to check with autodiscovery
         *
-        * @access public
         * @param int $max Maximum number of feeds to check
         */
-       function set_max_checked_feeds($max = 10)
+       public function set_max_checked_feeds($max = 10)
        {
                $this->max_checked_feeds = (int) $max;
        }
 
-       function remove_div($enable = true)
+       public function remove_div($enable = true)
        {
                $this->sanitize->remove_div($enable);
        }
 
-       function strip_htmltags($tags = '', $encode = null)
+       public function strip_htmltags($tags = '', $encode = null)
        {
                if ($tags === '')
                {
@@ -1413,12 +1165,12 @@ class SimplePie
                }
        }
 
-       function encode_instead_of_strip($enable = true)
+       public function encode_instead_of_strip($enable = true)
        {
                $this->sanitize->encode_instead_of_strip($enable);
        }
 
-       function strip_attributes($attribs = '')
+       public function strip_attributes($attribs = '')
        {
                if ($attribs === '')
                {
@@ -1427,12 +1179,34 @@ class SimplePie
                $this->sanitize->strip_attributes($attribs);
        }
 
-       function set_output_encoding($encoding = 'UTF-8')
+       /**
+        * Set the output encoding
+        *
+        * Allows you to override SimplePie's output to match that of your webpage.
+        * This is useful for times when your webpages are not being served as
+        * UTF-8.  This setting will be obeyed by {@see handle_content_type()}, and
+        * is similar to {@see set_input_encoding()}.
+        *
+        * It should be noted, however, that not all character encodings can support
+        * all characters.  If your page is being served as ISO-8859-1 and you try
+        * to display a Japanese feed, you'll likely see garbled characters.
+        * Because of this, it is highly recommended to ensure that your webpages
+        * are served as UTF-8.
+        *
+        * The number of supported character encodings depends on whether your web
+        * host supports {@link http://php.net/mbstring mbstring},
+        * {@link http://php.net/iconv iconv}, or both. See
+        * {@link http://simplepie.org/wiki/faq/Supported_Character_Encodings} for
+        * more information.
+        *
+        * @param string $encoding
+        */
+       public function set_output_encoding($encoding = 'UTF-8')
        {
                $this->sanitize->set_output_encoding($encoding);
        }
 
-       function strip_comments($strip = false)
+       public function strip_comments($strip = false)
        {
                $this->sanitize->strip_comments($strip);
        }
@@ -1441,68 +1215,59 @@ class SimplePie
         * Set element/attribute key/value pairs of HTML attributes
         * containing URLs that need to be resolved relative to the feed
         *
-        * @access public
+        * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
+        * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
+        * |q|@cite
+        *
         * @since 1.0
-        * @param array $element_attribute Element/attribute key/value pairs
+        * @param array|null $element_attribute Element/attribute key/value pairs, null for default
         */
-       function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+       public function set_url_replacements($element_attribute = null)
        {
                $this->sanitize->set_url_replacements($element_attribute);
        }
 
        /**
-        * Set the handler to enable the display of cached favicons.
+        * Set the handler to enable the display of cached images.
         *
-        * @access public
-        * @param str $page Web-accessible path to the handler_favicon.php file.
+        * @param str $page Web-accessible path to the handler_image.php file.
         * @param str $qs The query string that the value should be passed to.
         */
-       function set_favicon_handler($page = false, $qs = 'i')
+       public function set_image_handler($page = false, $qs = 'i')
        {
                if ($page !== false)
                {
-                       $this->favicon_handler = $page . '?' . $qs . '=';
+                       $this->sanitize->set_image_handler($page . '?' . $qs . '=');
                }
                else
                {
-                       $this->favicon_handler = '';
+                       $this->image_handler = '';
                }
        }
 
        /**
-        * Set the handler to enable the display of cached images.
+        * Set the limit for items returned per-feed with multifeeds
         *
-        * @access public
-        * @param str $page Web-accessible path to the handler_image.php file.
-        * @param str $qs The query string that the value should be passed to.
+        * @param integer $limit The maximum number of items to return.
         */
-       function set_image_handler($page = false, $qs = 'i')
+       public function set_item_limit($limit = 0)
        {
-               if ($page !== false)
-               {
-                       $this->sanitize->set_image_handler($page . '?' . $qs . '=');
-               }
-               else
-               {
-                       $this->image_handler = '';
-               }
+               $this->item_limit = (int) $limit;
        }
 
        /**
-        * Set the limit for items returned per-feed with multifeeds.
+        * Initialize the feed object
         *
-        * @access public
-        * @param integer $limit The maximum number of items to return.
+        * This is what makes everything happen.  Period.  This is where all of the
+        * configuration options get processed, feeds are fetched, cached, and
+        * parsed, and all of that other good stuff.
+        *
+        * @return boolean True if successful, false otherwise
         */
-       function set_item_limit($limit = 0)
-       {
-               $this->item_limit = (int) $limit;
-       }
-
-       function init()
+       public function init()
        {
                // Check absolute bare minimum requirements.
-               if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
+               if (!extension_loaded('xml') || !extension_loaded('pcre'))
                {
                        return false;
                }
@@ -1523,331 +1288,383 @@ class SimplePie
                        }
                }
 
-               if (isset($_GET[$this->javascript]))
+               if (method_exists($this->sanitize, 'set_registry'))
                {
-                       SimplePie_Misc::output_javascript();
-                       exit;
+                       $this->sanitize->set_registry($this->registry);
                }
 
                // Pass whatever was set with config options over to the sanitizer.
-               $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
-               $this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
+               // Pass the classes in for legacy support; new classes should use the registry instead
+               $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->registry->get_class('Cache'));
+               $this->sanitize->pass_file_data($this->registry->get_class('File'), $this->timeout, $this->useragent, $this->force_fsockopen);
 
-               if ($this->feed_url !== null || $this->raw_data !== null)
+               if (!empty($this->multifeed_url))
                {
-                       $this->data = array();
+                       $i = 0;
+                       $success = 0;
                        $this->multifeed_objects = array();
-                       $cache = false;
-
-                       if ($this->feed_url !== null)
+                       $this->error = array();
+                       foreach ($this->multifeed_url as $url)
                        {
-                               $parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
-                               // Decide whether to enable caching
-                               if ($this->cache && $parsed_feed_url['scheme'] !== '')
-                               {
-                                       $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
-                               }
-                               // If it's enabled and we don't want an XML dump, use the cache
-                               if ($cache && !$this->xml_dump)
-                               {
-                                       // Load the Cache
-                                       $this->data = $cache->load();
-                                       if (!empty($this->data))
-                                       {
-                                               // If the cache is for an outdated build of SimplePie
-                                               if (!isset($this->data['build']) || $this->data['build'] !== SIMPLEPIE_BUILD)
-                                               {
-                                                       $cache->unlink();
-                                                       $this->data = array();
-                                               }
-                                               // If we've hit a collision just rerun it with caching disabled
-                                               elseif (isset($this->data['url']) && $this->data['url'] !== $this->feed_url)
-                                               {
-                                                       $cache = false;
-                                                       $this->data = array();
-                                               }
-                                               // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
-                                               elseif (isset($this->data['feed_url']))
-                                               {
-                                                       // If the autodiscovery cache is still valid use it.
-                                                       if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
-                                                       {
-                                                               // Do not need to do feed autodiscovery yet.
-                                                               if ($this->data['feed_url'] === $this->data['url'])
-                                                               {
-                                                                       $cache->unlink();
-                                                                       $this->data = array();
-                                                               }
-                                                               else
-                                                               {
-                                                                       $this->set_feed_url($this->data['feed_url']);
-                                                                       return $this->init();
-                                                               }
-                                                       }
-                                               }
-                                               // Check if the cache has been updated
-                                               elseif ($cache->mtime() + $this->cache_duration < time())
-                                               {
-                                                       // If we have last-modified and/or etag set
-                                                       if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
-                                                       {
-                                                               $headers = array();
-                                                               if (isset($this->data['headers']['last-modified']))
-                                                               {
-                                                                       $headers['if-modified-since'] = $this->data['headers']['last-modified'];
-                                                               }
-                                                               if (isset($this->data['headers']['etag']))
-                                                               {
-                                                                       $headers['if-none-match'] = '"' . $this->data['headers']['etag'] . '"';
-                                                               }
-                                                               $file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen);
-                                                               if ($file->success)
-                                                               {
-                                                                       if ($file->status_code === 304)
-                                                                       {
-                                                                               $cache->touch();
-                                                                               return true;
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $headers = $file->headers;
-                                                                       }
-                                                               }
-                                                               else
-                                                               {
-                                                                       unset($file);
-                                                               }
-                                                       }
-                                               }
-                                               // If the cache is still valid, just return true
-                                               else
-                                               {
-                                                       return true;
-                                               }
-                                       }
-                                       // If the cache is empty, delete it
-                                       else
-                                       {
-                                               $cache->unlink();
-                                               $this->data = array();
-                                       }
-                               }
-                               // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
-                               if (!isset($file))
-                               {
-                                       if (is_a($this->file, 'SimplePie_File') && $this->file->url === $this->feed_url)
-                                       {
-                                               $file =& $this->file;
-                                       }
-                                       else
-                                       {
-                                               $file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen);
-                                       }
-                               }
-                               // If the file connection has an error, set SimplePie::error to that and quit
-                               if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
+                               $this->multifeed_objects[$i] = clone $this;
+                               $this->multifeed_objects[$i]->set_feed_url($url);
+                               $single_success = $this->multifeed_objects[$i]->init();
+                               $success |= $single_success;
+                               if (!$single_success)
                                {
-                                       $this->error = $file->error;
-                                       if (!empty($this->data))
-                                       {
-                                               return true;
-                                       }
-                                       else
-                                       {
-                                               return false;
-                                       }
+                                       $this->error[$i] = $this->multifeed_objects[$i]->error();
                                }
+                               $i++;
+                       }
+                       return (bool) $success;
+               }
+               elseif ($this->feed_url === null && $this->raw_data === null)
+               {
+                       return false;
+               }
 
-                               if (!$this->force_feed)
-                               {
-                                       // Check if the supplied URL is a feed, if it isn't, look for it.
-                                       $locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class);
-                                       if (!$locate->is_feed($file))
-                                       {
-                                               // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
-                                               unset($file);
-                                               if ($file = $locate->find($this->autodiscovery, $this->all_discovered_feeds))
-                                               {
-                                                       if ($cache)
-                                                       {
-                                                               $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
-                                                               if (!$cache->save($this))
-                                                               {
-                                                                       trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
-                                                               }
-                                                               $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
-                                                       }
-                                                       $this->feed_url = $file->url;
-                                               }
-                                               else
-                                               {
-                                                       $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
-                                                       SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
-                                                       return false;
-                                               }
-                                       }
-                                       $locate = null;
-                               }
+               $this->error = null;
+               $this->data = array();
+               $this->multifeed_objects = array();
+               $cache = false;
+
+               if ($this->feed_url !== null)
+               {
+                       $parsed_feed_url = $this->registry->call('Misc', 'parse_url', array($this->feed_url));
 
-                               $headers = $file->headers;
-                               $data = $file->body;
-                               $sniffer =& new $this->content_type_sniffer_class($file);
-                               $sniffed = $sniffer->get_type();
+                       // Decide whether to enable caching
+                       if ($this->cache && $parsed_feed_url['scheme'] !== '')
+                       {
+                               $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'));
                        }
-                       else
+
+                       // Fetch the data via SimplePie_File into $this->raw_data
+                       if (($fetched = $this->fetch_data($cache)) === true)
                        {
-                               $data = $this->raw_data;
+                               return true;
                        }
+                       elseif ($fetched === false) {
+                               return false;
+                       }
+
+                       list($headers, $sniffed) = $fetched;
+               }
 
-                       // Set up array of possible encodings
-                       $encodings = array();
+               // Set up array of possible encodings
+               $encodings = array();
 
-                       // First check to see if input has been overridden.
-                       if ($this->input_encoding !== false)
+               // First check to see if input has been overridden.
+               if ($this->input_encoding !== false)
+               {
+                       $encodings[] = $this->input_encoding;
+               }
+
+               $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
+               $text_types = array('text/xml', 'text/xml-external-parsed-entity');
+
+               // RFC 3023 (only applies to sniffed content)
+               if (isset($sniffed))
+               {
+                       if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml')
+                       {
+                               if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+                               {
+                                       $encodings[] = strtoupper($charset[1]);
+                               }
+                               $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry)));
+                               $encodings[] = 'UTF-8';
+                       }
+                       elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml')
+                       {
+                               if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+                               {
+                                       $encodings[] = $charset[1];
+                               }
+                               $encodings[] = 'US-ASCII';
+                       }
+                       // Text MIME-type default
+                       elseif (substr($sniffed, 0, 5) === 'text/')
                        {
-                               $encodings[] = $this->input_encoding;
+                               $encodings[] = 'US-ASCII';
                        }
+               }
 
-                       $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
-                       $text_types = array('text/xml', 'text/xml-external-parsed-entity');
+               // Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1
+               $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry)));
+               $encodings[] = 'UTF-8';
+               $encodings[] = 'ISO-8859-1';
 
-                       // RFC 3023 (only applies to sniffed content)
-                       if (isset($sniffed))
+               // There's no point in trying an encoding twice
+               $encodings = array_unique($encodings);
+
+               // Loop through each possible encoding, till we return something, or run out of possibilities
+               foreach ($encodings as $encoding)
+               {
+                       // Change the encoding to UTF-8 (as we always use UTF-8 internally)
+                       if ($utf8_data = $this->registry->call('Misc', 'change_encoding', array($this->raw_data, $encoding, 'UTF-8')))
                        {
-                               if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml')
+                               // Create new parser
+                               $parser = $this->registry->create('Parser');
+
+                               // If it's parsed fine
+                               if ($parser->parse($utf8_data, 'UTF-8'))
                                {
-                                       if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+                                       $this->data = $parser->get_data();
+                                       if (!($this->get_type() & ~SIMPLEPIE_TYPE_NONE))
                                        {
-                                               $encodings[] = strtoupper($charset[1]);
+                                               $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
+                                               $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
+                                               return false;
                                        }
-                                       $encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
-                                       $encodings[] = 'UTF-8';
-                               }
-                               elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml')
-                               {
-                                       if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+
+                                       if (isset($headers))
                                        {
-                                               $encodings[] = $charset[1];
+                                               $this->data['headers'] = $headers;
                                        }
-                                       $encodings[] = 'US-ASCII';
-                               }
-                               // Text MIME-type default
-                               elseif (substr($sniffed, 0, 5) === 'text/')
-                               {
-                                       $encodings[] = 'US-ASCII';
+                                       $this->data['build'] = SIMPLEPIE_BUILD;
+
+                                       // Cache the file if caching is enabled
+                                       if ($cache && !$cache->save($this))
+                                       {
+                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
+                                       }
+                                       return true;
                                }
                        }
+               }
 
-                       // Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1
-                       $encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
-                       $encodings[] = 'UTF-8';
-                       $encodings[] = 'ISO-8859-1';
+               if (isset($parser))
+               {
+                       // We have an error, just set SimplePie_Misc::error to it and quit
+                       $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+               }
+               else
+               {
+                       $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
+               }
 
-                       // There's no point in trying an encoding twice
-                       $encodings = array_unique($encodings);
+               $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
 
-                       // If we want the XML, just output that with the most likely encoding and quit
-                       if ($this->xml_dump)
-                       {
-                               header('Content-type: text/xml; charset=' . $encodings[0]);
-                               echo $data;
-                               exit;
-                       }
+               return false;
+       }
 
-                       // Loop through each possible encoding, till we return something, or run out of possibilities
-                       foreach ($encodings as $encoding)
+       /**
+        * Fetch the data via SimplePie_File
+        *
+        * If the data is already cached, attempt to fetch it from there instead
+        * @param SimplePie_Cache|false $cache Cache handler, or false to not load from the cache
+        * @return array|true Returns true if the data was loaded from the cache, or an array of HTTP headers and sniffed type
+        */
+       protected function fetch_data(&$cache)
+       {
+               // If it's enabled, use the cache
+               if ($cache)
+               {
+                       // Load the Cache
+                       $this->data = $cache->load();
+                       if (!empty($this->data))
                        {
-                               // Change the encoding to UTF-8 (as we always use UTF-8 internally)
-                               if ($utf8_data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8'))
+                               // If the cache is for an outdated build of SimplePie
+                               if (!isset($this->data['build']) || $this->data['build'] !== SIMPLEPIE_BUILD)
+                               {
+                                       $cache->unlink();
+                                       $this->data = array();
+                               }
+                               // If we've hit a collision just rerun it with caching disabled
+                               elseif (isset($this->data['url']) && $this->data['url'] !== $this->feed_url)
                                {
-                                       // Create new parser
-                                       $parser =& new $this->parser_class();
+                                       $cache = false;
+                                       $this->data = array();
+                               }
+                               // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
+                               elseif (isset($this->data['feed_url']))
+                               {
+                                       // If the autodiscovery cache is still valid use it.
+                                       if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
+                                       {
+                                               // Do not need to do feed autodiscovery yet.
+                                               if ($this->data['feed_url'] !== $this->data['url'])
+                                               {
+                                                       $this->set_feed_url($this->data['feed_url']);
+                                                       return $this->init();
+                                               }
 
-                                       // If it's parsed fine
-                                       if ($parser->parse($utf8_data, 'UTF-8'))
+                                               $cache->unlink();
+                                               $this->data = array();
+                                       }
+                               }
+                               // Check if the cache has been updated
+                               elseif ($cache->mtime() + $this->cache_duration < time())
+                               {
+                                       // If we have last-modified and/or etag set
+                                       if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
                                        {
-                                               $this->data = $parser->get_data();
-                                               if ($this->get_type() & ~SIMPLEPIE_TYPE_NONE)
+                                               $headers = array(
+                                                       'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
+                                               );
+                                               if (isset($this->data['headers']['last-modified']))
                                                {
-                                                       if (isset($headers))
-                                                       {
-                                                               $this->data['headers'] = $headers;
-                                                       }
-                                                       $this->data['build'] = SIMPLEPIE_BUILD;
+                                                       $headers['if-modified-since'] = $this->data['headers']['last-modified'];
+                                               }
+                                               if (isset($this->data['headers']['etag']))
+                                               {
+                                                       $headers['if-none-match'] = $this->data['headers']['etag'];
+                                               }
+
+                                               $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen));
 
-                                                       // Cache the file if caching is enabled
-                                                       if ($cache && !$cache->save($this))
+                                               if ($file->success)
+                                               {
+                                                       if ($file->status_code === 304)
                                                        {
-                                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
+                                                               $cache->touch();
+                                                               return true;
                                                        }
-                                                       return true;
                                                }
                                                else
                                                {
-                                                       $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
-                                                       SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
-                                                       return false;
+                                                       unset($file);
                                                }
                                        }
                                }
+                               // If the cache is still valid, just return true
+                               else
+                               {
+                                       $this->raw_data = false;
+                                       return true;
+                               }
+                       }
+                       // If the cache is empty, delete it
+                       else
+                       {
+                               $cache->unlink();
+                               $this->data = array();
                        }
-                       if (isset($parser))
+               }
+               // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
+               if (!isset($file))
+               {
+                       if ($this->file instanceof SimplePie_File && $this->file->url === $this->feed_url)
                        {
-                               // We have an error, just set SimplePie_Misc::error to it and quit
-                               $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+                               $file =& $this->file;
                        }
                        else
                        {
-                               $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
+                               $headers = array(
+                                       'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
+                               );
+                               $file = $this->registry->create('File', array($this->feed_url, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen));
                        }
-                       SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
-                       return false;
                }
-               elseif (!empty($this->multifeed_url))
+               // If the file connection has an error, set SimplePie::error to that and quit
+               if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
                {
-                       $i = 0;
-                       $success = 0;
-                       $this->multifeed_objects = array();
-                       foreach ($this->multifeed_url as $url)
+                       $this->error = $file->error;
+                       return !empty($this->data);
+               }
+
+               if (!$this->force_feed)
+               {
+                       // Check if the supplied URL is a feed, if it isn't, look for it.
+                       $locate = $this->registry->create('Locator', array(&$file, $this->timeout, $this->useragent, $this->max_checked_feeds));
+
+                       if (!$locate->is_feed($file))
                        {
-                               if (SIMPLEPIE_PHP5)
+                               // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
+                               unset($file);
+                               try
                                {
-                                       // This keyword needs to defy coding standards for PHP4 compatibility
-                                       $this->multifeed_objects[$i] = clone($this);
+                                       if (!($file = $locate->find($this->autodiscovery, $this->all_discovered_feeds)))
+                                       {
+                                               $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
+                                               $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
+                                               return false;
+                                       }
                                }
-                               else
+                               catch (SimplePie_Exception $e)
                                {
-                                       $this->multifeed_objects[$i] = $this;
+                                       // This is usually because DOMDocument doesn't exist
+                                       $this->error = $e->getMessage();
+                                       $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, $e->getFile(), $e->getLine()));
+                                       return false;
                                }
-                               $this->multifeed_objects[$i]->set_feed_url($url);
-                               $success |= $this->multifeed_objects[$i]->init();
-                               $i++;
+                               if ($cache)
+                               {
+                                       $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
+                                       if (!$cache->save($this))
+                                       {
+                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
+                                       }
+                                       $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'));
+                               }
+                               $this->feed_url = $file->url;
                        }
-                       return (bool) $success;
-               }
-               else
-               {
-                       return false;
+                       $locate = null;
                }
+
+               $this->raw_data = $file->body;
+
+               $headers = $file->headers;
+               $sniffer = $this->registry->create('Content_Type_Sniffer', array(&$file));
+               $sniffed = $sniffer->get_type();
+
+               return array($headers, $sniffed);
        }
 
        /**
-        * Return the error message for the occured error
+        * Get the error message for the occured error
         *
-        * @access public
-        * @return string Error message
+        * @return string|array Error message, or array of messages for multifeeds
         */
-       function error()
+       public function error()
        {
                return $this->error;
        }
 
-       function get_encoding()
+       /**
+        * Get the raw XML
+        *
+        * This is the same as the old `$feed->enable_xml_dump(true)`, but returns
+        * the data instead of printing it.
+        *
+        * @return string|boolean Raw XML data, false if the cache is used
+        */
+       public function get_raw_data()
+       {
+               return $this->raw_data;
+       }
+
+       /**
+        * Get the character encoding used for output
+        *
+        * @since Preview Release
+        * @return string
+        */
+       public function get_encoding()
        {
                return $this->sanitize->output_encoding;
        }
 
-       function handle_content_type($mime = 'text/html')
+       /**
+        * Send the content-type header with correct encoding
+        *
+        * This method ensures that the SimplePie-enabled page is being served with
+        * the correct {@link http://www.iana.org/assignments/media-types/ mime-type}
+        * and character encoding HTTP headers (character encoding determined by the
+        * {@see set_output_encoding} config option).
+        *
+        * This won't work properly if any content or whitespace has already been
+        * sent to the browser, because it relies on PHP's
+        * {@link http://php.net/header header()} function, and these are the
+        * circumstances under which the function works.
+        *
+        * Because it's setting these settings for the entire page (as is the nature
+        * of HTTP headers), this should only be used once per page (again, at the
+        * top).
+        *
+        * @param string $mime MIME type to serve the page as
+        */
+       public function handle_content_type($mime = 'text/html')
        {
                if (!headers_sent())
                {
@@ -1864,7 +1681,33 @@ class SimplePie
                }
        }
 
-       function get_type()
+       /**
+        * Get the type of the feed
+        *
+        * This returns a SIMPLEPIE_TYPE_* constant, which can be tested against
+        * using {@link http://php.net/language.operators.bitwise bitwise operators}
+        *
+        * @since 0.8 (usage changed to using constants in 1.0)
+        * @see SIMPLEPIE_TYPE_NONE Unknown.
+        * @see SIMPLEPIE_TYPE_RSS_090 RSS 0.90.
+        * @see SIMPLEPIE_TYPE_RSS_091_NETSCAPE RSS 0.91 (Netscape).
+        * @see SIMPLEPIE_TYPE_RSS_091_USERLAND RSS 0.91 (Userland).
+        * @see SIMPLEPIE_TYPE_RSS_091 RSS 0.91.
+        * @see SIMPLEPIE_TYPE_RSS_092 RSS 0.92.
+        * @see SIMPLEPIE_TYPE_RSS_093 RSS 0.93.
+        * @see SIMPLEPIE_TYPE_RSS_094 RSS 0.94.
+        * @see SIMPLEPIE_TYPE_RSS_10 RSS 1.0.
+        * @see SIMPLEPIE_TYPE_RSS_20 RSS 2.0.x.
+        * @see SIMPLEPIE_TYPE_RSS_RDF RDF-based RSS.
+        * @see SIMPLEPIE_TYPE_RSS_SYNDICATION Non-RDF-based RSS (truly intended as syndication format).
+        * @see SIMPLEPIE_TYPE_RSS_ALL Any version of RSS.
+        * @see SIMPLEPIE_TYPE_ATOM_03 Atom 0.3.
+        * @see SIMPLEPIE_TYPE_ATOM_10 Atom 1.0.
+        * @see SIMPLEPIE_TYPE_ATOM_ALL Any version of Atom.
+        * @see SIMPLEPIE_TYPE_ALL Any known/supported feed type.
+        * @return int SIMPLEPIE_TYPE_* constant
+        */
+       public function get_type()
        {
                if (!isset($this->data['type']))
                {
@@ -1945,238 +1788,66 @@ class SimplePie
        }
 
        /**
-        * Returns the URL for the favicon of the feed's website.
+        * Get the URL for the feed
         *
-        * @todo Cache atom:icon
-        * @access public
-        * @since 1.0
+        * May or may not be different from the URL passed to {@see set_feed_url()},
+        * depending on whether auto-discovery was used.
+        *
+        * @since Preview Release (previously called `get_feed_url()` since SimplePie 0.8.)
+        * @todo If we have a perm redirect we should return the new URL
+        * @todo When we make the above change, let's support <itunes:new-feed-url> as well
+        * @todo Also, |atom:link|@rel=self
+        * @return string|null
         */
-       function get_favicon()
+       public function subscribe_url()
        {
-               if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+               if ($this->feed_url !== null)
                {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+                       return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
                }
-               elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
+               else
                {
-                       $favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
+                       return null;
+               }
+       }
 
-                       if ($this->cache && $this->favicon_handler)
-                       {
-                               $favicon_filename = call_user_func($this->cache_name_function, $favicon);
-                               $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi');
-
-                               if ($cache->load())
-                               {
-                                       return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
-                               }
-                               else
-                               {
-                                       $file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
-
-                                       if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
-                                       {
-                                               $sniffer =& new $this->content_type_sniffer_class($file);
-                                               if (substr($sniffer->get_type(), 0, 6) === 'image/')
-                                               {
-                                                       if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
-                                                       {
-                                                               return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                                       else
-                                                       {
-                                                               trigger_error("$cache->name is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
-                                                               return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                               }
-                                               // not an image
-                                               else
-                                               {
-                                                       return false;
-                                               }
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * @todo If we have a perm redirect we should return the new URL
-        * @todo When we make the above change, let's support <itunes:new-feed-url> as well
-        * @todo Also, |atom:link|@rel=self
-        */
-       function subscribe_url()
-       {
-               if ($this->feed_url !== null)
-               {
-                       return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function subscribe_feed()
-       {
-               if ($this->feed_url !== null)
-               {
-                       return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function subscribe_outlook()
-       {
-               if ($this->feed_url !== null)
-               {
-                       return $this->sanitize('outlook' . SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function subscribe_podcast()
-       {
-               if ($this->feed_url !== null)
-               {
-                       return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function subscribe_itunes()
-       {
-               if ($this->feed_url !== null)
-               {
-                       return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Creates the subscribe_* methods' return data
-        *
-        * @access private
-        * @param string $feed_url String to prefix to the feed URL
-        * @param string $site_url String to prefix to the site URL (and
-        * suffix to the feed URL)
-        * @return mixed URL if feed exists, false otherwise
-        */
-       function subscribe_service($feed_url, $site_url = null)
-       {
-               if ($this->subscribe_url())
-               {
-                       $return = $feed_url . rawurlencode($this->feed_url);
-                       if ($site_url !== null && $this->get_link() !== null)
-                       {
-                               $return .= $site_url . rawurlencode($this->get_link());
-                       }
-                       return $this->sanitize($return, SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function subscribe_aol()
-       {
-               return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
-       }
-
-       function subscribe_bloglines()
-       {
-               return $this->subscribe_service('http://www.bloglines.com/sub/');
-       }
-
-       function subscribe_eskobo()
-       {
-               return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
-       }
-
-       function subscribe_feedfeeds()
-       {
-               return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
-       }
-
-       function subscribe_feedster()
-       {
-               return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
-       }
-
-       function subscribe_google()
-       {
-               return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
-       }
-
-       function subscribe_gritwire()
-       {
-               return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
-       }
-
-       function subscribe_msn()
-       {
-               return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
-       }
-
-       function subscribe_netvibes()
-       {
-               return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
-       }
-
-       function subscribe_newsburst()
-       {
-               return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
-       }
-
-       function subscribe_newsgator()
-       {
-               return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
-       }
-
-       function subscribe_odeo()
-       {
-               return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
-       }
-
-       function subscribe_podnova()
-       {
-               return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
-       }
-
-       function subscribe_rojo()
-       {
-               return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
-       }
-
-       function subscribe_yahoo()
-       {
-               return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
-       }
-
-       function get_feed_tags($namespace, $tag)
-       {
-               $type = $this->get_type();
-               if ($type & SIMPLEPIE_TYPE_ATOM_10)
-               {
-                       if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
+       /**
+        * Get data for an feed-level element
+        *
+        * This method allows you to get access to ANY element/attribute that is a
+        * sub-element of the opening feed tag.
+        *
+        * The return value is an indexed array of elements matching the given
+        * namespace and tag name. Each element has `attribs`, `data` and `child`
+        * subkeys. For `attribs` and `child`, these contain namespace subkeys.
+        * `attribs` then has one level of associative name => value data (where
+        * `value` is a string) after the namespace. `child` has tag-indexed keys
+        * after the namespace, each member of which is an indexed array matching
+        * this same format.
+        *
+        * For example:
+        * <pre>
+        * // This is probably a bad example because we already support
+        * // <media:content> natively, but it shows you how to parse through
+        * // the nodes.
+        * $group = $item->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group');
+        * $content = $group[0]['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'];
+        * $file = $content[0]['attribs']['']['url'];
+        * echo $file;
+        * </pre>
+        *
+        * @since 1.0
+        * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
+        * @param string $namespace The URL of the XML namespace of the elements you're trying to access
+        * @param string $tag Tag name
+        * @return array
+        */
+       public function get_feed_tags($namespace, $tag)
+       {
+               $type = $this->get_type();
+               if ($type & SIMPLEPIE_TYPE_ATOM_10)
+               {
+                       if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
                        {
                                return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
                        }
@@ -2205,7 +1876,21 @@ class SimplePie
                return null;
        }
 
-       function get_channel_tags($namespace, $tag)
+       /**
+        * Get data for an channel-level element
+        *
+        * This method allows you to get access to ANY element/attribute in the
+        * channel/header section of the feed.
+        *
+        * See {@see SimplePie::get_feed_tags()} for a description of the return value
+        *
+        * @since 1.0
+        * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
+        * @param string $namespace The URL of the XML namespace of the elements you're trying to access
+        * @param string $tag Tag name
+        * @return array
+        */
+       public function get_channel_tags($namespace, $tag)
        {
                $type = $this->get_type();
                if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
@@ -2248,7 +1933,21 @@ class SimplePie
                return null;
        }
 
-       function get_image_tags($namespace, $tag)
+       /**
+        * Get data for an channel-level element
+        *
+        * This method allows you to get access to ANY element/attribute in the
+        * image/logo section of the feed.
+        *
+        * See {@see SimplePie::get_feed_tags()} for a description of the return value
+        *
+        * @since 1.0
+        * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
+        * @param string $namespace The URL of the XML namespace of the elements you're trying to access
+        * @param string $tag Tag name
+        * @return array
+        */
+       public function get_image_tags($namespace, $tag)
        {
                $type = $this->get_type();
                if ($type & SIMPLEPIE_TYPE_RSS_10)
@@ -2284,7 +1983,19 @@ class SimplePie
                return null;
        }
 
-       function get_base($element = array())
+       /**
+        * Get the base URL value from the feed
+        *
+        * Uses `<xml:base>` if available, otherwise uses the first link in the
+        * feed, or failing that, the URL of the feed itself.
+        *
+        * @see get_link
+        * @see subscribe_url
+        *
+        * @param array $element
+        * @return string
+        */
+       public function get_base($element = array())
        {
                if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
                {
@@ -2300,20 +2011,38 @@ class SimplePie
                }
        }
 
-       function sanitize($data, $type, $base = '')
+       /**
+        * Sanitize feed data
+        *
+        * @access private
+        * @see SimplePie_Sanitize::sanitize()
+        * @param string $data Data to sanitize
+        * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants
+        * @param string $base Base URL to resolve URLs against
+        * @return string Sanitized data
+        */
+       public function sanitize($data, $type, $base = '')
        {
                return $this->sanitize->sanitize($data, $type, $base);
        }
 
-       function get_title()
+       /**
+        * Get the title of the feed
+        *
+        * Uses `<atom:title>`, `<title>` or `<dc:title>`
+        *
+        * @since 1.0 (previously called `get_feed_title` since 0.8)
+        * @return string|null
+        */
+       public function get_title()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
                {
@@ -2341,7 +2070,14 @@ class SimplePie
                }
        }
 
-       function get_category($key = 0)
+       /**
+        * Get a category for the feed
+        *
+        * @since Unknown
+        * @param int $key The category that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Category|null
+        */
+       public function get_category($key = 0)
        {
                $categories = $this->get_categories();
                if (isset($categories[$key]))
@@ -2354,7 +2090,15 @@ class SimplePie
                }
        }
 
-       function get_categories()
+       /**
+        * Get all categories for the feed
+        *
+        * Uses `<atom:category>`, `<category>` or `<dc:subject>`
+        *
+        * @since Unknown
+        * @return array|null List of {@see SimplePie_Category} objects
+        */
+       public function get_categories()
        {
                $categories = array();
 
@@ -2375,7 +2119,7 @@ class SimplePie
                        {
                                $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
                        }
-                       $categories[] =& new $this->category_class($term, $scheme, $label);
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
                {
@@ -2390,20 +2134,20 @@ class SimplePie
                        {
                                $scheme = null;
                        }
-                       $categories[] =& new $this->category_class($term, $scheme, null);
+                       $categories[] = $this->registry->create('Category', array($term, $scheme, null));
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
                {
-                       $categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
                {
-                       $categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+                       $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
                }
 
                if (!empty($categories))
                {
-                       return SimplePie_Misc::array_unique($categories);
+                       return array_unique($categories);
                }
                else
                {
@@ -2411,7 +2155,14 @@ class SimplePie
                }
        }
 
-       function get_author($key = 0)
+       /**
+        * Get an author for the feed
+        *
+        * @since 1.1
+        * @param int $key The author that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Author|null
+        */
+       public function get_author($key = 0)
        {
                $authors = $this->get_authors();
                if (isset($authors[$key]))
@@ -2424,7 +2175,15 @@ class SimplePie
                }
        }
 
-       function get_authors()
+       /**
+        * Get all authors for the feed
+        *
+        * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`
+        *
+        * @since 1.1
+        * @return array|null List of {@see SimplePie_Author} objects
+        */
+       public function get_authors()
        {
                $authors = array();
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
@@ -2446,7 +2205,7 @@ class SimplePie
                        }
                        if ($name !== null || $email !== null || $uri !== null)
                        {
-                               $authors[] =& new $this->author_class($name, $uri, $email);
+                               $authors[] = $this->registry->create('Author', array($name, $uri, $email));
                        }
                }
                if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
@@ -2468,25 +2227,25 @@ class SimplePie
                        }
                        if ($name !== null || $email !== null || $url !== null)
                        {
-                               $authors[] =& new $this->author_class($name, $url, $email);
+                               $authors[] = $this->registry->create('Author', array($name, $url, $email));
                        }
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
                {
-                       $authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
                {
-                       $authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
                {
-                       $authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+                       $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
                }
 
                if (!empty($authors))
                {
-                       return SimplePie_Misc::array_unique($authors);
+                       return array_unique($authors);
                }
                else
                {
@@ -2494,7 +2253,14 @@ class SimplePie
                }
        }
 
-       function get_contributor($key = 0)
+       /**
+        * Get a contributor for the feed
+        *
+        * @since 1.1
+        * @param int $key The contrbutor that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Author|null
+        */
+       public function get_contributor($key = 0)
        {
                $contributors = $this->get_contributors();
                if (isset($contributors[$key]))
@@ -2507,7 +2273,15 @@ class SimplePie
                }
        }
 
-       function get_contributors()
+       /**
+        * Get all contributors for the feed
+        *
+        * Uses `<atom:contributor>`
+        *
+        * @since 1.1
+        * @return array|null List of {@see SimplePie_Author} objects
+        */
+       public function get_contributors()
        {
                $contributors = array();
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
@@ -2529,7 +2303,7 @@ class SimplePie
                        }
                        if ($name !== null || $email !== null || $uri !== null)
                        {
-                               $contributors[] =& new $this->author_class($name, $uri, $email);
+                               $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
                        }
                }
                foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
@@ -2551,13 +2325,13 @@ class SimplePie
                        }
                        if ($name !== null || $email !== null || $url !== null)
                        {
-                               $contributors[] =& new $this->author_class($name, $url, $email);
+                               $contributors[] = $this->registry->create('Author', array($name, $url, $email));
                        }
                }
 
                if (!empty($contributors))
                {
-                       return SimplePie_Misc::array_unique($contributors);
+                       return array_unique($contributors);
                }
                else
                {
@@ -2565,7 +2339,15 @@ class SimplePie
                }
        }
 
-       function get_link($key = 0, $rel = 'alternate')
+       /**
+        * Get a single link for the feed
+        *
+        * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8)
+        * @param int $key The link that you want to return.  Remember that arrays begin with 0, not 1
+        * @param string $rel The relationship of the link to return
+        * @return string|null Link URL
+        */
+       public function get_link($key = 0, $rel = 'alternate')
        {
                $links = $this->get_links($rel);
                if (isset($links[$key]))
@@ -2579,14 +2361,31 @@ class SimplePie
        }
 
        /**
-        * Added for parity between the parent-level and the item/entry-level.
+        * Get the permalink for the item
+        *
+        * Returns the first link available with a relationship of "alternate".
+        * Identical to {@see get_link()} with key 0
+        *
+        * @see get_link
+        * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8)
+        * @internal Added for parity between the parent-level and the item/entry-level.
+        * @return string|null Link URL
         */
-       function get_permalink()
+       public function get_permalink()
        {
                return $this->get_link(0);
        }
 
-       function get_links($rel = 'alternate')
+       /**
+        * Get all links for the feed
+        *
+        * Uses `<atom:link>` or `<link>`
+        *
+        * @since Beta 2
+        * @param string $rel The relationship of links to return
+        * @return array|null Links found for the feed (strings)
+        */
+       public function get_links($rel = 'alternate')
        {
                if (!isset($this->data['links']))
                {
@@ -2630,7 +2429,7 @@ class SimplePie
                        $keys = array_keys($this->data['links']);
                        foreach ($keys as $key)
                        {
-                               if (SimplePie_Misc::is_isegment_nz_nc($key))
+                               if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
                                {
                                        if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
                                        {
@@ -2660,20 +2459,29 @@ class SimplePie
                }
        }
 
-       function get_all_discovered_feeds()
+       public function get_all_discovered_feeds()
        {
                return $this->all_discovered_feeds;
        }
 
-       function get_description()
+       /**
+        * Get the content for the item
+        *
+        * Uses `<atom:subtitle>`, `<atom:tagline>`, `<description>`,
+        * `<dc:description>`, `<itunes:summary>` or `<itunes:subtitle>`
+        *
+        * @since 1.0 (previously called `get_feed_description()` since 0.8)
+        * @return string|null
+        */
+       public function get_description()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
                {
@@ -2709,15 +2517,23 @@ class SimplePie
                }
        }
 
-       function get_copyright()
+       /**
+        * Get the copyright info for the feed
+        *
+        * Uses `<atom:rights>`, `<atom:copyright>` or `<dc:rights>`
+        *
+        * @since 1.0 (previously called `get_feed_copyright()` since 0.8)
+        * @return string|null
+        */
+       public function get_copyright()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
                {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+                       return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
                }
                elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
                {
@@ -2737,7 +2553,15 @@ class SimplePie
                }
        }
 
-       function get_language()
+       /**
+        * Get the language for the feed
+        *
+        * Uses `<language>`, `<dc:language>`, or @xml_lang
+        *
+        * @since 1.0 (previously called `get_feed_language()` since 0.8)
+        * @return string|null
+        */
+       public function get_language()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
                {
@@ -2773,7 +2597,19 @@ class SimplePie
                }
        }
 
-       function get_latitude()
+       /**
+        * Get the latitude coordinates for the item
+        *
+        * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
+        *
+        * Uses `<geo:lat>` or `<georss:point>`
+        *
+        * @since 1.0
+        * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
+        * @link http://www.georss.org/ GeoRSS
+        * @return string|null
+        */
+       public function get_latitude()
        {
 
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
@@ -2790,7 +2626,19 @@ class SimplePie
                }
        }
 
-       function get_longitude()
+       /**
+        * Get the longitude coordinates for the feed
+        *
+        * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
+        *
+        * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>`
+        *
+        * @since 1.0
+        * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
+        * @link http://www.georss.org/ GeoRSS
+        * @return string|null
+        */
+       public function get_longitude()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
                {
@@ -2810,7 +2658,16 @@ class SimplePie
                }
        }
 
-       function get_image_title()
+       /**
+        * Get the feed logo's title
+        *
+        * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" title.
+        *
+        * Uses `<image><title>` or `<image><dc:title>`
+        *
+        * @return string|null
+        */
+       public function get_image_title()
        {
                if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
                {
@@ -2838,7 +2695,18 @@ class SimplePie
                }
        }
 
-       function get_image_url()
+       /**
+        * Get the feed logo's URL
+        *
+        * RSS 0.9.0, 2.0, Atom 1.0, and feeds with iTunes RSS tags are allowed to
+        * have a "feed logo" URL. This points directly to the image itself.
+        *
+        * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`,
+        * `<image><title>` or `<image><dc:title>`
+        *
+        * @return string|null
+        */
+       public function get_image_url()
        {
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
                {
@@ -2870,7 +2738,19 @@ class SimplePie
                }
        }
 
-       function get_image_link()
+
+       /**
+        * Get the feed logo's link
+        *
+        * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" link. This
+        * points to a human-readable page that the image should link to.
+        *
+        * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`,
+        * `<image><title>` or `<image><dc:title>`
+        *
+        * @return string|null
+        */
+       public function get_image_link()
        {
                if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
                {
@@ -2890,7 +2770,17 @@ class SimplePie
                }
        }
 
-       function get_image_width()
+       /**
+        * Get the feed logo's link
+        *
+        * RSS 2.0 feeds are allowed to have a "feed logo" width.
+        *
+        * Uses `<image><width>` or defaults to 88.0 if no width is specified and
+        * the feed is an RSS 2.0 feed.
+        *
+        * @return int|float|null
+        */
+       public function get_image_width()
        {
                if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'width'))
                {
@@ -2906,7 +2796,17 @@ class SimplePie
                }
        }
 
-       function get_image_height()
+       /**
+        * Get the feed logo's height
+        *
+        * RSS 2.0 feeds are allowed to have a "feed logo" height.
+        *
+        * Uses `<image><height>` or defaults to 31.0 if no height is specified and
+        * the feed is an RSS 2.0 feed.
+        *
+        * @return int|float|null
+        */
+       public function get_image_height()
        {
                if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'height'))
                {
@@ -2922,7 +2822,16 @@ class SimplePie
                }
        }
 
-       function get_item_quantity($max = 0)
+       /**
+        * Get the number of items in the feed
+        *
+        * This is well-suited for {@link http://php.net/for for()} loops with
+        * {@see get_item()}
+        *
+        * @param int $max Maximum value to return. 0 for no limit
+        * @return int Number of items in the feed
+        */
+       public function get_item_quantity($max = 0)
        {
                $max = (int) $max;
                $qty = count($this->get_items());
@@ -2936,7 +2845,19 @@ class SimplePie
                }
        }
 
-       function get_item($key = 0)
+       /**
+        * Get a single item from the feed
+        *
+        * This is better suited for {@link http://php.net/for for()} loops, whereas
+        * {@see get_items()} is better suited for
+        * {@link http://php.net/foreach foreach()} loops.
+        *
+        * @see get_item_quantity()
+        * @since Beta 2
+        * @param int $key The item that you want to return.  Remember that arrays begin with 0, not 1
+        * @return SimplePie_Item|null
+        */
+       public function get_item($key = 0)
        {
                $items = $this->get_items();
                if (isset($items[$key]))
@@ -2949,7 +2870,20 @@ class SimplePie
                }
        }
 
-       function get_items($start = 0, $end = 0)
+       /**
+        * Get all items from the feed
+        *
+        * This is better suited for {@link http://php.net/for for()} loops, whereas
+        * {@see get_items()} is better suited for
+        * {@link http://php.net/foreach foreach()} loops.
+        *
+        * @see get_item_quantity
+        * @since Beta 2
+        * @param int $start Index to start at
+        * @param int $end Number of items to return. 0 for all items after `$start`
+        * @return array|null List of {@see SimplePie_Item} objects
+        */
+       public function get_items($start = 0, $end = 0)
        {
                if (!isset($this->data['items']))
                {
@@ -2965,7 +2899,7 @@ class SimplePie
                                        $keys = array_keys($items);
                                        foreach ($keys as $key)
                                        {
-                                               $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
                                        }
                                }
                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
@@ -2973,7 +2907,7 @@ class SimplePie
                                        $keys = array_keys($items);
                                        foreach ($keys as $key)
                                        {
-                                               $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
                                        }
                                }
                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
@@ -2981,7 +2915,7 @@ class SimplePie
                                        $keys = array_keys($items);
                                        foreach ($keys as $key)
                                        {
-                                               $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
                                        }
                                }
                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
@@ -2989,7 +2923,7 @@ class SimplePie
                                        $keys = array_keys($items);
                                        foreach ($keys as $key)
                                        {
-                                               $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
                                        }
                                }
                                if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item'))
@@ -2997,7 +2931,7 @@ class SimplePie
                                        $keys = array_keys($items);
                                        foreach ($keys as $key)
                                        {
-                                               $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
                                        }
                                }
                        }
@@ -3023,7 +2957,7 @@ class SimplePie
                                        $this->data['ordered_items'] = $this->data['items'];
                                        if ($do_sort)
                                        {
-                                               usort($this->data['ordered_items'], array(&$this, 'sort_items'));
+                                               usort($this->data['ordered_items'], array(get_class($this), 'sort_items'));
                                        }
                                }
                                $items = $this->data['ordered_items'];
@@ -3050,24 +2984,98 @@ class SimplePie
        }
 
        /**
-        * @static
+        * Set the favicon handler
+        *
+        * @deprecated Use your own favicon handling instead
+        */
+       public function set_favicon_handler($page = false, $qs = 'i')
+       {
+               $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
+               trigger_error('Favicon handling has been removed, please use your own handling', $level);
+               return false;
+       }
+
+       /**
+        * Get the favicon for the current feed
+        *
+        * @deprecated Use your own favicon handling instead
+        */
+       public function get_favicon()
+       {
+               $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
+               trigger_error('Favicon handling has been removed, please use your own handling', $level);
+
+               if (($url = $this->get_link()) !== null)
+               {
+                       return 'http://g.etfv.co/' . urlencode($url);
+               }
+
+               return false;
+       }
+
+       /**
+        * Magic method handler
+        *
+        * @param string $method Method name
+        * @param array $args Arguments to the method
+        * @return mixed
+        */
+       public function __call($method, $args)
+       {
+               if (strpos($method, 'subscribe_') === 0)
+               {
+                       $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
+                       trigger_error('subscribe_*() has been deprecated, implement the callback yourself', $level);
+                       return '';
+               }
+               if ($method === 'enable_xml_dump')
+               {
+                       $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
+                       trigger_error('enable_xml_dump() has been deprecated, use get_raw_data() instead', $level);
+                       return false;
+               }
+
+               $class = get_class($this);
+               $trace = debug_backtrace();
+               $file = $trace[0]['file'];
+               $line = $trace[0]['line'];
+               trigger_error("Call to undefined method $class::$method() in $file on line $line", E_USER_ERROR);
+       }
+
+       /**
+        * Sorting callback for items
+        *
+        * @access private
+        * @param SimplePie $a
+        * @param SimplePie $b
+        * @return boolean
         */
-       function sort_items($a, $b)
+       public static function sort_items($a, $b)
        {
                return $a->get_date('U') <= $b->get_date('U');
        }
 
        /**
-        * @static
+        * Merge items from several feeds into one
+        *
+        * If you're merging multiple feeds together, they need to all have dates
+        * for the items or else SimplePie will refuse to sort them.
+        *
+        * @link http://simplepie.org/wiki/tutorial/sort_multiple_feeds_by_time_and_date#if_feeds_require_separate_per-feed_settings
+        * @param array $urls List of SimplePie feed objects to merge
+        * @param int $start Starting item
+        * @param int $end Number of items to return
+        * @param int $limit Maximum number of items per feed
+        * @return array
         */
-       function merge_items($urls, $start = 0, $end = 0, $limit = 0)
+       public static function merge_items($urls, $start = 0, $end = 0, $limit = 0)
        {
                if (is_array($urls) && sizeof($urls) > 0)
                {
                        $items = array();
                        foreach ($urls as $arg)
                        {
-                               if (is_a($arg, 'SimplePie'))
+                               if ($arg instanceof SimplePie)
                                {
                                        $items = array_merge($items, $arg->get_items(0, $limit));
                                }
@@ -3089,7 +3097,7 @@ class SimplePie
                        $item = null;
                        if ($do_sort)
                        {
-                               usort($items, array('SimplePie', 'sort_items'));
+                               usort($items, array(get_class($urls[0]), 'sort_items'));
                        }
 
                        if ($end === 0)
@@ -3108,12193 +3116,4 @@ class SimplePie
                }
        }
 }
-
-class SimplePie_Item
-{
-       var $feed;
-       var $data = array();
-
-       function SimplePie_Item($feed, $data)
-       {
-               $this->feed = $feed;
-               $this->data = $data;
-       }
-
-       function __toString()
-       {
-               return md5(serialize($this->data));
-       }
-
-       /**
-        * Remove items that link back to this before destroying this object
-        */
-       function __destruct()
-       {
-               if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
-               {
-                       unset($this->feed);
-               }
-       }
-
-       function get_item_tags($namespace, $tag)
-       {
-               if (isset($this->data['child'][$namespace][$tag]))
-               {
-                       return $this->data['child'][$namespace][$tag];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_base($element = array())
-       {
-               return $this->feed->get_base($element);
-       }
-
-       function sanitize($data, $type, $base = '')
-       {
-               return $this->feed->sanitize($data, $type, $base);
-       }
-
-       function get_feed()
-       {
-               return $this->feed;
-       }
-
-       function get_id($hash = false)
-       {
-               if (!$hash)
-               {
-                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
-                       {
-                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
-                       {
-                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
-                       {
-                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
-                       {
-                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
-                       {
-                               return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif (($return = $this->get_permalink()) !== null)
-                       {
-                               return $return;
-                       }
-                       elseif (($return = $this->get_title()) !== null)
-                       {
-                               return $return;
-                       }
-               }
-               if ($this->get_permalink() !== null || $this->get_title() !== null)
-               {
-                       return md5($this->get_permalink() . $this->get_title());
-               }
-               else
-               {
-                       return md5(serialize($this->data));
-               }
-       }
-
-       function get_title()
-       {
-               if (!isset($this->data['title']))
-               {
-                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
-                       {
-                               $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       else
-                       {
-                               $this->data['title'] = null;
-                       }
-               }
-               return $this->data['title'];
-       }
-
-       function get_description($description_only = false)
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
-               }
-
-               elseif (!$description_only)
-               {
-                       return $this->get_content(true);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_content($content_only = false)
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
-               }
-               elseif (!$content_only)
-               {
-                       return $this->get_description(true);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_category($key = 0)
-       {
-               $categories = $this->get_categories();
-               if (isset($categories[$key]))
-               {
-                       return $categories[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_categories()
-       {
-               $categories = array();
-
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
-               {
-                       $term = null;
-                       $scheme = null;
-                       $label = null;
-                       if (isset($category['attribs']['']['term']))
-                       {
-                               $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($category['attribs']['']['scheme']))
-                       {
-                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($category['attribs']['']['label']))
-                       {
-                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       $categories[] =& new $this->feed->category_class($term, $scheme, $label);
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
-               {
-                       // This is really the label, but keep this as the term also for BC.
-                       // Label will also work on retrieving because that falls back to term.
-                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       if (isset($category['attribs']['']['domain']))
-                       {
-                               $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       else
-                       {
-                               $scheme = null;
-                       }
-                       $categories[] =& new $this->feed->category_class($term, $scheme, null);
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
-               {
-                       $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
-               {
-                       $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-
-               if (!empty($categories))
-               {
-                       return SimplePie_Misc::array_unique($categories);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_author($key = 0)
-       {
-               $authors = $this->get_authors();
-               if (isset($authors[$key]))
-               {
-                       return $authors[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_contributor($key = 0)
-       {
-               $contributors = $this->get_contributors();
-               if (isset($contributors[$key]))
-               {
-                       return $contributors[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_contributors()
-       {
-               $contributors = array();
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
-               {
-                       $name = null;
-                       $uri = null;
-                       $email = null;
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
-                       {
-                               $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $uri !== null)
-                       {
-                               $contributors[] =& new $this->feed->author_class($name, $uri, $email);
-                       }
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
-               {
-                       $name = null;
-                       $url = null;
-                       $email = null;
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
-                       {
-                               $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $url !== null)
-                       {
-                               $contributors[] =& new $this->feed->author_class($name, $url, $email);
-                       }
-               }
-
-               if (!empty($contributors))
-               {
-                       return SimplePie_Misc::array_unique($contributors);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_authors()
-       {
-               $authors = array();
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
-               {
-                       $name = null;
-                       $uri = null;
-                       $email = null;
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
-                       {
-                               $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
-                       }
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $uri !== null)
-                       {
-                               $authors[] =& new $this->feed->author_class($name, $uri, $email);
-                       }
-               }
-               if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
-               {
-                       $name = null;
-                       $url = null;
-                       $email = null;
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
-                       {
-                               $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
-                       }
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $url !== null)
-                       {
-                               $authors[] =& new $this->feed->author_class($name, $url, $email);
-                       }
-               }
-               if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))
-               {
-                       $authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
-               {
-                       $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
-               {
-                       $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
-               {
-                       $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-
-               if (!empty($authors))
-               {
-                       return SimplePie_Misc::array_unique($authors);
-               }
-               elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))
-               {
-                       return $authors;
-               }
-               elseif ($authors = $this->feed->get_authors())
-               {
-                       return $authors;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_copyright()
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_date($date_format = 'j F Y, g:i a')
-       {
-               if (!isset($this->data['date']))
-               {
-                       if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-                       elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
-                       {
-                               $this->data['date']['raw'] = $return[0]['data'];
-                       }
-
-                       if (!empty($this->data['date']['raw']))
-                       {
-                               $parser = SimplePie_Parse_Date::get();
-                               $this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);
-                       }
-                       else
-                       {
-                               $this->data['date'] = null;
-                       }
-               }
-               if ($this->data['date'])
-               {
-                       $date_format = (string) $date_format;
-                       switch ($date_format)
-                       {
-                               case '':
-                                       return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
-
-                               case 'U':
-                                       return $this->data['date']['parsed'];
-
-                               default:
-                                       return date($date_format, $this->data['date']['parsed']);
-                       }
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_local_date($date_format = '%c')
-       {
-               if (!$date_format)
-               {
-                       return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif (($date = $this->get_date('U')) !== null && $date !== false)
-               {
-                       return strftime($date_format, $date);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_permalink()
-       {
-               $link = $this->get_link();
-               $enclosure = $this->get_enclosure(0);
-               if ($link !== null)
-               {
-                       return $link;
-               }
-               elseif ($enclosure !== null)
-               {
-                       return $enclosure->get_link();
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_link($key = 0, $rel = 'alternate')
-       {
-               $links = $this->get_links($rel);
-               if ($links[$key] !== null)
-               {
-                       return $links[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_links($rel = 'alternate')
-       {
-               if (!isset($this->data['links']))
-               {
-                       $this->data['links'] = array();
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
-                       {
-                               if (isset($link['attribs']['']['href']))
-                               {
-                                       $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
-                                       $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
-                               }
-                       }
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
-                       {
-                               if (isset($link['attribs']['']['href']))
-                               {
-                                       $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
-                                       $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-                               }
-                       }
-                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-                       if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
-                       {
-                               if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true')
-                               {
-                                       $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                               }
-                       }
-
-                       $keys = array_keys($this->data['links']);
-                       foreach ($keys as $key)
-                       {
-                               if (SimplePie_Misc::is_isegment_nz_nc($key))
-                               {
-                                       if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
-                                       {
-                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
-                                               $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
-                                       }
-                                       else
-                                       {
-                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
-                                       }
-                               }
-                               elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
-                               {
-                                       $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
-                               }
-                               $this->data['links'][$key] = array_unique($this->data['links'][$key]);
-                       }
-               }
-               if (isset($this->data['links'][$rel]))
-               {
-                       return $this->data['links'][$rel];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * @todo Add ability to prefer one type of content over another (in a media group).
-        */
-       function get_enclosure($key = 0, $prefer = null)
-       {
-               $enclosures = $this->get_enclosures();
-               if (isset($enclosures[$key]))
-               {
-                       return $enclosures[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Grabs all available enclosures (podcasts, etc.)
-        *
-        * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
-        *
-        * At this point, we're pretty much assuming that all enclosures for an item are the same content.  Anything else is too complicated to properly support.
-        *
-        * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
-        * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
-        */
-       function get_enclosures()
-       {
-               if (!isset($this->data['enclosures']))
-               {
-                       $this->data['enclosures'] = array();
-
-                       // Elements
-                       $captions_parent = null;
-                       $categories_parent = null;
-                       $copyrights_parent = null;
-                       $credits_parent = null;
-                       $description_parent = null;
-                       $duration_parent = null;
-                       $hashes_parent = null;
-                       $keywords_parent = null;
-                       $player_parent = null;
-                       $ratings_parent = null;
-                       $restrictions_parent = null;
-                       $thumbnails_parent = null;
-                       $title_parent = null;
-
-                       // Let's do the channel and item-level ones first, and just re-use them if we need to.
-                       $parent = $this->get_feed();
-
-                       // CAPTIONS
-                       if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
-                       {
-                               foreach ($captions as $caption)
-                               {
-                                       $caption_type = null;
-                                       $caption_lang = null;
-                                       $caption_startTime = null;
-                                       $caption_endTime = null;
-                                       $caption_text = null;
-                                       if (isset($caption['attribs']['']['type']))
-                                       {
-                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['lang']))
-                                       {
-                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['start']))
-                                       {
-                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['end']))
-                                       {
-                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['data']))
-                                       {
-                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
-                               }
-                       }
-                       elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
-                       {
-                               foreach ($captions as $caption)
-                               {
-                                       $caption_type = null;
-                                       $caption_lang = null;
-                                       $caption_startTime = null;
-                                       $caption_endTime = null;
-                                       $caption_text = null;
-                                       if (isset($caption['attribs']['']['type']))
-                                       {
-                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['lang']))
-                                       {
-                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['start']))
-                                       {
-                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['attribs']['']['end']))
-                                       {
-                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($caption['data']))
-                                       {
-                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
-                               }
-                       }
-                       if (is_array($captions_parent))
-                       {
-                               $captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent));
-                       }
-
-                       // CATEGORIES
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
-                       {
-                               $term = null;
-                               $scheme = null;
-                               $label = null;
-                               if (isset($category['data']))
-                               {
-                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               if (isset($category['attribs']['']['scheme']))
-                               {
-                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               else
-                               {
-                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                               }
-                               if (isset($category['attribs']['']['label']))
-                               {
-                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
-                       }
-                       foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
-                       {
-                               $term = null;
-                               $scheme = null;
-                               $label = null;
-                               if (isset($category['data']))
-                               {
-                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               if (isset($category['attribs']['']['scheme']))
-                               {
-                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               else
-                               {
-                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                               }
-                               if (isset($category['attribs']['']['label']))
-                               {
-                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
-                       }
-                       foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
-                       {
-                               $term = null;
-                               $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
-                               $label = null;
-                               if (isset($category['attribs']['']['text']))
-                               {
-                                       $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
-
-                               if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
-                               {
-                                       foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
-                                       {
-                                               if (isset($subcategory['attribs']['']['text']))
-                                               {
-                                                       $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
-                                       }
-                               }
-                       }
-                       if (is_array($categories_parent))
-                       {
-                               $categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent));
-                       }
-
-                       // COPYRIGHT
-                       if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
-                       {
-                               $copyright_url = null;
-                               $copyright_label = null;
-                               if (isset($copyright[0]['attribs']['']['url']))
-                               {
-                                       $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               if (isset($copyright[0]['data']))
-                               {
-                                       $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                       }
-                       elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
-                       {
-                               $copyright_url = null;
-                               $copyright_label = null;
-                               if (isset($copyright[0]['attribs']['']['url']))
-                               {
-                                       $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               if (isset($copyright[0]['data']))
-                               {
-                                       $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                               $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                       }
-
-                       // CREDITS
-                       if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
-                       {
-                               foreach ($credits as $credit)
-                               {
-                                       $credit_role = null;
-                                       $credit_scheme = null;
-                                       $credit_name = null;
-                                       if (isset($credit['attribs']['']['role']))
-                                       {
-                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($credit['attribs']['']['scheme']))
-                                       {
-                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $credit_scheme = 'urn:ebu';
-                                       }
-                                       if (isset($credit['data']))
-                                       {
-                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
-                               }
-                       }
-                       elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
-                       {
-                               foreach ($credits as $credit)
-                               {
-                                       $credit_role = null;
-                                       $credit_scheme = null;
-                                       $credit_name = null;
-                                       if (isset($credit['attribs']['']['role']))
-                                       {
-                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($credit['attribs']['']['scheme']))
-                                       {
-                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $credit_scheme = 'urn:ebu';
-                                       }
-                                       if (isset($credit['data']))
-                                       {
-                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
-                               }
-                       }
-                       if (is_array($credits_parent))
-                       {
-                               $credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent));
-                       }
-
-                       // DESCRIPTION
-                       if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
-                       {
-                               if (isset($description_parent[0]['data']))
-                               {
-                                       $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                       }
-                       elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
-                       {
-                               if (isset($description_parent[0]['data']))
-                               {
-                                       $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                       }
-
-                       // DURATION
-                       if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
-                       {
-                               $seconds = null;
-                               $minutes = null;
-                               $hours = null;
-                               if (isset($duration_parent[0]['data']))
-                               {
-                                       $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                       if (sizeof($temp) > 0)
-                                       {
-                                               $seconds = (int) array_pop($temp);
-                                       }
-                                       if (sizeof($temp) > 0)
-                                       {
-                                               $minutes = (int) array_pop($temp);
-                                               $seconds += $minutes * 60;
-                                       }
-                                       if (sizeof($temp) > 0)
-                                       {
-                                               $hours = (int) array_pop($temp);
-                                               $seconds += $hours * 3600;
-                                       }
-                                       unset($temp);
-                                       $duration_parent = $seconds;
-                               }
-                       }
-
-                       // HASHES
-                       if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
-                       {
-                               foreach ($hashes_iterator as $hash)
-                               {
-                                       $value = null;
-                                       $algo = null;
-                                       if (isset($hash['data']))
-                                       {
-                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($hash['attribs']['']['algo']))
-                                       {
-                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $algo = 'md5';
-                                       }
-                                       $hashes_parent[] = $algo.':'.$value;
-                               }
-                       }
-                       elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
-                       {
-                               foreach ($hashes_iterator as $hash)
-                               {
-                                       $value = null;
-                                       $algo = null;
-                                       if (isset($hash['data']))
-                                       {
-                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($hash['attribs']['']['algo']))
-                                       {
-                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $algo = 'md5';
-                                       }
-                                       $hashes_parent[] = $algo.':'.$value;
-                               }
-                       }
-                       if (is_array($hashes_parent))
-                       {
-                               $hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent));
-                       }
-
-                       // KEYWORDS
-                       if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
-                       {
-                               if (isset($keywords[0]['data']))
-                               {
-                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                       foreach ($temp as $word)
-                                       {
-                                               $keywords_parent[] = trim($word);
-                                       }
-                               }
-                               unset($temp);
-                       }
-                       elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
-                       {
-                               if (isset($keywords[0]['data']))
-                               {
-                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                       foreach ($temp as $word)
-                                       {
-                                               $keywords_parent[] = trim($word);
-                                       }
-                               }
-                               unset($temp);
-                       }
-                       elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
-                       {
-                               if (isset($keywords[0]['data']))
-                               {
-                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                       foreach ($temp as $word)
-                                       {
-                                               $keywords_parent[] = trim($word);
-                                       }
-                               }
-                               unset($temp);
-                       }
-                       elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
-                       {
-                               if (isset($keywords[0]['data']))
-                               {
-                                       $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                       foreach ($temp as $word)
-                                       {
-                                               $keywords_parent[] = trim($word);
-                                       }
-                               }
-                               unset($temp);
-                       }
-                       if (is_array($keywords_parent))
-                       {
-                               $keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent));
-                       }
-
-                       // PLAYER
-                       if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
-                       {
-                               if (isset($player_parent[0]['attribs']['']['url']))
-                               {
-                                       $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                               }
-                       }
-                       elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
-                       {
-                               if (isset($player_parent[0]['attribs']['']['url']))
-                               {
-                                       $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                               }
-                       }
-
-                       // RATINGS
-                       if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
-                       {
-                               foreach ($ratings as $rating)
-                               {
-                                       $rating_scheme = null;
-                                       $rating_value = null;
-                                       if (isset($rating['attribs']['']['scheme']))
-                                       {
-                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $rating_scheme = 'urn:simple';
-                                       }
-                                       if (isset($rating['data']))
-                                       {
-                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                               }
-                       }
-                       elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
-                       {
-                               foreach ($ratings as $rating)
-                               {
-                                       $rating_scheme = 'urn:itunes';
-                                       $rating_value = null;
-                                       if (isset($rating['data']))
-                                       {
-                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                               }
-                       }
-                       elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
-                       {
-                               foreach ($ratings as $rating)
-                               {
-                                       $rating_scheme = null;
-                                       $rating_value = null;
-                                       if (isset($rating['attribs']['']['scheme']))
-                                       {
-                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       else
-                                       {
-                                               $rating_scheme = 'urn:simple';
-                                       }
-                                       if (isset($rating['data']))
-                                       {
-                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                               }
-                       }
-                       elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
-                       {
-                               foreach ($ratings as $rating)
-                               {
-                                       $rating_scheme = 'urn:itunes';
-                                       $rating_value = null;
-                                       if (isset($rating['data']))
-                                       {
-                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                               }
-                       }
-                       if (is_array($ratings_parent))
-                       {
-                               $ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent));
-                       }
-
-                       // RESTRICTIONS
-                       if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
-                       {
-                               foreach ($restrictions as $restriction)
-                               {
-                                       $restriction_relationship = null;
-                                       $restriction_type = null;
-                                       $restriction_value = null;
-                                       if (isset($restriction['attribs']['']['relationship']))
-                                       {
-                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($restriction['attribs']['']['type']))
-                                       {
-                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($restriction['data']))
-                                       {
-                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                               }
-                       }
-                       elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
-                       {
-                               foreach ($restrictions as $restriction)
-                               {
-                                       $restriction_relationship = 'allow';
-                                       $restriction_type = null;
-                                       $restriction_value = 'itunes';
-                                       if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
-                                       {
-                                               $restriction_relationship = 'deny';
-                                       }
-                                       $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                               }
-                       }
-                       elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
-                       {
-                               foreach ($restrictions as $restriction)
-                               {
-                                       $restriction_relationship = null;
-                                       $restriction_type = null;
-                                       $restriction_value = null;
-                                       if (isset($restriction['attribs']['']['relationship']))
-                                       {
-                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($restriction['attribs']['']['type']))
-                                       {
-                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($restriction['data']))
-                                       {
-                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                               }
-                       }
-                       elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
-                       {
-                               foreach ($restrictions as $restriction)
-                               {
-                                       $restriction_relationship = 'allow';
-                                       $restriction_type = null;
-                                       $restriction_value = 'itunes';
-                                       if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
-                                       {
-                                               $restriction_relationship = 'deny';
-                                       }
-                                       $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                               }
-                       }
-                       if (is_array($restrictions_parent))
-                       {
-                               $restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
-                       }
-
-                       // THUMBNAILS
-                       if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
-                       {
-                               foreach ($thumbnails as $thumbnail)
-                               {
-                                       if (isset($thumbnail['attribs']['']['url']))
-                                       {
-                                               $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                       }
-                               }
-                       }
-                       elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
-                       {
-                               foreach ($thumbnails as $thumbnail)
-                               {
-                                       if (isset($thumbnail['attribs']['']['url']))
-                                       {
-                                               $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                       }
-                               }
-                       }
-
-                       // TITLES
-                       if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
-                       {
-                               if (isset($title_parent[0]['data']))
-                               {
-                                       $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                       }
-                       elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
-                       {
-                               if (isset($title_parent[0]['data']))
-                               {
-                                       $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                               }
-                       }
-
-                       // Clear the memory
-                       unset($parent);
-
-                       // Attributes
-                       $bitrate = null;
-                       $channels = null;
-                       $duration = null;
-                       $expression = null;
-                       $framerate = null;
-                       $height = null;
-                       $javascript = null;
-                       $lang = null;
-                       $length = null;
-                       $medium = null;
-                       $samplingrate = null;
-                       $type = null;
-                       $url = null;
-                       $width = null;
-
-                       // Elements
-                       $captions = null;
-                       $categories = null;
-                       $copyrights = null;
-                       $credits = null;
-                       $description = null;
-                       $hashes = null;
-                       $keywords = null;
-                       $player = null;
-                       $ratings = null;
-                       $restrictions = null;
-                       $thumbnails = null;
-                       $title = null;
-
-                       // If we have media:group tags, loop through them.
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
-                       {
-                               if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
-                               {
-                                       // If we have media:content tags, loop through them.
-                                       foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
-                                       {
-                                               if (isset($content['attribs']['']['url']))
-                                               {
-                                                       // Attributes
-                                                       $bitrate = null;
-                                                       $channels = null;
-                                                       $duration = null;
-                                                       $expression = null;
-                                                       $framerate = null;
-                                                       $height = null;
-                                                       $javascript = null;
-                                                       $lang = null;
-                                                       $length = null;
-                                                       $medium = null;
-                                                       $samplingrate = null;
-                                                       $type = null;
-                                                       $url = null;
-                                                       $width = null;
-
-                                                       // Elements
-                                                       $captions = null;
-                                                       $categories = null;
-                                                       $copyrights = null;
-                                                       $credits = null;
-                                                       $description = null;
-                                                       $hashes = null;
-                                                       $keywords = null;
-                                                       $player = null;
-                                                       $ratings = null;
-                                                       $restrictions = null;
-                                                       $thumbnails = null;
-                                                       $title = null;
-
-                                                       // Start checking the attributes of media:content
-                                                       if (isset($content['attribs']['']['bitrate']))
-                                                       {
-                                                               $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['channels']))
-                                                       {
-                                                               $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['duration']))
-                                                       {
-                                                               $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       else
-                                                       {
-                                                               $duration = $duration_parent;
-                                                       }
-                                                       if (isset($content['attribs']['']['expression']))
-                                                       {
-                                                               $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['framerate']))
-                                                       {
-                                                               $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['height']))
-                                                       {
-                                                               $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['lang']))
-                                                       {
-                                                               $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['fileSize']))
-                                                       {
-                                                               $length = ceil($content['attribs']['']['fileSize']);
-                                                       }
-                                                       if (isset($content['attribs']['']['medium']))
-                                                       {
-                                                               $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['samplingrate']))
-                                                       {
-                                                               $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['type']))
-                                                       {
-                                                               $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['attribs']['']['width']))
-                                                       {
-                                                               $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
-                                                       // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
-                                                       // CAPTIONS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
-                                                               {
-                                                                       $caption_type = null;
-                                                                       $caption_lang = null;
-                                                                       $caption_startTime = null;
-                                                                       $caption_endTime = null;
-                                                                       $caption_text = null;
-                                                                       if (isset($caption['attribs']['']['type']))
-                                                                       {
-                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['lang']))
-                                                                       {
-                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['start']))
-                                                                       {
-                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['end']))
-                                                                       {
-                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['data']))
-                                                                       {
-                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
-                                                               }
-                                                               if (is_array($captions))
-                                                               {
-                                                                       $captions = array_values(SimplePie_Misc::array_unique($captions));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
-                                                               {
-                                                                       $caption_type = null;
-                                                                       $caption_lang = null;
-                                                                       $caption_startTime = null;
-                                                                       $caption_endTime = null;
-                                                                       $caption_text = null;
-                                                                       if (isset($caption['attribs']['']['type']))
-                                                                       {
-                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['lang']))
-                                                                       {
-                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['start']))
-                                                                       {
-                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['attribs']['']['end']))
-                                                                       {
-                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($caption['data']))
-                                                                       {
-                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
-                                                               }
-                                                               if (is_array($captions))
-                                                               {
-                                                                       $captions = array_values(SimplePie_Misc::array_unique($captions));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $captions = $captions_parent;
-                                                       }
-
-                                                       // CATEGORIES
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
-                                                       {
-                                                               foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
-                                                               {
-                                                                       $term = null;
-                                                                       $scheme = null;
-                                                                       $label = null;
-                                                                       if (isset($category['data']))
-                                                                       {
-                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($category['attribs']['']['scheme']))
-                                                                       {
-                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                                                                       }
-                                                                       if (isset($category['attribs']['']['label']))
-                                                                       {
-                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $categories[] =& new $this->feed->category_class($term, $scheme, $label);
-                                                               }
-                                                       }
-                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
-                                                       {
-                                                               foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
-                                                               {
-                                                                       $term = null;
-                                                                       $scheme = null;
-                                                                       $label = null;
-                                                                       if (isset($category['data']))
-                                                                       {
-                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($category['attribs']['']['scheme']))
-                                                                       {
-                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                                                                       }
-                                                                       if (isset($category['attribs']['']['label']))
-                                                                       {
-                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $categories[] =& new $this->feed->category_class($term, $scheme, $label);
-                                                               }
-                                                       }
-                                                       if (is_array($categories) && is_array($categories_parent))
-                                                       {
-                                                               $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
-                                                       }
-                                                       elseif (is_array($categories))
-                                                       {
-                                                               $categories = array_values(SimplePie_Misc::array_unique($categories));
-                                                       }
-                                                       elseif (is_array($categories_parent))
-                                                       {
-                                                               $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
-                                                       }
-
-                                                       // COPYRIGHTS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
-                                                       {
-                                                               $copyright_url = null;
-                                                               $copyright_label = null;
-                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
-                                                               {
-                                                                       $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
-                                                               {
-                                                                       $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
-                                                       {
-                                                               $copyright_url = null;
-                                                               $copyright_label = null;
-                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
-                                                               {
-                                                                       $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
-                                                               {
-                                                                       $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                                                       }
-                                                       else
-                                                       {
-                                                               $copyrights = $copyrights_parent;
-                                                       }
-
-                                                       // CREDITS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
-                                                               {
-                                                                       $credit_role = null;
-                                                                       $credit_scheme = null;
-                                                                       $credit_name = null;
-                                                                       if (isset($credit['attribs']['']['role']))
-                                                                       {
-                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($credit['attribs']['']['scheme']))
-                                                                       {
-                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $credit_scheme = 'urn:ebu';
-                                                                       }
-                                                                       if (isset($credit['data']))
-                                                                       {
-                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
-                                                               }
-                                                               if (is_array($credits))
-                                                               {
-                                                                       $credits = array_values(SimplePie_Misc::array_unique($credits));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
-                                                               {
-                                                                       $credit_role = null;
-                                                                       $credit_scheme = null;
-                                                                       $credit_name = null;
-                                                                       if (isset($credit['attribs']['']['role']))
-                                                                       {
-                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($credit['attribs']['']['scheme']))
-                                                                       {
-                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $credit_scheme = 'urn:ebu';
-                                                                       }
-                                                                       if (isset($credit['data']))
-                                                                       {
-                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
-                                                               }
-                                                               if (is_array($credits))
-                                                               {
-                                                                       $credits = array_values(SimplePie_Misc::array_unique($credits));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $credits = $credits_parent;
-                                                       }
-
-                                                       // DESCRIPTION
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
-                                                       {
-                                                               $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
-                                                       {
-                                                               $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       else
-                                                       {
-                                                               $description = $description_parent;
-                                                       }
-
-                                                       // HASHES
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
-                                                               {
-                                                                       $value = null;
-                                                                       $algo = null;
-                                                                       if (isset($hash['data']))
-                                                                       {
-                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($hash['attribs']['']['algo']))
-                                                                       {
-                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $algo = 'md5';
-                                                                       }
-                                                                       $hashes[] = $algo.':'.$value;
-                                                               }
-                                                               if (is_array($hashes))
-                                                               {
-                                                                       $hashes = array_values(SimplePie_Misc::array_unique($hashes));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
-                                                               {
-                                                                       $value = null;
-                                                                       $algo = null;
-                                                                       if (isset($hash['data']))
-                                                                       {
-                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($hash['attribs']['']['algo']))
-                                                                       {
-                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $algo = 'md5';
-                                                                       }
-                                                                       $hashes[] = $algo.':'.$value;
-                                                               }
-                                                               if (is_array($hashes))
-                                                               {
-                                                                       $hashes = array_values(SimplePie_Misc::array_unique($hashes));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $hashes = $hashes_parent;
-                                                       }
-
-                                                       // KEYWORDS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
-                                                       {
-                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
-                                                               {
-                                                                       $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                                                       foreach ($temp as $word)
-                                                                       {
-                                                                               $keywords[] = trim($word);
-                                                                       }
-                                                                       unset($temp);
-                                                               }
-                                                               if (is_array($keywords))
-                                                               {
-                                                                       $keywords = array_values(SimplePie_Misc::array_unique($keywords));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
-                                                       {
-                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
-                                                               {
-                                                                       $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                                                       foreach ($temp as $word)
-                                                                       {
-                                                                               $keywords[] = trim($word);
-                                                                       }
-                                                                       unset($temp);
-                                                               }
-                                                               if (is_array($keywords))
-                                                               {
-                                                                       $keywords = array_values(SimplePie_Misc::array_unique($keywords));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $keywords = $keywords_parent;
-                                                       }
-
-                                                       // PLAYER
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                                       {
-                                                               $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                                       {
-                                                               $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                                       else
-                                                       {
-                                                               $player = $player_parent;
-                                                       }
-
-                                                       // RATINGS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
-                                                               {
-                                                                       $rating_scheme = null;
-                                                                       $rating_value = null;
-                                                                       if (isset($rating['attribs']['']['scheme']))
-                                                                       {
-                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $rating_scheme = 'urn:simple';
-                                                                       }
-                                                                       if (isset($rating['data']))
-                                                                       {
-                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                                                               }
-                                                               if (is_array($ratings))
-                                                               {
-                                                                       $ratings = array_values(SimplePie_Misc::array_unique($ratings));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
-                                                               {
-                                                                       $rating_scheme = null;
-                                                                       $rating_value = null;
-                                                                       if (isset($rating['attribs']['']['scheme']))
-                                                                       {
-                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               $rating_scheme = 'urn:simple';
-                                                                       }
-                                                                       if (isset($rating['data']))
-                                                                       {
-                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                                                               }
-                                                               if (is_array($ratings))
-                                                               {
-                                                                       $ratings = array_values(SimplePie_Misc::array_unique($ratings));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $ratings = $ratings_parent;
-                                                       }
-
-                                                       // RESTRICTIONS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
-                                                               {
-                                                                       $restriction_relationship = null;
-                                                                       $restriction_type = null;
-                                                                       $restriction_value = null;
-                                                                       if (isset($restriction['attribs']['']['relationship']))
-                                                                       {
-                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($restriction['attribs']['']['type']))
-                                                                       {
-                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($restriction['data']))
-                                                                       {
-                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                                                               }
-                                                               if (is_array($restrictions))
-                                                               {
-                                                                       $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
-                                                               {
-                                                                       $restriction_relationship = null;
-                                                                       $restriction_type = null;
-                                                                       $restriction_value = null;
-                                                                       if (isset($restriction['attribs']['']['relationship']))
-                                                                       {
-                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($restriction['attribs']['']['type']))
-                                                                       {
-                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       if (isset($restriction['data']))
-                                                                       {
-                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                                       }
-                                                                       $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                                                               }
-                                                               if (is_array($restrictions))
-                                                               {
-                                                                       $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $restrictions = $restrictions_parent;
-                                                       }
-
-                                                       // THUMBNAILS
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
-                                                       {
-                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
-                                                               {
-                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                               }
-                                                               if (is_array($thumbnails))
-                                                               {
-                                                                       $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
-                                                               }
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
-                                                       {
-                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
-                                                               {
-                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                               }
-                                                               if (is_array($thumbnails))
-                                                               {
-                                                                       $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $thumbnails = $thumbnails_parent;
-                                                       }
-
-                                                       // TITLES
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
-                                                       {
-                                                               $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
-                                                       {
-                                                               $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       else
-                                                       {
-                                                               $title = $title_parent;
-                                                       }
-
-                                                       $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
-                                               }
-                                       }
-                               }
-                       }
-
-                       // If we have standalone media:content tags, loop through them.
-                       if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
-                       {
-                               foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
-                               {
-                                       if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                       {
-                                               // Attributes
-                                               $bitrate = null;
-                                               $channels = null;
-                                               $duration = null;
-                                               $expression = null;
-                                               $framerate = null;
-                                               $height = null;
-                                               $javascript = null;
-                                               $lang = null;
-                                               $length = null;
-                                               $medium = null;
-                                               $samplingrate = null;
-                                               $type = null;
-                                               $url = null;
-                                               $width = null;
-
-                                               // Elements
-                                               $captions = null;
-                                               $categories = null;
-                                               $copyrights = null;
-                                               $credits = null;
-                                               $description = null;
-                                               $hashes = null;
-                                               $keywords = null;
-                                               $player = null;
-                                               $ratings = null;
-                                               $restrictions = null;
-                                               $thumbnails = null;
-                                               $title = null;
-
-                                               // Start checking the attributes of media:content
-                                               if (isset($content['attribs']['']['bitrate']))
-                                               {
-                                                       $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['channels']))
-                                               {
-                                                       $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['duration']))
-                                               {
-                                                       $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $duration = $duration_parent;
-                                               }
-                                               if (isset($content['attribs']['']['expression']))
-                                               {
-                                                       $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['framerate']))
-                                               {
-                                                       $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['height']))
-                                               {
-                                                       $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['lang']))
-                                               {
-                                                       $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['fileSize']))
-                                               {
-                                                       $length = ceil($content['attribs']['']['fileSize']);
-                                               }
-                                               if (isset($content['attribs']['']['medium']))
-                                               {
-                                                       $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['samplingrate']))
-                                               {
-                                                       $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['type']))
-                                               {
-                                                       $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['width']))
-                                               {
-                                                       $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['url']))
-                                               {
-                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                               }
-                                               // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
-                                               // CAPTIONS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
-                                                       {
-                                                               $caption_type = null;
-                                                               $caption_lang = null;
-                                                               $caption_startTime = null;
-                                                               $caption_endTime = null;
-                                                               $caption_text = null;
-                                                               if (isset($caption['attribs']['']['type']))
-                                                               {
-                                                                       $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['lang']))
-                                                               {
-                                                                       $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['start']))
-                                                               {
-                                                                       $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['end']))
-                                                               {
-                                                                       $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['data']))
-                                                               {
-                                                                       $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
-                                                       }
-                                                       if (is_array($captions))
-                                                       {
-                                                               $captions = array_values(SimplePie_Misc::array_unique($captions));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $captions = $captions_parent;
-                                               }
-
-                                               // CATEGORIES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
-                                               {
-                                                       foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
-                                                       {
-                                                               $term = null;
-                                                               $scheme = null;
-                                                               $label = null;
-                                                               if (isset($category['data']))
-                                                               {
-                                                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($category['attribs']['']['scheme']))
-                                                               {
-                                                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                                                               }
-                                                               if (isset($category['attribs']['']['label']))
-                                                               {
-                                                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $categories[] =& new $this->feed->category_class($term, $scheme, $label);
-                                                       }
-                                               }
-                                               if (is_array($categories) && is_array($categories_parent))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
-                                               }
-                                               elseif (is_array($categories))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique($categories));
-                                               }
-                                               elseif (is_array($categories_parent))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
-                                               }
-                                               else
-                                               {
-                                                       $categories = null;
-                                               }
-
-                                               // COPYRIGHTS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
-                                               {
-                                                       $copyright_url = null;
-                                                       $copyright_label = null;
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
-                                                       {
-                                                               $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
-                                                       {
-                                                               $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                       }
-                                                       $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                                               }
-                                               else
-                                               {
-                                                       $copyrights = $copyrights_parent;
-                                               }
-
-                                               // CREDITS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
-                                                       {
-                                                               $credit_role = null;
-                                                               $credit_scheme = null;
-                                                               $credit_name = null;
-                                                               if (isset($credit['attribs']['']['role']))
-                                                               {
-                                                                       $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($credit['attribs']['']['scheme']))
-                                                               {
-                                                                       $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $credit_scheme = 'urn:ebu';
-                                                               }
-                                                               if (isset($credit['data']))
-                                                               {
-                                                                       $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
-                                                       }
-                                                       if (is_array($credits))
-                                                       {
-                                                               $credits = array_values(SimplePie_Misc::array_unique($credits));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $credits = $credits_parent;
-                                               }
-
-                                               // DESCRIPTION
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
-                                               {
-                                                       $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $description = $description_parent;
-                                               }
-
-                                               // HASHES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
-                                                       {
-                                                               $value = null;
-                                                               $algo = null;
-                                                               if (isset($hash['data']))
-                                                               {
-                                                                       $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($hash['attribs']['']['algo']))
-                                                               {
-                                                                       $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $algo = 'md5';
-                                                               }
-                                                               $hashes[] = $algo.':'.$value;
-                                                       }
-                                                       if (is_array($hashes))
-                                                       {
-                                                               $hashes = array_values(SimplePie_Misc::array_unique($hashes));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $hashes = $hashes_parent;
-                                               }
-
-                                               // KEYWORDS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
-                                               {
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
-                                                       {
-                                                               $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                                               foreach ($temp as $word)
-                                                               {
-                                                                       $keywords[] = trim($word);
-                                                               }
-                                                               unset($temp);
-                                                       }
-                                                       if (is_array($keywords))
-                                                       {
-                                                               $keywords = array_values(SimplePie_Misc::array_unique($keywords));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $keywords = $keywords_parent;
-                                               }
-
-                                               // PLAYER
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                               {
-                                                       $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                               }
-                                               else
-                                               {
-                                                       $player = $player_parent;
-                                               }
-
-                                               // RATINGS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
-                                                       {
-                                                               $rating_scheme = null;
-                                                               $rating_value = null;
-                                                               if (isset($rating['attribs']['']['scheme']))
-                                                               {
-                                                                       $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $rating_scheme = 'urn:simple';
-                                                               }
-                                                               if (isset($rating['data']))
-                                                               {
-                                                                       $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
-                                                       }
-                                                       if (is_array($ratings))
-                                                       {
-                                                               $ratings = array_values(SimplePie_Misc::array_unique($ratings));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $ratings = $ratings_parent;
-                                               }
-
-                                               // RESTRICTIONS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
-                                                       {
-                                                               $restriction_relationship = null;
-                                                               $restriction_type = null;
-                                                               $restriction_value = null;
-                                                               if (isset($restriction['attribs']['']['relationship']))
-                                                               {
-                                                                       $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($restriction['attribs']['']['type']))
-                                                               {
-                                                                       $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($restriction['data']))
-                                                               {
-                                                                       $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
-                                                       }
-                                                       if (is_array($restrictions))
-                                                       {
-                                                               $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $restrictions = $restrictions_parent;
-                                               }
-
-                                               // THUMBNAILS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
-                                                       {
-                                                               $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                                       if (is_array($thumbnails))
-                                                       {
-                                                               $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $thumbnails = $thumbnails_parent;
-                                               }
-
-                                               // TITLES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
-                                               {
-                                                       $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $title = $title_parent;
-                                               }
-
-                                               $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
-                                       }
-                               }
-                       }
-
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
-                       {
-                               if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
-                               {
-                                       // Attributes
-                                       $bitrate = null;
-                                       $channels = null;
-                                       $duration = null;
-                                       $expression = null;
-                                       $framerate = null;
-                                       $height = null;
-                                       $javascript = null;
-                                       $lang = null;
-                                       $length = null;
-                                       $medium = null;
-                                       $samplingrate = null;
-                                       $type = null;
-                                       $url = null;
-                                       $width = null;
-
-                                       $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-                                       if (isset($link['attribs']['']['type']))
-                                       {
-                                               $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($link['attribs']['']['length']))
-                                       {
-                                               $length = ceil($link['attribs']['']['length']);
-                                       }
-
-                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
-                                       $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
-                               }
-                       }
-
-                       foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
-                       {
-                               if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
-                               {
-                                       // Attributes
-                                       $bitrate = null;
-                                       $channels = null;
-                                       $duration = null;
-                                       $expression = null;
-                                       $framerate = null;
-                                       $height = null;
-                                       $javascript = null;
-                                       $lang = null;
-                                       $length = null;
-                                       $medium = null;
-                                       $samplingrate = null;
-                                       $type = null;
-                                       $url = null;
-                                       $width = null;
-
-                                       $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-                                       if (isset($link['attribs']['']['type']))
-                                       {
-                                               $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($link['attribs']['']['length']))
-                                       {
-                                               $length = ceil($link['attribs']['']['length']);
-                                       }
-
-                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
-                                       $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
-                               }
-                       }
-
-                       if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure'))
-                       {
-                               if (isset($enclosure[0]['attribs']['']['url']))
-                               {
-                                       // Attributes
-                                       $bitrate = null;
-                                       $channels = null;
-                                       $duration = null;
-                                       $expression = null;
-                                       $framerate = null;
-                                       $height = null;
-                                       $javascript = null;
-                                       $lang = null;
-                                       $length = null;
-                                       $medium = null;
-                                       $samplingrate = null;
-                                       $type = null;
-                                       $url = null;
-                                       $width = null;
-
-                                       $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
-                                       if (isset($enclosure[0]['attribs']['']['type']))
-                                       {
-                                               $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                       }
-                                       if (isset($enclosure[0]['attribs']['']['length']))
-                                       {
-                                               $length = ceil($enclosure[0]['attribs']['']['length']);
-                                       }
-
-                                       // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
-                                       $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
-                               }
-                       }
-
-                       if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))
-                       {
-                               // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
-                               $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
-                       }
-
-                       $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures']));
-               }
-               if (!empty($this->data['enclosures']))
-               {
-                       return $this->data['enclosures'];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_latitude()
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
-               {
-                       return (float) $match[1];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_longitude()
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
-               {
-                       return (float) $match[2];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_source()
-       {
-               if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
-               {
-                       return new $this->feed->source_class($this, $return[0]);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Creates the add_to_* methods' return data
-        *
-        * @access private
-        * @param string $item_url String to prefix to the item permalink
-        * @param string $title_url String to prefix to the item title
-        * (and suffix to the item permalink)
-        * @return mixed URL if feed exists, false otherwise
-        */
-       function add_to_service($item_url, $title_url = null, $summary_url = null)
-       {
-               if ($this->get_permalink() !== null)
-               {
-                       $return = $item_url . rawurlencode($this->get_permalink());
-                       if ($title_url !== null && $this->get_title() !== null)
-                       {
-                               $return .= $title_url . rawurlencode($this->get_title());
-                       }
-                       if ($summary_url !== null && $this->get_description() !== null)
-                       {
-                               $return .= $summary_url . rawurlencode($this->get_description());
-                       }
-                       return $this->sanitize($return, SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function add_to_blinklist()
-       {
-               return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
-       }
-
-       function add_to_blogmarks()
-       {
-               return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
-       }
-
-       function add_to_delicious()
-       {
-               return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title=');
-       }
-
-       function add_to_digg()
-       {
-               return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext=');
-       }
-
-       function add_to_furl()
-       {
-               return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
-       }
-
-       function add_to_magnolia()
-       {
-               return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
-       }
-
-       function add_to_myweb20()
-       {
-               return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
-       }
-
-       function add_to_newsvine()
-       {
-               return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
-       }
-
-       function add_to_reddit()
-       {
-               return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
-       }
-
-       function add_to_segnalo()
-       {
-               return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
-       }
-
-       function add_to_simpy()
-       {
-               return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
-       }
-
-       function add_to_spurl()
-       {
-               return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
-       }
-
-       function add_to_wists()
-       {
-               return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
-       }
-
-       function search_technorati()
-       {
-               return $this->add_to_service('http://www.technorati.com/search/');
-       }
-}
-
-class SimplePie_Source
-{
-       var $item;
-       var $data = array();
-
-       function SimplePie_Source($item, $data)
-       {
-               $this->item = $item;
-               $this->data = $data;
-       }
-
-       function __toString()
-       {
-               return md5(serialize($this->data));
-       }
-
-       function get_source_tags($namespace, $tag)
-       {
-               if (isset($this->data['child'][$namespace][$tag]))
-               {
-                       return $this->data['child'][$namespace][$tag];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_base($element = array())
-       {
-               return $this->item->get_base($element);
-       }
-
-       function sanitize($data, $type, $base = '')
-       {
-               return $this->item->sanitize($data, $type, $base);
-       }
-
-       function get_item()
-       {
-               return $this->item;
-       }
-
-       function get_title()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_category($key = 0)
-       {
-               $categories = $this->get_categories();
-               if (isset($categories[$key]))
-               {
-                       return $categories[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_categories()
-       {
-               $categories = array();
-
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
-               {
-                       $term = null;
-                       $scheme = null;
-                       $label = null;
-                       if (isset($category['attribs']['']['term']))
-                       {
-                               $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($category['attribs']['']['scheme']))
-                       {
-                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($category['attribs']['']['label']))
-                       {
-                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       $categories[] =& new $this->item->feed->category_class($term, $scheme, $label);
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
-               {
-                       // This is really the label, but keep this as the term also for BC.
-                       // Label will also work on retrieving because that falls back to term.
-                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       if (isset($category['attribs']['']['domain']))
-                       {
-                               $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       else
-                       {
-                               $scheme = null;
-                       }
-                       $categories[] =& new $this->item->feed->category_class($term, $scheme, null);
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
-               {
-                       $categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
-               {
-                       $categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-
-               if (!empty($categories))
-               {
-                       return SimplePie_Misc::array_unique($categories);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_author($key = 0)
-       {
-               $authors = $this->get_authors();
-               if (isset($authors[$key]))
-               {
-                       return $authors[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_authors()
-       {
-               $authors = array();
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
-               {
-                       $name = null;
-                       $uri = null;
-                       $email = null;
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
-                       {
-                               $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
-                       }
-                       if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $uri !== null)
-                       {
-                               $authors[] =& new $this->item->feed->author_class($name, $uri, $email);
-                       }
-               }
-               if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
-               {
-                       $name = null;
-                       $url = null;
-                       $email = null;
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
-                       {
-                               $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
-                       }
-                       if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $url !== null)
-                       {
-                               $authors[] =& new $this->item->feed->author_class($name, $url, $email);
-                       }
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
-               {
-                       $authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
-               {
-                       $authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
-               {
-                       $authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
-               }
-
-               if (!empty($authors))
-               {
-                       return SimplePie_Misc::array_unique($authors);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_contributor($key = 0)
-       {
-               $contributors = $this->get_contributors();
-               if (isset($contributors[$key]))
-               {
-                       return $contributors[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_contributors()
-       {
-               $contributors = array();
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
-               {
-                       $name = null;
-                       $uri = null;
-                       $email = null;
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
-                       {
-                               $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $uri !== null)
-                       {
-                               $contributors[] =& new $this->item->feed->author_class($name, $uri, $email);
-                       }
-               }
-               foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
-               {
-                       $name = null;
-                       $url = null;
-                       $email = null;
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
-                       {
-                               $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
-                       {
-                               $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
-                       }
-                       if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
-                       {
-                               $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                       }
-                       if ($name !== null || $email !== null || $url !== null)
-                       {
-                               $contributors[] =& new $this->item->feed->author_class($name, $url, $email);
-                       }
-               }
-
-               if (!empty($contributors))
-               {
-                       return SimplePie_Misc::array_unique($contributors);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_link($key = 0, $rel = 'alternate')
-       {
-               $links = $this->get_links($rel);
-               if (isset($links[$key]))
-               {
-                       return $links[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Added for parity between the parent-level and the item/entry-level.
-        */
-       function get_permalink()
-       {
-               return $this->get_link(0);
-       }
-
-       function get_links($rel = 'alternate')
-       {
-               if (!isset($this->data['links']))
-               {
-                       $this->data['links'] = array();
-                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
-                       {
-                               foreach ($links as $link)
-                               {
-                                       if (isset($link['attribs']['']['href']))
-                                       {
-                                               $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
-                                               $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-                                       }
-                               }
-                       }
-                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
-                       {
-                               foreach ($links as $link)
-                               {
-                                       if (isset($link['attribs']['']['href']))
-                                       {
-                                               $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
-                                               $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
-                                       }
-                               }
-                       }
-                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-                       if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
-                       {
-                               $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
-                       }
-
-                       $keys = array_keys($this->data['links']);
-                       foreach ($keys as $key)
-                       {
-                               if (SimplePie_Misc::is_isegment_nz_nc($key))
-                               {
-                                       if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
-                                       {
-                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
-                                               $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
-                                       }
-                                       else
-                                       {
-                                               $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
-                                       }
-                               }
-                               elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
-                               {
-                                       $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
-                               }
-                               $this->data['links'][$key] = array_unique($this->data['links'][$key]);
-                       }
-               }
-
-               if (isset($this->data['links'][$rel]))
-               {
-                       return $this->data['links'][$rel];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_description()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_copyright()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
-               {
-                       return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_language()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               elseif (isset($this->data['xml_lang']))
-               {
-                       return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_latitude()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
-               {
-                       return (float) $match[1];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_longitude()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
-               {
-                       return (float) $return[0]['data'];
-               }
-               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
-               {
-                       return (float) $match[2];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_image_url()
-       {
-               if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
-               {
-                       return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
-               }
-               elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
-               {
-                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Author
-{
-       var $name;
-       var $link;
-       var $email;
-
-       // Constructor, used to input the data
-       function SimplePie_Author($name = null, $link = null, $email = null)
-       {
-               $this->name = $name;
-               $this->link = $link;
-               $this->email = $email;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_name()
-       {
-               if ($this->name !== null)
-               {
-                       return $this->name;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_link()
-       {
-               if ($this->link !== null)
-               {
-                       return $this->link;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_email()
-       {
-               if ($this->email !== null)
-               {
-                       return $this->email;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Category
-{
-       var $term;
-       var $scheme;
-       var $label;
-
-       // Constructor, used to input the data
-       function SimplePie_Category($term = null, $scheme = null, $label = null)
-       {
-               $this->term = $term;
-               $this->scheme = $scheme;
-               $this->label = $label;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_term()
-       {
-               if ($this->term !== null)
-               {
-                       return $this->term;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_scheme()
-       {
-               if ($this->scheme !== null)
-               {
-                       return $this->scheme;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_label()
-       {
-               if ($this->label !== null)
-               {
-                       return $this->label;
-               }
-               else
-               {
-                       return $this->get_term();
-               }
-       }
-}
-
-class SimplePie_Enclosure
-{
-       var $bitrate;
-       var $captions;
-       var $categories;
-       var $channels;
-       var $copyright;
-       var $credits;
-       var $description;
-       var $duration;
-       var $expression;
-       var $framerate;
-       var $handler;
-       var $hashes;
-       var $height;
-       var $javascript;
-       var $keywords;
-       var $lang;
-       var $length;
-       var $link;
-       var $medium;
-       var $player;
-       var $ratings;
-       var $restrictions;
-       var $samplingrate;
-       var $thumbnails;
-       var $title;
-       var $type;
-       var $width;
-
-       // Constructor, used to input the data
-       function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
-       {
-               $this->bitrate = $bitrate;
-               $this->captions = $captions;
-               $this->categories = $categories;
-               $this->channels = $channels;
-               $this->copyright = $copyright;
-               $this->credits = $credits;
-               $this->description = $description;
-               $this->duration = $duration;
-               $this->expression = $expression;
-               $this->framerate = $framerate;
-               $this->hashes = $hashes;
-               $this->height = $height;
-               $this->javascript = $javascript;
-               $this->keywords = $keywords;
-               $this->lang = $lang;
-               $this->length = $length;
-               $this->link = $link;
-               $this->medium = $medium;
-               $this->player = $player;
-               $this->ratings = $ratings;
-               $this->restrictions = $restrictions;
-               $this->samplingrate = $samplingrate;
-               $this->thumbnails = $thumbnails;
-               $this->title = $title;
-               $this->type = $type;
-               $this->width = $width;
-               if (class_exists('idna_convert'))
-               {
-                       $idn =& new idna_convert;
-                       $parsed = SimplePie_Misc::parse_url($link);
-                       $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
-               }
-               $this->handler = $this->get_handler(); // Needs to load last
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_bitrate()
-       {
-               if ($this->bitrate !== null)
-               {
-                       return $this->bitrate;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_caption($key = 0)
-       {
-               $captions = $this->get_captions();
-               if (isset($captions[$key]))
-               {
-                       return $captions[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_captions()
-       {
-               if ($this->captions !== null)
-               {
-                       return $this->captions;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_category($key = 0)
-       {
-               $categories = $this->get_categories();
-               if (isset($categories[$key]))
-               {
-                       return $categories[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_categories()
-       {
-               if ($this->categories !== null)
-               {
-                       return $this->categories;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_channels()
-       {
-               if ($this->channels !== null)
-               {
-                       return $this->channels;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_copyright()
-       {
-               if ($this->copyright !== null)
-               {
-                       return $this->copyright;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_credit($key = 0)
-       {
-               $credits = $this->get_credits();
-               if (isset($credits[$key]))
-               {
-                       return $credits[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_credits()
-       {
-               if ($this->credits !== null)
-               {
-                       return $this->credits;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_description()
-       {
-               if ($this->description !== null)
-               {
-                       return $this->description;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_duration($convert = false)
-       {
-               if ($this->duration !== null)
-               {
-                       if ($convert)
-                       {
-                               $time = SimplePie_Misc::time_hms($this->duration);
-                               return $time;
-                       }
-                       else
-                       {
-                               return $this->duration;
-                       }
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_expression()
-       {
-               if ($this->expression !== null)
-               {
-                       return $this->expression;
-               }
-               else
-               {
-                       return 'full';
-               }
-       }
-
-       function get_extension()
-       {
-               if ($this->link !== null)
-               {
-                       $url = SimplePie_Misc::parse_url($this->link);
-                       if ($url['path'] !== '')
-                       {
-                               return pathinfo($url['path'], PATHINFO_EXTENSION);
-                       }
-               }
-               return null;
-       }
-
-       function get_framerate()
-       {
-               if ($this->framerate !== null)
-               {
-                       return $this->framerate;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_handler()
-       {
-               return $this->get_real_type(true);
-       }
-
-       function get_hash($key = 0)
-       {
-               $hashes = $this->get_hashes();
-               if (isset($hashes[$key]))
-               {
-                       return $hashes[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_hashes()
-       {
-               if ($this->hashes !== null)
-               {
-                       return $this->hashes;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_height()
-       {
-               if ($this->height !== null)
-               {
-                       return $this->height;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_language()
-       {
-               if ($this->lang !== null)
-               {
-                       return $this->lang;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_keyword($key = 0)
-       {
-               $keywords = $this->get_keywords();
-               if (isset($keywords[$key]))
-               {
-                       return $keywords[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_keywords()
-       {
-               if ($this->keywords !== null)
-               {
-                       return $this->keywords;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_length()
-       {
-               if ($this->length !== null)
-               {
-                       return $this->length;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_link()
-       {
-               if ($this->link !== null)
-               {
-                       return urldecode($this->link);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_medium()
-       {
-               if ($this->medium !== null)
-               {
-                       return $this->medium;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_player()
-       {
-               if ($this->player !== null)
-               {
-                       return $this->player;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_rating($key = 0)
-       {
-               $ratings = $this->get_ratings();
-               if (isset($ratings[$key]))
-               {
-                       return $ratings[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_ratings()
-       {
-               if ($this->ratings !== null)
-               {
-                       return $this->ratings;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_restriction($key = 0)
-       {
-               $restrictions = $this->get_restrictions();
-               if (isset($restrictions[$key]))
-               {
-                       return $restrictions[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_restrictions()
-       {
-               if ($this->restrictions !== null)
-               {
-                       return $this->restrictions;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_sampling_rate()
-       {
-               if ($this->samplingrate !== null)
-               {
-                       return $this->samplingrate;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_size()
-       {
-               $length = $this->get_length();
-               if ($length !== null)
-               {
-                       return round($length/1048576, 2);
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_thumbnail($key = 0)
-       {
-               $thumbnails = $this->get_thumbnails();
-               if (isset($thumbnails[$key]))
-               {
-                       return $thumbnails[$key];
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_thumbnails()
-       {
-               if ($this->thumbnails !== null)
-               {
-                       return $this->thumbnails;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_title()
-       {
-               if ($this->title !== null)
-               {
-                       return $this->title;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_type()
-       {
-               if ($this->type !== null)
-               {
-                       return $this->type;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_width()
-       {
-               if ($this->width !== null)
-               {
-                       return $this->width;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function native_embed($options='')
-       {
-               return $this->embed($options, true);
-       }
-
-       /**
-        * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
-        */
-       function embed($options = '', $native = false)
-       {
-               // Set up defaults
-               $audio = '';
-               $video = '';
-               $alt = '';
-               $altclass = '';
-               $loop = 'false';
-               $width = 'auto';
-               $height = 'auto';
-               $bgcolor = '#ffffff';
-               $mediaplayer = '';
-               $widescreen = false;
-               $handler = $this->get_handler();
-               $type = $this->get_real_type();
-
-               // Process options and reassign values as necessary
-               if (is_array($options))
-               {
-                       extract($options);
-               }
-               else
-               {
-                       $options = explode(',', $options);
-                       foreach($options as $option)
-                       {
-                               $opt = explode(':', $option, 2);
-                               if (isset($opt[0], $opt[1]))
-                               {
-                                       $opt[0] = trim($opt[0]);
-                                       $opt[1] = trim($opt[1]);
-                                       switch ($opt[0])
-                                       {
-                                               case 'audio':
-                                                       $audio = $opt[1];
-                                                       break;
-
-                                               case 'video':
-                                                       $video = $opt[1];
-                                                       break;
-
-                                               case 'alt':
-                                                       $alt = $opt[1];
-                                                       break;
-
-                                               case 'altclass':
-                                                       $altclass = $opt[1];
-                                                       break;
-
-                                               case 'loop':
-                                                       $loop = $opt[1];
-                                                       break;
-
-                                               case 'width':
-                                                       $width = $opt[1];
-                                                       break;
-
-                                               case 'height':
-                                                       $height = $opt[1];
-                                                       break;
-
-                                               case 'bgcolor':
-                                                       $bgcolor = $opt[1];
-                                                       break;
-
-                                               case 'mediaplayer':
-                                                       $mediaplayer = $opt[1];
-                                                       break;
-
-                                               case 'widescreen':
-                                                       $widescreen = $opt[1];
-                                                       break;
-                                       }
-                               }
-                       }
-               }
-
-               $mime = explode('/', $type, 2);
-               $mime = $mime[0];
-
-               // Process values for 'auto'
-               if ($width === 'auto')
-               {
-                       if ($mime === 'video')
-                       {
-                               if ($height === 'auto')
-                               {
-                                       $width = 480;
-                               }
-                               elseif ($widescreen)
-                               {
-                                       $width = round((intval($height)/9)*16);
-                               }
-                               else
-                               {
-                                       $width = round((intval($height)/3)*4);
-                               }
-                       }
-                       else
-                       {
-                               $width = '100%';
-                       }
-               }
-
-               if ($height === 'auto')
-               {
-                       if ($mime === 'audio')
-                       {
-                               $height = 0;
-                       }
-                       elseif ($mime === 'video')
-                       {
-                               if ($width === 'auto')
-                               {
-                                       if ($widescreen)
-                                       {
-                                               $height = 270;
-                                       }
-                                       else
-                                       {
-                                               $height = 360;
-                                       }
-                               }
-                               elseif ($widescreen)
-                               {
-                                       $height = round((intval($width)/16)*9);
-                               }
-                               else
-                               {
-                                       $height = round((intval($width)/4)*3);
-                               }
-                       }
-                       else
-                       {
-                               $height = 376;
-                       }
-               }
-               elseif ($mime === 'audio')
-               {
-                       $height = 0;
-               }
-
-               // Set proper placeholder value
-               if ($mime === 'audio')
-               {
-                       $placeholder = $audio;
-               }
-               elseif ($mime === 'video')
-               {
-                       $placeholder = $video;
-               }
-
-               $embed = '';
-
-               // Make sure the JS library is included
-               if (!$native)
-               {
-                       static $javascript_outputted = null;
-                       if (!$javascript_outputted && $this->javascript)
-                       {
-                               $embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
-                               $javascript_outputted = true;
-                       }
-               }
-
-               // Odeo Feed MP3's
-               if ($handler === 'odeo')
-               {
-                       if ($native)
-                       {
-                               $embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
-                       }
-                       else
-                       {
-                               $embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>';
-                       }
-               }
-
-               // Flash
-               elseif ($handler === 'flash')
-               {
-                       if ($native)
-                       {
-                               $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
-                       }
-                       else
-                       {
-                               $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
-                       }
-               }
-
-               // Flash Media Player file types.
-               // Preferred handler for MP3 file types.
-               elseif ($handler === 'fmedia' || ($handler === 'mp3' && $mediaplayer !== ''))
-               {
-                       $height += 20;
-                       if ($native)
-                       {
-                               $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
-                       }
-                       else
-                       {
-                               $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
-                       }
-               }
-
-               // QuickTime 7 file types.  Need to test with QuickTime 6.
-               // Only handle MP3's if the Flash Media Player is not present.
-               elseif ($handler === 'quicktime' || ($handler === 'mp3' && $mediaplayer === ''))
-               {
-                       $height += 16;
-                       if ($native)
-                       {
-                               if ($placeholder !== '')
-                               {
-                                       $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
-                               }
-                               else
-                               {
-                                       $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
-                               }
-                       }
-                       else
-                       {
-                               $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
-                       }
-               }
-
-               // Windows Media
-               elseif ($handler === 'wmedia')
-               {
-                       $height += 45;
-                       if ($native)
-                       {
-                               $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
-                       }
-                       else
-                       {
-                               $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
-                       }
-               }
-
-               // Everything else
-               else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
-
-               return $embed;
-       }
-
-       function get_real_type($find_handler = false)
-       {
-               // If it's Odeo, let's get it out of the way.
-               if (substr(strtolower($this->get_link()), 0, 15) === 'http://odeo.com')
-               {
-                       return 'odeo';
-               }
-
-               // Mime-types by handler.
-               $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
-               $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player
-               $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
-               $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
-               $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
-
-               if ($this->get_type() !== null)
-               {
-                       $type = strtolower($this->type);
-               }
-               else
-               {
-                       $type = null;
-               }
-
-               // If we encounter an unsupported mime-type, check the file extension and guess intelligently.
-               if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
-               {
-                       switch (strtolower($this->get_extension()))
-                       {
-                               // Audio mime-types
-                               case 'aac':
-                               case 'adts':
-                                       $type = 'audio/acc';
-                                       break;
-
-                               case 'aif':
-                               case 'aifc':
-                               case 'aiff':
-                               case 'cdda':
-                                       $type = 'audio/aiff';
-                                       break;
-
-                               case 'bwf':
-                                       $type = 'audio/wav';
-                                       break;
-
-                               case 'kar':
-                               case 'mid':
-                               case 'midi':
-                               case 'smf':
-                                       $type = 'audio/midi';
-                                       break;
-
-                               case 'm4a':
-                                       $type = 'audio/x-m4a';
-                                       break;
-
-                               case 'mp3':
-                               case 'swa':
-                                       $type = 'audio/mp3';
-                                       break;
-
-                               case 'wav':
-                                       $type = 'audio/wav';
-                                       break;
-
-                               case 'wax':
-                                       $type = 'audio/x-ms-wax';
-                                       break;
-
-                               case 'wma':
-                                       $type = 'audio/x-ms-wma';
-                                       break;
-
-                               // Video mime-types
-                               case '3gp':
-                               case '3gpp':
-                                       $type = 'video/3gpp';
-                                       break;
-
-                               case '3g2':
-                               case '3gp2':
-                                       $type = 'video/3gpp2';
-                                       break;
-
-                               case 'asf':
-                                       $type = 'video/x-ms-asf';
-                                       break;
-
-                               case 'flv':
-                                       $type = 'video/x-flv';
-                                       break;
-
-                               case 'm1a':
-                               case 'm1s':
-                               case 'm1v':
-                               case 'm15':
-                               case 'm75':
-                               case 'mp2':
-                               case 'mpa':
-                               case 'mpeg':
-                               case 'mpg':
-                               case 'mpm':
-                               case 'mpv':
-                                       $type = 'video/mpeg';
-                                       break;
-
-                               case 'm4v':
-                                       $type = 'video/x-m4v';
-                                       break;
-
-                               case 'mov':
-                               case 'qt':
-                                       $type = 'video/quicktime';
-                                       break;
-
-                               case 'mp4':
-                               case 'mpg4':
-                                       $type = 'video/mp4';
-                                       break;
-
-                               case 'sdv':
-                                       $type = 'video/sd-video';
-                                       break;
-
-                               case 'wm':
-                                       $type = 'video/x-ms-wm';
-                                       break;
-
-                               case 'wmv':
-                                       $type = 'video/x-ms-wmv';
-                                       break;
-
-                               case 'wvx':
-                                       $type = 'video/x-ms-wvx';
-                                       break;
-
-                               // Flash mime-types
-                               case 'spl':
-                                       $type = 'application/futuresplash';
-                                       break;
-
-                               case 'swf':
-                                       $type = 'application/x-shockwave-flash';
-                                       break;
-                       }
-               }
-
-               if ($find_handler)
-               {
-                       if (in_array($type, $types_flash))
-                       {
-                               return 'flash';
-                       }
-                       elseif (in_array($type, $types_fmedia))
-                       {
-                               return 'fmedia';
-                       }
-                       elseif (in_array($type, $types_quicktime))
-                       {
-                               return 'quicktime';
-                       }
-                       elseif (in_array($type, $types_wmedia))
-                       {
-                               return 'wmedia';
-                       }
-                       elseif (in_array($type, $types_mp3))
-                       {
-                               return 'mp3';
-                       }
-                       else
-                       {
-                               return null;
-                       }
-               }
-               else
-               {
-                       return $type;
-               }
-       }
-}
-
-class SimplePie_Caption
-{
-       var $type;
-       var $lang;
-       var $startTime;
-       var $endTime;
-       var $text;
-
-       // Constructor, used to input the data
-       function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
-       {
-               $this->type = $type;
-               $this->lang = $lang;
-               $this->startTime = $startTime;
-               $this->endTime = $endTime;
-               $this->text = $text;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_endtime()
-       {
-               if ($this->endTime !== null)
-               {
-                       return $this->endTime;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_language()
-       {
-               if ($this->lang !== null)
-               {
-                       return $this->lang;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_starttime()
-       {
-               if ($this->startTime !== null)
-               {
-                       return $this->startTime;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_text()
-       {
-               if ($this->text !== null)
-               {
-                       return $this->text;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_type()
-       {
-               if ($this->type !== null)
-               {
-                       return $this->type;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Credit
-{
-       var $role;
-       var $scheme;
-       var $name;
-
-       // Constructor, used to input the data
-       function SimplePie_Credit($role = null, $scheme = null, $name = null)
-       {
-               $this->role = $role;
-               $this->scheme = $scheme;
-               $this->name = $name;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_role()
-       {
-               if ($this->role !== null)
-               {
-                       return $this->role;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_scheme()
-       {
-               if ($this->scheme !== null)
-               {
-                       return $this->scheme;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_name()
-       {
-               if ($this->name !== null)
-               {
-                       return $this->name;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Copyright
-{
-       var $url;
-       var $label;
-
-       // Constructor, used to input the data
-       function SimplePie_Copyright($url = null, $label = null)
-       {
-               $this->url = $url;
-               $this->label = $label;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_url()
-       {
-               if ($this->url !== null)
-               {
-                       return $this->url;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_attribution()
-       {
-               if ($this->label !== null)
-               {
-                       return $this->label;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Rating
-{
-       var $scheme;
-       var $value;
-
-       // Constructor, used to input the data
-       function SimplePie_Rating($scheme = null, $value = null)
-       {
-               $this->scheme = $scheme;
-               $this->value = $value;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_scheme()
-       {
-               if ($this->scheme !== null)
-               {
-                       return $this->scheme;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_value()
-       {
-               if ($this->value !== null)
-               {
-                       return $this->value;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-class SimplePie_Restriction
-{
-       var $relationship;
-       var $type;
-       var $value;
-
-       // Constructor, used to input the data
-       function SimplePie_Restriction($relationship = null, $type = null, $value = null)
-       {
-               $this->relationship = $relationship;
-               $this->type = $type;
-               $this->value = $value;
-       }
-
-       function __toString()
-       {
-               // There is no $this->data here
-               return md5(serialize($this));
-       }
-
-       function get_relationship()
-       {
-               if ($this->relationship !== null)
-               {
-                       return $this->relationship;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_type()
-       {
-               if ($this->type !== null)
-               {
-                       return $this->type;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       function get_value()
-       {
-               if ($this->value !== null)
-               {
-                       return $this->value;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-}
-
-/**
- * @todo Move to properly supporting RFC2616 (HTTP/1.1)
- */
-class SimplePie_File
-{
-       var $url;
-       var $useragent;
-       var $success = true;
-       var $headers = array();
-       var $body;
-       var $status_code;
-       var $redirects = 0;
-       var $error;
-       var $method = SIMPLEPIE_FILE_SOURCE_NONE;
-
-       function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
-       {
-               if (class_exists('idna_convert'))
-               {
-                       $idn =& new idna_convert;
-                       $parsed = SimplePie_Misc::parse_url($url);
-                       $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
-               }
-               $this->url = $url;
-               $this->useragent = $useragent;
-               if (preg_match('/^http(s)?:\/\//i', $url))
-               {
-                       if ($useragent === null)
-                       {
-                               $useragent = ini_get('user_agent');
-                               $this->useragent = $useragent;
-                       }
-                       if (!is_array($headers))
-                       {
-                               $headers = array();
-                       }
-                       if (!$force_fsockopen && function_exists('curl_exec'))
-                       {
-                               $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
-                               $fp = curl_init();
-                               $headers2 = array();
-                               foreach ($headers as $key => $value)
-                               {
-                                       $headers2[] = "$key: $value";
-                               }
-                               if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
-                               {
-                                       curl_setopt($fp, CURLOPT_ENCODING, '');
-                               }
-                               curl_setopt($fp, CURLOPT_URL, $url);
-                               curl_setopt($fp, CURLOPT_HEADER, 1);
-                               curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
-                               curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
-                               curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
-                               curl_setopt($fp, CURLOPT_REFERER, $url);
-                               curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
-                               curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
-                               if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
-                               {
-                                       curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
-                                       curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
-                               }
-
-                               $this->headers = curl_exec($fp);
-                               if (curl_errno($fp) === 23 || curl_errno($fp) === 61)
-                               {
-                                       curl_setopt($fp, CURLOPT_ENCODING, 'none');
-                                       $this->headers = curl_exec($fp);
-                               }
-                               if (curl_errno($fp))
-                               {
-                                       $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
-                                       $this->success = false;
-                               }
-                               else
-                               {
-                                       $info = curl_getinfo($fp);
-                                       curl_close($fp);
-                                       $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
-                                       $this->headers = array_pop($this->headers);
-                                       $parser =& new SimplePie_HTTP_Parser($this->headers);
-                                       if ($parser->parse())
-                                       {
-                                               $this->headers = $parser->headers;
-                                               $this->body = $parser->body;
-                                               $this->status_code = $parser->status_code;
-                                               if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
-                                               {
-                                                       $this->redirects++;
-                                                       $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
-                                                       return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
-                                               }
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
-                               $url_parts = parse_url($url);
-                               $socket_host = $url_parts['host'];
-                               if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
-                               {
-                                       $socket_host = "ssl://$url_parts[host]";
-                                       $url_parts['port'] = 443;
-                               }
-                               if (!isset($url_parts['port']))
-                               {
-                                       $url_parts['port'] = 80;
-                               }
-                               $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
-                               if (!$fp)
-                               {
-                                       $this->error = 'fsockopen error: ' . $errstr;
-                                       $this->success = false;
-                               }
-                               else
-                               {
-                                       stream_set_timeout($fp, $timeout);
-                                       if (isset($url_parts['path']))
-                                       {
-                                               if (isset($url_parts['query']))
-                                               {
-                                                       $get = "$url_parts[path]?$url_parts[query]";
-                                               }
-                                               else
-                                               {
-                                                       $get = $url_parts['path'];
-                                               }
-                                       }
-                                       else
-                                       {
-                                               $get = '/';
-                                       }
-                                       $out = "GET $get HTTP/1.0\r\n";
-                                       $out .= "Host: $url_parts[host]\r\n";
-                                       $out .= "User-Agent: $useragent\r\n";
-                                       if (extension_loaded('zlib'))
-                                       {
-                                               $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
-                                       }
-
-                                       if (isset($url_parts['user']) && isset($url_parts['pass']))
-                                       {
-                                               $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
-                                       }
-                                       foreach ($headers as $key => $value)
-                                       {
-                                               $out .= "$key: $value\r\n";
-                                       }
-                                       $out .= "Connection: Close\r\n\r\n";
-                                       fwrite($fp, $out);
-
-                                       $info = stream_get_meta_data($fp);
-
-                                       $this->headers = '';
-                                       while (!$info['eof'] && !$info['timed_out'])
-                                       {
-                                               $this->headers .= fread($fp, 1160);
-                                               $info = stream_get_meta_data($fp);
-                                       }
-                                       if (!$info['timed_out'])
-                                       {
-                                               $parser =& new SimplePie_HTTP_Parser($this->headers);
-                                               if ($parser->parse())
-                                               {
-                                                       $this->headers = $parser->headers;
-                                                       $this->body = $parser->body;
-                                                       $this->status_code = $parser->status_code;
-                                                       if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
-                                                       {
-                                                               $this->redirects++;
-                                                               $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
-                                                               return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
-                                                       }
-                                                       if (isset($this->headers['content-encoding']))
-                                                       {
-                                                               // Hey, we act dumb elsewhere, so let's do that here too
-                                                               switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20")))
-                                                               {
-                                                                       case 'gzip':
-                                                                       case 'x-gzip':
-                                                                               $decoder =& new SimplePie_gzdecode($this->body);
-                                                                               if (!$decoder->parse())
-                                                                               {
-                                                                                       $this->error = 'Unable to decode HTTP "gzip" stream';
-                                                                                       $this->success = false;
-                                                                               }
-                                                                               else
-                                                                               {
-                                                                                       $this->body = $decoder->data;
-                                                                               }
-                                                                               break;
-
-                                                                       case 'deflate':
-                                                                               if (($body = gzuncompress($this->body)) === false)
-                                                                               {
-                                                                                       if (($body = gzinflate($this->body)) === false)
-                                                                                       {
-                                                                                               $this->error = 'Unable to decode HTTP "deflate" stream';
-                                                                                               $this->success = false;
-                                                                                       }
-                                                                               }
-                                                                               $this->body = $body;
-                                                                               break;
-
-                                                                       default:
-                                                                               $this->error = 'Unknown content coding';
-                                                                               $this->success = false;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                                       else
-                                       {
-                                               $this->error = 'fsocket timed out';
-                                               $this->success = false;
-                                       }
-                                       fclose($fp);
-                               }
-                       }
-               }
-               else
-               {
-                       $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
-                       if (!$this->body = file_get_contents($url))
-                       {
-                               $this->error = 'file_get_contents could not read the file';
-                               $this->success = false;
-                       }
-               }
-       }
-}
-
-/**
- * HTTP Response Parser
- *
- * @package SimplePie
- */
-class SimplePie_HTTP_Parser
-{
-       /**
-        * HTTP Version
-        *
-        * @access public
-        * @var float
-        */
-       var $http_version = 0.0;
-
-       /**
-        * Status code
-        *
-        * @access public
-        * @var int
-        */
-       var $status_code = 0;
-
-       /**
-        * Reason phrase
-        *
-        * @access public
-        * @var string
-        */
-       var $reason = '';
-
-       /**
-        * Key/value pairs of the headers
-        *
-        * @access public
-        * @var array
-        */
-       var $headers = array();
-
-       /**
-        * Body of the response
-        *
-        * @access public
-        * @var string
-        */
-       var $body = '';
-
-       /**
-        * Current state of the state machine
-        *
-        * @access private
-        * @var string
-        */
-       var $state = 'http_version';
-
-       /**
-        * Input data
-        *
-        * @access private
-        * @var string
-        */
-       var $data = '';
-
-       /**
-        * Input data length (to avoid calling strlen() everytime this is needed)
-        *
-        * @access private
-        * @var int
-        */
-       var $data_length = 0;
-
-       /**
-        * Current position of the pointer
-        *
-        * @var int
-        * @access private
-        */
-       var $position = 0;
-
-       /**
-        * Name of the hedaer currently being parsed
-        *
-        * @access private
-        * @var string
-        */
-       var $name = '';
-
-       /**
-        * Value of the hedaer currently being parsed
-        *
-        * @access private
-        * @var string
-        */
-       var $value = '';
-
-       /**
-        * Create an instance of the class with the input data
-        *
-        * @access public
-        * @param string $data Input data
-        */
-       function SimplePie_HTTP_Parser($data)
-       {
-               $this->data = $data;
-               $this->data_length = strlen($this->data);
-       }
-
-       /**
-        * Parse the input data
-        *
-        * @access public
-        * @return bool true on success, false on failure
-        */
-       function parse()
-       {
-               while ($this->state && $this->state !== 'emit' && $this->has_data())
-               {
-                       $state = $this->state;
-                       $this->$state();
-               }
-               $this->data = '';
-               if ($this->state === 'emit' || $this->state === 'body')
-               {
-                       return true;
-               }
-               else
-               {
-                       $this->http_version = '';
-                       $this->status_code = '';
-                       $this->reason = '';
-                       $this->headers = array();
-                       $this->body = '';
-                       return false;
-               }
-       }
-
-       /**
-        * Check whether there is data beyond the pointer
-        *
-        * @access private
-        * @return bool true if there is further data, false if not
-        */
-       function has_data()
-       {
-               return (bool) ($this->position < $this->data_length);
-       }
-
-       /**
-        * See if the next character is LWS
-        *
-        * @access private
-        * @return bool true if the next character is LWS, false if not
-        */
-       function is_linear_whitespace()
-       {
-               return (bool) ($this->data[$this->position] === "\x09"
-                       || $this->data[$this->position] === "\x20"
-                       || ($this->data[$this->position] === "\x0A"
-                               && isset($this->data[$this->position + 1])
-                               && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20")));
-       }
-
-       /**
-        * Parse the HTTP version
-        *
-        * @access private
-        */
-       function http_version()
-       {
-               if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/')
-               {
-                       $len = strspn($this->data, '0123456789.', 5);
-                       $this->http_version = substr($this->data, 5, $len);
-                       $this->position += 5 + $len;
-                       if (substr_count($this->http_version, '.') <= 1)
-                       {
-                               $this->http_version = (float) $this->http_version;
-                               $this->position += strspn($this->data, "\x09\x20", $this->position);
-                               $this->state = 'status';
-                       }
-                       else
-                       {
-                               $this->state = false;
-                       }
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       /**
-        * Parse the status code
-        *
-        * @access private
-        */
-       function status()
-       {
-               if ($len = strspn($this->data, '0123456789', $this->position))
-               {
-                       $this->status_code = (int) substr($this->data, $this->position, $len);
-                       $this->position += $len;
-                       $this->state = 'reason';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       /**
-        * Parse the reason phrase
-        *
-        * @access private
-        */
-       function reason()
-       {
-               $len = strcspn($this->data, "\x0A", $this->position);
-               $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20");
-               $this->position += $len + 1;
-               $this->state = 'new_line';
-       }
-
-       /**
-        * Deal with a new line, shifting data around as needed
-        *
-        * @access private
-        */
-       function new_line()
-       {
-               $this->value = trim($this->value, "\x0D\x20");
-               if ($this->name !== '' && $this->value !== '')
-               {
-                       $this->name = strtolower($this->name);
-                       if (isset($this->headers[$this->name]))
-                       {
-                               $this->headers[$this->name] .= ', ' . $this->value;
-                       }
-                       else
-                       {
-                               $this->headers[$this->name] = $this->value;
-                       }
-               }
-               $this->name = '';
-               $this->value = '';
-               if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A")
-               {
-                       $this->position += 2;
-                       $this->state = 'body';
-               }
-               elseif ($this->data[$this->position] === "\x0A")
-               {
-                       $this->position++;
-                       $this->state = 'body';
-               }
-               else
-               {
-                       $this->state = 'name';
-               }
-       }
-
-       /**
-        * Parse a header name
-        *
-        * @access private
-        */
-       function name()
-       {
-               $len = strcspn($this->data, "\x0A:", $this->position);
-               if (isset($this->data[$this->position + $len]))
-               {
-                       if ($this->data[$this->position + $len] === "\x0A")
-                       {
-                               $this->position += $len;
-                               $this->state = 'new_line';
-                       }
-                       else
-                       {
-                               $this->name = substr($this->data, $this->position, $len);
-                               $this->position += $len + 1;
-                               $this->state = 'value';
-                       }
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       /**
-        * Parse LWS, replacing consecutive LWS characters with a single space
-        *
-        * @access private
-        */
-       function linear_whitespace()
-       {
-               do
-               {
-                       if (substr($this->data, $this->position, 2) === "\x0D\x0A")
-                       {
-                               $this->position += 2;
-                       }
-                       elseif ($this->data[$this->position] === "\x0A")
-                       {
-                               $this->position++;
-                       }
-                       $this->position += strspn($this->data, "\x09\x20", $this->position);
-               } while ($this->has_data() && $this->is_linear_whitespace());
-               $this->value .= "\x20";
-       }
-
-       /**
-        * See what state to move to while within non-quoted header values
-        *
-        * @access private
-        */
-       function value()
-       {
-               if ($this->is_linear_whitespace())
-               {
-                       $this->linear_whitespace();
-               }
-               else
-               {
-                       switch ($this->data[$this->position])
-                       {
-                               case '"':
-                                       $this->position++;
-                                       $this->state = 'quote';
-                                       break;
-
-                               case "\x0A":
-                                       $this->position++;
-                                       $this->state = 'new_line';
-                                       break;
-
-                               default:
-                                       $this->state = 'value_char';
-                                       break;
-                       }
-               }
-       }
-
-       /**
-        * Parse a header value while outside quotes
-        *
-        * @access private
-        */
-       function value_char()
-       {
-               $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position);
-               $this->value .= substr($this->data, $this->position, $len);
-               $this->position += $len;
-               $this->state = 'value';
-       }
-
-       /**
-        * See what state to move to while within quoted header values
-        *
-        * @access private
-        */
-       function quote()
-       {
-               if ($this->is_linear_whitespace())
-               {
-                       $this->linear_whitespace();
-               }
-               else
-               {
-                       switch ($this->data[$this->position])
-                       {
-                               case '"':
-                                       $this->position++;
-                                       $this->state = 'value';
-                                       break;
-
-                               case "\x0A":
-                                       $this->position++;
-                                       $this->state = 'new_line';
-                                       break;
-
-                               case '\\':
-                                       $this->position++;
-                                       $this->state = 'quote_escaped';
-                                       break;
-
-                               default:
-                                       $this->state = 'quote_char';
-                                       break;
-                       }
-               }
-       }
-
-       /**
-        * Parse a header value while within quotes
-        *
-        * @access private
-        */
-       function quote_char()
-       {
-               $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position);
-               $this->value .= substr($this->data, $this->position, $len);
-               $this->position += $len;
-               $this->state = 'value';
-       }
-
-       /**
-        * Parse an escaped character within quotes
-        *
-        * @access private
-        */
-       function quote_escaped()
-       {
-               $this->value .= $this->data[$this->position];
-               $this->position++;
-               $this->state = 'quote';
-       }
-
-       /**
-        * Parse the body
-        *
-        * @access private
-        */
-       function body()
-       {
-               $this->body = substr($this->data, $this->position);
-               $this->state = 'emit';
-       }
-}
-
-/**
- * gzdecode
- *
- * @package SimplePie
- */
-class SimplePie_gzdecode
-{
-       /**
-        * Compressed data
-        *
-        * @access private
-        * @see gzdecode::$data
-        */
-       var $compressed_data;
-
-       /**
-        * Size of compressed data
-        *
-        * @access private
-        */
-       var $compressed_size;
-
-       /**
-        * Minimum size of a valid gzip string
-        *
-        * @access private
-        */
-       var $min_compressed_size = 18;
-
-       /**
-        * Current position of pointer
-        *
-        * @access private
-        */
-       var $position = 0;
-
-       /**
-        * Flags (FLG)
-        *
-        * @access private
-        */
-       var $flags;
-
-       /**
-        * Uncompressed data
-        *
-        * @access public
-        * @see gzdecode::$compressed_data
-        */
-       var $data;
-
-       /**
-        * Modified time
-        *
-        * @access public
-        */
-       var $MTIME;
-
-       /**
-        * Extra Flags
-        *
-        * @access public
-        */
-       var $XFL;
-
-       /**
-        * Operating System
-        *
-        * @access public
-        */
-       var $OS;
-
-       /**
-        * Subfield ID 1
-        *
-        * @access public
-        * @see gzdecode::$extra_field
-        * @see gzdecode::$SI2
-        */
-       var $SI1;
-
-       /**
-        * Subfield ID 2
-        *
-        * @access public
-        * @see gzdecode::$extra_field
-        * @see gzdecode::$SI1
-        */
-       var $SI2;
-
-       /**
-        * Extra field content
-        *
-        * @access public
-        * @see gzdecode::$SI1
-        * @see gzdecode::$SI2
-        */
-       var $extra_field;
-
-       /**
-        * Original filename
-        *
-        * @access public
-        */
-       var $filename;
-
-       /**
-        * Human readable comment
-        *
-        * @access public
-        */
-       var $comment;
-
-       /**
-        * Don't allow anything to be set
-        *
-        * @access public
-        */
-       function __set($name, $value)
-       {
-               trigger_error("Cannot write property $name", E_USER_ERROR);
-       }
-
-       /**
-        * Set the compressed string and related properties
-        *
-        * @access public
-        */
-       function SimplePie_gzdecode($data)
-       {
-               $this->compressed_data = $data;
-               $this->compressed_size = strlen($data);
-       }
-
-       /**
-        * Decode the GZIP stream
-        *
-        * @access public
-        */
-       function parse()
-       {
-               if ($this->compressed_size >= $this->min_compressed_size)
-               {
-                       // Check ID1, ID2, and CM
-                       if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08")
-                       {
-                               return false;
-                       }
-
-                       // Get the FLG (FLaGs)
-                       $this->flags = ord($this->compressed_data[3]);
-
-                       // FLG bits above (1 << 4) are reserved
-                       if ($this->flags > 0x1F)
-                       {
-                               return false;
-                       }
-
-                       // Advance the pointer after the above
-                       $this->position += 4;
-
-                       // MTIME
-                       $mtime = substr($this->compressed_data, $this->position, 4);
-                       // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness
-                       if (current(unpack('S', "\x00\x01")) === 1)
-                       {
-                               $mtime = strrev($mtime);
-                       }
-                       $this->MTIME = current(unpack('l', $mtime));
-                       $this->position += 4;
-
-                       // Get the XFL (eXtra FLags)
-                       $this->XFL = ord($this->compressed_data[$this->position++]);
-
-                       // Get the OS (Operating System)
-                       $this->OS = ord($this->compressed_data[$this->position++]);
-
-                       // Parse the FEXTRA
-                       if ($this->flags & 4)
-                       {
-                               // Read subfield IDs
-                               $this->SI1 = $this->compressed_data[$this->position++];
-                               $this->SI2 = $this->compressed_data[$this->position++];
-
-                               // SI2 set to zero is reserved for future use
-                               if ($this->SI2 === "\x00")
-                               {
-                                       return false;
-                               }
-
-                               // Get the length of the extra field
-                               $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
-                               $this->position += 2;
-
-                               // Check the length of the string is still valid
-                               $this->min_compressed_size += $len + 4;
-                               if ($this->compressed_size >= $this->min_compressed_size)
-                               {
-                                       // Set the extra field to the given data
-                                       $this->extra_field = substr($this->compressed_data, $this->position, $len);
-                                       $this->position += $len;
-                               }
-                               else
-                               {
-                                       return false;
-                               }
-                       }
-
-                       // Parse the FNAME
-                       if ($this->flags & 8)
-                       {
-                               // Get the length of the filename
-                               $len = strcspn($this->compressed_data, "\x00", $this->position);
-
-                               // Check the length of the string is still valid
-                               $this->min_compressed_size += $len + 1;
-                               if ($this->compressed_size >= $this->min_compressed_size)
-                               {
-                                       // Set the original filename to the given string
-                                       $this->filename = substr($this->compressed_data, $this->position, $len);
-                                       $this->position += $len + 1;
-                               }
-                               else
-                               {
-                                       return false;
-                               }
-                       }
-
-                       // Parse the FCOMMENT
-                       if ($this->flags & 16)
-                       {
-                               // Get the length of the comment
-                               $len = strcspn($this->compressed_data, "\x00", $this->position);
-
-                               // Check the length of the string is still valid
-                               $this->min_compressed_size += $len + 1;
-                               if ($this->compressed_size >= $this->min_compressed_size)
-                               {
-                                       // Set the original comment to the given string
-                                       $this->comment = substr($this->compressed_data, $this->position, $len);
-                                       $this->position += $len + 1;
-                               }
-                               else
-                               {
-                                       return false;
-                               }
-                       }
-
-                       // Parse the FHCRC
-                       if ($this->flags & 2)
-                       {
-                               // Check the length of the string is still valid
-                               $this->min_compressed_size += $len + 2;
-                               if ($this->compressed_size >= $this->min_compressed_size)
-                               {
-                                       // Read the CRC
-                                       $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
-
-                                       // Check the CRC matches
-                                       if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc)
-                                       {
-                                               $this->position += 2;
-                                       }
-                                       else
-                                       {
-                                               return false;
-                                       }
-                               }
-                               else
-                               {
-                                       return false;
-                               }
-                       }
-
-                       // Decompress the actual data
-                       if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false)
-                       {
-                               return false;
-                       }
-                       else
-                       {
-                               $this->position = $this->compressed_size - 8;
-                       }
-
-                       // Check CRC of data
-                       $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
-                       $this->position += 4;
-                       /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc))
-                       {
-                               return false;
-                       }*/
-
-                       // Check ISIZE of data
-                       $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
-                       $this->position += 4;
-                       if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize))
-                       {
-                               return false;
-                       }
-
-                       // Wow, against all odds, we've actually got a valid gzip string
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-}
-
-class SimplePie_Cache
-{
-       /**
-        * Don't call the constructor. Please.
-        *
-        * @access private
-        */
-       function SimplePie_Cache()
-       {
-               trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
-       }
-
-       /**
-        * Create a new SimplePie_Cache object
-        *
-        * @static
-        * @access public
-        */
-       function create($location, $filename, $extension)
-       {
-               $location_iri =& new SimplePie_IRI($location);
-               switch ($location_iri->get_scheme())
-               {
-                       case 'mysql':
-                               if (extension_loaded('mysql'))
-                               {
-                                       return new SimplePie_Cache_MySQL($location_iri, $filename, $extension);
-                               }
-                               break;
-
-                       default:
-                               return new SimplePie_Cache_File($location, $filename, $extension);
-               }
-       }
-}
-
-class SimplePie_Cache_File
-{
-       var $location;
-       var $filename;
-       var $extension;
-       var $name;
-
-       function SimplePie_Cache_File($location, $filename, $extension)
-       {
-               $this->location = $location;
-               $this->filename = $filename;
-               $this->extension = $extension;
-               $this->name = "$this->location/$this->filename.$this->extension";
-       }
-
-       function save($data)
-       {
-               if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
-               {
-                       if (is_a($data, 'SimplePie'))
-                       {
-                               $data = $data->data;
-                       }
-
-                       $data = serialize($data);
-
-                       if (function_exists('file_put_contents'))
-                       {
-                               return (bool) file_put_contents($this->name, $data);
-                       }
-                       else
-                       {
-                               $fp = fopen($this->name, 'wb');
-                               if ($fp)
-                               {
-                                       fwrite($fp, $data);
-                                       fclose($fp);
-                                       return true;
-                               }
-                       }
-               }
-               return false;
-       }
-
-       function load()
-       {
-               if (file_exists($this->name) && is_readable($this->name))
-               {
-                       return unserialize(file_get_contents($this->name));
-               }
-               return false;
-       }
-
-       function mtime()
-       {
-               if (file_exists($this->name))
-               {
-                       return filemtime($this->name);
-               }
-               return false;
-       }
-
-       function touch()
-       {
-               if (file_exists($this->name))
-               {
-                       return touch($this->name);
-               }
-               return false;
-       }
-
-       function unlink()
-       {
-               if (file_exists($this->name))
-               {
-                       return unlink($this->name);
-               }
-               return false;
-       }
-}
-
-class SimplePie_Cache_DB
-{
-       function prepare_simplepie_object_for_cache($data)
-       {
-               $items = $data->get_items();
-               $items_by_id = array();
-
-               if (!empty($items))
-               {
-                       foreach ($items as $item)
-                       {
-                               $items_by_id[$item->get_id()] = $item;
-                       }
-
-                       if (count($items_by_id) !== count($items))
-                       {
-                               $items_by_id = array();
-                               foreach ($items as $item)
-                               {
-                                       $items_by_id[$item->get_id(true)] = $item;
-                               }
-                       }
-
-                       if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
-                       {
-                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
-                       }
-                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
-                       {
-                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
-                       }
-                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
-                       {
-                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
-                       }
-                       elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
-                       {
-                               $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
-                       }
-                       else
-                       {
-                               $channel = null;
-                       }
-
-                       if ($channel !== null)
-                       {
-                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
-                               {
-                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
-                               }
-                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
-                               {
-                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
-                               }
-                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
-                               {
-                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
-                               }
-                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
-                               {
-                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
-                               }
-                               if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
-                               {
-                                       unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
-                               }
-                       }
-                       if (isset($data->data['items']))
-                       {
-                               unset($data->data['items']);
-                       }
-                       if (isset($data->data['ordered_items']))
-                       {
-                               unset($data->data['ordered_items']);
-                       }
-               }
-               return array(serialize($data->data), $items_by_id);
-       }
-}
-
-class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
-{
-       var $mysql;
-       var $options;
-       var $id;
-
-       function SimplePie_Cache_MySQL($mysql_location, $name, $extension)
-       {
-               $host = $mysql_location->get_host();
-               if (SimplePie_Misc::stripos($host, 'unix(') === 0 && substr($host, -1) === ')')
-               {
-                       $server = ':' . substr($host, 5, -1);
-               }
-               else
-               {
-                       $server = $host;
-                       if ($mysql_location->get_port() !== null)
-                       {
-                               $server .= ':' . $mysql_location->get_port();
-                       }
-               }
-
-               if (strpos($mysql_location->get_userinfo(), ':') !== false)
-               {
-                       list($username, $password) = explode(':', $mysql_location->get_userinfo(), 2);
-               }
-               else
-               {
-                       $username = $mysql_location->get_userinfo();
-                       $password = null;
-               }
-
-               if ($this->mysql = mysql_connect($server, $username, $password))
-               {
-                       $this->id = $name . $extension;
-                       $this->options = SimplePie_Misc::parse_str($mysql_location->get_query());
-                       if (!isset($this->options['prefix'][0]))
-                       {
-                               $this->options['prefix'][0] = '';
-                       }
-
-                       if (mysql_select_db(ltrim($mysql_location->get_path(), '/'))
-                               && mysql_query('SET NAMES utf8')
-                               && ($query = mysql_unbuffered_query('SHOW TABLES')))
-                       {
-                               $db = array();
-                               while ($row = mysql_fetch_row($query))
-                               {
-                                       $db[] = $row[0];
-                               }
-
-                               if (!in_array($this->options['prefix'][0] . 'cache_data', $db))
-                               {
-                                       if (!mysql_query('CREATE TABLE `' . $this->options['prefix'][0] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))'))
-                                       {
-                                               $this->mysql = null;
-                                       }
-                               }
-
-                               if (!in_array($this->options['prefix'][0] . 'items', $db))
-                               {
-                                       if (!mysql_query('CREATE TABLE `' . $this->options['prefix'][0] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` TEXT CHARACTER SET utf8 NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))'))
-                                       {
-                                               $this->mysql = null;
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               $this->mysql = null;
-                       }
-               }
-       }
-
-       function save($data)
-       {
-               if ($this->mysql)
-               {
-                       $feed_id = "'" . mysql_real_escape_string($this->id) . "'";
-
-                       if (is_a($data, 'SimplePie'))
-                       {
-                               if (SIMPLEPIE_PHP5)
-                               {
-                                       // This keyword needs to defy coding standards for PHP4 compatibility
-                                       $data = clone($data);
-                               }
-
-                               $prepared = $this->prepare_simplepie_object_for_cache($data);
-
-                               if ($query = mysql_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = ' . $feed_id, $this->mysql))
-                               {
-                                       if (mysql_num_rows($query))
-                                       {
-                                               $items = count($prepared[1]);
-                                               if ($items)
-                                               {
-                                                       $sql = 'UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `items` = ' . $items . ', `data` = \'' . mysql_real_escape_string($prepared[0]) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id;
-                                               }
-                                               else
-                                               {
-                                                       $sql = 'UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `data` = \'' . mysql_real_escape_string($prepared[0]) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id;
-                                               }
-
-                                               if (!mysql_query($sql, $this->mysql))
-                                               {
-                                                       return false;
-                                               }
-                                       }
-                                       elseif (!mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(' . $feed_id . ', ' . count($prepared[1]) . ', \'' . mysql_real_escape_string($prepared[0]) . '\', ' . time() . ')', $this->mysql))
-                                       {
-                                               return false;
-                                       }
-
-                                       $ids = array_keys($prepared[1]);
-                                       if (!empty($ids))
-                                       {
-                                               foreach ($ids as $id)
-                                               {
-                                                       $database_ids[] = mysql_real_escape_string($id);
-                                               }
-
-                                               if ($query = mysql_unbuffered_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'items` WHERE `id` = \'' . implode('\' OR `id` = \'', $database_ids) . '\' AND `feed_id` = ' . $feed_id, $this->mysql))
-                                               {
-                                                       $existing_ids = array();
-                                                       while ($row = mysql_fetch_row($query))
-                                                       {
-                                                               $existing_ids[] = $row[0];
-                                                       }
-
-                                                       $new_ids = array_diff($ids, $existing_ids);
-
-                                                       foreach ($new_ids as $new_id)
-                                                       {
-                                                               if (!($date = $prepared[1][$new_id]->get_date('U')))
-                                                               {
-                                                                       $date = time();
-                                                               }
-
-                                                               if (!mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'items` (`feed_id`, `id`, `data`, `posted`) VALUES(' . $feed_id . ', \'' . mysql_real_escape_string($new_id) . '\', \'' . mysql_real_escape_string(serialize($prepared[1][$new_id]->data)) . '\', ' . $date . ')', $this->mysql))
-                                                               {
-                                                                       return false;
-                                                               }
-                                                       }
-                                                       return true;
-                                               }
-                                       }
-                                       else
-                                       {
-                                               return true;
-                                       }
-                               }
-                       }
-                       elseif ($query = mysql_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = ' . $feed_id, $this->mysql))
-                       {
-                               if (mysql_num_rows($query))
-                               {
-                                       if (mysql_query('UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `items` = 0, `data` = \'' . mysql_real_escape_string(serialize($data)) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id, $this->mysql))
-                                       {
-                                               return true;
-                                       }
-                               }
-                               elseif (mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(\'' . mysql_real_escape_string($this->id) . '\', 0, \'' . mysql_real_escape_string(serialize($data)) . '\', ' . time() . ')', $this->mysql))
-                               {
-                                       return true;
-                               }
-                       }
-               }
-               return false;
-       }
-
-       function load()
-       {
-               if ($this->mysql && ($query = mysql_query('SELECT `items`, `data` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($row = mysql_fetch_row($query)))
-               {
-                       $data = unserialize($row[1]);
-
-                       if (isset($this->options['items'][0]))
-                       {
-                               $items = (int) $this->options['items'][0];
-                       }
-                       else
-                       {
-                               $items = (int) $row[0];
-                       }
-
-                       if ($items !== 0)
-                       {
-                               if (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
-                               {
-                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
-                               }
-                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
-                               {
-                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
-                               }
-                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
-                               {
-                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
-                               }
-                               elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]))
-                               {
-                                       $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0];
-                               }
-                               else
-                               {
-                                       $feed = null;
-                               }
-
-                               if ($feed !== null)
-                               {
-                                       $sql = 'SELECT `data` FROM `' . $this->options['prefix'][0] . 'items` WHERE `feed_id` = \'' . mysql_real_escape_string($this->id) . '\' ORDER BY `posted` DESC';
-                                       if ($items > 0)
-                                       {
-                                               $sql .= ' LIMIT ' . $items;
-                                       }
-
-                                       if ($query = mysql_unbuffered_query($sql, $this->mysql))
-                                       {
-                                               while ($row = mysql_fetch_row($query))
-                                               {
-                                                       $feed['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'][] = unserialize($row[0]);
-                                               }
-                                       }
-                                       else
-                                       {
-                                               return false;
-                                       }
-                               }
-                       }
-                       return $data;
-               }
-               return false;
-       }
-
-       function mtime()
-       {
-               if ($this->mysql && ($query = mysql_query('SELECT `mtime` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($row = mysql_fetch_row($query)))
-               {
-                       return $row[0];
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       function touch()
-       {
-               if ($this->mysql && ($query = mysql_query('UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `mtime` = ' . time() . ' WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && mysql_affected_rows($this->mysql))
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       function unlink()
-       {
-               if ($this->mysql && ($query = mysql_query('DELETE FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($query2 = mysql_query('DELETE FROM `' . $this->options['prefix'][0] . 'items` WHERE `feed_id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)))
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-}
-
-class SimplePie_Misc
-{
-       function time_hms($seconds)
-       {
-               $time = '';
-
-               $hours = floor($seconds / 3600);
-               $remainder = $seconds % 3600;
-               if ($hours > 0)
-               {
-                       $time .= $hours.':';
-               }
-
-               $minutes = floor($remainder / 60);
-               $seconds = $remainder % 60;
-               if ($minutes < 10 && $hours > 0)
-               {
-                       $minutes = '0' . $minutes;
-               }
-               if ($seconds < 10)
-               {
-                       $seconds = '0' . $seconds;
-               }
-
-               $time .= $minutes.':';
-               $time .= $seconds;
-
-               return $time;
-       }
-
-       function absolutize_url($relative, $base)
-       {
-               $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative);
-               return $iri->get_iri();
-       }
-
-       function remove_dot_segments($input)
-       {
-               $output = '';
-               while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..')
-               {
-                       // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
-                       if (strpos($input, '../') === 0)
-                       {
-                               $input = substr($input, 3);
-                       }
-                       elseif (strpos($input, './') === 0)
-                       {
-                               $input = substr($input, 2);
-                       }
-                       // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
-                       elseif (strpos($input, '/./') === 0)
-                       {
-                               $input = substr_replace($input, '/', 0, 3);
-                       }
-                       elseif ($input === '/.')
-                       {
-                               $input = '/';
-                       }
-                       // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
-                       elseif (strpos($input, '/../') === 0)
-                       {
-                               $input = substr_replace($input, '/', 0, 4);
-                               $output = substr_replace($output, '', strrpos($output, '/'));
-                       }
-                       elseif ($input === '/..')
-                       {
-                               $input = '/';
-                               $output = substr_replace($output, '', strrpos($output, '/'));
-                       }
-                       // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
-                       elseif ($input === '.' || $input === '..')
-                       {
-                               $input = '';
-                       }
-                       // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
-                       elseif (($pos = strpos($input, '/', 1)) !== false)
-                       {
-                               $output .= substr($input, 0, $pos);
-                               $input = substr_replace($input, '', 0, $pos);
-                       }
-                       else
-                       {
-                               $output .= $input;
-                               $input = '';
-                       }
-               }
-               return $output . $input;
-       }
-
-       function get_element($realname, $string)
-       {
-               $return = array();
-               $name = preg_quote($realname, '/');
-               if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
-               {
-                       for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
-                       {
-                               $return[$i]['tag'] = $realname;
-                               $return[$i]['full'] = $matches[$i][0][0];
-                               $return[$i]['offset'] = $matches[$i][0][1];
-                               if (strlen($matches[$i][3][0]) <= 2)
-                               {
-                                       $return[$i]['self_closing'] = true;
-                               }
-                               else
-                               {
-                                       $return[$i]['self_closing'] = false;
-                                       $return[$i]['content'] = $matches[$i][4][0];
-                               }
-                               $return[$i]['attribs'] = array();
-                               if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
-                               {
-                                       for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
-                                       {
-                                               if (count($attribs[$j]) === 2)
-                                               {
-                                                       $attribs[$j][2] = $attribs[$j][1];
-                                               }
-                                               $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
-                                       }
-                               }
-                       }
-               }
-               return $return;
-       }
-
-       function element_implode($element)
-       {
-               $full = "<$element[tag]";
-               foreach ($element['attribs'] as $key => $value)
-               {
-                       $key = strtolower($key);
-                       $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
-               }
-               if ($element['self_closing'])
-               {
-                       $full .= ' />';
-               }
-               else
-               {
-                       $full .= ">$element[content]</$element[tag]>";
-               }
-               return $full;
-       }
-
-       function error($message, $level, $file, $line)
-       {
-               if ((ini_get('error_reporting') & $level) > 0)
-               {
-                       switch ($level)
-                       {
-                               case E_USER_ERROR:
-                                       $note = 'PHP Error';
-                                       break;
-                               case E_USER_WARNING:
-                                       $note = 'PHP Warning';
-                                       break;
-                               case E_USER_NOTICE:
-                                       $note = 'PHP Notice';
-                                       break;
-                               default:
-                                       $note = 'Unknown Error';
-                                       break;
-                       }
-
-                       $log_error = true;
-                       if (!function_exists('error_log'))
-                       {
-                               $log_error = false;
-                       }
-
-                       $log_file = @ini_get('error_log');
-                       if (!empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file))
-                       {
-                               $log_error = false;
-                       }
-
-                       if ($log_error)
-                       {
-                               @error_log("$note: $message in $file on line $line", 0);
-                       }
-               }
-
-               return $message;
-       }
-
-       /**
-        * If a file has been cached, retrieve and display it.
-        *
-        * This is most useful for caching images (get_favicon(), etc.),
-        * however it works for all cached files.  This WILL NOT display ANY
-        * file/image/page/whatever, but rather only display what has already
-        * been cached by SimplePie.
-        *
-        * @access public
-        * @see SimplePie::get_favicon()
-        * @param str $identifier_url URL that is used to identify the content.
-        * This may or may not be the actual URL of the live content.
-        * @param str $cache_location Location of SimplePie's cache.  Defaults
-        * to './cache'.
-        * @param str $cache_extension The file extension that the file was
-        * cached with.  Defaults to 'spc'.
-        * @param str $cache_class Name of the cache-handling class being used
-        * in SimplePie.  Defaults to 'SimplePie_Cache', and should be left
-        * as-is unless you've overloaded the class.
-        * @param str $cache_name_function Obsolete. Exists for backwards
-        * compatibility reasons only.
-        */
-       function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
-       {
-               $cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension);
-
-               if ($file = $cache->load())
-               {
-                       if (isset($file['headers']['content-type']))
-                       {
-                               header('Content-type:' . $file['headers']['content-type']);
-                       }
-                       else
-                       {
-                               header('Content-type: application/octet-stream');
-                       }
-                       header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
-                       echo $file['body'];
-                       exit;
-               }
-
-               die('Cached file for ' . $identifier_url . ' cannot be found.');
-       }
-
-       function fix_protocol($url, $http = 1)
-       {
-               $url = SimplePie_Misc::normalize_url($url);
-               $parsed = SimplePie_Misc::parse_url($url);
-               if ($parsed['scheme'] !== '' && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https')
-               {
-                       return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
-               }
-
-               if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
-               {
-                       return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
-               }
-
-               if ($http === 2 && $parsed['scheme'] !== '')
-               {
-                       return "feed:$url";
-               }
-               elseif ($http === 3 && strtolower($parsed['scheme']) === 'http')
-               {
-                       return substr_replace($url, 'podcast', 0, 4);
-               }
-               elseif ($http === 4 && strtolower($parsed['scheme']) === 'http')
-               {
-                       return substr_replace($url, 'itpc', 0, 4);
-               }
-               else
-               {
-                       return $url;
-               }
-       }
-
-       function parse_url($url)
-       {
-               $iri =& new SimplePie_IRI($url);
-               return array(
-                       'scheme' => (string) $iri->get_scheme(),
-                       'authority' => (string) $iri->get_authority(),
-                       'path' => (string) $iri->get_path(),
-                       'query' => (string) $iri->get_query(),
-                       'fragment' => (string) $iri->get_fragment()
-               );
-       }
-
-       function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
-       {
-               $iri =& new SimplePie_IRI('');
-               $iri->set_scheme($scheme);
-               $iri->set_authority($authority);
-               $iri->set_path($path);
-               $iri->set_query($query);
-               $iri->set_fragment($fragment);
-               return $iri->get_iri();
-       }
-
-       function normalize_url($url)
-       {
-               $iri =& new SimplePie_IRI($url);
-               return $iri->get_iri();
-       }
-
-       function percent_encoding_normalization($match)
-       {
-               $integer = hexdec($match[1]);
-               if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer === 0x2D || $integer === 0x2E || $integer === 0x5F || $integer === 0x7E)
-               {
-                       return chr($integer);
-               }
-               else
-               {
-                       return strtoupper($match[0]);
-               }
-       }
-
-       /**
-        * Remove bad UTF-8 bytes
-        *
-        * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
-        * FAQ: Multilingual Forms (modified to include full ASCII range)
-        *
-        * @author Geoffrey Sneddon
-        * @see http://www.w3.org/International/questions/qa-forms-utf-8
-        * @param string $str String to remove bad UTF-8 bytes from
-        * @return string UTF-8 string
-        */
-       function utf8_bad_replace($str)
-       {
-               if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
-               {
-                       return $return;
-               }
-               elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8')))
-               {
-                       return $return;
-               }
-               elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches))
-               {
-                       return implode("\xEF\xBF\xBD", $matches[0]);
-               }
-               elseif ($str !== '')
-               {
-                       return "\xEF\xBF\xBD";
-               }
-               else
-               {
-                       return '';
-               }
-       }
-
-       /**
-        * Converts a Windows-1252 encoded string to a UTF-8 encoded string
-        *
-        * @static
-        * @access public
-        * @param string $string Windows-1252 encoded string
-        * @return string UTF-8 encoded string
-        */
-       function windows_1252_to_utf8($string)
-       {
-               static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF");
-
-               return strtr($string, $convert_table);
-       }
-
-       function change_encoding($data, $input, $output)
-       {
-               $input = SimplePie_Misc::encoding($input);
-               $output = SimplePie_Misc::encoding($output);
-
-               // We fail to fail on non US-ASCII bytes
-               if ($input === 'US-ASCII')
-               {
-                       static $non_ascii_octects = '';
-                       if (!$non_ascii_octects)
-                       {
-                               for ($i = 0x80; $i <= 0xFF; $i++)
-                               {
-                                       $non_ascii_octects .= chr($i);
-                               }
-                       }
-                       $data = substr($data, 0, strcspn($data, $non_ascii_octects));
-               }
-
-               // This is first, as behaviour of this is completely predictable
-               if ($input === 'windows-1252' && $output === 'UTF-8')
-               {
-                       return SimplePie_Misc::windows_1252_to_utf8($data);
-               }
-               // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
-               elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && in_array($input, mb_list_encodings()) && ($return = @mb_convert_encoding($data, $output, $input)))
-               {
-                       return $return;
-               }
-               // This is last, as behaviour of this varies with OS userland and PHP version
-               elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
-               {
-                       return $return;
-               }
-               // If we can't do anything, just fail
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Normalize an encoding name
-        *
-        * This is automatically generated by create.php
-        *
-        * To generate it, run `php create.php` on the command line, and copy the
-        * output to replace this function.
-        *
-        * @param string $charset Character set to standardise
-        * @return string Standardised name
-        */
-       function encoding($charset)
-       {
-               // Normalization from UTS #22
-               switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset)))
-               {
-                       case 'adobestandardencoding':
-                       case 'csadobestandardencoding':
-                               return 'Adobe-Standard-Encoding';
-
-                       case 'adobesymbolencoding':
-                       case 'cshppsmath':
-                               return 'Adobe-Symbol-Encoding';
-
-                       case 'ami1251':
-                       case 'amiga1251':
-                               return 'Amiga-1251';
-
-                       case 'ansix31101983':
-                       case 'csat5001983':
-                       case 'csiso99naplps':
-                       case 'isoir99':
-                       case 'naplps':
-                               return 'ANSI_X3.110-1983';
-
-                       case 'arabic7':
-                       case 'asmo449':
-                       case 'csiso89asmo449':
-                       case 'iso9036':
-                       case 'isoir89':
-                               return 'ASMO_449';
-
-                       case 'big5':
-                       case 'csbig5':
-                               return 'Big5';
-
-                       case 'big5hkscs':
-                               return 'Big5-HKSCS';
-
-                       case 'bocu1':
-                       case 'csbocu1':
-                               return 'BOCU-1';
-
-                       case 'brf':
-                       case 'csbrf':
-                               return 'BRF';
-
-                       case 'bs4730':
-                       case 'csiso4unitedkingdom':
-                       case 'gb':
-                       case 'iso646gb':
-                       case 'isoir4':
-                       case 'uk':
-                               return 'BS_4730';
-
-                       case 'bsviewdata':
-                       case 'csiso47bsviewdata':
-                       case 'isoir47':
-                               return 'BS_viewdata';
-
-                       case 'cesu8':
-                       case 'cscesu8':
-                               return 'CESU-8';
-
-                       case 'ca':
-                       case 'csa71':
-                       case 'csaz243419851':
-                       case 'csiso121canadian1':
-                       case 'iso646ca':
-                       case 'isoir121':
-                               return 'CSA_Z243.4-1985-1';
-
-                       case 'csa72':
-                       case 'csaz243419852':
-                       case 'csiso122canadian2':
-                       case 'iso646ca2':
-                       case 'isoir122':
-                               return 'CSA_Z243.4-1985-2';
-
-                       case 'csaz24341985gr':
-                       case 'csiso123csaz24341985gr':
-                       case 'isoir123':
-                               return 'CSA_Z243.4-1985-gr';
-
-                       case 'csiso139csn369103':
-                       case 'csn369103':
-                       case 'isoir139':
-                               return 'CSN_369103';
-
-                       case 'csdecmcs':
-                       case 'dec':
-                       case 'decmcs':
-                               return 'DEC-MCS';
-
-                       case 'csiso21german':
-                       case 'de':
-                       case 'din66003':
-                       case 'iso646de':
-                       case 'isoir21':
-                               return 'DIN_66003';
-
-                       case 'csdkus':
-                       case 'dkus':
-                               return 'dk-us';
-
-                       case 'csiso646danish':
-                       case 'dk':
-                       case 'ds2089':
-                       case 'iso646dk':
-                               return 'DS_2089';
-
-                       case 'csibmebcdicatde':
-                       case 'ebcdicatde':
-                               return 'EBCDIC-AT-DE';
-
-                       case 'csebcdicatdea':
-                       case 'ebcdicatdea':
-                               return 'EBCDIC-AT-DE-A';
-
-                       case 'csebcdiccafr':
-                       case 'ebcdiccafr':
-                               return 'EBCDIC-CA-FR';
-
-                       case 'csebcdicdkno':
-                       case 'ebcdicdkno':
-                               return 'EBCDIC-DK-NO';
-
-                       case 'csebcdicdknoa':
-                       case 'ebcdicdknoa':
-                               return 'EBCDIC-DK-NO-A';
-
-                       case 'csebcdices':
-                       case 'ebcdices':
-                               return 'EBCDIC-ES';
-
-                       case 'csebcdicesa':
-                       case 'ebcdicesa':
-                               return 'EBCDIC-ES-A';
-
-                       case 'csebcdicess':
-                       case 'ebcdicess':
-                               return 'EBCDIC-ES-S';
-
-                       case 'csebcdicfise':
-                       case 'ebcdicfise':
-                               return 'EBCDIC-FI-SE';
-
-                       case 'csebcdicfisea':
-                       case 'ebcdicfisea':
-                               return 'EBCDIC-FI-SE-A';
-
-                       case 'csebcdicfr':
-                       case 'ebcdicfr':
-                               return 'EBCDIC-FR';
-
-                       case 'csebcdicit':
-                       case 'ebcdicit':
-                               return 'EBCDIC-IT';
-
-                       case 'csebcdicpt':
-                       case 'ebcdicpt':
-                               return 'EBCDIC-PT';
-
-                       case 'csebcdicuk':
-                       case 'ebcdicuk':
-                               return 'EBCDIC-UK';
-
-                       case 'csebcdicus':
-                       case 'ebcdicus':
-                               return 'EBCDIC-US';
-
-                       case 'csiso111ecmacyrillic':
-                       case 'ecmacyrillic':
-                       case 'isoir111':
-                       case 'koi8e':
-                               return 'ECMA-cyrillic';
-
-                       case 'csiso17spanish':
-                       case 'es':
-                       case 'iso646es':
-                       case 'isoir17':
-                               return 'ES';
-
-                       case 'csiso85spanish2':
-                       case 'es2':
-                       case 'iso646es2':
-                       case 'isoir85':
-                               return 'ES2';
-
-                       case 'cseucpkdfmtjapanese':
-                       case 'eucjp':
-                       case 'extendedunixcodepackedformatforjapanese':
-                               return 'EUC-JP';
-
-                       case 'cseucfixwidjapanese':
-                       case 'extendedunixcodefixedwidthforjapanese':
-                               return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
-
-                       case 'gb18030':
-                               return 'GB18030';
-
-                       case 'chinese':
-                       case 'cp936':
-                       case 'csgb2312':
-                       case 'csiso58gb231280':
-                       case 'gb2312':
-                       case 'gb231280':
-                       case 'gbk':
-                       case 'isoir58':
-                       case 'ms936':
-                       case 'windows936':
-                               return 'GBK';
-
-                       case 'cn':
-                       case 'csiso57gb1988':
-                       case 'gb198880':
-                       case 'iso646cn':
-                       case 'isoir57':
-                               return 'GB_1988-80';
-
-                       case 'csiso153gost1976874':
-                       case 'gost1976874':
-                       case 'isoir153':
-                       case 'stsev35888':
-                               return 'GOST_19768-74';
-
-                       case 'csiso150':
-                       case 'csiso150greekccitt':
-                       case 'greekccitt':
-                       case 'isoir150':
-                               return 'greek-ccitt';
-
-                       case 'csiso88greek7':
-                       case 'greek7':
-                       case 'isoir88':
-                               return 'greek7';
-
-                       case 'csiso18greek7old':
-                       case 'greek7old':
-                       case 'isoir18':
-                               return 'greek7-old';
-
-                       case 'cshpdesktop':
-                       case 'hpdesktop':
-                               return 'HP-DeskTop';
-
-                       case 'cshplegal':
-                       case 'hplegal':
-                               return 'HP-Legal';
-
-                       case 'cshpmath8':
-                       case 'hpmath8':
-                               return 'HP-Math8';
-
-                       case 'cshppifont':
-                       case 'hppifont':
-                               return 'HP-Pi-font';
-
-                       case 'cshproman8':
-                       case 'hproman8':
-                       case 'r8':
-                       case 'roman8':
-                               return 'hp-roman8';
-
-                       case 'hzgb2312':
-                               return 'HZ-GB-2312';
-
-                       case 'csibmsymbols':
-                       case 'ibmsymbols':
-                               return 'IBM-Symbols';
-
-                       case 'csibmthai':
-                       case 'ibmthai':
-                               return 'IBM-Thai';
-
-                       case 'cp37':
-                       case 'csibm37':
-                       case 'ebcdiccpca':
-                       case 'ebcdiccpnl':
-                       case 'ebcdiccpus':
-                       case 'ebcdiccpwt':
-                       case 'ibm37':
-                               return 'IBM037';
-
-                       case 'cp38':
-                       case 'csibm38':
-                       case 'ebcdicint':
-                       case 'ibm38':
-                               return 'IBM038';
-
-                       case 'cp273':
-                       case 'csibm273':
-                       case 'ibm273':
-                               return 'IBM273';
-
-                       case 'cp274':
-                       case 'csibm274':
-                       case 'ebcdicbe':
-                       case 'ibm274':
-                               return 'IBM274';
-
-                       case 'cp275':
-                       case 'csibm275':
-                       case 'ebcdicbr':
-                       case 'ibm275':
-                               return 'IBM275';
-
-                       case 'csibm277':
-                       case 'ebcdiccpdk':
-                       case 'ebcdiccpno':
-                       case 'ibm277':
-                               return 'IBM277';
-
-                       case 'cp278':
-                       case 'csibm278':
-                       case 'ebcdiccpfi':
-                       case 'ebcdiccpse':
-                       case 'ibm278':
-                               return 'IBM278';
-
-                       case 'cp280':
-                       case 'csibm280':
-                       case 'ebcdiccpit':
-                       case 'ibm280':
-                               return 'IBM280';
-
-                       case 'cp281':
-                       case 'csibm281':
-                       case 'ebcdicjpe':
-                       case 'ibm281':
-                               return 'IBM281';
-
-                       case 'cp284':
-                       case 'csibm284':
-                       case 'ebcdiccpes':
-                       case 'ibm284':
-                               return 'IBM284';
-
-                       case 'cp285':
-                       case 'csibm285':
-                       case 'ebcdiccpgb':
-                       case 'ibm285':
-                               return 'IBM285';
-
-                       case 'cp290':
-                       case 'csibm290':
-                       case 'ebcdicjpkana':
-                       case 'ibm290':
-                               return 'IBM290';
-
-                       case 'cp297':
-                       case 'csibm297':
-                       case 'ebcdiccpfr':
-                       case 'ibm297':
-                               return 'IBM297';
-
-                       case 'cp420':
-                       case 'csibm420':
-                       case 'ebcdiccpar1':
-                       case 'ibm420':
-                               return 'IBM420';
-
-                       case 'cp423':
-                       case 'csibm423':
-                       case 'ebcdiccpgr':
-                       case 'ibm423':
-                               return 'IBM423';
-
-                       case 'cp424':
-                       case 'csibm424':
-                       case 'ebcdiccphe':
-                       case 'ibm424':
-                               return 'IBM424';
-
-                       case '437':
-                       case 'cp437':
-                       case 'cspc8codepage437':
-                       case 'ibm437':
-                               return 'IBM437';
-
-                       case 'cp500':
-                       case 'csibm500':
-                       case 'ebcdiccpbe':
-                       case 'ebcdiccpch':
-                       case 'ibm500':
-                               return 'IBM500';
-
-                       case 'cp775':
-                       case 'cspc775baltic':
-                       case 'ibm775':
-                               return 'IBM775';
-
-                       case '850':
-                       case 'cp850':
-                       case 'cspc850multilingual':
-                       case 'ibm850':
-                               return 'IBM850';
-
-                       case '851':
-                       case 'cp851':
-                       case 'csibm851':
-                       case 'ibm851':
-                               return 'IBM851';
-
-                       case '852':
-                       case 'cp852':
-                       case 'cspcp852':
-                       case 'ibm852':
-                               return 'IBM852';
-
-                       case '855':
-                       case 'cp855':
-                       case 'csibm855':
-                       case 'ibm855':
-                               return 'IBM855';
-
-                       case '857':
-                       case 'cp857':
-                       case 'csibm857':
-                       case 'ibm857':
-                               return 'IBM857';
-
-                       case 'ccsid858':
-                       case 'cp858':
-                       case 'ibm858':
-                       case 'pcmultilingual850euro':
-                               return 'IBM00858';
-
-                       case '860':
-                       case 'cp860':
-                       case 'csibm860':
-                       case 'ibm860':
-                               return 'IBM860';
-
-                       case '861':
-                       case 'cp861':
-                       case 'cpis':
-                       case 'csibm861':
-                       case 'ibm861':
-                               return 'IBM861';
-
-                       case '862':
-                       case 'cp862':
-                       case 'cspc862latinhebrew':
-                       case 'ibm862':
-                               return 'IBM862';
-
-                       case '863':
-                       case 'cp863':
-                       case 'csibm863':
-                       case 'ibm863':
-                               return 'IBM863';
-
-                       case 'cp864':
-                       case 'csibm864':
-                       case 'ibm864':
-                               return 'IBM864';
-
-                       case '865':
-                       case 'cp865':
-                       case 'csibm865':
-                       case 'ibm865':
-                               return 'IBM865';
-
-                       case '866':
-                       case 'cp866':
-                       case 'csibm866':
-                       case 'ibm866':
-                               return 'IBM866';
-
-                       case 'cp868':
-                       case 'cpar':
-                       case 'csibm868':
-                       case 'ibm868':
-                               return 'IBM868';
-
-                       case '869':
-                       case 'cp869':
-                       case 'cpgr':
-                       case 'csibm869':
-                       case 'ibm869':
-                               return 'IBM869';
-
-                       case 'cp870':
-                       case 'csibm870':
-                       case 'ebcdiccproece':
-                       case 'ebcdiccpyu':
-                       case 'ibm870':
-                               return 'IBM870';
-
-                       case 'cp871':
-                       case 'csibm871':
-                       case 'ebcdiccpis':
-                       case 'ibm871':
-                               return 'IBM871';
-
-                       case 'cp880':
-                       case 'csibm880':
-                       case 'ebcdiccyrillic':
-                       case 'ibm880':
-                               return 'IBM880';
-
-                       case 'cp891':
-                       case 'csibm891':
-                       case 'ibm891':
-                               return 'IBM891';
-
-                       case 'cp903':
-                       case 'csibm903':
-                       case 'ibm903':
-                               return 'IBM903';
-
-                       case '904':
-                       case 'cp904':
-                       case 'csibbm904':
-                       case 'ibm904':
-                               return 'IBM904';
-
-                       case 'cp905':
-                       case 'csibm905':
-                       case 'ebcdiccptr':
-                       case 'ibm905':
-                               return 'IBM905';
-
-                       case 'cp918':
-                       case 'csibm918':
-                       case 'ebcdiccpar2':
-                       case 'ibm918':
-                               return 'IBM918';
-
-                       case 'ccsid924':
-                       case 'cp924':
-                       case 'ebcdiclatin9euro':
-                       case 'ibm924':
-                               return 'IBM00924';
-
-                       case 'cp1026':
-                       case 'csibm1026':
-                       case 'ibm1026':
-                               return 'IBM1026';
-
-                       case 'ibm1047':
-                               return 'IBM1047';
-
-                       case 'ccsid1140':
-                       case 'cp1140':
-                       case 'ebcdicus37euro':
-                       case 'ibm1140':
-                               return 'IBM01140';
-
-                       case 'ccsid1141':
-                       case 'cp1141':
-                       case 'ebcdicde273euro':
-                       case 'ibm1141':
-                               return 'IBM01141';
-
-                       case 'ccsid1142':
-                       case 'cp1142':
-                       case 'ebcdicdk277euro':
-                       case 'ebcdicno277euro':
-                       case 'ibm1142':
-                               return 'IBM01142';
-
-                       case 'ccsid1143':
-                       case 'cp1143':
-                       case 'ebcdicfi278euro':
-                       case 'ebcdicse278euro':
-                       case 'ibm1143':
-                               return 'IBM01143';
-
-                       case 'ccsid1144':
-                       case 'cp1144':
-                       case 'ebcdicit280euro':
-                       case 'ibm1144':
-                               return 'IBM01144';
-
-                       case 'ccsid1145':
-                       case 'cp1145':
-                       case 'ebcdices284euro':
-                       case 'ibm1145':
-                               return 'IBM01145';
-
-                       case 'ccsid1146':
-                       case 'cp1146':
-                       case 'ebcdicgb285euro':
-                       case 'ibm1146':
-                               return 'IBM01146';
-
-                       case 'ccsid1147':
-                       case 'cp1147':
-                       case 'ebcdicfr297euro':
-                       case 'ibm1147':
-                               return 'IBM01147';
-
-                       case 'ccsid1148':
-                       case 'cp1148':
-                       case 'ebcdicinternational500euro':
-                       case 'ibm1148':
-                               return 'IBM01148';
-
-                       case 'ccsid1149':
-                       case 'cp1149':
-                       case 'ebcdicis871euro':
-                       case 'ibm1149':
-                               return 'IBM01149';
-
-                       case 'csiso143iecp271':
-                       case 'iecp271':
-                       case 'isoir143':
-                               return 'IEC_P27-1';
-
-                       case 'csiso49inis':
-                       case 'inis':
-                       case 'isoir49':
-                               return 'INIS';
-
-                       case 'csiso50inis8':
-                       case 'inis8':
-                       case 'isoir50':
-                               return 'INIS-8';
-
-                       case 'csiso51iniscyrillic':
-                       case 'iniscyrillic':
-                       case 'isoir51':
-                               return 'INIS-cyrillic';
-
-                       case 'csinvariant':
-                       case 'invariant':
-                               return 'INVARIANT';
-
-                       case 'iso2022cn':
-                               return 'ISO-2022-CN';
-
-                       case 'iso2022cnext':
-                               return 'ISO-2022-CN-EXT';
-
-                       case 'csiso2022jp':
-                       case 'iso2022jp':
-                               return 'ISO-2022-JP';
-
-                       case 'csiso2022jp2':
-                       case 'iso2022jp2':
-                               return 'ISO-2022-JP-2';
-
-                       case 'csiso2022kr':
-                       case 'iso2022kr':
-                               return 'ISO-2022-KR';
-
-                       case 'cswindows30latin1':
-                       case 'iso88591windows30latin1':
-                               return 'ISO-8859-1-Windows-3.0-Latin-1';
-
-                       case 'cswindows31latin1':
-                       case 'iso88591windows31latin1':
-                               return 'ISO-8859-1-Windows-3.1-Latin-1';
-
-                       case 'csisolatin2':
-                       case 'iso88592':
-                       case 'iso885921987':
-                       case 'isoir101':
-                       case 'l2':
-                       case 'latin2':
-                               return 'ISO-8859-2';
-
-                       case 'cswindows31latin2':
-                       case 'iso88592windowslatin2':
-                               return 'ISO-8859-2-Windows-Latin-2';
-
-                       case 'csisolatin3':
-                       case 'iso88593':
-                       case 'iso885931988':
-                       case 'isoir109':
-                       case 'l3':
-                       case 'latin3':
-                               return 'ISO-8859-3';
-
-                       case 'csisolatin4':
-                       case 'iso88594':
-                       case 'iso885941988':
-                       case 'isoir110':
-                       case 'l4':
-                       case 'latin4':
-                               return 'ISO-8859-4';
-
-                       case 'csisolatincyrillic':
-                       case 'cyrillic':
-                       case 'iso88595':
-                       case 'iso885951988':
-                       case 'isoir144':
-                               return 'ISO-8859-5';
-
-                       case 'arabic':
-                       case 'asmo708':
-                       case 'csisolatinarabic':
-                       case 'ecma114':
-                       case 'iso88596':
-                       case 'iso885961987':
-                       case 'isoir127':
-                               return 'ISO-8859-6';
-
-                       case 'csiso88596e':
-                       case 'iso88596e':
-                               return 'ISO-8859-6-E';
-
-                       case 'csiso88596i':
-                       case 'iso88596i':
-                               return 'ISO-8859-6-I';
-
-                       case 'csisolatingreek':
-                       case 'ecma118':
-                       case 'elot928':
-                       case 'greek':
-                       case 'greek8':
-                       case 'iso88597':
-                       case 'iso885971987':
-                       case 'isoir126':
-                               return 'ISO-8859-7';
-
-                       case 'csisolatinhebrew':
-                       case 'hebrew':
-                       case 'iso88598':
-                       case 'iso885981988':
-                       case 'isoir138':
-                               return 'ISO-8859-8';
-
-                       case 'csiso88598e':
-                       case 'iso88598e':
-                               return 'ISO-8859-8-E';
-
-                       case 'csiso88598i':
-                       case 'iso88598i':
-                               return 'ISO-8859-8-I';
-
-                       case 'cswindows31latin5':
-                       case 'iso88599windowslatin5':
-                               return 'ISO-8859-9-Windows-Latin-5';
-
-                       case 'csisolatin6':
-                       case 'iso885910':
-                       case 'iso8859101992':
-                       case 'isoir157':
-                       case 'l6':
-                       case 'latin6':
-                               return 'ISO-8859-10';
-
-                       case 'iso885913':
-                               return 'ISO-8859-13';
-
-                       case 'iso885914':
-                       case 'iso8859141998':
-                       case 'isoceltic':
-                       case 'isoir199':
-                       case 'l8':
-                       case 'latin8':
-                               return 'ISO-8859-14';
-
-                       case 'iso885915':
-                       case 'latin9':
-                               return 'ISO-8859-15';
-
-                       case 'iso885916':
-                       case 'iso8859162001':
-                       case 'isoir226':
-                       case 'l10':
-                       case 'latin10':
-                               return 'ISO-8859-16';
-
-                       case 'iso10646j1':
-                               return 'ISO-10646-J-1';
-
-                       case 'csunicode':
-                       case 'iso10646ucs2':
-                               return 'ISO-10646-UCS-2';
-
-                       case 'csucs4':
-                       case 'iso10646ucs4':
-                               return 'ISO-10646-UCS-4';
-
-                       case 'csunicodeascii':
-                       case 'iso10646ucsbasic':
-                               return 'ISO-10646-UCS-Basic';
-
-                       case 'csunicodelatin1':
-                       case 'iso10646':
-                       case 'iso10646unicodelatin1':
-                               return 'ISO-10646-Unicode-Latin1';
-
-                       case 'csiso10646utf1':
-                       case 'iso10646utf1':
-                               return 'ISO-10646-UTF-1';
-
-                       case 'csiso115481':
-                       case 'iso115481':
-                       case 'isotr115481':
-                               return 'ISO-11548-1';
-
-                       case 'csiso90':
-                       case 'isoir90':
-                               return 'iso-ir-90';
-
-                       case 'csunicodeibm1261':
-                       case 'isounicodeibm1261':
-                               return 'ISO-Unicode-IBM-1261';
-
-                       case 'csunicodeibm1264':
-                       case 'isounicodeibm1264':
-                               return 'ISO-Unicode-IBM-1264';
-
-                       case 'csunicodeibm1265':
-                       case 'isounicodeibm1265':
-                               return 'ISO-Unicode-IBM-1265';
-
-                       case 'csunicodeibm1268':
-                       case 'isounicodeibm1268':
-                               return 'ISO-Unicode-IBM-1268';
-
-                       case 'csunicodeibm1276':
-                       case 'isounicodeibm1276':
-                               return 'ISO-Unicode-IBM-1276';
-
-                       case 'csiso646basic1983':
-                       case 'iso646basic1983':
-                       case 'ref':
-                               return 'ISO_646.basic:1983';
-
-                       case 'csiso2intlrefversion':
-                       case 'irv':
-                       case 'iso646irv1983':
-                       case 'isoir2':
-                               return 'ISO_646.irv:1983';
-
-                       case 'csiso2033':
-                       case 'e13b':
-                       case 'iso20331983':
-                       case 'isoir98':
-                               return 'ISO_2033-1983';
-
-                       case 'csiso5427cyrillic':
-                       case 'iso5427':
-                       case 'isoir37':
-                               return 'ISO_5427';
-
-                       case 'iso5427cyrillic1981':
-                       case 'iso54271981':
-                       case 'isoir54':
-                               return 'ISO_5427:1981';
-
-                       case 'csiso5428greek':
-                       case 'iso54281980':
-                       case 'isoir55':
-                               return 'ISO_5428:1980';
-
-                       case 'csiso6937add':
-                       case 'iso6937225':
-                       case 'isoir152':
-                               return 'ISO_6937-2-25';
-
-                       case 'csisotextcomm':
-                       case 'iso69372add':
-                       case 'isoir142':
-                               return 'ISO_6937-2-add';
-
-                       case 'csiso8859supp':
-                       case 'iso8859supp':
-                       case 'isoir154':
-                       case 'latin125':
-                               return 'ISO_8859-supp';
-
-                       case 'csiso10367box':
-                       case 'iso10367box':
-                       case 'isoir155':
-                               return 'ISO_10367-box';
-
-                       case 'csiso15italian':
-                       case 'iso646it':
-                       case 'isoir15':
-                       case 'it':
-                               return 'IT';
-
-                       case 'csiso13jisc6220jp':
-                       case 'isoir13':
-                       case 'jisc62201969':
-                       case 'jisc62201969jp':
-                       case 'katakana':
-                       case 'x2017':
-                               return 'JIS_C6220-1969-jp';
-
-                       case 'csiso14jisc6220ro':
-                       case 'iso646jp':
-                       case 'isoir14':
-                       case 'jisc62201969ro':
-                       case 'jp':
-                               return 'JIS_C6220-1969-ro';
-
-                       case 'csiso42jisc62261978':
-                       case 'isoir42':
-                       case 'jisc62261978':
-                               return 'JIS_C6226-1978';
-
-                       case 'csiso87jisx208':
-                       case 'isoir87':
-                       case 'jisc62261983':
-                       case 'jisx2081983':
-                       case 'x208':
-                               return 'JIS_C6226-1983';
-
-                       case 'csiso91jisc62291984a':
-                       case 'isoir91':
-                       case 'jisc62291984a':
-                       case 'jpocra':
-                               return 'JIS_C6229-1984-a';
-
-                       case 'csiso92jisc62991984b':
-                       case 'iso646jpocrb':
-                       case 'isoir92':
-                       case 'jisc62291984b':
-                       case 'jpocrb':
-                               return 'JIS_C6229-1984-b';
-
-                       case 'csiso93jis62291984badd':
-                       case 'isoir93':
-                       case 'jisc62291984badd':
-                       case 'jpocrbadd':
-                               return 'JIS_C6229-1984-b-add';
-
-                       case 'csiso94jis62291984hand':
-                       case 'isoir94':
-                       case 'jisc62291984hand':
-                       case 'jpocrhand':
-                               return 'JIS_C6229-1984-hand';
-
-                       case 'csiso95jis62291984handadd':
-                       case 'isoir95':
-                       case 'jisc62291984handadd':
-                       case 'jpocrhandadd':
-                               return 'JIS_C6229-1984-hand-add';
-
-                       case 'csiso96jisc62291984kana':
-                       case 'isoir96':
-                       case 'jisc62291984kana':
-                               return 'JIS_C6229-1984-kana';
-
-                       case 'csjisencoding':
-                       case 'jisencoding':
-                               return 'JIS_Encoding';
-
-                       case 'cshalfwidthkatakana':
-                       case 'jisx201':
-                       case 'x201':
-                               return 'JIS_X0201';
-
-                       case 'csiso159jisx2121990':
-                       case 'isoir159':
-                       case 'jisx2121990':
-                       case 'x212':
-                               return 'JIS_X0212-1990';
-
-                       case 'csiso141jusib1002':
-                       case 'iso646yu':
-                       case 'isoir141':
-                       case 'js':
-                       case 'jusib1002':
-                       case 'yu':
-                               return 'JUS_I.B1.002';
-
-                       case 'csiso147macedonian':
-                       case 'isoir147':
-                       case 'jusib1003mac':
-                       case 'macedonian':
-                               return 'JUS_I.B1.003-mac';
-
-                       case 'csiso146serbian':
-                       case 'isoir146':
-                       case 'jusib1003serb':
-                       case 'serbian':
-                               return 'JUS_I.B1.003-serb';
-
-                       case 'koi7switched':
-                               return 'KOI7-switched';
-
-                       case 'cskoi8r':
-                       case 'koi8r':
-                               return 'KOI8-R';
-
-                       case 'koi8u':
-                               return 'KOI8-U';
-
-                       case 'csksc5636':
-                       case 'iso646kr':
-                       case 'ksc5636':
-                               return 'KSC5636';
-
-                       case 'cskz1048':
-                       case 'kz1048':
-                       case 'rk1048':
-                       case 'strk10482002':
-                               return 'KZ-1048';
-
-                       case 'csiso19latingreek':
-                       case 'isoir19':
-                       case 'latingreek':
-                               return 'latin-greek';
-
-                       case 'csiso27latingreek1':
-                       case 'isoir27':
-                       case 'latingreek1':
-                               return 'Latin-greek-1';
-
-                       case 'csiso158lap':
-                       case 'isoir158':
-                       case 'lap':
-                       case 'latinlap':
-                               return 'latin-lap';
-
-                       case 'csmacintosh':
-                       case 'mac':
-                       case 'macintosh':
-                               return 'macintosh';
-
-                       case 'csmicrosoftpublishing':
-                       case 'microsoftpublishing':
-                               return 'Microsoft-Publishing';
-
-                       case 'csmnem':
-                       case 'mnem':
-                               return 'MNEM';
-
-                       case 'csmnemonic':
-                       case 'mnemonic':
-                               return 'MNEMONIC';
-
-                       case 'csiso86hungarian':
-                       case 'hu':
-                       case 'iso646hu':
-                       case 'isoir86':
-                       case 'msz77953':
-                               return 'MSZ_7795.3';
-
-                       case 'csnatsdano':
-                       case 'isoir91':
-                       case 'natsdano':
-                               return 'NATS-DANO';
-
-                       case 'csnatsdanoadd':
-                       case 'isoir92':
-                       case 'natsdanoadd':
-                               return 'NATS-DANO-ADD';
-
-                       case 'csnatssefi':
-                       case 'isoir81':
-                       case 'natssefi':
-                               return 'NATS-SEFI';
-
-                       case 'csnatssefiadd':
-                       case 'isoir82':
-                       case 'natssefiadd':
-                               return 'NATS-SEFI-ADD';
-
-                       case 'csiso151cuba':
-                       case 'cuba':
-                       case 'iso646cu':
-                       case 'isoir151':
-                       case 'ncnc1081':
-                               return 'NC_NC00-10:81';
-
-                       case 'csiso69french':
-                       case 'fr':
-                       case 'iso646fr':
-                       case 'isoir69':
-                       case 'nfz62010':
-                               return 'NF_Z_62-010';
-
-                       case 'csiso25french':
-                       case 'iso646fr1':
-                       case 'isoir25':
-                       case 'nfz620101973':
-                               return 'NF_Z_62-010_(1973)';
-
-                       case 'csiso60danishnorwegian':
-                       case 'csiso60norwegian1':
-                       case 'iso646no':
-                       case 'isoir60':
-                       case 'no':
-                       case 'ns45511':
-                               return 'NS_4551-1';
-
-                       case 'csiso61norwegian2':
-                       case 'iso646no2':
-                       case 'isoir61':
-                       case 'no2':
-                       case 'ns45512':
-                               return 'NS_4551-2';
-
-                       case 'osdebcdicdf3irv':
-                               return 'OSD_EBCDIC_DF03_IRV';
-
-                       case 'osdebcdicdf41':
-                               return 'OSD_EBCDIC_DF04_1';
-
-                       case 'osdebcdicdf415':
-                               return 'OSD_EBCDIC_DF04_15';
-
-                       case 'cspc8danishnorwegian':
-                       case 'pc8danishnorwegian':
-                               return 'PC8-Danish-Norwegian';
-
-                       case 'cspc8turkish':
-                       case 'pc8turkish':
-                               return 'PC8-Turkish';
-
-                       case 'csiso16portuguese':
-                       case 'iso646pt':
-                       case 'isoir16':
-                       case 'pt':
-                               return 'PT';
-
-                       case 'csiso84portuguese2':
-                       case 'iso646pt2':
-                       case 'isoir84':
-                       case 'pt2':
-                               return 'PT2';
-
-                       case 'cp154':
-                       case 'csptcp154':
-                       case 'cyrillicasian':
-                       case 'pt154':
-                       case 'ptcp154':
-                               return 'PTCP154';
-
-                       case 'scsu':
-                               return 'SCSU';
-
-                       case 'csiso10swedish':
-                       case 'fi':
-                       case 'iso646fi':
-                       case 'iso646se':
-                       case 'isoir10':
-                       case 'se':
-                       case 'sen850200b':
-                               return 'SEN_850200_B';
-
-                       case 'csiso11swedishfornames':
-                       case 'iso646se2':
-                       case 'isoir11':
-                       case 'se2':
-                       case 'sen850200c':
-                               return 'SEN_850200_C';
-
-                       case 'csiso102t617bit':
-                       case 'isoir102':
-                       case 't617bit':
-                               return 'T.61-7bit';
-
-                       case 'csiso103t618bit':
-                       case 'isoir103':
-                       case 't61':
-                       case 't618bit':
-                               return 'T.61-8bit';
-
-                       case 'csiso128t101g2':
-                       case 'isoir128':
-                       case 't101g2':
-                               return 'T.101-G2';
-
-                       case 'cstscii':
-                       case 'tscii':
-                               return 'TSCII';
-
-                       case 'csunicode11':
-                       case 'unicode11':
-                               return 'UNICODE-1-1';
-
-                       case 'csunicode11utf7':
-                       case 'unicode11utf7':
-                               return 'UNICODE-1-1-UTF-7';
-
-                       case 'csunknown8bit':
-                       case 'unknown8bit':
-                               return 'UNKNOWN-8BIT';
-
-                       case 'ansix341968':
-                       case 'ansix341986':
-                       case 'ascii':
-                       case 'cp367':
-                       case 'csascii':
-                       case 'ibm367':
-                       case 'iso646irv1991':
-                       case 'iso646us':
-                       case 'isoir6':
-                       case 'us':
-                       case 'usascii':
-                               return 'US-ASCII';
-
-                       case 'csusdk':
-                       case 'usdk':
-                               return 'us-dk';
-
-                       case 'utf7':
-                               return 'UTF-7';
-
-                       case 'utf8':
-                               return 'UTF-8';
-
-                       case 'utf16':
-                               return 'UTF-16';
-
-                       case 'utf16be':
-                               return 'UTF-16BE';
-
-                       case 'utf16le':
-                               return 'UTF-16LE';
-
-                       case 'utf32':
-                               return 'UTF-32';
-
-                       case 'utf32be':
-                               return 'UTF-32BE';
-
-                       case 'utf32le':
-                               return 'UTF-32LE';
-
-                       case 'csventurainternational':
-                       case 'venturainternational':
-                               return 'Ventura-International';
-
-                       case 'csventuramath':
-                       case 'venturamath':
-                               return 'Ventura-Math';
-
-                       case 'csventuraus':
-                       case 'venturaus':
-                               return 'Ventura-US';
-
-                       case 'csiso70videotexsupp1':
-                       case 'isoir70':
-                       case 'videotexsuppl':
-                               return 'videotex-suppl';
-
-                       case 'csviqr':
-                       case 'viqr':
-                               return 'VIQR';
-
-                       case 'csviscii':
-                       case 'viscii':
-                               return 'VISCII';
-
-                       case 'csshiftjis':
-                       case 'cswindows31j':
-                       case 'mskanji':
-                       case 'shiftjis':
-                       case 'windows31j':
-                               return 'Windows-31J';
-
-                       case 'iso885911':
-                       case 'tis620':
-                               return 'windows-874';
-
-                       case 'cseuckr':
-                       case 'csksc56011987':
-                       case 'euckr':
-                       case 'isoir149':
-                       case 'korean':
-                       case 'ksc5601':
-                       case 'ksc56011987':
-                       case 'ksc56011989':
-                       case 'windows949':
-                               return 'windows-949';
-
-                       case 'windows1250':
-                               return 'windows-1250';
-
-                       case 'windows1251':
-                               return 'windows-1251';
-
-                       case 'cp819':
-                       case 'csisolatin1':
-                       case 'ibm819':
-                       case 'iso88591':
-                       case 'iso885911987':
-                       case 'isoir100':
-                       case 'l1':
-                       case 'latin1':
-                       case 'windows1252':
-                               return 'windows-1252';
-
-                       case 'windows1253':
-                               return 'windows-1253';
-
-                       case 'csisolatin5':
-                       case 'iso88599':
-                       case 'iso885991989':
-                       case 'isoir148':
-                       case 'l5':
-                       case 'latin5':
-                       case 'windows1254':
-                               return 'windows-1254';
-
-                       case 'windows1255':
-                               return 'windows-1255';
-
-                       case 'windows1256':
-                               return 'windows-1256';
-
-                       case 'windows1257':
-                               return 'windows-1257';
-
-                       case 'windows1258':
-                               return 'windows-1258';
-
-                       default:
-                               return $charset;
-               }
-       }
-
-       function get_curl_version()
-       {
-               if (is_array($curl = curl_version()))
-               {
-                       $curl = $curl['version'];
-               }
-               elseif (substr($curl, 0, 5) === 'curl/')
-               {
-                       $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
-               }
-               elseif (substr($curl, 0, 8) === 'libcurl/')
-               {
-                       $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
-               }
-               else
-               {
-                       $curl = 0;
-               }
-               return $curl;
-       }
-
-       function is_subclass_of($class1, $class2)
-       {
-               if (func_num_args() !== 2)
-               {
-                       trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
-               }
-               elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
-               {
-                       return is_subclass_of($class1, $class2);
-               }
-               elseif (is_string($class1) && is_string($class2))
-               {
-                       if (class_exists($class1))
-                       {
-                               if (class_exists($class2))
-                               {
-                                       $class2 = strtolower($class2);
-                                       while ($class1 = strtolower(get_parent_class($class1)))
-                                       {
-                                               if ($class1 === $class2)
-                                               {
-                                                       return true;
-                                               }
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Strip HTML comments
-        *
-        * @access public
-        * @param string $data Data to strip comments from
-        * @return string Comment stripped string
-        */
-       function strip_comments($data)
-       {
-               $output = '';
-               while (($start = strpos($data, '<!--')) !== false)
-               {
-                       $output .= substr($data, 0, $start);
-                       if (($end = strpos($data, '-->', $start)) !== false)
-                       {
-                               $data = substr_replace($data, '', 0, $end + 3);
-                       }
-                       else
-                       {
-                               $data = '';
-                       }
-               }
-               return $output . $data;
-       }
-
-       function parse_date($dt)
-       {
-               $parser = SimplePie_Parse_Date::get();
-               return $parser->parse($dt);
-       }
-
-       /**
-        * Decode HTML entities
-        *
-        * @static
-        * @access public
-        * @param string $data Input data
-        * @return string Output data
-        */
-       function entities_decode($data)
-       {
-               $decoder =& new SimplePie_Decode_HTML_Entities($data);
-               return $decoder->parse();
-       }
-
-       /**
-        * Remove RFC822 comments
-        *
-        * @access public
-        * @param string $data Data to strip comments from
-        * @return string Comment stripped string
-        */
-       function uncomment_rfc822($string)
-       {
-               $string = (string) $string;
-               $position = 0;
-               $length = strlen($string);
-               $depth = 0;
-
-               $output = '';
-
-               while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
-               {
-                       $output .= substr($string, $position, $pos - $position);
-                       $position = $pos + 1;
-                       if ($string[$pos - 1] !== '\\')
-                       {
-                               $depth++;
-                               while ($depth && $position < $length)
-                               {
-                                       $position += strcspn($string, '()', $position);
-                                       if ($string[$position - 1] === '\\')
-                                       {
-                                               $position++;
-                                               continue;
-                                       }
-                                       elseif (isset($string[$position]))
-                                       {
-                                               switch ($string[$position])
-                                               {
-                                                       case '(':
-                                                               $depth++;
-                                                               break;
-
-                                                       case ')':
-                                                               $depth--;
-                                                               break;
-                                               }
-                                               $position++;
-                                       }
-                                       else
-                                       {
-                                               break;
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               $output .= '(';
-                       }
-               }
-               $output .= substr($string, $position);
-
-               return $output;
-       }
-
-       function parse_mime($mime)
-       {
-               if (($pos = strpos($mime, ';')) === false)
-               {
-                       return trim($mime);
-               }
-               else
-               {
-                       return trim(substr($mime, 0, $pos));
-               }
-       }
-
-       function htmlspecialchars_decode($string, $quote_style)
-       {
-               if (function_exists('htmlspecialchars_decode'))
-               {
-                       return htmlspecialchars_decode($string, $quote_style);
-               }
-               else
-               {
-                       return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
-               }
-       }
-
-       function atom_03_construct_type($attribs)
-       {
-               if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) === 'base64'))
-               {
-                       $mode = SIMPLEPIE_CONSTRUCT_BASE64;
-               }
-               else
-               {
-                       $mode = SIMPLEPIE_CONSTRUCT_NONE;
-               }
-               if (isset($attribs['']['type']))
-               {
-                       switch (strtolower(trim($attribs['']['type'])))
-                       {
-                               case 'text':
-                               case 'text/plain':
-                                       return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
-
-                               case 'html':
-                               case 'text/html':
-                                       return SIMPLEPIE_CONSTRUCT_HTML | $mode;
-
-                               case 'xhtml':
-                               case 'application/xhtml+xml':
-                                       return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
-
-                               default:
-                                       return SIMPLEPIE_CONSTRUCT_NONE | $mode;
-                       }
-               }
-               else
-               {
-                       return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
-               }
-       }
-
-       function atom_10_construct_type($attribs)
-       {
-               if (isset($attribs['']['type']))
-               {
-                       switch (strtolower(trim($attribs['']['type'])))
-                       {
-                               case 'text':
-                                       return SIMPLEPIE_CONSTRUCT_TEXT;
-
-                               case 'html':
-                                       return SIMPLEPIE_CONSTRUCT_HTML;
-
-                               case 'xhtml':
-                                       return SIMPLEPIE_CONSTRUCT_XHTML;
-
-                               default:
-                                       return SIMPLEPIE_CONSTRUCT_NONE;
-                       }
-               }
-               return SIMPLEPIE_CONSTRUCT_TEXT;
-       }
-
-       function atom_10_content_construct_type($attribs)
-       {
-               if (isset($attribs['']['type']))
-               {
-                       $type = strtolower(trim($attribs['']['type']));
-                       switch ($type)
-                       {
-                               case 'text':
-                                       return SIMPLEPIE_CONSTRUCT_TEXT;
-
-                               case 'html':
-                                       return SIMPLEPIE_CONSTRUCT_HTML;
-
-                               case 'xhtml':
-                                       return SIMPLEPIE_CONSTRUCT_XHTML;
-                       }
-                       if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) === 'text/')
-                       {
-                               return SIMPLEPIE_CONSTRUCT_NONE;
-                       }
-                       else
-                       {
-                               return SIMPLEPIE_CONSTRUCT_BASE64;
-                       }
-               }
-               else
-               {
-                       return SIMPLEPIE_CONSTRUCT_TEXT;
-               }
-       }
-
-       function is_isegment_nz_nc($string)
-       {
-               return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
-       }
-
-       function space_seperated_tokens($string)
-       {
-               $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
-               $string_length = strlen($string);
-
-               $position = strspn($string, $space_characters);
-               $tokens = array();
-
-               while ($position < $string_length)
-               {
-                       $len = strcspn($string, $space_characters, $position);
-                       $tokens[] = substr($string, $position, $len);
-                       $position += $len;
-                       $position += strspn($string, $space_characters, $position);
-               }
-
-               return $tokens;
-       }
-
-       function array_unique($array)
-       {
-               if (version_compare(PHP_VERSION, '5.2', '>='))
-               {
-                       return array_unique($array);
-               }
-               else
-               {
-                       $array = (array) $array;
-                       $new_array = array();
-                       $new_array_strings = array();
-                       foreach ($array as $key => $value)
-                       {
-                               if (is_object($value))
-                               {
-                                       if (method_exists($value, '__toString'))
-                                       {
-                                               $cmp = $value->__toString();
-                                       }
-                                       else
-                                       {
-                                               trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
-                                       }
-                               }
-                               elseif (is_array($value))
-                               {
-                                       $cmp = (string) reset($value);
-                               }
-                               else
-                               {
-                                       $cmp = (string) $value;
-                               }
-                               if (!in_array($cmp, $new_array_strings))
-                               {
-                                       $new_array[$key] = $value;
-                                       $new_array_strings[] = $cmp;
-                               }
-                       }
-                       return $new_array;
-               }
-       }
-
-       /**
-        * Converts a unicode codepoint to a UTF-8 character
-        *
-        * @static
-        * @access public
-        * @param int $codepoint Unicode codepoint
-        * @return string UTF-8 character
-        */
-       function codepoint_to_utf8($codepoint)
-       {
-               $codepoint = (int) $codepoint;
-               if ($codepoint < 0)
-               {
-                       return false;
-               }
-               else if ($codepoint <= 0x7f)
-               {
-                       return chr($codepoint);
-               }
-               else if ($codepoint <= 0x7ff)
-               {
-                       return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
-               }
-               else if ($codepoint <= 0xffff)
-               {
-                       return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
-               }
-               else if ($codepoint <= 0x10ffff)
-               {
-                       return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
-               }
-               else
-               {
-                       // U+FFFD REPLACEMENT CHARACTER
-                       return "\xEF\xBF\xBD";
-               }
-       }
-
-       /**
-        * Re-implementation of PHP 5's stripos()
-        *
-        * Returns the numeric position of the first occurrence of needle in the
-        * haystack string.
-        *
-        * @static
-        * @access string
-        * @param object $haystack
-        * @param string $needle Note that the needle may be a string of one or more
-        *     characters. If needle is not a string, it is converted to an integer
-        *     and applied as the ordinal value of a character.
-        * @param int $offset The optional offset parameter allows you to specify which
-        *     character in haystack to start searching. The position returned is still
-        *     relative to the beginning of haystack.
-        * @return bool If needle is not found, stripos() will return boolean false.
-        */
-       function stripos($haystack, $needle, $offset = 0)
-       {
-               if (function_exists('stripos'))
-               {
-                       return stripos($haystack, $needle, $offset);
-               }
-               else
-               {
-                       if (is_string($needle))
-                       {
-                               $needle = strtolower($needle);
-                       }
-                       elseif (is_int($needle) || is_bool($needle) || is_double($needle))
-                       {
-                               $needle = strtolower(chr($needle));
-                       }
-                       else
-                       {
-                               trigger_error('needle is not a string or an integer', E_USER_WARNING);
-                               return false;
-                       }
-
-                       return strpos(strtolower($haystack), $needle, $offset);
-               }
-       }
-
-       /**
-        * Similar to parse_str()
-        *
-        * Returns an associative array of name/value pairs, where the value is an
-        * array of values that have used the same name
-        *
-        * @static
-        * @access string
-        * @param string $str The input string.
-        * @return array
-        */
-       function parse_str($str)
-       {
-               $return = array();
-               $str = explode('&', $str);
-
-               foreach ($str as $section)
-               {
-                       if (strpos($section, '=') !== false)
-                       {
-                               list($name, $value) = explode('=', $section, 2);
-                               $return[urldecode($name)][] = urldecode($value);
-                       }
-                       else
-                       {
-                               $return[urldecode($section)][] = null;
-                       }
-               }
-
-               return $return;
-       }
-
-       /**
-        * Detect XML encoding, as per XML 1.0 Appendix F.1
-        *
-        * @todo Add support for EBCDIC
-        * @param string $data XML data
-        * @return array Possible encodings
-        */
-       function xml_encoding($data)
-       {
-               // UTF-32 Big Endian BOM
-               if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
-               {
-                       $encoding[] = 'UTF-32BE';
-               }
-               // UTF-32 Little Endian BOM
-               elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
-               {
-                       $encoding[] = 'UTF-32LE';
-               }
-               // UTF-16 Big Endian BOM
-               elseif (substr($data, 0, 2) === "\xFE\xFF")
-               {
-                       $encoding[] = 'UTF-16BE';
-               }
-               // UTF-16 Little Endian BOM
-               elseif (substr($data, 0, 2) === "\xFF\xFE")
-               {
-                       $encoding[] = 'UTF-16LE';
-               }
-               // UTF-8 BOM
-               elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
-               {
-                       $encoding[] = 'UTF-8';
-               }
-               // UTF-32 Big Endian Without BOM
-               elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C")
-               {
-                       if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E"))
-                       {
-                               $parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8'));
-                               if ($parser->parse())
-                               {
-                                       $encoding[] = $parser->encoding;
-                               }
-                       }
-                       $encoding[] = 'UTF-32BE';
-               }
-               // UTF-32 Little Endian Without BOM
-               elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00")
-               {
-                       if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00"))
-                       {
-                               $parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8'));
-                               if ($parser->parse())
-                               {
-                                       $encoding[] = $parser->encoding;
-                               }
-                       }
-                       $encoding[] = 'UTF-32LE';
-               }
-               // UTF-16 Big Endian Without BOM
-               elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C")
-               {
-                       if ($pos = strpos($data, "\x00\x3F\x00\x3E"))
-                       {
-                               $parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8'));
-                               if ($parser->parse())
-                               {
-                                       $encoding[] = $parser->encoding;
-                               }
-                       }
-                       $encoding[] = 'UTF-16BE';
-               }
-               // UTF-16 Little Endian Without BOM
-               elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00")
-               {
-                       if ($pos = strpos($data, "\x3F\x00\x3E\x00"))
-                       {
-                               $parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8'));
-                               if ($parser->parse())
-                               {
-                                       $encoding[] = $parser->encoding;
-                               }
-                       }
-                       $encoding[] = 'UTF-16LE';
-               }
-               // US-ASCII (or superset)
-               elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C")
-               {
-                       if ($pos = strpos($data, "\x3F\x3E"))
-                       {
-                               $parser =& new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
-                               if ($parser->parse())
-                               {
-                                       $encoding[] = $parser->encoding;
-                               }
-                       }
-                       $encoding[] = 'UTF-8';
-               }
-               // Fallback to UTF-8
-               else
-               {
-                       $encoding[] = 'UTF-8';
-               }
-               return $encoding;
-       }
-
-       function output_javascript()
-       {
-               if (function_exists('ob_gzhandler'))
-               {
-                       ob_start('ob_gzhandler');
-               }
-               header('Content-type: text/javascript; charset: UTF-8');
-               header('Cache-Control: must-revalidate');
-               header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
-               ?>
-function embed_odeo(link) {
-       document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
-}
-
-function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
-       if (placeholder != '') {
-               document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
-       }
-       else {
-               document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
-       }
-}
-
-function embed_flash(bgcolor, width, height, link, loop, type) {
-       document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
-}
-
-function embed_flv(width, height, link, placeholder, loop, player) {
-       document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
-}
-
-function embed_wmedia(width, height, link) {
-       document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
-}
-               <?php
-       }
-
-
-
-       /**
-        * Format debugging information
-        */
-       function debug($sp)
-       {
-               $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
-               $info .= 'PHP ' . PHP_VERSION . "\n";
-               if ($sp->error() !== null)
-               {
-                       $info .= 'Error occurred: ' . $sp->error() . "\n";
-               }
-               else
-               {
-                       $info .= "No error found.\n";
-               }
-               $info .= "Extensions:\n";
-               $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
-               foreach ($extensions as $ext)
-               {
-                       if (extension_loaded($ext))
-                       {
-                               $info .= "    $ext loaded\n";
-                               switch ($ext)
-                               {
-                                       case 'pcre':
-                                               $info .= '      Version ' . PCRE_VERSION . "\n";
-                                               break;
-                                       case 'curl':
-                                               $version = curl_version();
-                                               $info .= '      Version ' . $version['version'] . "\n";
-                                               break;
-                                       case 'mbstring':
-                                               $info .= '      Overloading: ' . mb_get_info('func_overload') . "\n";
-                                               break;
-                                       case 'iconv':
-                                               $info .= '      Version ' . ICONV_VERSION . "\n";
-                                               break;
-                                       case 'xml':
-                                               $info .= '      Version ' . LIBXML_DOTTED_VERSION . "\n";
-                                               break;
-                               }
-                       }
-                       else
-                       {
-                               $info .= "    $ext not loaded\n";
-                       }
-               }
-               return $info;
-       }
-}
-
-/**
- * Decode HTML Entities
- *
- * This implements HTML5 as of revision 967 (2007-06-28)
- *
- * @package SimplePie
- */
-class SimplePie_Decode_HTML_Entities
-{
-       /**
-        * Data to be parsed
-        *
-        * @access private
-        * @var string
-        */
-       var $data = '';
-
-       /**
-        * Currently consumed bytes
-        *
-        * @access private
-        * @var string
-        */
-       var $consumed = '';
-
-       /**
-        * Position of the current byte being parsed
-        *
-        * @access private
-        * @var int
-        */
-       var $position = 0;
-
-       /**
-        * Create an instance of the class with the input data
-        *
-        * @access public
-        * @param string $data Input data
-        */
-       function SimplePie_Decode_HTML_Entities($data)
-       {
-               $this->data = $data;
-       }
-
-       /**
-        * Parse the input data
-        *
-        * @access public
-        * @return string Output data
-        */
-       function parse()
-       {
-               while (($this->position = strpos($this->data, '&', $this->position)) !== false)
-               {
-                       $this->consume();
-                       $this->entity();
-                       $this->consumed = '';
-               }
-               return $this->data;
-       }
-
-       /**
-        * Consume the next byte
-        *
-        * @access private
-        * @return mixed The next byte, or false, if there is no more data
-        */
-       function consume()
-       {
-               if (isset($this->data[$this->position]))
-               {
-                       $this->consumed .= $this->data[$this->position];
-                       return $this->data[$this->position++];
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Consume a range of characters
-        *
-        * @access private
-        * @param string $chars Characters to consume
-        * @return mixed A series of characters that match the range, or false
-        */
-       function consume_range($chars)
-       {
-               if ($len = strspn($this->data, $chars, $this->position))
-               {
-                       $data = substr($this->data, $this->position, $len);
-                       $this->consumed .= $data;
-                       $this->position += $len;
-                       return $data;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Unconsume one byte
-        *
-        * @access private
-        */
-       function unconsume()
-       {
-               $this->consumed = substr($this->consumed, 0, -1);
-               $this->position--;
-       }
-
-       /**
-        * Decode an entity
-        *
-        * @access private
-        */
-       function entity()
-       {
-               switch ($this->consume())
-               {
-                       case "\x09":
-                       case "\x0A":
-                       case "\x0B":
-                       case "\x0B":
-                       case "\x0C":
-                       case "\x20":
-                       case "\x3C":
-                       case "\x26":
-                       case false:
-                               break;
-
-                       case "\x23":
-                               switch ($this->consume())
-                               {
-                                       case "\x78":
-                                       case "\x58":
-                                               $range = '0123456789ABCDEFabcdef';
-                                               $hex = true;
-                                               break;
-
-                                       default:
-                                               $range = '0123456789';
-                                               $hex = false;
-                                               $this->unconsume();
-                                               break;
-                               }
-
-                               if ($codepoint = $this->consume_range($range))
-                               {
-                                       static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
-
-                                       if ($hex)
-                                       {
-                                               $codepoint = hexdec($codepoint);
-                                       }
-                                       else
-                                       {
-                                               $codepoint = intval($codepoint);
-                                       }
-
-                                       if (isset($windows_1252_specials[$codepoint]))
-                                       {
-                                               $replacement = $windows_1252_specials[$codepoint];
-                                       }
-                                       else
-                                       {
-                                               $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
-                                       }
-
-                                       if (!in_array($this->consume(), array(';', false), true))
-                                       {
-                                               $this->unconsume();
-                                       }
-
-                                       $consumed_length = strlen($this->consumed);
-                                       $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
-                                       $this->position += strlen($replacement) - $consumed_length;
-                               }
-                               break;
-
-                       default:
-                               static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C");
-
-                               for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++)
-                               {
-                                       $consumed = substr($this->consumed, 1);
-                                       if (isset($entities[$consumed]))
-                                       {
-                                               $match = $consumed;
-                                       }
-                               }
-
-                               if ($match !== null)
-                               {
-                                       $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
-                                       $this->position += strlen($entities[$match]) - strlen($consumed) - 1;
-                               }
-                               break;
-               }
-       }
-}
-
-/**
- * IRI parser/serialiser
- *
- * @package SimplePie
- */
-class SimplePie_IRI
-{
-       /**
-        * Scheme
-        *
-        * @access private
-        * @var string
-        */
-       var $scheme;
-
-       /**
-        * User Information
-        *
-        * @access private
-        * @var string
-        */
-       var $userinfo;
-
-       /**
-        * Host
-        *
-        * @access private
-        * @var string
-        */
-       var $host;
-
-       /**
-        * Port
-        *
-        * @access private
-        * @var string
-        */
-       var $port;
-
-       /**
-        * Path
-        *
-        * @access private
-        * @var string
-        */
-       var $path;
-
-       /**
-        * Query
-        *
-        * @access private
-        * @var string
-        */
-       var $query;
-
-       /**
-        * Fragment
-        *
-        * @access private
-        * @var string
-        */
-       var $fragment;
-
-       /**
-        * Whether the object represents a valid IRI
-        *
-        * @access private
-        * @var array
-        */
-       var $valid = array();
-
-       /**
-        * Return the entire IRI when you try and read the object as a string
-        *
-        * @access public
-        * @return string
-        */
-       function __toString()
-       {
-               return $this->get_iri();
-       }
-
-       /**
-        * Create a new IRI object, from a specified string
-        *
-        * @access public
-        * @param string $iri
-        * @return SimplePie_IRI
-        */
-       function SimplePie_IRI($iri)
-       {
-               $iri = (string) $iri;
-               if ($iri !== '')
-               {
-                       $parsed = $this->parse_iri($iri);
-                       $this->set_scheme($parsed['scheme']);
-                       $this->set_authority($parsed['authority']);
-                       $this->set_path($parsed['path']);
-                       $this->set_query($parsed['query']);
-                       $this->set_fragment($parsed['fragment']);
-               }
-       }
-
-       /**
-        * Create a new IRI object by resolving a relative IRI
-        *
-        * @static
-        * @access public
-        * @param SimplePie_IRI $base Base IRI
-        * @param string $relative Relative IRI
-        * @return SimplePie_IRI
-        */
-       function absolutize($base, $relative)
-       {
-               $relative = (string) $relative;
-               if ($relative !== '')
-               {
-                       $relative =& new SimplePie_IRI($relative);
-                       if ($relative->get_scheme() !== null)
-                       {
-                               $target = $relative;
-                       }
-                       elseif ($base->get_iri() !== null)
-                       {
-                               if ($relative->get_authority() !== null)
-                               {
-                                       $target = $relative;
-                                       $target->set_scheme($base->get_scheme());
-                               }
-                               else
-                               {
-                                       $target =& new SimplePie_IRI('');
-                                       $target->set_scheme($base->get_scheme());
-                                       $target->set_userinfo($base->get_userinfo());
-                                       $target->set_host($base->get_host());
-                                       $target->set_port($base->get_port());
-                                       if ($relative->get_path() !== null)
-                                       {
-                                               if (strpos($relative->get_path(), '/') === 0)
-                                               {
-                                                       $target->set_path($relative->get_path());
-                                               }
-                                               elseif (($base->get_userinfo() !== null || $base->get_host() !== null || $base->get_port() !== null) && $base->get_path() === null)
-                                               {
-                                                       $target->set_path('/' . $relative->get_path());
-                                               }
-                                               elseif (($last_segment = strrpos($base->get_path(), '/')) !== false)
-                                               {
-                                                       $target->set_path(substr($base->get_path(), 0, $last_segment + 1) . $relative->get_path());
-                                               }
-                                               else
-                                               {
-                                                       $target->set_path($relative->get_path());
-                                               }
-                                               $target->set_query($relative->get_query());
-                                       }
-                                       else
-                                       {
-                                               $target->set_path($base->get_path());
-                                               if ($relative->get_query() !== null)
-                                               {
-                                                       $target->set_query($relative->get_query());
-                                               }
-                                               elseif ($base->get_query() !== null)
-                                               {
-                                                       $target->set_query($base->get_query());
-                                               }
-                                       }
-                               }
-                               $target->set_fragment($relative->get_fragment());
-                       }
-                       else
-                       {
-                               // No base URL, just return the relative URL
-                               $target = $relative;
-                       }
-               }
-               else
-               {
-                       $target = $base;
-               }
-               return $target;
-       }
-
-       /**
-        * Parse an IRI into scheme/authority/path/query/fragment segments
-        *
-        * @access private
-        * @param string $iri
-        * @return array
-        */
-       function parse_iri($iri)
-       {
-               preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $iri, $match);
-               for ($i = count($match); $i <= 9; $i++)
-               {
-                       $match[$i] = '';
-               }
-               return array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
-       }
-
-       /**
-        * Remove dot segments from a path
-        *
-        * @access private
-        * @param string $input
-        * @return string
-        */
-       function remove_dot_segments($input)
-       {
-               $output = '';
-               while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..')
-               {
-                       // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
-                       if (strpos($input, '../') === 0)
-                       {
-                               $input = substr($input, 3);
-                       }
-                       elseif (strpos($input, './') === 0)
-                       {
-                               $input = substr($input, 2);
-                       }
-                       // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
-                       elseif (strpos($input, '/./') === 0)
-                       {
-                               $input = substr_replace($input, '/', 0, 3);
-                       }
-                       elseif ($input === '/.')
-                       {
-                               $input = '/';
-                       }
-                       // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
-                       elseif (strpos($input, '/../') === 0)
-                       {
-                               $input = substr_replace($input, '/', 0, 4);
-                               $output = substr_replace($output, '', strrpos($output, '/'));
-                       }
-                       elseif ($input === '/..')
-                       {
-                               $input = '/';
-                               $output = substr_replace($output, '', strrpos($output, '/'));
-                       }
-                       // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
-                       elseif ($input === '.' || $input === '..')
-                       {
-                               $input = '';
-                       }
-                       // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
-                       elseif (($pos = strpos($input, '/', 1)) !== false)
-                       {
-                               $output .= substr($input, 0, $pos);
-                               $input = substr_replace($input, '', 0, $pos);
-                       }
-                       else
-                       {
-                               $output .= $input;
-                               $input = '';
-                       }
-               }
-               return $output . $input;
-       }
-
-       /**
-        * Replace invalid character with percent encoding
-        *
-        * @param string $string Input string
-        * @param string $valid_chars Valid characters
-        * @param int $case Normalise case
-        * @return string
-        */
-       function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE, $iprivate = false)
-       {
-               // Normalize as many pct-encoded sections as possible
-               $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array(&$this, 'remove_iunreserved_percent_encoded'), $string);
-
-               // Replace invalid percent characters
-               $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
-
-               // Add unreserved and % to $valid_chars (the latter is safe because all
-               // pct-encoded sections are now valid).
-               $valid_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
-
-               // Now replace any bytes that aren't allowed with their pct-encoded versions
-               $position = 0;
-               $strlen = strlen($string);
-               while (($position += strspn($string, $valid_chars, $position)) < $strlen)
-               {
-                       $value = ord($string[$position]);
-
-                       // Start position
-                       $start = $position;
-
-                       // By default we are valid
-                       $valid = true;
-
-                       // No one byte sequences are valid due to the while.
-                       // Two byte sequence:
-                       if (($value & 0xE0) === 0xC0)
-                       {
-                               $character = ($value & 0x1F) << 6;
-                               $length = 2;
-                               $remaining = 1;
-                       }
-                       // Three byte sequence:
-                       elseif (($value & 0xF0) === 0xE0)
-                       {
-                               $character = ($value & 0x0F) << 12;
-                               $length = 3;
-                               $remaining = 2;
-                       }
-                       // Four byte sequence:
-                       elseif (($value & 0xF8) === 0xF0)
-                       {
-                               $character = ($value & 0x07) << 18;
-                               $length = 4;
-                               $remaining = 3;
-                       }
-                       // Invalid byte:
-                       else
-                       {
-                               $valid = false;
-                               $length = 1;
-                               $remaining = 0;
-                       }
-
-                       if ($remaining)
-                       {
-                               if ($position + $length <= $strlen)
-                               {
-                                       for ($position++; $remaining; $position++)
-                                       {
-                                               $value = ord($string[$position]);
-
-                                               // Check that the byte is valid, then add it to the character:
-                                               if (($value & 0xC0) === 0x80)
-                                               {
-                                                       $character |= ($value & 0x3F) << (--$remaining * 6);
-                                               }
-                                               // If it is invalid, count the sequence as invalid and reprocess the current byte:
-                                               else
-                                               {
-                                                       $valid = false;
-                                                       $position--;
-                                                       break;
-                                               }
-                                       }
-                               }
-                               else
-                               {
-                                       $position = $strlen - 1;
-                                       $valid = false;
-                               }
-                       }
-
-                       // Percent encode anything invalid or not in ucschar
-                       if (
-                               // Invalid sequences
-                               !$valid
-                               // Non-shortest form sequences are invalid
-                               || $length > 1 && $character <= 0x7F
-                               || $length > 2 && $character <= 0x7FF
-                               || $length > 3 && $character <= 0xFFFF
-                               // Outside of range of ucschar codepoints
-                               // Noncharacters
-                               || ($character & 0xFFFE) === 0xFFFE
-                               || $character >= 0xFDD0 && $character <= 0xFDEF
-                               || (
-                                       // Everything else not in ucschar
-                                          $character > 0xD7FF && $character < 0xF900
-                                       || $character < 0xA0
-                                       || $character > 0xEFFFD
-                               )
-                               && (
-                                       // Everything not in iprivate, if it applies
-                                          !$iprivate
-                                       || $character < 0xE000
-                                       || $character > 0x10FFFD
-                               )
-                       )
-                       {
-                               // If we were a character, pretend we weren't, but rather an error.
-                               if ($valid)
-                                       $position--;
-
-                               for ($j = $start; $j <= $position; $j++)
-                               {
-                                       $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
-                                       $j += 2;
-                                       $position += 2;
-                                       $strlen += 2;
-                               }
-                       }
-               }
-
-               // Normalise case
-               if ($case & SIMPLEPIE_LOWERCASE)
-               {
-                       $string = strtolower($string);
-               }
-               elseif ($case & SIMPLEPIE_UPPERCASE)
-               {
-                       $string = strtoupper($string);
-               }
-
-               return $string;
-       }
-
-       /**
-        * Callback function for preg_replace_callback.
-        *
-        * Removes sequences of percent encoded bytes that represent UTF-8
-        * encoded characters in iunreserved
-        *
-        * @access private
-        * @param array $match PCRE match
-        * @return string Replacement
-        */
-       function remove_iunreserved_percent_encoded($match)
-       {
-               // As we just have valid percent encoded sequences we can just explode
-               // and ignore the first member of the returned array (an empty string).
-               $bytes = explode('%', $match[0]);
-
-               // Initialize the new string (this is what will be returned) and that
-               // there are no bytes remaining in the current sequence (unsurprising
-               // at the first byte!).
-               $string = '';
-               $remaining = 0;
-
-               // Loop over each and every byte, and set $value to its value
-               for ($i = 1, $len = count($bytes); $i < $len; $i++)
-               {
-                       $value = hexdec($bytes[$i]);
-
-                       // If we're the first byte of sequence:
-                       if (!$remaining)
-                       {
-                               // Start position
-                               $start = $i;
-
-                               // By default we are valid
-                               $valid = true;
-
-                               // One byte sequence:
-                               if ($value <= 0x7F)
-                               {
-                                       $character = $value;
-                                       $length = 1;
-                               }
-                               // Two byte sequence:
-                               elseif (($value & 0xE0) === 0xC0)
-                               {
-                                       $character = ($value & 0x1F) << 6;
-                                       $length = 2;
-                                       $remaining = 1;
-                               }
-                               // Three byte sequence:
-                               elseif (($value & 0xF0) === 0xE0)
-                               {
-                                       $character = ($value & 0x0F) << 12;
-                                       $length = 3;
-                                       $remaining = 2;
-                               }
-                               // Four byte sequence:
-                               elseif (($value & 0xF8) === 0xF0)
-                               {
-                                       $character = ($value & 0x07) << 18;
-                                       $length = 4;
-                                       $remaining = 3;
-                               }
-                               // Invalid byte:
-                               else
-                               {
-                                       $valid = false;
-                                       $remaining = 0;
-                               }
-                       }
-                       // Continuation byte:
-                       else
-                       {
-                               // Check that the byte is valid, then add it to the character:
-                               if (($value & 0xC0) === 0x80)
-                               {
-                                       $remaining--;
-                                       $character |= ($value & 0x3F) << ($remaining * 6);
-                               }
-                               // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
-                               else
-                               {
-                                       $valid = false;
-                                       $remaining = 0;
-                                       $i--;
-                               }
-                       }
-
-                       // If we've reached the end of the current byte sequence, append it to Unicode::$data
-                       if (!$remaining)
-                       {
-                               // Percent encode anything invalid or not in iunreserved
-                               if (
-                                       // Invalid sequences
-                                       !$valid
-                                       // Non-shortest form sequences are invalid
-                                       || $length > 1 && $character <= 0x7F
-                                       || $length > 2 && $character <= 0x7FF
-                                       || $length > 3 && $character <= 0xFFFF
-                                       // Outside of range of iunreserved codepoints
-                                       || $character < 0x2D
-                                       || $character > 0xEFFFD
-                                       // Noncharacters
-                                       || ($character & 0xFFFE) === 0xFFFE
-                                       || $character >= 0xFDD0 && $character <= 0xFDEF
-                                       // Everything else not in iunreserved (this is all BMP)
-                                       || $character === 0x2F
-                                       || $character > 0x39 && $character < 0x41
-                                       || $character > 0x5A && $character < 0x61
-                                       || $character > 0x7A && $character < 0x7E
-                                       || $character > 0x7E && $character < 0xA0
-                                       || $character > 0xD7FF && $character < 0xF900
-                               )
-                               {
-                                       for ($j = $start; $j <= $i; $j++)
-                                       {
-                                               $string .= '%' . strtoupper($bytes[$j]);
-                                       }
-                               }
-                               else
-                               {
-                                       for ($j = $start; $j <= $i; $j++)
-                                       {
-                                               $string .= chr(hexdec($bytes[$j]));
-                                       }
-                               }
-                       }
-               }
-
-               // If we have any bytes left over they are invalid (i.e., we are
-               // mid-way through a multi-byte sequence)
-               if ($remaining)
-               {
-                       for ($j = $start; $j < $len; $j++)
-                       {
-                               $string .= '%' . strtoupper($bytes[$j]);
-                       }
-               }
-
-               return $string;
-       }
-
-       /**
-        * Check if the object represents a valid IRI
-        *
-        * @access public
-        * @return bool
-        */
-       function is_valid()
-       {
-               return array_sum($this->valid) === count($this->valid);
-       }
-
-       /**
-        * Set the scheme. Returns true on success, false on failure (if there are
-        * any invalid characters).
-        *
-        * @access public
-        * @param string $scheme
-        * @return bool
-        */
-       function set_scheme($scheme)
-       {
-               if ($scheme === null || $scheme === '')
-               {
-                       $this->scheme = null;
-               }
-               else
-               {
-                       $len = strlen($scheme);
-                       switch (true)
-                       {
-                               case $len > 1:
-                                       if (!strspn($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-.', 1))
-                                       {
-                                               $this->scheme = null;
-                                               $this->valid[__FUNCTION__] = false;
-                                               return false;
-                                       }
-
-                               case $len > 0:
-                                       if (!strspn($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 0, 1))
-                                       {
-                                               $this->scheme = null;
-                                               $this->valid[__FUNCTION__] = false;
-                                               return false;
-                                       }
-                       }
-                       $this->scheme = strtolower($scheme);
-               }
-               $this->valid[__FUNCTION__] = true;
-               return true;
-       }
-
-       /**
-        * Set the authority. Returns true on success, false on failure (if there are
-        * any invalid characters).
-        *
-        * @access public
-        * @param string $authority
-        * @return bool
-        */
-       function set_authority($authority)
-       {
-               if (($userinfo_end = strrpos($authority, '@')) !== false)
-               {
-                       $userinfo = substr($authority, 0, $userinfo_end);
-                       $authority = substr($authority, $userinfo_end + 1);
-               }
-               else
-               {
-                       $userinfo = null;
-               }
-
-               if (($port_start = strpos($authority, ':')) !== false)
-               {
-                       $port = substr($authority, $port_start + 1);
-                       $authority = substr($authority, 0, $port_start);
-               }
-               else
-               {
-                       $port = null;
-               }
-
-               return $this->set_userinfo($userinfo) && $this->set_host($authority) && $this->set_port($port);
-       }
-
-       /**
-        * Set the userinfo.
-        *
-        * @access public
-        * @param string $userinfo
-        * @return bool
-        */
-       function set_userinfo($userinfo)
-       {
-               if ($userinfo === null || $userinfo === '')
-               {
-                       $this->userinfo = null;
-               }
-               else
-               {
-                       $this->userinfo = $this->replace_invalid_with_pct_encoding($userinfo, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:');
-               }
-               $this->valid[__FUNCTION__] = true;
-               return true;
-       }
-
-       /**
-        * Set the host. Returns true on success, false on failure (if there are
-        * any invalid characters).
-        *
-        * @access public
-        * @param string $host
-        * @return bool
-        */
-       function set_host($host)
-       {
-               if ($host === null || $host === '')
-               {
-                       $this->host = null;
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-               elseif ($host[0] === '[' && substr($host, -1) === ']')
-               {
-                       if (SimplePie_Net_IPv6::checkIPv6(substr($host, 1, -1)))
-                       {
-                               $this->host = $host;
-                               $this->valid[__FUNCTION__] = true;
-                               return true;
-                       }
-                       else
-                       {
-                               $this->host = null;
-                               $this->valid[__FUNCTION__] = false;
-                               return false;
-                       }
-               }
-               else
-               {
-                       $this->host = $this->replace_invalid_with_pct_encoding($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=', SIMPLEPIE_LOWERCASE);
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-       }
-
-       /**
-        * Set the port. Returns true on success, false on failure (if there are
-        * any invalid characters).
-        *
-        * @access public
-        * @param string $port
-        * @return bool
-        */
-       function set_port($port)
-       {
-               if ($port === null || $port === '')
-               {
-                       $this->port = null;
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-               elseif (strspn($port, '0123456789') === strlen($port))
-               {
-                       $this->port = (int) $port;
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-               else
-               {
-                       $this->port = null;
-                       $this->valid[__FUNCTION__] = false;
-                       return false;
-               }
-       }
-
-       /**
-        * Set the path.
-        *
-        * @access public
-        * @param string $path
-        * @return bool
-        */
-       function set_path($path)
-       {
-               if ($path === null || $path === '')
-               {
-                       $this->path = null;
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-               elseif (substr($path, 0, 2) === '//' && $this->userinfo === null && $this->host === null && $this->port === null)
-               {
-                       $this->path = null;
-                       $this->valid[__FUNCTION__] = false;
-                       return false;
-               }
-               else
-               {
-                       $this->path = $this->replace_invalid_with_pct_encoding($path, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=@/');
-                       if ($this->scheme !== null)
-                       {
-                               $this->path = $this->remove_dot_segments($this->path);
-                       }
-                       $this->valid[__FUNCTION__] = true;
-                       return true;
-               }
-       }
-
-       /**
-        * Set the query.
-        *
-        * @access public
-        * @param string $query
-        * @return bool
-        */
-       function set_query($query)
-       {
-               if ($query === null || $query === '')
-               {
-                       $this->query = null;
-               }
-               else
-               {
-                       $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$\'()*+,;:@/?&=');
-               }
-               $this->valid[__FUNCTION__] = true;
-               return true;
-       }
-
-       /**
-        * Set the fragment.
-        *
-        * @access public
-        * @param string $fragment
-        * @return bool
-        */
-       function set_fragment($fragment)
-       {
-               if ($fragment === null || $fragment === '')
-               {
-                       $this->fragment = null;
-               }
-               else
-               {
-                       $this->fragment = $this->replace_invalid_with_pct_encoding($fragment, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:@/?');
-               }
-               $this->valid[__FUNCTION__] = true;
-               return true;
-       }
-
-       /**
-        * Get the complete IRI
-        *
-        * @access public
-        * @return string
-        */
-       function get_iri()
-       {
-               $iri = '';
-               if ($this->scheme !== null)
-               {
-                       $iri .= $this->scheme . ':';
-               }
-               if (($authority = $this->get_authority()) !== null)
-               {
-                       $iri .= '//' . $authority;
-               }
-               if ($this->path !== null)
-               {
-                       $iri .= $this->path;
-               }
-               if ($this->query !== null)
-               {
-                       $iri .= '?' . $this->query;
-               }
-               if ($this->fragment !== null)
-               {
-                       $iri .= '#' . $this->fragment;
-               }
-
-               if ($iri !== '')
-               {
-                       return $iri;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Get the scheme
-        *
-        * @access public
-        * @return string
-        */
-       function get_scheme()
-       {
-               return $this->scheme;
-       }
-
-       /**
-        * Get the complete authority
-        *
-        * @access public
-        * @return string
-        */
-       function get_authority()
-       {
-               $authority = '';
-               if ($this->userinfo !== null)
-               {
-                       $authority .= $this->userinfo . '@';
-               }
-               if ($this->host !== null)
-               {
-                       $authority .= $this->host;
-               }
-               if ($this->port !== null)
-               {
-                       $authority .= ':' . $this->port;
-               }
-
-               if ($authority !== '')
-               {
-                       return $authority;
-               }
-               else
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Get the user information
-        *
-        * @access public
-        * @return string
-        */
-       function get_userinfo()
-       {
-               return $this->userinfo;
-       }
-
-       /**
-        * Get the host
-        *
-        * @access public
-        * @return string
-        */
-       function get_host()
-       {
-               return $this->host;
-       }
-
-       /**
-        * Get the port
-        *
-        * @access public
-        * @return string
-        */
-       function get_port()
-       {
-               return $this->port;
-       }
-
-       /**
-        * Get the path
-        *
-        * @access public
-        * @return string
-        */
-       function get_path()
-       {
-               return $this->path;
-       }
-
-       /**
-        * Get the query
-        *
-        * @access public
-        * @return string
-        */
-       function get_query()
-       {
-               return $this->query;
-       }
-
-       /**
-        * Get the fragment
-        *
-        * @access public
-        * @return string
-        */
-       function get_fragment()
-       {
-               return $this->fragment;
-       }
-}
-
-/**
- * Class to validate and to work with IPv6 addresses.
- *
- * @package SimplePie
- * @copyright 2003-2005 The PHP Group
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @link http://pear.php.net/package/Net_IPv6
- * @author Alexander Merz <alexander.merz@web.de>
- * @author elfrink at introweb dot nl
- * @author Josh Peck <jmp at joshpeck dot org>
- * @author Geoffrey Sneddon <geoffers@gmail.com>
- */
-class SimplePie_Net_IPv6
-{
-       /**
-        * Removes a possible existing netmask specification of an IP address.
-        *
-        * @param string $ip the (compressed) IP as Hex representation
-        * @return string the IP the without netmask
-        * @since 1.1.0
-        * @access public
-        * @static
-        */
-       function removeNetmaskSpec($ip)
-       {
-               if (strpos($ip, '/') !== false)
-               {
-                       list($addr, $nm) = explode('/', $ip);
-               }
-               else
-               {
-                       $addr = $ip;
-               }
-               return $addr;
-       }
-
-       /**
-        * Uncompresses an IPv6 address
-        *
-        * RFC 2373 allows you to compress zeros in an address to '::'. This
-        * function expects an valid IPv6 address and expands the '::' to
-        * the required zeros.
-        *
-        * Example:      FF01::101      ->      FF01:0:0:0:0:0:0:101
-        *                       ::1            ->      0:0:0:0:0:0:0:1
-        *
-        * @access public
-        * @static
-        * @param string $ip a valid IPv6-address (hex format)
-        * @return string the uncompressed IPv6-address (hex format)
-        */
-       function Uncompress($ip)
-       {
-               $uip = SimplePie_Net_IPv6::removeNetmaskSpec($ip);
-               $c1 = -1;
-               $c2 = -1;
-               if (strpos($ip, '::') !== false)
-               {
-                       list($ip1, $ip2) = explode('::', $ip);
-                       if ($ip1 === '')
-                       {
-                               $c1 = -1;
-                       }
-                       else
-                       {
-                               $pos = 0;
-                               if (($pos = substr_count($ip1, ':')) > 0)
-                               {
-                                       $c1 = $pos;
-                               }
-                               else
-                               {
-                                       $c1 = 0;
-                               }
-                       }
-                       if ($ip2 === '')
-                       {
-                               $c2 = -1;
-                       }
-                       else
-                       {
-                               $pos = 0;
-                               if (($pos = substr_count($ip2, ':')) > 0)
-                               {
-                                       $c2 = $pos;
-                               }
-                               else
-                               {
-                                       $c2 = 0;
-                               }
-                       }
-                       if (strstr($ip2, '.'))
-                       {
-                               $c2++;
-                       }
-                       // ::
-                       if ($c1 === -1 && $c2 === -1)
-                       {
-                               $uip = '0:0:0:0:0:0:0:0';
-                       }
-                       // ::xxx
-                       else if ($c1 === -1)
-                       {
-                               $fill = str_repeat('0:', 7 - $c2);
-                               $uip =  str_replace('::', $fill, $uip);
-                       }
-                       // xxx::
-                       else if ($c2 === -1)
-                       {
-                               $fill = str_repeat(':0', 7 - $c1);
-                               $uip =  str_replace('::', $fill, $uip);
-                       }
-                       // xxx::xxx
-                       else
-                       {
-                               $fill = str_repeat(':0:', 6 - $c2 - $c1);
-                               $uip =  str_replace('::', $fill, $uip);
-                               $uip =  str_replace('::', ':', $uip);
-                       }
-               }
-               return $uip;
-       }
-
-       /**
-        * Splits an IPv6 address into the IPv6 and a possible IPv4 part
-        *
-        * RFC 2373 allows you to note the last two parts of an IPv6 address as
-        * an IPv4 compatible address
-        *
-        * Example:      0:0:0:0:0:0:13.1.68.3
-        *                       0:0:0:0:0:FFFF:129.144.52.38
-        *
-        * @access public
-        * @static
-        * @param string $ip a valid IPv6-address (hex format)
-        * @return array [0] contains the IPv6 part, [1] the IPv4 part (hex format)
-        */
-       function SplitV64($ip)
-       {
-               $ip = SimplePie_Net_IPv6::Uncompress($ip);
-               if (strstr($ip, '.'))
-               {
-                       $pos = strrpos($ip, ':');
-                       $ip[$pos] = '_';
-                       $ipPart = explode('_', $ip);
-                       return $ipPart;
-               }
-               else
-               {
-                       return array($ip, '');
-               }
-       }
-
-       /**
-        * Checks an IPv6 address
-        *
-        * Checks if the given IP is IPv6-compatible
-        *
-        * @access public
-        * @static
-        * @param string $ip a valid IPv6-address
-        * @return bool true if $ip is an IPv6 address
-        */
-       function checkIPv6($ip)
-       {
-               $ipPart = SimplePie_Net_IPv6::SplitV64($ip);
-               $count = 0;
-               if (!empty($ipPart[0]))
-               {
-                       $ipv6 = explode(':', $ipPart[0]);
-                       for ($i = 0; $i < count($ipv6); $i++)
-                       {
-                               $dec = hexdec($ipv6[$i]);
-                               $hex = strtoupper(preg_replace('/^[0]{1,3}(.*[0-9a-fA-F])$/', '\\1', $ipv6[$i]));
-                               if ($ipv6[$i] >= 0 && $dec <= 65535 && $hex === strtoupper(dechex($dec)))
-                               {
-                                       $count++;
-                               }
-                       }
-                       if ($count === 8)
-                       {
-                               return true;
-                       }
-                       elseif ($count === 6 && !empty($ipPart[1]))
-                       {
-                               $ipv4 = explode('.', $ipPart[1]);
-                               $count = 0;
-                               foreach ($ipv4 as $ipv4_part)
-                               {
-                                       if ($ipv4_part >= 0 && $ipv4_part <= 255 && preg_match('/^\d{1,3}$/', $ipv4_part))
-                                       {
-                                               $count++;
-                                       }
-                               }
-                               if ($count === 4)
-                               {
-                                       return true;
-                               }
-                       }
-                       else
-                       {
-                               return false;
-                       }
-
-               }
-               else
-               {
-                       return false;
-               }
-       }
-}
-
-/**
- * Date Parser
- *
- * @package SimplePie
- */
-class SimplePie_Parse_Date
-{
-       /**
-        * Input data
-        *
-        * @access protected
-        * @var string
-        */
-       var $date;
-
-       /**
-        * List of days, calendar day name => ordinal day number in the week
-        *
-        * @access protected
-        * @var array
-        */
-       var $day = array(
-               // English
-               'mon' => 1,
-               'monday' => 1,
-               'tue' => 2,
-               'tuesday' => 2,
-               'wed' => 3,
-               'wednesday' => 3,
-               'thu' => 4,
-               'thursday' => 4,
-               'fri' => 5,
-               'friday' => 5,
-               'sat' => 6,
-               'saturday' => 6,
-               'sun' => 7,
-               'sunday' => 7,
-               // Dutch
-               'maandag' => 1,
-               'dinsdag' => 2,
-               'woensdag' => 3,
-               'donderdag' => 4,
-               'vrijdag' => 5,
-               'zaterdag' => 6,
-               'zondag' => 7,
-               // French
-               'lundi' => 1,
-               'mardi' => 2,
-               'mercredi' => 3,
-               'jeudi' => 4,
-               'vendredi' => 5,
-               'samedi' => 6,
-               'dimanche' => 7,
-               // German
-               'montag' => 1,
-               'dienstag' => 2,
-               'mittwoch' => 3,
-               'donnerstag' => 4,
-               'freitag' => 5,
-               'samstag' => 6,
-               'sonnabend' => 6,
-               'sonntag' => 7,
-               // Italian
-               'lunedì' => 1,
-               'martedì' => 2,
-               'mercoledì' => 3,
-               'giovedì' => 4,
-               'venerdì' => 5,
-               'sabato' => 6,
-               'domenica' => 7,
-               // Spanish
-               'lunes' => 1,
-               'martes' => 2,
-               'miércoles' => 3,
-               'jueves' => 4,
-               'viernes' => 5,
-               'sábado' => 6,
-               'domingo' => 7,
-               // Finnish
-               'maanantai' => 1,
-               'tiistai' => 2,
-               'keskiviikko' => 3,
-               'torstai' => 4,
-               'perjantai' => 5,
-               'lauantai' => 6,
-               'sunnuntai' => 7,
-               // Hungarian
-               'hétfő' => 1,
-               'kedd' => 2,
-               'szerda' => 3,
-               'csütörtok' => 4,
-               'péntek' => 5,
-               'szombat' => 6,
-               'vasárnap' => 7,
-               // Greek
-               'Δευ' => 1,
-               'Τρι' => 2,
-               'Τετ' => 3,
-               'Πεμ' => 4,
-               'Παρ' => 5,
-               'Σαβ' => 6,
-               'Κυρ' => 7,
-       );
-
-       /**
-        * List of months, calendar month name => calendar month number
-        *
-        * @access protected
-        * @var array
-        */
-       var $month = array(
-               // English
-               'jan' => 1,
-               'january' => 1,
-               'feb' => 2,
-               'february' => 2,
-               'mar' => 3,
-               'march' => 3,
-               'apr' => 4,
-               'april' => 4,
-               'may' => 5,
-               // No long form of May
-               'jun' => 6,
-               'june' => 6,
-               'jul' => 7,
-               'july' => 7,
-               'aug' => 8,
-               'august' => 8,
-               'sep' => 9,
-               'september' => 8,
-               'oct' => 10,
-               'october' => 10,
-               'nov' => 11,
-               'november' => 11,
-               'dec' => 12,
-               'december' => 12,
-               // Dutch
-               'januari' => 1,
-               'februari' => 2,
-               'maart' => 3,
-               'april' => 4,
-               'mei' => 5,
-               'juni' => 6,
-               'juli' => 7,
-               'augustus' => 8,
-               'september' => 9,
-               'oktober' => 10,
-               'november' => 11,
-               'december' => 12,
-               // French
-               'janvier' => 1,
-               'février' => 2,
-               'mars' => 3,
-               'avril' => 4,
-               'mai' => 5,
-               'juin' => 6,
-               'juillet' => 7,
-               'août' => 8,
-               'septembre' => 9,
-               'octobre' => 10,
-               'novembre' => 11,
-               'décembre' => 12,
-               // German
-               'januar' => 1,
-               'februar' => 2,
-               'märz' => 3,
-               'april' => 4,
-               'mai' => 5,
-               'juni' => 6,
-               'juli' => 7,
-               'august' => 8,
-               'september' => 9,
-               'oktober' => 10,
-               'november' => 11,
-               'dezember' => 12,
-               // Italian
-               'gennaio' => 1,
-               'febbraio' => 2,
-               'marzo' => 3,
-               'aprile' => 4,
-               'maggio' => 5,
-               'giugno' => 6,
-               'luglio' => 7,
-               'agosto' => 8,
-               'settembre' => 9,
-               'ottobre' => 10,
-               'novembre' => 11,
-               'dicembre' => 12,
-               // Spanish
-               'enero' => 1,
-               'febrero' => 2,
-               'marzo' => 3,
-               'abril' => 4,
-               'mayo' => 5,
-               'junio' => 6,
-               'julio' => 7,
-               'agosto' => 8,
-               'septiembre' => 9,
-               'setiembre' => 9,
-               'octubre' => 10,
-               'noviembre' => 11,
-               'diciembre' => 12,
-               // Finnish
-               'tammikuu' => 1,
-               'helmikuu' => 2,
-               'maaliskuu' => 3,
-               'huhtikuu' => 4,
-               'toukokuu' => 5,
-               'kesäkuu' => 6,
-               'heinäkuu' => 7,
-               'elokuu' => 8,
-               'suuskuu' => 9,
-               'lokakuu' => 10,
-               'marras' => 11,
-               'joulukuu' => 12,
-               // Hungarian
-               'január' => 1,
-               'február' => 2,
-               'március' => 3,
-               'április' => 4,
-               'május' => 5,
-               'június' => 6,
-               'július' => 7,
-               'augusztus' => 8,
-               'szeptember' => 9,
-               'október' => 10,
-               'november' => 11,
-               'december' => 12,
-               // Greek
-               'Ιαν' => 1,
-               'Φεβ' => 2,
-               'Μάώ' => 3,
-               'Μαώ' => 3,
-               'Απρ' => 4,
-               'Μάι' => 5,
-               'Μαϊ' => 5,
-               'Μαι' => 5,
-               'Ιούν' => 6,
-               'Ιον' => 6,
-               'Ιούλ' => 7,
-               'Ιολ' => 7,
-               'Αύγ' => 8,
-               'Αυγ' => 8,
-               'Σεπ' => 9,
-               'Οκτ' => 10,
-               'Νοέ' => 11,
-               'Δεκ' => 12,
-       );
-
-       /**
-        * List of timezones, abbreviation => offset from UTC
-        *
-        * @access protected
-        * @var array
-        */
-       var $timezone = array(
-               'ACDT' => 37800,
-               'ACIT' => 28800,
-               'ACST' => 34200,
-               'ACT' => -18000,
-               'ACWDT' => 35100,
-               'ACWST' => 31500,
-               'AEDT' => 39600,
-               'AEST' => 36000,
-               'AFT' => 16200,
-               'AKDT' => -28800,
-               'AKST' => -32400,
-               'AMDT' => 18000,
-               'AMT' => -14400,
-               'ANAST' => 46800,
-               'ANAT' => 43200,
-               'ART' => -10800,
-               'AZOST' => -3600,
-               'AZST' => 18000,
-               'AZT' => 14400,
-               'BIOT' => 21600,
-               'BIT' => -43200,
-               'BOT' => -14400,
-               'BRST' => -7200,
-               'BRT' => -10800,
-               'BST' => 3600,
-               'BTT' => 21600,
-               'CAST' => 18000,
-               'CAT' => 7200,
-               'CCT' => 23400,
-               'CDT' => -18000,
-               'CEDT' => 7200,
-               'CET' => 3600,
-               'CGST' => -7200,
-               'CGT' => -10800,
-               'CHADT' => 49500,
-               'CHAST' => 45900,
-               'CIST' => -28800,
-               'CKT' => -36000,
-               'CLDT' => -10800,
-               'CLST' => -14400,
-               'COT' => -18000,
-               'CST' => -21600,
-               'CVT' => -3600,
-               'CXT' => 25200,
-               'DAVT' => 25200,
-               'DTAT' => 36000,
-               'EADT' => -18000,
-               'EAST' => -21600,
-               'EAT' => 10800,
-               'ECT' => -18000,
-               'EDT' => -14400,
-               'EEST' => 10800,
-               'EET' => 7200,
-               'EGT' => -3600,
-               'EKST' => 21600,
-               'EST' => -18000,
-               'FJT' => 43200,
-               'FKDT' => -10800,
-               'FKST' => -14400,
-               'FNT' => -7200,
-               'GALT' => -21600,
-               'GEDT' => 14400,
-               'GEST' => 10800,
-               'GFT' => -10800,
-               'GILT' => 43200,
-               'GIT' => -32400,
-               'GST' => 14400,
-               'GST' => -7200,
-               'GYT' => -14400,
-               'HAA' => -10800,
-               'HAC' => -18000,
-               'HADT' => -32400,
-               'HAE' => -14400,
-               'HAP' => -25200,
-               'HAR' => -21600,
-               'HAST' => -36000,
-               'HAT' => -9000,
-               'HAY' => -28800,
-               'HKST' => 28800,
-               'HMT' => 18000,
-               'HNA' => -14400,
-               'HNC' => -21600,
-               'HNE' => -18000,
-               'HNP' => -28800,
-               'HNR' => -25200,
-               'HNT' => -12600,
-               'HNY' => -32400,
-               'IRDT' => 16200,
-               'IRKST' => 32400,
-               'IRKT' => 28800,
-               'IRST' => 12600,
-               'JFDT' => -10800,
-               'JFST' => -14400,
-               'JST' => 32400,
-               'KGST' => 21600,
-               'KGT' => 18000,
-               'KOST' => 39600,
-               'KOVST' => 28800,
-               'KOVT' => 25200,
-               'KRAST' => 28800,
-               'KRAT' => 25200,
-               'KST' => 32400,
-               'LHDT' => 39600,
-               'LHST' => 37800,
-               'LINT' => 50400,
-               'LKT' => 21600,
-               'MAGST' => 43200,
-               'MAGT' => 39600,
-               'MAWT' => 21600,
-               'MDT' => -21600,
-               'MESZ' => 7200,
-               'MEZ' => 3600,
-               'MHT' => 43200,
-               'MIT' => -34200,
-               'MNST' => 32400,
-               'MSDT' => 14400,
-               'MSST' => 10800,
-               'MST' => -25200,
-               'MUT' => 14400,
-               'MVT' => 18000,
-               'MYT' => 28800,
-               'NCT' => 39600,
-               'NDT' => -9000,
-               'NFT' => 41400,
-               'NMIT' => 36000,
-               'NOVST' => 25200,
-               'NOVT' => 21600,
-               'NPT' => 20700,
-               'NRT' => 43200,
-               'NST' => -12600,
-               'NUT' => -39600,
-               'NZDT' => 46800,
-               'NZST' => 43200,
-               'OMSST' => 25200,
-               'OMST' => 21600,
-               'PDT' => -25200,
-               'PET' => -18000,
-               'PETST' => 46800,
-               'PETT' => 43200,
-               'PGT' => 36000,
-               'PHOT' => 46800,
-               'PHT' => 28800,
-               'PKT' => 18000,
-               'PMDT' => -7200,
-               'PMST' => -10800,
-               'PONT' => 39600,
-               'PST' => -28800,
-               'PWT' => 32400,
-               'PYST' => -10800,
-               'PYT' => -14400,
-               'RET' => 14400,
-               'ROTT' => -10800,
-               'SAMST' => 18000,
-               'SAMT' => 14400,
-               'SAST' => 7200,
-               'SBT' => 39600,
-               'SCDT' => 46800,
-               'SCST' => 43200,
-               'SCT' => 14400,
-               'SEST' => 3600,
-               'SGT' => 28800,
-               'SIT' => 28800,
-               'SRT' => -10800,
-               'SST' => -39600,
-               'SYST' => 10800,
-               'SYT' => 7200,
-               'TFT' => 18000,
-               'THAT' => -36000,
-               'TJT' => 18000,
-               'TKT' => -36000,
-               'TMT' => 18000,
-               'TOT' => 46800,
-               'TPT' => 32400,
-               'TRUT' => 36000,
-               'TVT' => 43200,
-               'TWT' => 28800,
-               'UYST' => -7200,
-               'UYT' => -10800,
-               'UZT' => 18000,
-               'VET' => -14400,
-               'VLAST' => 39600,
-               'VLAT' => 36000,
-               'VOST' => 21600,
-               'VUT' => 39600,
-               'WAST' => 7200,
-               'WAT' => 3600,
-               'WDT' => 32400,
-               'WEST' => 3600,
-               'WFT' => 43200,
-               'WIB' => 25200,
-               'WIT' => 32400,
-               'WITA' => 28800,
-               'WKST' => 18000,
-               'WST' => 28800,
-               'YAKST' => 36000,
-               'YAKT' => 32400,
-               'YAPT' => 36000,
-               'YEKST' => 21600,
-               'YEKT' => 18000,
-       );
-
-       /**
-        * Cached PCRE for SimplePie_Parse_Date::$day
-        *
-        * @access protected
-        * @var string
-        */
-       var $day_pcre;
-
-       /**
-        * Cached PCRE for SimplePie_Parse_Date::$month
-        *
-        * @access protected
-        * @var string
-        */
-       var $month_pcre;
-
-       /**
-        * Array of user-added callback methods
-        *
-        * @access private
-        * @var array
-        */
-       var $built_in = array();
-
-       /**
-        * Array of user-added callback methods
-        *
-        * @access private
-        * @var array
-        */
-       var $user = array();
-
-       /**
-        * Create new SimplePie_Parse_Date object, and set self::day_pcre,
-        * self::month_pcre, and self::built_in
-        *
-        * @access private
-        */
-       function SimplePie_Parse_Date()
-       {
-               $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
-               $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
-
-               static $cache;
-               if (!isset($cache[get_class($this)]))
-               {
-                       $all_methods = get_class_methods($this);
-
-                       foreach ($all_methods as $method)
-                       {
-                               if (strtolower(substr($method, 0, 5)) === 'date_')
-                               {
-                                       $cache[get_class($this)][] = $method;
-                               }
-                       }
-               }
-
-               foreach ($cache[get_class($this)] as $method)
-               {
-                       $this->built_in[] = $method;
-               }
-       }
-
-       /**
-        * Get the object
-        *
-        * @access public
-        */
-       function get()
-       {
-               static $object;
-               if (!$object)
-               {
-                       $object =& new SimplePie_Parse_Date;
-               }
-               return $object;
-       }
-
-       /**
-        * Parse a date
-        *
-        * @final
-        * @access public
-        * @param string $date Date to parse
-        * @return int Timestamp corresponding to date string, or false on failure
-        */
-       function parse($date)
-       {
-               foreach ($this->user as $method)
-               {
-                       if (($returned = call_user_func($method, $date)) !== false)
-                       {
-                               return $returned;
-                       }
-               }
-
-               foreach ($this->built_in as $method)
-               {
-                       if (($returned = call_user_func(array(&$this, $method), $date)) !== false)
-                       {
-                               return $returned;
-                       }
-               }
-
-               return false;
-       }
-
-       /**
-        * Add a callback method to parse a date
-        *
-        * @final
-        * @access public
-        * @param callback $callback
-        */
-       function add_callback($callback)
-       {
-               if (is_callable($callback))
-               {
-                       $this->user[] = $callback;
-               }
-               else
-               {
-                       trigger_error('User-supplied function must be a valid callback', E_USER_WARNING);
-               }
-       }
-
-       /**
-        * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
-        * well as allowing any of upper or lower case "T", horizontal tabs, or
-        * spaces to be used as the time seperator (including more than one))
-        *
-        * @access protected
-        * @return int Timestamp
-        */
-       function date_w3cdtf($date)
-       {
-               static $pcre;
-               if (!$pcre)
-               {
-                       $year = '([0-9]{4})';
-                       $month = $day = $hour = $minute = $second = '([0-9]{2})';
-                       $decimal = '([0-9]*)';
-                       $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
-                       $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
-               }
-               if (preg_match($pcre, $date, $match))
-               {
-                       /*
-                       Capturing subpatterns:
-                       1: Year
-                       2: Month
-                       3: Day
-                       4: Hour
-                       5: Minute
-                       6: Second
-                       7: Decimal fraction of a second
-                       8: Zulu
-                       9: Timezone ±
-                       10: Timezone hours
-                       11: Timezone minutes
-                       */
-
-                       // Fill in empty matches
-                       for ($i = count($match); $i <= 3; $i++)
-                       {
-                               $match[$i] = '1';
-                       }
-
-                       for ($i = count($match); $i <= 7; $i++)
-                       {
-                               $match[$i] = '0';
-                       }
-
-                       // Numeric timezone
-                       if (isset($match[9]) && $match[9] !== '')
-                       {
-                               $timezone = $match[10] * 3600;
-                               $timezone += $match[11] * 60;
-                               if ($match[9] === '-')
-                               {
-                                       $timezone = 0 - $timezone;
-                               }
-                       }
-                       else
-                       {
-                               $timezone = 0;
-                       }
-
-                       // Convert the number of seconds to an integer, taking decimals into account
-                       $second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
-
-                       return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Remove RFC822 comments
-        *
-        * @access protected
-        * @param string $data Data to strip comments from
-        * @return string Comment stripped string
-        */
-       function remove_rfc2822_comments($string)
-       {
-               $string = (string) $string;
-               $position = 0;
-               $length = strlen($string);
-               $depth = 0;
-
-               $output = '';
-
-               while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
-               {
-                       $output .= substr($string, $position, $pos - $position);
-                       $position = $pos + 1;
-                       if ($string[$pos - 1] !== '\\')
-                       {
-                               $depth++;
-                               while ($depth && $position < $length)
-                               {
-                                       $position += strcspn($string, '()', $position);
-                                       if ($string[$position - 1] === '\\')
-                                       {
-                                               $position++;
-                                               continue;
-                                       }
-                                       elseif (isset($string[$position]))
-                                       {
-                                               switch ($string[$position])
-                                               {
-                                                       case '(':
-                                                               $depth++;
-                                                               break;
-
-                                                       case ')':
-                                                               $depth--;
-                                                               break;
-                                               }
-                                               $position++;
-                                       }
-                                       else
-                                       {
-                                               break;
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               $output .= '(';
-                       }
-               }
-               $output .= substr($string, $position);
-
-               return $output;
-       }
-
-       /**
-        * Parse RFC2822's date format
-        *
-        * @access protected
-        * @return int Timestamp
-        */
-       function date_rfc2822($date)
-       {
-               static $pcre;
-               if (!$pcre)
-               {
-                       $wsp = '[\x09\x20]';
-                       $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
-                       $optional_fws = $fws . '?';
-                       $day_name = $this->day_pcre;
-                       $month = $this->month_pcre;
-                       $day = '([0-9]{1,2})';
-                       $hour = $minute = $second = '([0-9]{2})';
-                       $year = '([0-9]{2,4})';
-                       $num_zone = '([+\-])([0-9]{2})([0-9]{2})';
-                       $character_zone = '([A-Z]{1,5})';
-                       $zone = '(?:' . $num_zone . '|' . $character_zone . ')';
-                       $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
-               }
-               if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))
-               {
-                       /*
-                       Capturing subpatterns:
-                       1: Day name
-                       2: Day
-                       3: Month
-                       4: Year
-                       5: Hour
-                       6: Minute
-                       7: Second
-                       8: Timezone ±
-                       9: Timezone hours
-                       10: Timezone minutes
-                       11: Alphabetic timezone
-                       */
-
-                       // Find the month number
-                       $month = $this->month[strtolower($match[3])];
-
-                       // Numeric timezone
-                       if ($match[8] !== '')
-                       {
-                               $timezone = $match[9] * 3600;
-                               $timezone += $match[10] * 60;
-                               if ($match[8] === '-')
-                               {
-                                       $timezone = 0 - $timezone;
-                               }
-                       }
-                       // Character timezone
-                       elseif (isset($this->timezone[strtoupper($match[11])]))
-                       {
-                               $timezone = $this->timezone[strtoupper($match[11])];
-                       }
-                       // Assume everything else to be -0000
-                       else
-                       {
-                               $timezone = 0;
-                       }
-
-                       // Deal with 2/3 digit years
-                       if ($match[4] < 50)
-                       {
-                               $match[4] += 2000;
-                       }
-                       elseif ($match[4] < 1000)
-                       {
-                               $match[4] += 1900;
-                       }
-
-                       // Second is optional, if it is empty set it to zero
-                       if ($match[7] !== '')
-                       {
-                               $second = $match[7];
-                       }
-                       else
-                       {
-                               $second = 0;
-                       }
-
-                       return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Parse RFC850's date format
-        *
-        * @access protected
-        * @return int Timestamp
-        */
-       function date_rfc850($date)
-       {
-               static $pcre;
-               if (!$pcre)
-               {
-                       $space = '[\x09\x20]+';
-                       $day_name = $this->day_pcre;
-                       $month = $this->month_pcre;
-                       $day = '([0-9]{1,2})';
-                       $year = $hour = $minute = $second = '([0-9]{2})';
-                       $zone = '([A-Z]{1,5})';
-                       $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
-               }
-               if (preg_match($pcre, $date, $match))
-               {
-                       /*
-                       Capturing subpatterns:
-                       1: Day name
-                       2: Day
-                       3: Month
-                       4: Year
-                       5: Hour
-                       6: Minute
-                       7: Second
-                       8: Timezone
-                       */
-
-                       // Month
-                       $month = $this->month[strtolower($match[3])];
-
-                       // Character timezone
-                       if (isset($this->timezone[strtoupper($match[8])]))
-                       {
-                               $timezone = $this->timezone[strtoupper($match[8])];
-                       }
-                       // Assume everything else to be -0000
-                       else
-                       {
-                               $timezone = 0;
-                       }
-
-                       // Deal with 2 digit year
-                       if ($match[4] < 50)
-                       {
-                               $match[4] += 2000;
-                       }
-                       else
-                       {
-                               $match[4] += 1900;
-                       }
-
-                       return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Parse C99's asctime()'s date format
-        *
-        * @access protected
-        * @return int Timestamp
-        */
-       function date_asctime($date)
-       {
-               static $pcre;
-               if (!$pcre)
-               {
-                       $space = '[\x09\x20]+';
-                       $wday_name = $this->day_pcre;
-                       $mon_name = $this->month_pcre;
-                       $day = '([0-9]{1,2})';
-                       $hour = $sec = $min = '([0-9]{2})';
-                       $year = '([0-9]{4})';
-                       $terminator = '\x0A?\x00?';
-                       $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
-               }
-               if (preg_match($pcre, $date, $match))
-               {
-                       /*
-                       Capturing subpatterns:
-                       1: Day name
-                       2: Month
-                       3: Day
-                       4: Hour
-                       5: Minute
-                       6: Second
-                       7: Year
-                       */
-
-                       $month = $this->month[strtolower($match[2])];
-                       return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Parse dates using strtotime()
-        *
-        * @access protected
-        * @return int Timestamp
-        */
-       function date_strtotime($date)
-       {
-               $strtotime = strtotime($date);
-               if ($strtotime === -1 || $strtotime === false)
-               {
-                       return false;
-               }
-               else
-               {
-                       return $strtotime;
-               }
-       }
-}
-
-/**
- * Content-type sniffing
- *
- * @package SimplePie
- */
-class SimplePie_Content_Type_Sniffer
-{
-       /**
-        * File object
-        *
-        * @var SimplePie_File
-        * @access private
-        */
-       var $file;
-
-       /**
-        * Create an instance of the class with the input file
-        *
-        * @access public
-        * @param SimplePie_Content_Type_Sniffer $file Input file
-        */
-       function SimplePie_Content_Type_Sniffer($file)
-       {
-               $this->file = $file;
-       }
-
-       /**
-        * Get the Content-Type of the specified file
-        *
-        * @access public
-        * @return string Actual Content-Type
-        */
-       function get_type()
-       {
-               if (isset($this->file->headers['content-type']))
-               {
-                       if (!isset($this->file->headers['content-encoding'])
-                               && ($this->file->headers['content-type'] === 'text/plain'
-                                       || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1'
-                                       || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1'))
-                       {
-                               return $this->text_or_binary();
-                       }
-
-                       if (($pos = strpos($this->file->headers['content-type'], ';')) !== false)
-                       {
-                               $official = substr($this->file->headers['content-type'], 0, $pos);
-                       }
-                       else
-                       {
-                               $official = $this->file->headers['content-type'];
-                       }
-                       $official = strtolower($official);
-
-                       if ($official === 'unknown/unknown'
-                               || $official === 'application/unknown')
-                       {
-                               return $this->unknown();
-                       }
-                       elseif (substr($official, -4) === '+xml'
-                               || $official === 'text/xml'
-                               || $official === 'application/xml')
-                       {
-                               return $official;
-                       }
-                       elseif (substr($official, 0, 6) === 'image/')
-                       {
-                               if ($return = $this->image())
-                               {
-                                       return $return;
-                               }
-                               else
-                               {
-                                       return $official;
-                               }
-                       }
-                       elseif ($official === 'text/html')
-                       {
-                               return $this->feed_or_html();
-                       }
-                       else
-                       {
-                               return $official;
-                       }
-               }
-               else
-               {
-                       return $this->unknown();
-               }
-       }
-
-       /**
-        * Sniff text or binary
-        *
-        * @access private
-        * @return string Actual Content-Type
-        */
-       function text_or_binary()
-       {
-               if (substr($this->file->body, 0, 2) === "\xFE\xFF"
-                       || substr($this->file->body, 0, 2) === "\xFF\xFE"
-                       || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF"
-                       || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF")
-               {
-                       return 'text/plain';
-               }
-               elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body))
-               {
-                       return 'application/octect-stream';
-               }
-               else
-               {
-                       return 'text/plain';
-               }
-       }
-
-       /**
-        * Sniff unknown
-        *
-        * @access private
-        * @return string Actual Content-Type
-        */
-       function unknown()
-       {
-               $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20");
-               if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html'
-                       || strtolower(substr($this->file->body, $ws, 5)) === '<html'
-                       || strtolower(substr($this->file->body, $ws, 7)) === '<script')
-               {
-                       return 'text/html';
-               }
-               elseif (substr($this->file->body, 0, 5) === '%PDF-')
-               {
-                       return 'application/pdf';
-               }
-               elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-')
-               {
-                       return 'application/postscript';
-               }
-               elseif (substr($this->file->body, 0, 6) === 'GIF87a'
-                       || substr($this->file->body, 0, 6) === 'GIF89a')
-               {
-                       return 'image/gif';
-               }
-               elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
-               {
-                       return 'image/png';
-               }
-               elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
-               {
-                       return 'image/jpeg';
-               }
-               elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
-               {
-                       return 'image/bmp';
-               }
-               else
-               {
-                       return $this->text_or_binary();
-               }
-       }
-
-       /**
-        * Sniff images
-        *
-        * @access private
-        * @return string Actual Content-Type
-        */
-       function image()
-       {
-               if (substr($this->file->body, 0, 6) === 'GIF87a'
-                       || substr($this->file->body, 0, 6) === 'GIF89a')
-               {
-                       return 'image/gif';
-               }
-               elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
-               {
-                       return 'image/png';
-               }
-               elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
-               {
-                       return 'image/jpeg';
-               }
-               elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
-               {
-                       return 'image/bmp';
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       /**
-        * Sniff HTML
-        *
-        * @access private
-        * @return string Actual Content-Type
-        */
-       function feed_or_html()
-       {
-               $len = strlen($this->file->body);
-               $pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
-
-               while ($pos < $len)
-               {
-                       switch ($this->file->body[$pos])
-                       {
-                               case "\x09":
-                               case "\x0A":
-                               case "\x0D":
-                               case "\x20":
-                                       $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos);
-                                       continue 2;
-
-                               case '<':
-                                       $pos++;
-                                       break;
-
-                               default:
-                                       return 'text/html';
-                       }
-
-                       if (substr($this->file->body, $pos, 3) === '!--')
-                       {
-                               $pos += 3;
-                               if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false)
-                               {
-                                       $pos += 3;
-                               }
-                               else
-                               {
-                                       return 'text/html';
-                               }
-                       }
-                       elseif (substr($this->file->body, $pos, 1) === '!')
-                       {
-                               if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false)
-                               {
-                                       $pos++;
-                               }
-                               else
-                               {
-                                       return 'text/html';
-                               }
-                       }
-                       elseif (substr($this->file->body, $pos, 1) === '?')
-                       {
-                               if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false)
-                               {
-                                       $pos += 2;
-                               }
-                               else
-                               {
-                                       return 'text/html';
-                               }
-                       }
-                       elseif (substr($this->file->body, $pos, 3) === 'rss'
-                               || substr($this->file->body, $pos, 7) === 'rdf:RDF')
-                       {
-                               return 'application/rss+xml';
-                       }
-                       elseif (substr($this->file->body, $pos, 4) === 'feed')
-                       {
-                               return 'application/atom+xml';
-                       }
-                       else
-                       {
-                               return 'text/html';
-                       }
-               }
-
-               return 'text/html';
-       }
-}
-
-/**
- * Parses the XML Declaration
- *
- * @package SimplePie
- */
-class SimplePie_XML_Declaration_Parser
-{
-       /**
-        * XML Version
-        *
-        * @access public
-        * @var string
-        */
-       var $version = '1.0';
-
-       /**
-        * Encoding
-        *
-        * @access public
-        * @var string
-        */
-       var $encoding = 'UTF-8';
-
-       /**
-        * Standalone
-        *
-        * @access public
-        * @var bool
-        */
-       var $standalone = false;
-
-       /**
-        * Current state of the state machine
-        *
-        * @access private
-        * @var string
-        */
-       var $state = 'before_version_name';
-
-       /**
-        * Input data
-        *
-        * @access private
-        * @var string
-        */
-       var $data = '';
-
-       /**
-        * Input data length (to avoid calling strlen() everytime this is needed)
-        *
-        * @access private
-        * @var int
-        */
-       var $data_length = 0;
-
-       /**
-        * Current position of the pointer
-        *
-        * @var int
-        * @access private
-        */
-       var $position = 0;
-
-       /**
-        * Create an instance of the class with the input data
-        *
-        * @access public
-        * @param string $data Input data
-        */
-       function SimplePie_XML_Declaration_Parser($data)
-       {
-               $this->data = $data;
-               $this->data_length = strlen($this->data);
-       }
-
-       /**
-        * Parse the input data
-        *
-        * @access public
-        * @return bool true on success, false on failure
-        */
-       function parse()
-       {
-               while ($this->state && $this->state !== 'emit' && $this->has_data())
-               {
-                       $state = $this->state;
-                       $this->$state();
-               }
-               $this->data = '';
-               if ($this->state === 'emit')
-               {
-                       return true;
-               }
-               else
-               {
-                       $this->version = '';
-                       $this->encoding = '';
-                       $this->standalone = '';
-                       return false;
-               }
-       }
-
-       /**
-        * Check whether there is data beyond the pointer
-        *
-        * @access private
-        * @return bool true if there is further data, false if not
-        */
-       function has_data()
-       {
-               return (bool) ($this->position < $this->data_length);
-       }
-
-       /**
-        * Advance past any whitespace
-        *
-        * @return int Number of whitespace characters passed
-        */
-       function skip_whitespace()
-       {
-               $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
-               $this->position += $whitespace;
-               return $whitespace;
-       }
-
-       /**
-        * Read value
-        */
-       function get_value()
-       {
-               $quote = substr($this->data, $this->position, 1);
-               if ($quote === '"' || $quote === "'")
-               {
-                       $this->position++;
-                       $len = strcspn($this->data, $quote, $this->position);
-                       if ($this->has_data())
-                       {
-                               $value = substr($this->data, $this->position, $len);
-                               $this->position += $len + 1;
-                               return $value;
-                       }
-               }
-               return false;
-       }
-
-       function before_version_name()
-       {
-               if ($this->skip_whitespace())
-               {
-                       $this->state = 'version_name';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function version_name()
-       {
-               if (substr($this->data, $this->position, 7) === 'version')
-               {
-                       $this->position += 7;
-                       $this->skip_whitespace();
-                       $this->state = 'version_equals';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function version_equals()
-       {
-               if (substr($this->data, $this->position, 1) === '=')
-               {
-                       $this->position++;
-                       $this->skip_whitespace();
-                       $this->state = 'version_value';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function version_value()
-       {
-               if ($this->version = $this->get_value())
-               {
-                       $this->skip_whitespace();
-                       if ($this->has_data())
-                       {
-                               $this->state = 'encoding_name';
-                       }
-                       else
-                       {
-                               $this->state = 'emit';
-                       }
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function encoding_name()
-       {
-               if (substr($this->data, $this->position, 8) === 'encoding')
-               {
-                       $this->position += 8;
-                       $this->skip_whitespace();
-                       $this->state = 'encoding_equals';
-               }
-               else
-               {
-                       $this->state = 'standalone_name';
-               }
-       }
-
-       function encoding_equals()
-       {
-               if (substr($this->data, $this->position, 1) === '=')
-               {
-                       $this->position++;
-                       $this->skip_whitespace();
-                       $this->state = 'encoding_value';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function encoding_value()
-       {
-               if ($this->encoding = $this->get_value())
-               {
-                       $this->skip_whitespace();
-                       if ($this->has_data())
-                       {
-                               $this->state = 'standalone_name';
-                       }
-                       else
-                       {
-                               $this->state = 'emit';
-                       }
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function standalone_name()
-       {
-               if (substr($this->data, $this->position, 10) === 'standalone')
-               {
-                       $this->position += 10;
-                       $this->skip_whitespace();
-                       $this->state = 'standalone_equals';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function standalone_equals()
-       {
-               if (substr($this->data, $this->position, 1) === '=')
-               {
-                       $this->position++;
-                       $this->skip_whitespace();
-                       $this->state = 'standalone_value';
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-
-       function standalone_value()
-       {
-               if ($standalone = $this->get_value())
-               {
-                       switch ($standalone)
-                       {
-                               case 'yes':
-                                       $this->standalone = true;
-                                       break;
-
-                               case 'no':
-                                       $this->standalone = false;
-                                       break;
-
-                               default:
-                                       $this->state = false;
-                                       return;
-                       }
-
-                       $this->skip_whitespace();
-                       if ($this->has_data())
-                       {
-                               $this->state = false;
-                       }
-                       else
-                       {
-                               $this->state = 'emit';
-                       }
-               }
-               else
-               {
-                       $this->state = false;
-               }
-       }
-}
-
-class SimplePie_Locator
-{
-       var $useragent;
-       var $timeout;
-       var $file;
-       var $local = array();
-       var $elsewhere = array();
-       var $file_class = 'SimplePie_File';
-       var $cached_entities = array();
-       var $http_base;
-       var $base;
-       var $base_location = 0;
-       var $checked_feeds = 0;
-       var $max_checked_feeds = 10;
-       var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
-
-       function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer')
-       {
-               $this->file =& $file;
-               $this->file_class = $file_class;
-               $this->useragent = $useragent;
-               $this->timeout = $timeout;
-               $this->max_checked_feeds = $max_checked_feeds;
-               $this->content_type_sniffer_class = $content_type_sniffer_class;
-       }
-
-       function find($type = SIMPLEPIE_LOCATOR_ALL, &$working)
-       {
-               if ($this->is_feed($this->file))
-               {
-                       return $this->file;
-               }
-
-               if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
-               {
-                       $sniffer =& new $this->content_type_sniffer_class($this->file);
-                       if ($sniffer->get_type() !== 'text/html')
-                       {
-                               return null;
-                       }
-               }
-
-               if ($type & ~SIMPLEPIE_LOCATOR_NONE)
-               {
-                       $this->get_base();
-               }
-
-               if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
-               {
-                       return $working[0];
-               }
-
-               if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
-               {
-                       if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
-                       {
-                               return $working;
-                       }
-
-                       if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
-                       {
-                               return $working;
-                       }
-
-                       if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
-                       {
-                               return $working;
-                       }
-
-                       if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
-                       {
-                               return $working;
-                       }
-               }
-               return null;
-       }
-
-       function is_feed(&$file)
-       {
-               if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
-               {
-                       $sniffer =& new $this->content_type_sniffer_class($file);
-                       $sniffed = $sniffer->get_type();
-                       if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml')))
-                       {
-                               return true;
-                       }
-                       else
-                       {
-                               return false;
-                       }
-               }
-               elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
-       }
-
-       function get_base()
-       {
-               $this->http_base = $this->file->url;
-               $this->base = $this->http_base;
-               $elements = SimplePie_Misc::get_element('base', $this->file->body);
-               foreach ($elements as $element)
-               {
-                       if ($element['attribs']['href']['data'] !== '')
-                       {
-                               $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
-                               $this->base_location = $element['offset'];
-                               break;
-                       }
-               }
-       }
-
-       function autodiscovery()
-       {
-               $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
-               $done = array();
-               $feeds = array();
-               foreach ($links as $link)
-               {
-                       if ($this->checked_feeds === $this->max_checked_feeds)
-                       {
-                               break;
-                       }
-                       if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
-                       {
-                               $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
-
-                               if ($this->base_location < $link['offset'])
-                               {
-                                       $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
-                               }
-                               else
-                               {
-                                       $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
-                               }
-
-                               if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href]))
-                               {
-                                       $this->checked_feeds++;
-                                       $feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent);
-                                       if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
-                                       {
-                                               $feeds[$href] = $feed;
-                                       }
-                               }
-                               $done[] = $href;
-                       }
-               }
-
-               if (!empty($feeds))
-               {
-                       return array_values($feeds);
-               }
-               else {
-                       return null;
-               }
-       }
-
-       function get_links()
-       {
-               $links = SimplePie_Misc::get_element('a', $this->file->body);
-               foreach ($links as $link)
-               {
-                       if (isset($link['attribs']['href']['data']))
-                       {
-                               $href = trim($link['attribs']['href']['data']);
-                               $parsed = SimplePie_Misc::parse_url($href);
-                               if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
-                               {
-                                       if ($this->base_location < $link['offset'])
-                                       {
-                                               $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
-                                       }
-                                       else
-                                       {
-                                               $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
-                                       }
-
-                                       $current = SimplePie_Misc::parse_url($this->file->url);
-
-                                       if ($parsed['authority'] === '' || $parsed['authority'] === $current['authority'])
-                                       {
-                                               $this->local[] = $href;
-                                       }
-                                       else
-                                       {
-                                               $this->elsewhere[] = $href;
-                                       }
-                               }
-                       }
-               }
-               $this->local = array_unique($this->local);
-               $this->elsewhere = array_unique($this->elsewhere);
-               if (!empty($this->local) || !empty($this->elsewhere))
-               {
-                       return true;
-               }
-               return null;
-       }
-
-       function extension(&$array)
-       {
-               foreach ($array as $key => $value)
-               {
-                       if ($this->checked_feeds === $this->max_checked_feeds)
-                       {
-                               break;
-                       }
-                       if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
-                       {
-                               $this->checked_feeds++;
-                               $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
-                               if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
-                               {
-                                       return $feed;
-                               }
-                               else
-                               {
-                                       unset($array[$key]);
-                               }
-                       }
-               }
-               return null;
-       }
-
-       function body(&$array)
-       {
-               foreach ($array as $key => $value)
-               {
-                       if ($this->checked_feeds === $this->max_checked_feeds)
-                       {
-                               break;
-                       }
-                       if (preg_match('/(rss|rdf|atom|xml)/i', $value))
-                       {
-                               $this->checked_feeds++;
-                               $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
-                               if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
-                               {
-                                       return $feed;
-                               }
-                               else
-                               {
-                                       unset($array[$key]);
-                               }
-                       }
-               }
-               return null;
-       }
-}
-
-class SimplePie_Parser
-{
-       var $error_code;
-       var $error_string;
-       var $current_line;
-       var $current_column;
-       var $current_byte;
-       var $separator = ' ';
-       var $namespace = array('');
-       var $element = array('');
-       var $xml_base = array('');
-       var $xml_base_explicit = array(false);
-       var $xml_lang = array('');
-       var $data = array();
-       var $datas = array(array());
-       var $current_xhtml_construct = -1;
-       var $encoding;
-
-       function parse(&$data, $encoding)
-       {
-               // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
-               if (strtoupper($encoding) === 'US-ASCII')
-               {
-                       $this->encoding = 'UTF-8';
-               }
-               else
-               {
-                       $this->encoding = $encoding;
-               }
-
-               // Strip BOM:
-               // UTF-32 Big Endian BOM
-               if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
-               {
-                       $data = substr($data, 4);
-               }
-               // UTF-32 Little Endian BOM
-               elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
-               {
-                       $data = substr($data, 4);
-               }
-               // UTF-16 Big Endian BOM
-               elseif (substr($data, 0, 2) === "\xFE\xFF")
-               {
-                       $data = substr($data, 2);
-               }
-               // UTF-16 Little Endian BOM
-               elseif (substr($data, 0, 2) === "\xFF\xFE")
-               {
-                       $data = substr($data, 2);
-               }
-               // UTF-8 BOM
-               elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
-               {
-                       $data = substr($data, 3);
-               }
-
-               if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
-               {
-                       $declaration =& new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
-                       if ($declaration->parse())
-                       {
-                               $data = substr($data, $pos + 2);
-                               $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
-                       }
-                       else
-                       {
-                               $this->error_string = 'SimplePie bug! Please report this!';
-                               return false;
-                       }
-               }
-
-               $return = true;
-
-               static $xml_is_sane = null;
-               if ($xml_is_sane === null)
-               {
-                       $parser_check = xml_parser_create();
-                       xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
-                       xml_parser_free($parser_check);
-                       $xml_is_sane = isset($values[0]['value']);
-               }
-
-               // Create the parser
-               if ($xml_is_sane)
-               {
-                       $xml = xml_parser_create_ns($this->encoding, $this->separator);
-                       xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
-                       xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
-                       xml_set_object($xml, $this);
-                       xml_set_character_data_handler($xml, 'cdata');
-                       xml_set_element_handler($xml, 'tag_open', 'tag_close');
-
-                       // Parse!
-                       if (!xml_parse($xml, $data, true))
-                       {
-                               $this->error_code = xml_get_error_code($xml);
-                               $this->error_string = xml_error_string($this->error_code);
-                               $return = false;
-                       }
-                       $this->current_line = xml_get_current_line_number($xml);
-                       $this->current_column = xml_get_current_column_number($xml);
-                       $this->current_byte = xml_get_current_byte_index($xml);
-                       xml_parser_free($xml);
-                       return $return;
-               }
-               else
-               {
-                       libxml_clear_errors();
-                       $xml =& new XMLReader();
-                       $xml->xml($data);
-                       while (@$xml->read())
-                       {
-                               switch ($xml->nodeType)
-                               {
-
-                                       case constant('XMLReader::END_ELEMENT'):
-                                               if ($xml->namespaceURI !== '')
-                                               {
-                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
-                                               }
-                                               else
-                                               {
-                                                       $tagName = $xml->localName;
-                                               }
-                                               $this->tag_close(null, $tagName);
-                                               break;
-                                       case constant('XMLReader::ELEMENT'):
-                                               $empty = $xml->isEmptyElement;
-                                               if ($xml->namespaceURI !== '')
-                                               {
-                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
-                                               }
-                                               else
-                                               {
-                                                       $tagName = $xml->localName;
-                                               }
-                                               $attributes = array();
-                                               while ($xml->moveToNextAttribute())
-                                               {
-                                                       if ($xml->namespaceURI !== '')
-                                                       {
-                                                               $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
-                                                       }
-                                                       else
-                                                       {
-                                                               $attrName = $xml->localName;
-                                                       }
-                                                       $attributes[$attrName] = $xml->value;
-                                               }
-                                               $this->tag_open(null, $tagName, $attributes);
-                                               if ($empty)
-                                               {
-                                                       $this->tag_close(null, $tagName);
-                                               }
-                                               break;
-                                       case constant('XMLReader::TEXT'):
-
-                                       case constant('XMLReader::CDATA'):
-                                               $this->cdata(null, $xml->value);
-                                               break;
-                               }
-                       }
-                       if ($error = libxml_get_last_error())
-                       {
-                               $this->error_code = $error->code;
-                               $this->error_string = $error->message;
-                               $this->current_line = $error->line;
-                               $this->current_column = $error->column;
-                               return false;
-                       }
-                       else
-                       {
-                               return true;
-                       }
-               }
-       }
-
-       function get_error_code()
-       {
-               return $this->error_code;
-       }
-
-       function get_error_string()
-       {
-               return $this->error_string;
-       }
-
-       function get_current_line()
-       {
-               return $this->current_line;
-       }
-
-       function get_current_column()
-       {
-               return $this->current_column;
-       }
-
-       function get_current_byte()
-       {
-               return $this->current_byte;
-       }
-
-       function get_data()
-       {
-               return $this->data;
-       }
-
-       function tag_open($parser, $tag, $attributes)
-       {
-               list($this->namespace[], $this->element[]) = $this->split_ns($tag);
-
-               $attribs = array();
-               foreach ($attributes as $name => $value)
-               {
-                       list($attrib_namespace, $attribute) = $this->split_ns($name);
-                       $attribs[$attrib_namespace][$attribute] = $value;
-               }
-
-               if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
-               {
-                       $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base));
-                       $this->xml_base_explicit[] = true;
-               }
-               else
-               {
-                       $this->xml_base[] = end($this->xml_base);
-                       $this->xml_base_explicit[] = end($this->xml_base_explicit);
-               }
-
-               if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
-               {
-                       $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
-               }
-               else
-               {
-                       $this->xml_lang[] = end($this->xml_lang);
-               }
-
-               if ($this->current_xhtml_construct >= 0)
-               {
-                       $this->current_xhtml_construct++;
-                       if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML)
-                       {
-                               $this->data['data'] .= '<' . end($this->element);
-                               if (isset($attribs['']))
-                               {
-                                       foreach ($attribs[''] as $name => $value)
-                                       {
-                                               $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
-                                       }
-                               }
-                               $this->data['data'] .= '>';
-                       }
-               }
-               else
-               {
-                       $this->datas[] =& $this->data;
-                       $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
-                       $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
-                       if ((end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml')
-                       || (end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml'))
-                       {
-                               $this->current_xhtml_construct = 0;
-                       }
-               }
-       }
-
-       function cdata($parser, $cdata)
-       {
-               if ($this->current_xhtml_construct >= 0)
-               {
-                       $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
-               }
-               else
-               {
-                       $this->data['data'] .= $cdata;
-               }
-       }
-
-       function tag_close($parser, $tag)
-       {
-               if ($this->current_xhtml_construct >= 0)
-               {
-                       $this->current_xhtml_construct--;
-                       if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
-                       {
-                               $this->data['data'] .= '</' . end($this->element) . '>';
-                       }
-               }
-               if ($this->current_xhtml_construct === -1)
-               {
-                       $this->data =& $this->datas[count($this->datas) - 1];
-                       array_pop($this->datas);
-               }
-
-               array_pop($this->element);
-               array_pop($this->namespace);
-               array_pop($this->xml_base);
-               array_pop($this->xml_base_explicit);
-               array_pop($this->xml_lang);
-       }
-
-       function split_ns($string)
-       {
-               static $cache = array();
-               if (!isset($cache[$string]))
-               {
-                       if ($pos = strpos($string, $this->separator))
-                       {
-                               static $separator_length;
-                               if (!$separator_length)
-                               {
-                                       $separator_length = strlen($this->separator);
-                               }
-                               $namespace = substr($string, 0, $pos);
-                               $local_name = substr($string, $pos + $separator_length);
-                               if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES)
-                               {
-                                       $namespace = SIMPLEPIE_NAMESPACE_ITUNES;
-                               }
-
-                               // Normalize the Media RSS namespaces
-                               if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG)
-                               {
-                                       $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS;
-                               }
-                               $cache[$string] = array($namespace, $local_name);
-                       }
-                       else
-                       {
-                               $cache[$string] = array('', $string);
-                       }
-               }
-               return $cache[$string];
-       }
-}
-
-/**
- * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
- */
-class SimplePie_Sanitize
-{
-       // Private vars
-       var $base;
-
-       // Options
-       var $remove_div = true;
-       var $image_handler = '';
-       var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
-       var $encode_instead_of_strip = false;
-       var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
-       var $strip_comments = false;
-       var $output_encoding = 'UTF-8';
-       var $enable_cache = true;
-       var $cache_location = './cache';
-       var $cache_name_function = 'md5';
-       var $cache_class = 'SimplePie_Cache';
-       var $file_class = 'SimplePie_File';
-       var $timeout = 10;
-       var $useragent = '';
-       var $force_fsockopen = false;
-
-       var $replace_url_attributes = array(
-               'a' => 'href',
-               'area' => 'href',
-               'blockquote' => 'cite',
-               'del' => 'cite',
-               'form' => 'action',
-               'img' => array('longdesc', 'src'),
-               'input' => 'src',
-               'ins' => 'cite',
-               'q' => 'cite'
-       );
-
-       function remove_div($enable = true)
-       {
-               $this->remove_div = (bool) $enable;
-       }
-
-       function set_image_handler($page = false)
-       {
-               if ($page)
-               {
-                       $this->image_handler = (string) $page;
-               }
-               else
-               {
-                       $this->image_handler = false;
-               }
-       }
-
-       function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
-       {
-               if (isset($enable_cache))
-               {
-                       $this->enable_cache = (bool) $enable_cache;
-               }
-
-               if ($cache_location)
-               {
-                       $this->cache_location = (string) $cache_location;
-               }
-
-               if ($cache_name_function)
-               {
-                       $this->cache_name_function = (string) $cache_name_function;
-               }
-
-               if ($cache_class)
-               {
-                       $this->cache_class = (string) $cache_class;
-               }
-       }
-
-       function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
-       {
-               if ($file_class)
-               {
-                       $this->file_class = (string) $file_class;
-               }
-
-               if ($timeout)
-               {
-                       $this->timeout = (string) $timeout;
-               }
-
-               if ($useragent)
-               {
-                       $this->useragent = (string) $useragent;
-               }
-
-               if ($force_fsockopen)
-               {
-                       $this->force_fsockopen = (string) $force_fsockopen;
-               }
-       }
-
-       function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
-       {
-               if ($tags)
-               {
-                       if (is_array($tags))
-                       {
-                               $this->strip_htmltags = $tags;
-                       }
-                       else
-                       {
-                               $this->strip_htmltags = explode(',', $tags);
-                       }
-               }
-               else
-               {
-                       $this->strip_htmltags = false;
-               }
-       }
-
-       function encode_instead_of_strip($encode = false)
-       {
-               $this->encode_instead_of_strip = (bool) $encode;
-       }
-
-       function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
-       {
-               if ($attribs)
-               {
-                       if (is_array($attribs))
-                       {
-                               $this->strip_attributes = $attribs;
-                       }
-                       else
-                       {
-                               $this->strip_attributes = explode(',', $attribs);
-                       }
-               }
-               else
-               {
-                       $this->strip_attributes = false;
-               }
-       }
-
-       function strip_comments($strip = false)
-       {
-               $this->strip_comments = (bool) $strip;
-       }
-
-       function set_output_encoding($encoding = 'UTF-8')
-       {
-               $this->output_encoding = (string) $encoding;
-       }
-
-       /**
-        * Set element/attribute key/value pairs of HTML attributes
-        * containing URLs that need to be resolved relative to the feed
-        *
-        * @access public
-        * @since 1.0
-        * @param array $element_attribute Element/attribute key/value pairs
-        */
-       function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
-       {
-               $this->replace_url_attributes = (array) $element_attribute;
-       }
-
-       function sanitize($data, $type, $base = '')
-       {
-               $data = trim($data);
-               if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
-               {
-                       if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
-                       {
-                               if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
-                               {
-                                       $type |= SIMPLEPIE_CONSTRUCT_HTML;
-                               }
-                               else
-                               {
-                                       $type |= SIMPLEPIE_CONSTRUCT_TEXT;
-                               }
-                       }
-
-                       if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
-                       {
-                               $data = base64_decode($data);
-                       }
-
-                       if ($type & SIMPLEPIE_CONSTRUCT_XHTML)
-                       {
-                               if ($this->remove_div)
-                               {
-                                       $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
-                                       $data = preg_replace('/<\/div>$/', '', $data);
-                               }
-                               else
-                               {
-                                       $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
-                               }
-                       }
-
-                       if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
-                       {
-                               // Strip comments
-                               if ($this->strip_comments)
-                               {
-                                       $data = SimplePie_Misc::strip_comments($data);
-                               }
-
-                               // Strip out HTML tags and attributes that might cause various security problems.
-                               // Based on recommendations by Mark Pilgrim at:
-                               // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
-                               if ($this->strip_htmltags)
-                               {
-                                       foreach ($this->strip_htmltags as $tag)
-                                       {
-                                               $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
-                                               while (preg_match($pcre, $data))
-                                               {
-                                                       $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
-                                               }
-                                       }
-                               }
-
-                               if ($this->strip_attributes)
-                               {
-                                       foreach ($this->strip_attributes as $attrib)
-                                       {
-                                               $data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data);
-                                       }
-                               }
-
-                               // Replace relative URLs
-                               $this->base = $base;
-                               foreach ($this->replace_url_attributes as $element => $attributes)
-                               {
-                                       $data = $this->replace_urls($data, $element, $attributes);
-                               }
-
-                               // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
-                               if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
-                               {
-                                       $images = SimplePie_Misc::get_element('img', $data);
-                                       foreach ($images as $img)
-                                       {
-                                               if (isset($img['attribs']['src']['data']))
-                                               {
-                                                       $image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']);
-                                                       $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi');
-
-                                                       if ($cache->load())
-                                                       {
-                                                               $img['attribs']['src']['data'] = $this->image_handler . $image_url;
-                                                               $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
-                                                       }
-                                                       else
-                                                       {
-                                                               $file =& new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
-                                                               $headers = $file->headers;
-
-                                                               if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
-                                                               {
-                                                                       if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
-                                                                       {
-                                                                               $img['attribs']['src']['data'] = $this->image_handler . $image_url;
-                                                                               $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
-                               $data = trim($data);
-                       }
-
-                       if ($type & SIMPLEPIE_CONSTRUCT_IRI)
-                       {
-                               $data = SimplePie_Misc::absolutize_url($data, $base);
-                       }
-
-                       if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
-                       {
-                               $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
-                       }
-
-                       if ($this->output_encoding !== 'UTF-8')
-                       {
-                               $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
-                       }
-               }
-               return $data;
-       }
-
-       function replace_urls($data, $tag, $attributes)
-       {
-               if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
-               {
-                       $elements = SimplePie_Misc::get_element($tag, $data);
-                       foreach ($elements as $element)
-                       {
-                               if (is_array($attributes))
-                               {
-                                       foreach ($attributes as $attribute)
-                                       {
-                                               if (isset($element['attribs'][$attribute]['data']))
-                                               {
-                                                       $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
-                                                       $new_element = SimplePie_Misc::element_implode($element);
-                                                       $data = str_replace($element['full'], $new_element, $data);
-                                                       $element['full'] = $new_element;
-                                               }
-                                       }
-                               }
-                               elseif (isset($element['attribs'][$attributes]['data']))
-                               {
-                                       $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
-                                       $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
-                               }
-                       }
-               }
-               return $data;
-       }
-
-       function do_strip_htmltags($match)
-       {
-               if ($this->encode_instead_of_strip)
-               {
-                       if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
-                       {
-                               $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
-                               $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
-                               return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
-                       }
-                       else
-                       {
-                               return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
-                       }
-               }
-               elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
-               {
-                       return $match[4];
-               }
-               else
-               {
-                       return '';
-               }
-       }
-}
-endif;
-?>
+endif;
\ No newline at end of file
index 20fcf405872ae508097fd4a2650719d50a93cf7d..f8ee5e2d937077d223937e71749f0b37f98e4eae 100644 (file)
@@ -1,4 +1,12 @@
 <?php
+/**
+ * The WordPress Toolbar
+ *
+ * @since 3.1.0
+ *
+ * @package WordPress
+ * @subpackage Toolbar
+ */
 class WP_Admin_Bar {
        private $nodes = array();
        private $bound = false;
@@ -104,7 +112,7 @@ class WP_Admin_Bar {
                        $defaults = get_object_vars( $maybe_defaults );
 
                // Do the same for 'meta' items.
-               if ( ! empty( $defaults['meta'] ) && empty( $args['meta'] ) )
+               if ( ! empty( $defaults['meta'] ) && empty( $args['meta'] ) )
                        $args['meta'] = wp_parse_args( $args['meta'], $defaults['meta'] );
 
                $args = wp_parse_args( $args, $defaults );
@@ -149,13 +157,13 @@ class WP_Admin_Bar {
        }
 
        final public function get_nodes() {
-          if ( ! $nodes = $this->_get_nodes() )
-             return;
+               if ( ! $nodes = $this->_get_nodes() )
+                       return;
 
-          foreach ( $nodes as &$node ) {
-              $node = clone $node;
-          }
-          return $nodes;
+               foreach ( $nodes as &$node ) {
+                       $node = clone $node;
+               }
+               return $nodes;
        }
 
        final protected function _get_nodes() {
@@ -184,7 +192,7 @@ class WP_Admin_Bar {
        /**
         * Remove a node.
         *
-        * @return object The removed node.
+        * @param string The ID of the item.
         */
        public function remove_node( $id ) {
                $this->_unset_node( $id );
@@ -237,8 +245,9 @@ class WP_Admin_Bar {
 
                        if ( $node->type == 'group' ) {
                                if ( empty( $node->meta['class'] ) )
-                                       $node->meta['class'] = '';
-                               $node->meta['class'] .= ' ' . $group_class;
+                                       $node->meta['class'] = $group_class;
+                               else
+                                       $node->meta['class'] .= ' ' . $group_class;
                        }
 
                        // Items in items aren't allowed. Wrap nested items in 'default' groups.
@@ -339,11 +348,13 @@ class WP_Admin_Bar {
 
                ?>
                <div id="wpadminbar" class="<?php echo $class; ?>" role="navigation">
-                       <div class="quicklinks">
+                       <a class="screen-reader-shortcut" href="#wp-toolbar" tabindex="1"><?php _e('Skip to toolbar'); ?></a>
+                       <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="<?php esc_attr_e('Top navigation toolbar.'); ?>" tabindex="0">
                                <?php foreach ( $root->children as $group ) {
                                        $this->_render_group( $group );
                                } ?>
                        </div>
+                       <a class="screen-reader-shortcut" href="<?php echo esc_url( wp_logout_url() ); ?>"><?php _e('Log Out'); ?></a>
                </div>
 
                <?php
@@ -367,9 +378,12 @@ class WP_Admin_Bar {
                if ( $node->type != 'group' || empty( $node->children ) )
                        return;
 
-               $class = empty( $node->meta['class'] ) ? '' : $node->meta['class'];
+               if ( ! empty( $node->meta['class'] ) )
+                       $class = ' class="' . esc_attr( trim( $node->meta['class'] ) ) . '"';
+               else
+                       $class = '';
 
-               ?><ul id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php
+               ?><ul id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>"<?php echo $class; ?>><?php
                        foreach ( $node->children as $item ) {
                                $this->_render_item( $item );
                        }
@@ -383,22 +397,25 @@ class WP_Admin_Bar {
                $is_parent = ! empty( $node->children );
                $has_link  = ! empty( $node->href );
 
-               $tabindex = isset( $node->meta['tabindex'] ) ? (int) $node->meta['tabindex'] : 10;
+               $tabindex = isset( $node->meta['tabindex'] ) ? (int) $node->meta['tabindex'] : '';
+               $aria_attributes = $tabindex ? 'tabindex="' . $tabindex . '"' : '';
 
                $menuclass = '';
-               $aria_attributes = 'tabindex="' . $tabindex . '"';
 
                if ( $is_parent ) {
-                       $menuclass = 'menupop';
+                       $menuclass = 'menupop ';
                        $aria_attributes .= ' aria-haspopup="true"';
                }
 
                if ( ! empty( $node->meta['class'] ) )
-                       $menuclass .= ' ' . $node->meta['class'];
+                       $menuclass .= $node->meta['class'];
+
+               if ( $menuclass )
+                       $menuclass = ' class="' . esc_attr( trim( $menuclass ) ) . '"';
 
                ?>
 
-               <li id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>" class="<?php echo esc_attr( $menuclass ); ?>"><?php
+               <li id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>"<?php echo $menuclass; ?>><?php
                        if ( $has_link ):
                                ?><a class="ab-item" <?php echo $aria_attributes; ?> href="<?php echo esc_url( $node->href ) ?>"<?php
                                        if ( ! empty( $node->meta['onclick'] ) ) :
index 2bf974a26502353772db308819bac9dabe093020..24eb687f123f1e697d64678c8f9aae8178a539b8 100644 (file)
@@ -126,8 +126,8 @@ class WP_Ajax_Response {
         * @since 2.1.0
         */
        function send() {
-               header('Content-Type: text/xml');
-               echo "<?xml version='1.0' standalone='yes'?><wp_ajax>";
+               header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ) );
+               echo "<?xml version='1.0' encoding='" . get_option( 'blog_charset' ) . "' standalone='yes'?><wp_ajax>";
                foreach ( (array) $this->responses as $response )
                        echo $response;
                echo '</wp_ajax>';
diff --git a/wp-includes/class-wp-atom-server.php b/wp-includes/class-wp-atom-server.php
deleted file mode 100644 (file)
index a3f7cfe..0000000
+++ /dev/null
@@ -1,1488 +0,0 @@
-<?php
-
-/**
- * WordPress AtomPub API implementation.
- *
- * @package WordPress
- * @subpackage Publishing
- * @since 2.2.0
- */
-class wp_atom_server {
-
-       /**
-        * ATOM content type.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ATOM_CONTENT_TYPE = 'application/atom+xml';
-
-       /**
-        * Categories ATOM content type.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $CATEGORIES_CONTENT_TYPE = 'application/atomcat+xml';
-
-       /**
-        * Service ATOM content type.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $SERVICE_CONTENT_TYPE = 'application/atomsvc+xml';
-
-       /**
-        * ATOM XML namespace.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $ATOM_NS = 'http://www.w3.org/2005/Atom';
-
-       /**
-        * ATOMPUB XML namespace.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $ATOMPUB_NS = 'http://www.w3.org/2007/app';
-
-       /**
-        * Entries path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ENTRIES_PATH = "posts";
-
-       /**
-        * Categories path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $CATEGORIES_PATH = "categories";
-
-       /**
-        * Media path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $MEDIA_PATH = "attachments";
-
-       /**
-        * Entry path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ENTRY_PATH = "post";
-
-       /**
-        * Service path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $SERVICE_PATH = "service";
-
-       /**
-        * Media single path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $MEDIA_SINGLE_PATH = "attachment";
-
-       /**
-        * ATOMPUB parameters.
-        *
-        * @since 2.2.0
-        * @var array
-        */
-       var $params = array();
-
-       /**
-        * Supported ATOMPUB media types.
-        *
-        * @since 2.3.0
-        * @var array
-        */
-       var $media_content_types = array('image/*','audio/*','video/*');
-
-       /**
-        * ATOMPUB content type(s).
-        *
-        * @since 2.2.0
-        * @var array
-        */
-       var $atom_content_types = array('application/atom+xml');
-
-       /**
-        * ATOMPUB methods.
-        *
-        * @since 2.2.0
-        * @var unknown_type
-        */
-       var $selectors = array();
-
-       /**
-        * Whether to do output.
-        *
-        * Support for head.
-        *
-        * @since 2.2.0
-        * @var bool
-        */
-       var $do_output = true;
-
-       /**
-        * Constructor - Sets up object properties.
-        *
-        * @since 2.2.0
-        * @return AtomServer
-        */
-       function __construct() {
-
-               $var_by_ref = explode( '/', $_SERVER['SCRIPT_NAME'] );
-               $this->script_name = array_pop( $var_by_ref );
-               $this->app_base = site_url( $this->script_name . '/' );
-
-               $this->selectors = array(
-                       '@/service$@' =>
-                               array('GET' => 'get_service'),
-                       '@/categories$@' =>
-                               array('GET' => 'get_categories_xml'),
-                       '@/post/(\d+)$@' =>
-                               array('GET' => 'get_post',
-                                               'PUT' => 'put_post',
-                                               'DELETE' => 'delete_post'),
-                       '@/posts/?(\d+)?$@' =>
-                               array('GET' => 'get_posts',
-                                               'POST' => 'create_post'),
-                       '@/attachments/?(\d+)?$@' =>
-                               array('GET' => 'get_attachment',
-                                               'POST' => 'create_attachment'),
-                       '@/attachment/file/(\d+)$@' =>
-                               array('GET' => 'get_file'),
-                       '@/attachment/(\d+)$@' =>
-                               array('GET' => 'get_attachment',
-                                               'PUT' => 'put_attachment',
-                                               'DELETE' => 'delete_attachment'),
-               );
-       }
-
-       /**
-        * Handle ATOMPUB request.
-        *
-        * @since 2.2.0
-        */
-       function handle_request() {
-
-               if ( !empty( $_SERVER['ORIG_PATH_INFO'] ) )
-                       $path = $_SERVER['ORIG_PATH_INFO'];
-               else
-                       $path = $_SERVER['PATH_INFO'];
-
-               $method = $_SERVER['REQUEST_METHOD'];
-
-               $this->process_conditionals();
-               //$this->process_conditionals();
-
-               // exception case for HEAD (treat exactly as GET, but don't output)
-               if ($method == 'HEAD') {
-                       $this->do_output = false;
-                       $method = 'GET';
-               }
-
-               // redirect to /service in case no path is found.
-               if (strlen($path) == 0 || $path == '/')
-                       $this->redirect($this->get_service_url());
-
-               // check to see if AtomPub is enabled
-               if ( !get_option( 'enable_app' ) )
-                       $this->forbidden( sprintf( __( 'AtomPub services are disabled on this site. An admin user can enable them at %s' ), admin_url('options-writing.php') ) );
-
-               // dispatch
-               foreach ( $this->selectors as $regex => $funcs ) {
-                       if ( preg_match($regex, $path, $matches) ) {
-                               if ( isset($funcs[$method]) ) {
-
-                                       // authenticate regardless of the operation and set the current
-                                       // user. each handler will decide if auth is required or not.
-                                       if ( !$this->authenticate() ) {
-                                               $this->auth_required('Credentials required.');
-                                       }
-
-                                       array_shift($matches);
-                                       call_user_func_array(array($this,$funcs[$method]), $matches);
-                                       wp_die();
-                               } else {
-                                       // only allow what we have handlers for...
-                                       $this->not_allowed(array_keys($funcs));
-                               }
-                       }
-               }
-
-               // oops, nothing found
-               $this->not_found();
-       }
-
-       /**
-        * Retrieve XML for ATOMPUB service.
-        *
-        * @since 2.2.0
-        */
-       function get_service() {
-
-               if ( !current_user_can( 'edit_posts' ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
-
-               $entries_url = esc_attr($this->get_entries_url());
-               $categories_url = esc_attr($this->get_categories_url());
-               $media_url = esc_attr($this->get_attachments_url());
-               $accepted_media_types = '';
-               foreach ($this->media_content_types as $med) {
-                       $accepted_media_types = $accepted_media_types . "<accept>" . $med . "</accept>";
-               }
-               $atom_prefix="atom";
-               $atom_blogname = get_bloginfo('name');
-               $service_doc = <<<EOD
-<service xmlns="$this->ATOMPUB_NS" xmlns:$atom_prefix="$this->ATOM_NS">
-  <workspace>
-    <$atom_prefix:title>$atom_blogname Workspace</$atom_prefix:title>
-    <collection href="$entries_url">
-      <$atom_prefix:title>$atom_blogname Posts</$atom_prefix:title>
-      <accept>$this->ATOM_CONTENT_TYPE;type=entry</accept>
-      <categories href="$categories_url" />
-    </collection>
-    <collection href="$media_url">
-      <$atom_prefix:title>$atom_blogname Media</$atom_prefix:title>
-      $accepted_media_types
-    </collection>
-  </workspace>
-</service>
-
-EOD;
-
-               $this->output($service_doc, $this->SERVICE_CONTENT_TYPE);
-       }
-
-       /**
-        * Retrieve categories list in XML format.
-        *
-        * @since 2.2.0
-        */
-       function get_categories_xml() {
-
-               if ( !current_user_can( 'edit_posts' ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
-
-               $home = esc_attr(get_bloginfo_rss('url'));
-
-               $categories = "";
-               $cats = get_categories(array('hierarchical' => 0, 'hide_empty' => 0));
-               foreach ( (array) $cats as $cat ) {
-                       $categories .= "    <category term=\"" . esc_attr($cat->name) . "\" />\n";
-               }
-               $output = <<<EOD
-<app:categories xmlns:app="$this->ATOMPUB_NS"
-       xmlns="$this->ATOM_NS"
-       fixed="yes" scheme="$home">
-       $categories
-</app:categories>
-EOD;
-               $this->output($output, $this->CATEGORIES_CONTENT_TYPE);
-       }
-
-       /**
-        * Create new post.
-        *
-        * @since 2.2.0
-        */
-       function create_post() {
-               global $user_ID;
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if ( !$parser->parse() )
-                       $this->client_error();
-
-               $entry = array_pop($parser->feed->entries);
-
-               $publish = ! ( isset( $entry->draft ) && 'yes' == trim( $entry->draft ) );
-               $cap = ($publish) ? 'publish_posts' : 'edit_posts';
-
-               if ( !current_user_can($cap) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit/publish new posts.'));
-
-               $catnames = array();
-               if ( !empty( $entry->categories ) ) {
-                       foreach ( $entry->categories as $cat ) {
-                               array_push($catnames, $cat["term"]);
-                       }
-               }
-
-               $wp_cats = get_categories(array('hide_empty' => false));
-
-               $post_category = array();
-
-               foreach ( $wp_cats as $cat ) {
-                       if ( in_array($cat->name, $catnames) )
-                               array_push($post_category, $cat->term_id);
-               }
-
-               $blog_ID = get_current_blog_id();
-               $post_status = ($publish) ? 'publish' : 'draft';
-               $post_author = (int) $user_ID;
-
-               $post_title   = '';
-               $post_content = '';
-               $post_excerpt = '';
-               $pubtimes     = '';
-
-               if ( isset( $entry->title ) && is_array( $entry->title ) && !empty( $entry->title[1] ) )
-                       $post_title = (string) $entry->title[1];
-               if ( isset( $entry->content ) && is_array( $entry->content ) && !empty( $entry->content[1] ) )
-                       $post_content = (string) $entry->content[1];
-               if ( isset( $entry->summary ) && is_array( $entry->summary ) && !empty( $entry->summary[1] ) )
-                       $post_excerpt = (string) $entry->summary[1];
-               if ( !empty( $entry->published ) )
-                       $pubtimes = (string) $entry->published;
-
-               $pubtimes = $this->get_publish_time( $pubtimes );
-
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-
-               if ( isset( $_SERVER['HTTP_SLUG'] ) )
-                       $post_name = $_SERVER['HTTP_SLUG'];
-
-               $post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name');
-
-               $this->escape($post_data);
-
-               $postID = wp_insert_post($post_data);
-               if ( is_wp_error( $postID ) )
-                       $this->internal_error($postID->get_error_message());
-
-               if ( !$postID )
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               // getting warning here about unable to set headers
-               // because something in the cache is printing to the buffer
-               // could we clean up wp_set_post_categories or cache to not print
-               // this could affect our ability to send back the right headers
-               @wp_set_post_categories($postID, $post_category);
-
-               do_action( 'atompub_create_post', $postID, $entry );
-
-               $output = $this->get_entry($postID);
-
-               $this->created($postID, $output);
-       }
-
-       /**
-        * Retrieve post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function get_post($postID) {
-               global $entry;
-
-               if ( ! get_post( $postID ) || ! current_user_can( 'edit_post', $postID ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this post.' ) );
-
-               $this->set_current_entry($postID);
-               $output = $this->get_entry($postID);
-               $this->output($output);
-
-       }
-
-       /**
-        * Update post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_post($postID) {
-               // checked for valid content-types (atom+xml)
-               // quick check and exit
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if ( !$parser->parse() )
-                       $this->bad_request();
-
-               $parsed = array_pop($parser->feed->entries);
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $publish = ! ( isset($parsed->draft) && 'yes' == trim($parsed->draft) );
-
-               if ( $publish && ! current_user_can( 'publish_posts' ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to publish this post.' ) );
-
-               $post_status = ($publish) ? 'publish' : 'draft';
-
-               extract($entry);
-
-               $post_title = $parsed->title[1];
-               $post_content = $parsed->content[1];
-               $post_excerpt = $parsed->summary[1];
-               $pubtimes = $this->get_publish_time($entry->published);
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
-               $this->escape($postdata);
-
-               $result = wp_update_post($postdata);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
-
-               do_action( 'atompub_put_post', $ID, $parsed );
-
-               $this->ok();
-       }
-
-       /**
-        * Remove post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function delete_post($postID) {
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('delete_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
-
-               if ( $entry['post_type'] == 'attachment' ) {
-                       $this->delete_attachment($postID);
-               } else {
-                       $result = wp_delete_post($postID);
-
-                       if ( !$result ) {
-                               $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
-                       }
-
-                       $this->ok();
-               }
-
-       }
-
-       /**
-        * Retrieve attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Optional. Post ID.
-        */
-       function get_attachment($postID = null) {
-               if ( !current_user_can( 'upload_files' ) )
-                       $this->auth_required( __( 'You do not have permission to upload files.' ) );
-
-               if ( !isset($postID) ) {
-                       $this->get_attachments();
-               } else {
-                       if ( ! current_user_can( 'edit_post', $postID ) )
-                               $this->auth_required( __( 'Sorry, you do not have the right to edit this post.' ) );
-
-                       $this->set_current_entry($postID);
-                       $output = $this->get_entry($postID, 'attachment');
-                       $this->output($output);
-               }
-       }
-
-       /**
-        * Create new attachment.
-        *
-        * @since 2.2.0
-        */
-       function create_attachment() {
-
-               $type = $this->get_accepted_content_type();
-
-               if ( !current_user_can('upload_files') )
-                       $this->auth_required( __( 'You do not have permission to upload files.' ) );
-
-               $fp = fopen("php://input", "rb");
-               $bits = null;
-               while ( !feof($fp) ) {
-                       $bits .= fread($fp, 4096);
-               }
-               fclose($fp);
-
-               $slug = '';
-               if ( isset( $_SERVER['HTTP_SLUG'] ) )
-                       $slug = $_SERVER['HTTP_SLUG'];
-               elseif ( isset( $_SERVER['HTTP_TITLE'] ) )
-                       $slug = $_SERVER['HTTP_TITLE'];
-               elseif ( empty( $slug ) ) // just make a random name
-                       $slug = substr( md5( uniqid( microtime() ) ), 0, 7);
-               $ext = preg_replace( '|.*/([a-z0-9]+)|', '$1', $_SERVER['CONTENT_TYPE'] );
-               $slug = sanitize_file_name( "$slug.$ext" );
-               $file = wp_upload_bits( $slug, null, $bits);
-
-               $url = $file['url'];
-               $file = $file['file'];
-
-               do_action('wp_create_file_in_uploads', $file); // replicate
-
-               // Construct the attachment array
-               $attachment = array(
-                       'post_title' => $slug,
-                       'post_content' => $slug,
-                       'post_status' => 'attachment',
-                       'post_parent' => 0,
-                       'post_mime_type' => $type,
-                       'guid' => $url
-                       );
-
-               // Save the data
-               $postID = wp_insert_attachment($attachment, $file);
-
-               if (!$postID)
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               $output = $this->get_entry($postID, 'attachment');
-
-               $this->created($postID, $output, 'attachment');
-       }
-
-       /**
-        * Update attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_attachment($postID) {
-               // checked for valid content-types (atom+xml)
-               // quick check and exit
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if (!$parser->parse()) {
-                       $this->bad_request();
-               }
-
-               $parsed = array_pop($parser->feed->entries);
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $entry['ID']) || 'attachment' != $entry['post_type'] )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               extract($entry);
-
-               $post_title = $parsed->title[1];
-               $post_content = $parsed->summary[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_modified', 'post_modified_gmt');
-               $this->escape($postdata);
-
-               $result = wp_update_post($postdata);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
-
-               $this->ok();
-       }
-
-       /**
-        * Remove attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function delete_attachment($postID) {
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('delete_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
-
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $filetype = wp_check_filetype($location);
-
-               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               // delete attachment
-               $result = wp_delete_attachment($postID);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
-
-               $this->ok();
-       }
-
-       /**
-        * Retrieve attachment from post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function get_file($postID) {
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               // then whether user can edit the specific post
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $location = get_option ('upload_path') . '/' . $location;
-               $filetype = wp_check_filetype($location);
-
-               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               status_header('200');
-               header('Content-Type: ' . $entry['post_mime_type']);
-               header('Connection: close');
-
-               if ( $fp = fopen($location, "rb") ) {
-                       status_header('200');
-                       header('Content-Type: ' . $entry['post_mime_type']);
-                       header('Connection: close');
-
-                       while ( !feof($fp) ) {
-                               echo fread($fp, 4096);
-                       }
-
-                       fclose($fp);
-               } else {
-                       status_header ('404');
-               }
-
-               wp_die();
-       }
-
-       /**
-        * Upload file to blog and add attachment to post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_file($postID) {
-
-               // first check if user can upload
-               if ( !current_user_can('upload_files') )
-                       $this->auth_required(__('You do not have permission to upload files.'));
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               // then whether user can edit the specific post
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $upload_dir = wp_upload_dir( );
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $filetype = wp_check_filetype($location);
-
-               $location = "{$upload_dir['basedir']}/{$location}";
-
-               if (!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               $fp = fopen("php://input", "rb");
-               $localfp = fopen($location, "w+");
-               while ( !feof($fp) ) {
-                       fwrite($localfp,fread($fp, 4096));
-               }
-               fclose($fp);
-               fclose($localfp);
-
-               $ID = $entry['ID'];
-               $pubtimes = $this->get_publish_time($entry->published);
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $post_data = compact('ID', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
-               $result = wp_update_post($post_data);
-
-               if ( !$result )
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               wp_update_attachment_metadata( $postID, wp_generate_attachment_metadata( $postID, $location ) );
-
-               $this->ok();
-       }
-
-       /**
-        * Retrieve entries URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @return string
-        */
-       function get_entries_url($page = null) {
-               if ( isset($GLOBALS['post_type']) && ( $GLOBALS['post_type'] == 'attachment' ) )
-                       $path = $this->MEDIA_PATH;
-               else
-                       $path = $this->ENTRIES_PATH;
-               $url = $this->app_base . $path;
-               if ( isset($page) && is_int($page) )
-                       $url .= "/$page";
-               return $url;
-       }
-
-       /**
-        * Display entries URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        */
-       function the_entries_url($page = null) {
-               echo $this->get_entries_url($page);
-       }
-
-       /**
-        * Retrieve categories URL.
-        *
-        * @since 2.2.0
-        *
-        * @param mixed $deprecated Not used.
-        * @return string
-        */
-       function get_categories_url($deprecated = '') {
-               if ( !empty( $deprecated ) )
-                       _deprecated_argument( __FUNCTION__, '2.5' );
-               return $this->app_base . $this->CATEGORIES_PATH;
-       }
-
-       /**
-        * Display category URL.
-        *
-        * @since 2.2.0
-        */
-       function the_categories_url() {
-               echo $this->get_categories_url();
-       }
-
-       /**
-        * Retrieve attachment URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @return string
-        */
-       function get_attachments_url($page = null) {
-               $url = $this->app_base . $this->MEDIA_PATH;
-               if (isset($page) && is_int($page)) {
-                       $url .= "/$page";
-               }
-               return $url;
-       }
-
-       /**
-        * Display attachment URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        */
-       function the_attachments_url($page = null) {
-               echo $this->get_attachments_url($page);
-       }
-
-       /**
-        * Retrieve service URL.
-        *
-        * @since 2.3.0
-        *
-        * @return string
-        */
-       function get_service_url() {
-               return $this->app_base . $this->SERVICE_PATH;
-       }
-
-       /**
-        * Retrieve entry URL.
-        *
-        * @since 2.7.0
-        *
-        * @param int $postID Post ID.
-        * @return string
-        */
-       function get_entry_url($postID = null) {
-               if (!isset($postID)) {
-                       global $post;
-                       $postID = (int) $post->ID;
-               }
-
-               $url = $this->app_base . $this->ENTRY_PATH . "/$postID";
-
-               return $url;
-       }
-
-       /**
-        * Display entry URL.
-        *
-        * @since 2.7.0
-        *
-        * @param int $postID Post ID.
-        */
-       function the_entry_url($postID = null) {
-               echo $this->get_entry_url($postID);
-       }
-
-       /**
-        * Retrieve media URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        * @return string
-        */
-       function get_media_url($postID = null) {
-               if (!isset($postID)) {
-                       global $post;
-                       $postID = (int) $post->ID;
-               }
-
-               $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID";
-
-               return $url;
-       }
-
-       /**
-        * Display the media URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function the_media_url($postID = null) {
-               echo $this->get_media_url($postID);
-       }
-
-       /**
-        * Set the current entry to post ID.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function set_current_entry($postID) {
-               global $entry;
-
-               if (!isset($postID)) {
-                       // $this->bad_request();
-                       $this->not_found();
-               }
-
-               $entry = wp_get_single_post($postID,ARRAY_A);
-
-               if (!isset($entry) || !isset($entry['ID']))
-                       $this->not_found();
-
-               return;
-       }
-
-       /**
-        * Display posts XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Optional. Page ID.
-        * @param string $post_type Optional, default is 'post'. Post Type.
-        */
-       function get_posts($page = 1, $post_type = 'post') {
-               $feed = $this->get_feed($page, $post_type);
-               $this->output($feed);
-       }
-
-       /**
-        * Display attachment XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @param string $post_type Optional, default is 'attachment'. Post type.
-        */
-       function get_attachments($page = 1, $post_type = 'attachment') {
-               $GLOBALS['post_type'] = $post_type;
-               $feed = $this->get_feed($page, $post_type);
-               $this->output($feed);
-       }
-
-       /**
-        * Retrieve feed XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @param string $post_type Optional, default is post. Post type.
-        * @return string
-        */
-       function get_feed($page = 1, $post_type = 'post') {
-               global $post, $wp, $wp_query, $posts, $wpdb, $blog_id;
-               ob_start();
-
-               $this->ENTRY_PATH = $post_type;
-
-               if (!isset($page)) {
-                       $page = 1;
-               }
-               $page = (int) $page;
-
-               $count = get_option('posts_per_rss');
-
-               wp('posts_per_page=' . $count . '&offset=' . ($count * ($page-1)) . '&orderby=modified&perm=readable');
-
-               $post = $GLOBALS['post'];
-               $posts = $GLOBALS['posts'];
-               $wp = $GLOBALS['wp'];
-               $wp_query = $GLOBALS['wp_query'];
-               $wpdb = $GLOBALS['wpdb'];
-               $blog_id = (int) $GLOBALS['blog_id'];
-
-               $last_page = $wp_query->max_num_pages;
-               $next_page = (($page + 1) > $last_page) ? null : $page + 1;
-               $prev_page = ($page - 1) < 1 ? null : $page - 1;
-               $last_page = ((int)$last_page == 1 || (int)$last_page == 0) ? null : (int) $last_page;
-               $self_page = $page > 1 ? $page : null;
-?><feed xmlns="<?php echo $this->ATOM_NS ?>" xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php bloginfo_rss( 'language' ); ?>" <?php do_action('app_ns'); ?> >
-<id><?php $this->the_entries_url() ?></id>
-<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
-<title type="text"><?php bloginfo_rss('name') ?></title>
-<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
-<link rel="first" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url() ?>" />
-<?php if (isset($prev_page)): ?>
-<link rel="previous" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($prev_page) ?>" />
-<?php endif; ?>
-<?php if (isset($next_page)): ?>
-<link rel="next" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($next_page) ?>" />
-<?php endif; ?>
-<link rel="last" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($last_page) ?>" />
-<link rel="self" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($self_page) ?>" />
-<rights type="text">Copyright <?php echo date('Y'); ?></rights>
-<?php do_action('app_head'); ?>
-<?php if ( have_posts() ) {
-                       while ( have_posts() ) {
-                               the_post();
-                               $this->echo_entry();
-                       }
-               }
-?></feed>
-<?php
-               $feed = ob_get_contents();
-               ob_end_clean();
-               return $feed;
-       }
-
-       /**
-        * Display entry XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        * @param string $post_type Optional, default is post. Post type.
-        * @return string.
-        */
-       function get_entry($postID, $post_type = 'post') {
-               ob_start();
-               switch($post_type) {
-                       case 'post':
-                               $varname = 'p';
-                               break;
-                       case 'attachment':
-                               $this->ENTRY_PATH = 'attachment';
-                               $varname = 'attachment_id';
-                               break;
-               }
-               query_posts($varname . '=' . $postID);
-               if ( have_posts() ) {
-                       while ( have_posts() ) {
-                               the_post();
-                               $this->echo_entry();
-                               $entry = ob_get_contents();
-                               break;
-                       }
-               }
-               ob_end_clean();
-
-               return $entry;
-       }
-
-       /**
-        * Display post content XML.
-        *
-        * @since 2.3.0
-        */
-       function echo_entry() { ?>
-<entry xmlns="<?php echo $this->ATOM_NS ?>"
-       xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php bloginfo_rss( 'language' ); ?>">
-       <id><?php the_guid( $GLOBALS['post']->ID ); ?></id>
-<?php list($content_type, $content) = prep_atom_text_construct(get_the_title()); ?>
-       <title type="<?php echo $content_type ?>"><?php echo $content ?></title>
-       <updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
-       <published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
-       <app:edited><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></app:edited>
-       <app:control>
-               <app:draft><?php echo ($GLOBALS['post']->post_status == 'draft' ? 'yes' : 'no') ?></app:draft>
-       </app:control>
-       <author>
-               <name><?php the_author()?></name>
-<?php if ( get_the_author_meta('url') && get_the_author_meta('url') != 'http://' ) { ?>
-               <uri><?php the_author_meta('url') ?></uri>
-<?php } ?>
-       </author>
-<?php if ($GLOBALS['post']->post_type == 'attachment') { ?>
-       <link rel="edit-media" href="<?php $this->the_media_url() ?>" />
-       <content type="<?php echo $GLOBALS['post']->post_mime_type ?>" src="<?php the_guid() ; ?>"/>
-<?php } else { ?>
-       <link href="<?php the_permalink_rss() ?>" />
-<?php if ( strlen( $GLOBALS['post']->post_content ) ) :
-list($content_type, $content) = prep_atom_text_construct(get_the_content()); ?>
-       <content type="<?php echo $content_type ?>"><?php echo $content ?></content>
-<?php endif; ?>
-<?php } ?>
-       <link rel="edit" href="<?php $this->the_entry_url() ?>" />
-       <?php the_category_rss( 'atom' ); ?>
-<?php list($content_type, $content) = prep_atom_text_construct(get_the_excerpt()); ?>
-       <summary type="<?php echo $content_type ?>"><?php echo $content ?></summary>
-       <?php do_action('app_entry'); ?>
-</entry>
-<?php }
-
-       /**
-        * Set 'OK' (200) status header.
-        *
-        * @since 2.2.0
-        */
-       function ok() {
-               header('Content-Type: text/plain');
-               status_header('200');
-               wp_die();
-       }
-
-       /**
-        * Set 'No Content' (204) status header.
-        *
-        * @since 2.2.0
-        */
-       function no_content() {
-               header('Content-Type: text/plain');
-               status_header('204');
-               echo "Moved to Trash.";
-               wp_die();
-       }
-
-       /**
-        * Display 'Internal Server Error' (500) status header.
-        *
-        * @since 2.2.0
-        *
-        * @param string $msg Optional. Status string.
-        */
-       function internal_error($msg = 'Internal Server Error') {
-               header('Content-Type: text/plain');
-               status_header('500');
-               echo $msg;
-               wp_die();
-       }
-
-       /**
-        * Set 'Bad Request' (400) status header.
-        *
-        * @since 2.2.0
-        */
-       function bad_request() {
-               header('Content-Type: text/plain');
-               status_header('400');
-               wp_die();
-       }
-
-       /**
-        * Set 'Length Required' (411) status header.
-        *
-        * @since 2.2.0
-        */
-       function length_required() {
-               header("HTTP/1.1 411 Length Required");
-               header('Content-Type: text/plain');
-               status_header('411');
-               wp_die();
-       }
-
-       /**
-        * Set 'Unsupported Media Type' (415) status header.
-        *
-        * @since 2.2.0
-        */
-       function invalid_media() {
-               header("HTTP/1.1 415 Unsupported Media Type");
-               header('Content-Type: text/plain');
-               wp_die();
-       }
-
-       /**
-        * Set 'Forbidden' (403) status header.
-        *
-        * @since 2.6.0
-        */
-       function forbidden($reason='') {
-               header('Content-Type: text/plain');
-               status_header('403');
-               echo $reason;
-               wp_die();
-       }
-
-       /**
-        * Set 'Not Found' (404) status header.
-        *
-        * @since 2.2.0
-        */
-       function not_found() {
-               header('Content-Type: text/plain');
-               status_header('404');
-               wp_die();
-       }
-
-       /**
-        * Set 'Not Allowed' (405) status header.
-        *
-        * @since 2.2.0
-        */
-       function not_allowed($allow) {
-               header('Allow: ' . join(',', $allow));
-               status_header('405');
-               wp_die();
-       }
-
-       /**
-        * Display Redirect (302) content and set status headers.
-        *
-        * @since 2.3.0
-        */
-       function redirect($url) {
-               $escaped_url = esc_attr($url);
-               $content = <<<EOD
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html>
-  <head>
-    <title>302 Found</title>
-  </head>
-<body>
-  <h1>Found</h1>
-  <p>The document has moved <a href="$escaped_url">here</a>.</p>
-  </body>
-</html>
-
-EOD;
-               header('HTTP/1.1 302 Moved');
-               header('Content-Type: text/html');
-               header('Location: ' . $url);
-               echo $content;
-               wp_die();
-
-       }
-
-       /**
-        * Set 'Client Error' (400) status header.
-        *
-        * @since 2.2.0
-        */
-       function client_error($msg = 'Client Error') {
-               header('Content-Type: text/plain');
-               status_header('400');
-               wp_die();
-       }
-
-       /**
-        * Set created status headers (201).
-        *
-        * Sets the 'content-type', 'content-location', and 'location'.
-        *
-        * @since 2.2.0
-        */
-       function created($post_ID, $content, $post_type = 'post') {
-               $edit = $this->get_entry_url($post_ID);
-               switch($post_type) {
-                       case 'post':
-                               $ctloc = $this->get_entry_url($post_ID);
-                               break;
-                       case 'attachment':
-                               $edit = $this->app_base . "attachments/$post_ID";
-                               break;
-               }
-               header("Content-Type: $this->ATOM_CONTENT_TYPE");
-               if (isset($ctloc))
-                       header('Content-Location: ' . $ctloc);
-               header('Location: ' . $edit);
-               status_header('201');
-               echo $content;
-               wp_die();
-       }
-
-       /**
-        * Set 'Auth Required' (401) headers.
-        *
-        * @since 2.2.0
-        *
-        * @param string $msg Status header content and HTML content.
-        */
-       function auth_required($msg) {
-               nocache_headers();
-               header('WWW-Authenticate: Basic realm="WordPress Atom Protocol"');
-               header("HTTP/1.1 401 $msg");
-               header('Status: 401 ' . $msg);
-               header('Content-Type: text/html');
-               $content = <<<EOD
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html>
-  <head>
-    <title>401 Unauthorized</title>
-  </head>
-<body>
-    <h1>401 Unauthorized</h1>
-    <p>$msg</p>
-  </body>
-</html>
-
-EOD;
-               echo $content;
-               wp_die();
-       }
-
-       /**
-        * Display XML and set headers with content type.
-        *
-        * @since 2.2.0
-        *
-        * @param string $xml Display feed content.
-        * @param string $ctype Optional, default is 'atom+xml'. Feed content type.
-        */
-       function output($xml, $ctype = 'application/atom+xml') {
-               status_header('200');
-               $xml = '<?xml version="1.0" encoding="' . strtolower(get_option('blog_charset')) . '"?>'."\n".$xml;
-               header('Connection: close');
-               header('Content-Length: '. strlen($xml));
-               header('Content-Type: ' . $ctype);
-               header('Content-Disposition: attachment; filename=atom.xml');
-               header('Date: '. date('r'));
-               if ($this->do_output)
-                       echo $xml;
-               wp_die();
-       }
-
-       /**
-        * Sanitize content for database usage.
-        *
-        * @since 2.2.0
-        *
-        * @param array $array Sanitize array and multi-dimension array.
-        */
-       function escape(&$array) {
-               global $wpdb;
-
-               foreach ($array as $k => $v) {
-                               if (is_array($v)) {
-                                               $this->escape($array[$k]);
-                               } else if (is_object($v)) {
-                                               //skip
-                               } else {
-                                               $array[$k] = $wpdb->escape($v);
-                               }
-               }
-       }
-
-       /**
-        * Access credential through various methods and perform login.
-        *
-        * @since 2.2.0
-        *
-        * @return bool
-        */
-       function authenticate() {
-
-               // if using mod_rewrite/ENV hack
-               // http://www.besthostratings.com/articles/http-auth-php-cgi.html
-               if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
-                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
-                               explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
-               } else if (isset($_SERVER['REDIRECT_REMOTE_USER'])) {
-                       // Workaround for setups that do not forward HTTP_AUTHORIZATION
-                       // See http://trac.wordpress.org/ticket/7361
-                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
-                               explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
-               }
-
-               // If Basic Auth is working...
-               if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
-
-                       $user = wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
-                       if ( $user && !is_wp_error($user) ) {
-                               wp_set_current_user($user->ID);
-                               return true;
-                       }
-               }
-
-               return false;
-       }
-
-       /**
-        * Retrieve accepted content types.
-        *
-        * @since 2.2.0
-        *
-        * @param array $types Optional. Content Types.
-        * @return string
-        */
-       function get_accepted_content_type($types = null) {
-
-               if (!isset($types)) {
-                       $types = $this->media_content_types;
-               }
-
-               if (!isset($_SERVER['CONTENT_LENGTH']) || !isset($_SERVER['CONTENT_TYPE'])) {
-                       $this->length_required();
-               }
-
-               $type = $_SERVER['CONTENT_TYPE'];
-               list($type,$subtype) = explode('/',$type);
-               list($subtype) = explode(";",$subtype); // strip MIME parameters
-
-               foreach($types as $t) {
-                       list($acceptedType,$acceptedSubtype) = explode('/',$t);
-                       if ($acceptedType == '*' || $acceptedType == $type) {
-                               if ($acceptedSubtype == '*' || $acceptedSubtype == $subtype)
-                                       return $type . "/" . $subtype;
-                       }
-               }
-
-               $this->invalid_media();
-       }
-
-       /**
-        * Process conditionals for posts.
-        *
-        * @since 2.2.0
-        */
-       function process_conditionals() {
-
-               if (empty($this->params)) return;
-               if ($_SERVER['REQUEST_METHOD'] == 'DELETE') return;
-
-               switch($this->params[0]) {
-                       case $this->ENTRY_PATH:
-                               global $post;
-                               $post = wp_get_single_post($this->params[1]);
-                               $wp_last_modified = get_post_modified_time('D, d M Y H:i:s', true);
-                               $post = null;
-                               break;
-                       case $this->ENTRIES_PATH:
-                               $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT';
-                               break;
-                       default:
-                               return;
-               }
-               $wp_etag = md5($wp_last_modified);
-               @header("Last-Modified: $wp_last_modified");
-               @header("ETag: $wp_etag");
-
-               // Support for Conditional GET
-               if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
-                       $client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
-               else
-                       $client_etag = false;
-
-               $client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']);
-               // If string is empty, return 0. If not, attempt to parse into a timestamp
-               $client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
-
-               // Make a timestamp for our most recent modification...
-               $wp_modified_timestamp = strtotime($wp_last_modified);
-
-               if ( ($client_last_modified && $client_etag) ?
-               (($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) :
-               (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
-                       status_header( 304 );
-                       wp_die();
-               }
-       }
-
-       /**
-        * Convert RFC3339 time string to timestamp.
-        *
-        * @since 2.3.0
-        *
-        * @param string $str String to time.
-        * @return bool|int false if format is incorrect.
-        */
-       function rfc3339_str2time($str) {
-
-               $match = false;
-               if (!preg_match("/(\d{4}-\d{2}-\d{2})T(\d{2}\:\d{2}\:\d{2})\.?\d{0,3}(Z|[+-]+\d{2}\:\d{2})/", $str, $match))
-                       return false;
-
-               if ($match[3] == 'Z')
-                       $match[3] = '+0000';
-
-               return strtotime($match[1] . " " . $match[2] . " " . $match[3]);
-       }
-
-       /**
-        * Retrieve published time to display in XML.
-        *
-        * @since 2.3.0
-        *
-        * @param string $published Time string.
-        * @return string
-        */
-       function get_publish_time($published) {
-
-               $pubtime = $this->rfc3339_str2time($published);
-
-               if (!$pubtime) {
-                       return array(current_time('mysql'),current_time('mysql',1));
-               } else {
-                       return array(date("Y-m-d H:i:s", $pubtime), gmdate("Y-m-d H:i:s", $pubtime));
-               }
-       }
-
-}
index 3189332ac099d678b3d0fa100a14f734c75e0bf2..d24a5f2e7c4e7b6096a06e7aa1f3047834d9058f 100644 (file)
@@ -6,25 +6,71 @@
  * @subpackage Customize
  * @since 3.4.0
  */
-
 class WP_Customize_Control {
+       /**
+        * @access public
+        * @var WP_Customize_Manager
+        */
        public $manager;
+
+       /**
+        * @access public
+        * @var string
+        */
        public $id;
 
-       // All settings tied to the control.
+       /**
+        * All settings tied to the control.
+        *
+        * @access public
+        * @var array
+        */
        public $settings;
 
-       // The primary setting for the control (if there is one).
+       /**
+        * The primary setting for the control (if there is one).
+        *
+        * @access public
+        * @var string
+        */
        public $setting = 'default';
 
+       /**
+        * @access public
+        * @var int
+        */
        public $priority          = 10;
+
+       /**
+        * @access public
+        * @var string
+        */
        public $section           = '';
+
+       /**
+        * @access public
+        * @var string
+        */
        public $label             = '';
-       // @todo: remove choices
+
+       /**
+        * @todo: Remove choices
+        *
+        * @access public
+        * @var array
+        */
        public $choices           = array();
 
+       /**
+        * @access public
+        * @var array
+        */
        public $json = array();
 
+       /**
+        * @access public
+        * @var string
+        */
        public $type = 'text';
 
 
@@ -34,6 +80,10 @@ class WP_Customize_Control {
         * If $args['settings'] is not defined, use the $id as the setting ID.
         *
         * @since 3.4.0
+        *
+        * @param WP_Customize_Manager $manager
+        * @param string $id
+        * @param array $args
         */
        function __construct( $manager, $id, $args = array() ) {
                $keys = array_keys( get_object_vars( $this ) );
@@ -75,6 +125,9 @@ class WP_Customize_Control {
         * Grabs the main setting by default.
         *
         * @since 3.4.0
+        *
+        * @param string $setting_key
+        * @return mixed The requested setting's value, if the setting exists.
         */
        public final function value( $setting_key = 'default' ) {
                if ( isset( $this->settings[ $setting_key ] ) )
@@ -119,6 +172,7 @@ class WP_Customize_Control {
         * Check capabilities and render the control.
         *
         * @since 3.4.0
+        * @uses WP_Customize_Control::render()
         */
        public final function maybe_render() {
                if ( ! $this->check_capabilities() )
@@ -144,6 +198,14 @@ class WP_Customize_Control {
                </li><?php
        }
 
+       /**
+        * Get the data link parameter for a setting.
+        *
+        * @since 3.4.0
+        *
+        * @param string $setting_key
+        * @return string Data link parameter, if $setting_key is a valid setting, empty string otherwise.
+        */
        public function get_link( $setting_key = 'default' ) {
                if ( ! isset( $this->settings[ $setting_key ] ) )
                        return '';
@@ -151,6 +213,14 @@ class WP_Customize_Control {
                return 'data-customize-setting-link="' . esc_attr( $this->settings[ $setting_key ]->id ) . '"';
        }
 
+       /**
+        * Render the data link parameter for a setting
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::get_link()
+        *
+        * @param string $setting_key
+        */
        public function link( $setting_key = 'default' ) {
                echo $this->get_link( $setting_key );
        }
@@ -238,53 +308,117 @@ class WP_Customize_Control {
        }
 }
 
+/**
+ * Customize Color Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 class WP_Customize_Color_Control extends WP_Customize_Control {
+       /**
+        * @access public
+        * @var string
+        */
        public $type = 'color';
+
+       /**
+        * @access public
+        * @var array
+        */
        public $statuses;
 
+       /**
+        * Constructor.
+        *
+        * If $args['settings'] is not defined, use the $id as the setting ID.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager
+        * @param string $id
+        * @param array $args
+        */
        public function __construct( $manager, $id, $args = array() ) {
                $this->statuses = array( '' => __('Default') );
                parent::__construct( $manager, $id, $args );
        }
 
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 3.4.0
+        */
        public function enqueue() {
-               wp_enqueue_script( 'farbtastic' );
-               wp_enqueue_style( 'farbtastic' );
+               wp_enqueue_script( 'wp-color-picker' );
+               wp_enqueue_style( 'wp-color-picker' );
        }
 
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::to_json()
+        */
        public function to_json() {
                parent::to_json();
                $this->json['statuses'] = $this->statuses;
        }
 
+       /**
+        * Render the control's content.
+        *
+        * @since 3.4.0
+        */
        public function render_content() {
+               $this_default = $this->setting->default;
+               $default_attr = '';
+               if ( $this_default ) {
+                       if ( false === strpos( $this_default, '#' ) )
+                               $this_default = '#' . $this_default;
+                       $default_attr = ' data-default-color="' . esc_attr( $this_default ) . '"';
+               }
+               // The input's value gets set by JS. Don't fill it.
                ?>
                <label>
                        <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
                        <div class="customize-control-content">
-                               <div class="dropdown">
-                                       <div class="dropdown-content">
-                                               <div class="dropdown-status"></div>
-                                       </div>
-                                       <div class="dropdown-arrow"></div>
-                               </div>
-                               <input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e('Hex Value'); ?>" />
+                               <input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e( 'Hex Value' ); ?>"<?php echo $default_attr ?> />
                        </div>
-                       <div class="farbtastic-placeholder"></div>
                </label>
                <?php
        }
 }
 
+/**
+ * Customize Upload Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 class WP_Customize_Upload_Control extends WP_Customize_Control {
        public $type    = 'upload';
        public $removed = '';
        public $context;
+       public $extensions = array();
 
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 3.4.0
+        */
        public function enqueue() {
                wp_enqueue_script( 'wp-plupload' );
        }
 
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::to_json()
+        */
        public function to_json() {
                parent::to_json();
 
@@ -292,8 +426,16 @@ class WP_Customize_Upload_Control extends WP_Customize_Control {
 
                if ( $this->context )
                        $this->json['context'] = $this->context;
+
+               if ( $this->extensions )
+                       $this->json['extensions'] = implode( ',', $this->extensions );
        }
 
+       /**
+        * Render the control's content.
+        *
+        * @since 3.4.0
+        */
        public function render_content() {
                ?>
                <label>
@@ -307,13 +449,33 @@ class WP_Customize_Upload_Control extends WP_Customize_Control {
        }
 }
 
+/**
+ * Customize Image Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
        public $type = 'image';
        public $get_url;
        public $statuses;
+       public $extensions = array( 'jpg', 'jpeg', 'gif', 'png' );
 
        protected $tabs = array();
 
+       /**
+        * Constructor.
+        *
+        * If $args['settings'] is not defined, use the $id as the setting ID.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Upload_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager
+        * @param string $id
+        * @param array $args
+        */
        public function __construct( $manager, $id, $args ) {
                $this->statuses = array( '' => __('No Image') );
 
@@ -338,11 +500,22 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                        $this->manager->remove_control( $this->id );
        }
 
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Upload_Control::to_json()
+        */
        public function to_json() {
                parent::to_json();
                $this->json['statuses'] = $this->statuses;
        }
 
+       /**
+        * Render the control's content.
+        *
+        * @since 3.4.0
+        */
        public function render_content() {
                $src = $this->value();
                if ( isset( $this->get_url ) )
@@ -353,7 +526,7 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                        <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
 
                        <div class="customize-control-content">
-                               <div class="dropdown preview-thumbnail">
+                               <div class="dropdown preview-thumbnail" tabindex="0">
                                        <div class="dropdown-content">
                                                <?php if ( empty( $src ) ): ?>
                                                        <img style="display:none;" />
@@ -369,7 +542,7 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                        <div class="library">
                                <ul>
                                        <?php foreach ( $this->tabs as $id => $tab ): ?>
-                                               <li data-customize-tab='<?php echo esc_attr( $id ); ?>'>
+                                               <li data-customize-tab='<?php echo esc_attr( $id ); ?>' tabindex='0'>
                                                        <?php echo esc_html( $tab['label'] ); ?>
                                                </li>
                                        <?php endforeach; ?>
@@ -388,6 +561,15 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                <?php
        }
 
+       /**
+        * Add a tab to the control.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id
+        * @param string $label
+        * @param mixed $callback
+        */
        public function add_tab( $id, $label, $callback ) {
                $this->tabs[ $id ] = array(
                        'label'    => $label,
@@ -395,10 +577,20 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                );
        }
 
+       /**
+        * Remove a tab from the control.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id
+        */
        public function remove_tab( $id ) {
                unset( $this->tabs[ $id ] );
        }
 
+       /**
+        * @since 3.4.0
+        */
        public function tab_upload_new() {
                if ( ! _device_can_upload() ) {
                        ?>
@@ -416,12 +608,21 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
                }
        }
 
+       /**
+        * @since 3.4.0
+        */
        public function tab_uploaded() {
                ?>
                <div class="uploaded-target"></div>
                <?php
        }
 
+       /**
+        * @since 3.4.0
+        *
+        * @param string $url
+        * @param string $thumbnail_url
+        */
        public function print_tab_image( $url, $thumbnail_url = null ) {
                $url = set_url_scheme( $url );
                $thumbnail_url = ( $thumbnail_url ) ? set_url_scheme( $thumbnail_url ) : $url;
@@ -433,7 +634,23 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
        }
 }
 
+/**
+ * Customize Background Image Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Image_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager
+        */
        public function __construct( $manager ) {
                parent::__construct( $manager, 'background_image', array(
                        'label'    => __( 'Background Image' ),
@@ -446,6 +663,9 @@ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
                        $this->add_tab( 'default',  __('Default'),  array( $this, 'tab_default_background' ) );
        }
 
+       /**
+        * @since 3.4.0
+        */
        public function tab_uploaded() {
                $backgrounds = get_posts( array(
                        'post_type'  => 'attachment',
@@ -464,11 +684,22 @@ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
                        $this->print_tab_image( esc_url_raw( $background->guid ) );
        }
 
+       /**
+        * @since 3.4.0
+        * @uses WP_Customize_Image_Control::print_tab_image()
+        */
        public function tab_default_background() {
                $this->print_tab_image( $this->setting->default );
        }
 }
 
+/**
+ * Customize Header Image Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
        /**
         * The processed default headers.
@@ -484,6 +715,15 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
         */
        protected $uploaded_headers;
 
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Image_Control::__construct()
+        * @uses WP_Customize_Image_Control::add_tab()
+        *
+        * @param WP_Customize_Manager $manager
+        */
        public function __construct( $manager ) {
                parent::__construct( $manager, 'header_image', array(
                        'label'    => __( 'Header Image' ),
@@ -533,6 +773,12 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
                return parent::prepare_control();
        }
 
+       /**
+        * @since 3.4.0
+        *
+        * @param mixed $choice Which header image to select. (@see Custom_Image_Header::get_header_image() )
+        * @param array $header
+        */
        public function print_header_image( $choice, $header ) {
                $header['url']           = set_url_scheme( $header['url'] );
                $header['thumbnail_url'] = set_url_scheme( $header['thumbnail_url'] );
@@ -553,6 +799,9 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
                <?php
        }
 
+       /**
+        * @since 3.4.0
+        */
        public function tab_uploaded() {
                ?><div class="uploaded-target"></div><?php
 
@@ -560,6 +809,9 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
                        $this->print_header_image( $choice, $header );
        }
 
+       /**
+        * @since 3.4.0
+        */
        public function tab_default_headers() {
                foreach ( $this->default_headers as $choice => $header )
                        $this->print_header_image( $choice, $header );
index d0c5fb25f7775ca528aca4f4554a5caee98d8a67..4be338969a03e386dd8c10f9495e741b4037384b 100644 (file)
@@ -1,12 +1,11 @@
 <?php
 /**
- * Customize
+ * Customize Manager.
  *
  * @package WordPress
  * @subpackage Customize
  * @since 3.4.0
  */
-
 final class WP_Customize_Manager {
        protected $theme;
        protected $original_stylesheet;
@@ -56,10 +55,12 @@ final class WP_Customize_Manager {
                add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_control_scripts' ) );
        }
 
-       /**
+       /**
         * Return true if it's an AJAX request.
         *
         * @since 3.4.0
+        *
+        * @return bool
         */
        public function doing_ajax() {
                return isset( $_POST['customized'] ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX );
@@ -69,10 +70,10 @@ final class WP_Customize_Manager {
         * Custom wp_die wrapper. Returns either the standard message for UI
         * or the AJAX message.
         *
-        * @param  mixed $ajax_message AJAX return
-        * @param  mixed $message      UI message
-        *
         * @since 3.4.0
+        *
+        * @param mixed $ajax_message AJAX return
+        * @param mixed $message UI message
         */
        protected function wp_die( $ajax_message, $message = null ) {
                if ( $this->doing_ajax() )
@@ -88,6 +89,8 @@ final class WP_Customize_Manager {
         * Return the AJAX wp_die() handler if it's a customized request.
         *
         * @since 3.4.0
+        *
+        * @return string
         */
        public function wp_die_handler() {
                if ( $this->doing_ajax() )
@@ -95,10 +98,11 @@ final class WP_Customize_Manager {
 
                return '_default_wp_die_handler';
        }
+
        /**
-       * Start preview and customize theme.
-       *
-       * Check if customize query variable exist. Init filters to filter the current theme.
+        * Start preview and customize theme.
+        *
+        * Check if customize query variable exist. Init filters to filter the current theme.
         *
         * @since 3.4.0
         */
@@ -137,6 +141,11 @@ final class WP_Customize_Manager {
                $this->start_previewing_theme();
        }
 
+       /**
+        * Callback to validate a theme once it is loaded
+        *
+        * @since 3.4.0
+        */
        function after_setup_theme() {
                if ( ! $this->doing_ajax() && ! validate_current_theme() ) {
                        wp_redirect( 'themes.php?broken=true' );
@@ -279,6 +288,9 @@ final class WP_Customize_Manager {
         * Instead, the JS will sniff out the location header.
         *
         * @since 3.4.0
+        *
+        * @param $status
+        * @return int
         */
        public function wp_redirect_status( $status ) {
                if ( $this->is_preview() && ! is_admin() )
@@ -291,6 +303,9 @@ final class WP_Customize_Manager {
         * Decode the $_POST attribute used to override the WP_Customize_Setting values.
         *
         * @since 3.4.0
+        *
+        * @param mixed $setting A WP_Customize_Setting derived object
+        * @return string Sanitized attribute
         */
        public function post_value( $setting ) {
                if ( ! isset( $this->_post_values ) ) {
@@ -367,11 +382,11 @@ final class WP_Customize_Manager {
                );
 
                if ( 2 == $this->nonce_tick ) {
-                       $settings['nonce'] = array(
-                               'save' => wp_create_nonce( 'save-customize_' . $this->get_stylesheet() ),
-                               'preview' => wp_create_nonce( 'preview-customize_' . $this->get_stylesheet() )
-                       );
-               }
+                       $settings['nonce'] = array(
+                               'save' => wp_create_nonce( 'save-customize_' . $this->get_stylesheet() ),
+                               'preview' => wp_create_nonce( 'preview-customize_' . $this->get_stylesheet() )
+                       );
+               }
 
                foreach ( $this->settings as $id => $setting ) {
                        $settings['values'][ $id ] = $setting->js_value();
@@ -464,6 +479,7 @@ final class WP_Customize_Manager {
         *
         * @since 3.4.0
         *
+        * @param $current_theme {@internal Parameter is not used}
         * @return string Theme name.
         */
        public function current_theme( $current_theme ) {
@@ -486,7 +502,7 @@ final class WP_Customize_Manager {
                        // Temporarily stop previewing the theme to allow switch_themes()
                        // to operate properly.
                        $this->stop_previewing_theme();
-                       switch_theme( $this->get_template(), $this->get_stylesheet() );
+                       switch_theme( $this->get_stylesheet() );
                        $this->start_previewing_theme();
                }
 
@@ -630,6 +646,7 @@ final class WP_Customize_Manager {
         *
         * @param object $a Object A.
         * @param object $b Object B.
+        * @return int
         */
        protected final function _cmp_priority( $a, $b ) {
                $ap = $a->priority;
@@ -960,6 +977,9 @@ final class WP_Customize_Manager {
         * Accepts 'blank', and otherwise uses sanitize_hex_color_no_hash().
         *
         * @since 3.4.0
+        *
+        * @param string $color
+        * @return string
         */
        public function _sanitize_header_textcolor( $color ) {
                return ( 'blank' === $color ) ? 'blank' : sanitize_hex_color_no_hash( $color );
@@ -973,6 +993,9 @@ final class WP_Customize_Manager {
  * For validating values without a #, see sanitize_hex_color_no_hash().
  *
  * @since 3.4.0
+ *
+ * @param string $color
+ * @return string|null
  */
 function sanitize_hex_color( $color ) {
        if ( '' === $color )
@@ -995,6 +1018,10 @@ function sanitize_hex_color( $color ) {
  * Returns either '', a 3 or 6 digit hex color (without a #), or null.
  *
  * @since 3.4.0
+ * @uses sanitize_hex_color()
+ *
+ * @param string $color
+ * @return string|null
  */
 function sanitize_hex_color_no_hash( $color ) {
        $color = ltrim( $color, '#' );
@@ -1012,6 +1039,9 @@ function sanitize_hex_color_no_hash( $color ) {
  * This method should only be necessary if using sanitize_hex_color_no_hash().
  *
  * @since 3.4.0
+ *
+ * @param string $color
+ * @return string
  */
 function maybe_hash_hex_color( $color ) {
        if ( $unhashed = sanitize_hex_color_no_hash( $color ) )
index b1b7d5f866063dec4d6ba759337e6f69402483af..fb854110fe9227d7b441eab6f525da379dc28dbb 100644 (file)
@@ -1,12 +1,11 @@
 <?php
 /**
- * Customize Section Class
+ * Customize Section Class.
  *
  * @package WordPress
  * @subpackage Customize
  * @since 3.4.0
  */
-
 class WP_Customize_Section {
        public $manager;
        public $id;
@@ -22,6 +21,7 @@ class WP_Customize_Section {
         *
         * @since 3.4.0
         *
+        * @param WP_Customize_Manager $manager
         * @param string $id An specific ID of the section.
         * @param array $args Section arguments.
         */
@@ -72,7 +72,6 @@ class WP_Customize_Section {
                $this->render();
        }
 
-
        /**
         * Render the section.
         *
@@ -81,7 +80,7 @@ class WP_Customize_Section {
        protected function render() {
                ?>
                <li id="customize-section-<?php echo esc_attr( $this->id ); ?>" class="control-section customize-section">
-                       <h3 class="customize-section-title" title="<?php echo esc_attr( $this->description ); ?>"><?php echo esc_html( $this->title ); ?></h3>
+                       <h3 class="customize-section-title" tabindex="0" title="<?php echo esc_attr( $this->description ); ?>"><?php echo esc_html( $this->title ); ?></h3>
                        <ul class="customize-section-content">
                                <?php
                                foreach ( $this->controls as $control )
index c4cff0e29bc5a7dcd62d6b17e91a0e24c5af5025..dd49f79f2675bf5734b19022baee3162e5aae286 100644 (file)
@@ -1,12 +1,11 @@
 <?php
 /**
- * Customize Setting Class
+ * Customize Setting Class.
  *
  * @package WordPress
  * @subpackage Customize
  * @since 3.4.0
  */
-
 class WP_Customize_Setting {
        public $manager;
        public $id;
@@ -28,9 +27,11 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
+        * @param WP_Customize_Manager $manager
         * @param string $id An specific ID of the setting. Can be a
         *                   theme mod or option name.
         * @param array $args Setting arguments.
+        * @return WP_Customize_Setting
         */
        function __construct( $manager, $id, $args = array() ) {
                $keys = array_keys( get_class_vars( __CLASS__ ) );
@@ -87,8 +88,9 @@ class WP_Customize_Setting {
         * Callback function to filter the theme mods and options.
         *
         * @since 3.4.0
+        * @uses WP_Customize_Setting::multidimensional_replace()
         *
-        * @param mixed Old value.
+        * @param mixed $original Old value.
         * @return mixed New or old value.
         */
        public function _preview_filter( $original ) {
@@ -118,8 +120,8 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
-        * @param $default mixed A default value which is used as a fallback. Default is null.
-        * @return mixed Either the default value on failure or sanitized value.
+        * @param mixed $default A default value which is used as a fallback. Default is null.
+        * @return mixed The default value on failure, otherwise the sanitized value.
         */
        public final function post_value( $default = null ) {
                if ( isset( $this->_post_value ) )
@@ -138,7 +140,7 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
-        * @param $value mixed The value to sanitize.
+        * @param mixed $value The value to sanitize.
         * @return mixed Null if an input isn't valid, otherwise the sanitized value.
         */
        public function sanitize( $value ) {
@@ -151,7 +153,7 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
-        * @param $value mixed The value to update.
+        * @param mixed $value The value to update.
         * @return mixed The result of saving the value.
         */
        protected function update( $value ) {
@@ -172,7 +174,7 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
-        * @param $value mixed The value to update.
+        * @param mixed $value The value to update.
         * @return mixed The result of saving the value.
         */
        protected function _update_theme_mod( $value ) {
@@ -192,7 +194,7 @@ class WP_Customize_Setting {
         *
         * @since 3.4.0
         *
-        * @param $value mixed The value to update.
+        * @param mixed $value The value to update.
         * @return mixed The result of saving the value.
         */
        protected function _update_option( $value ) {
@@ -276,7 +278,7 @@ class WP_Customize_Setting {
         * @param $root
         * @param $keys
         * @param bool $create Default is false.
-        * @return null|array
+        * @return null|array Keys are 'root', 'node', and 'key'.
         */
        final protected function multidimensional( &$root, $keys, $create = false ) {
                if ( $create && empty( $root ) )
@@ -372,19 +374,36 @@ class WP_Customize_Setting {
  * A setting that is used to filter a value, but will not save the results.
  *
  * Results should be properly handled using another setting or callback.
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
  */
 class WP_Customize_Filter_Setting extends WP_Customize_Setting {
-       public function update() {}
+
+       /**
+        * @since 3.4.0
+        */
+       public function update( $value ) {}
 }
 
 /**
  * A setting that is used to filter a value, but will not save the results.
  *
  * Results should be properly handled using another setting or callback.
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
  */
 final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
        public $id = 'header_image_data';
 
+       /**
+        * @since 3.4.0
+        *
+        * @param $value
+        */
        public function update( $value ) {
                global $custom_image_header;
 
@@ -400,9 +419,20 @@ final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
        }
 }
 
+/**
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
 final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting {
        public $id = 'background_image_thumb';
 
+       /**
+        * @since 3.4.0
+        * @uses remove_theme_mod()
+        *
+        * @param $value
+        */
        public function update( $value ) {
                remove_theme_mod( 'background_image_thumb' );
        }
index 5d78c238a6717e6b9cd7f70d34f8f3d233f59e13..38ab7c262fbf71fa290cb75848cbfecf6283e262 100644 (file)
@@ -32,9 +32,10 @@ final class _WP_Editors {
                        'wpautop' => true, // use wpautop?
                        'media_buttons' => true, // show insert/upload button(s)
                        'textarea_name' => $editor_id, // set the textarea name to something different, square brackets [] can be used here
-                       'textarea_rows' => get_option('default_post_edit_rows', 10), // rows="..."
+                       'textarea_rows' => 20,
                        'tabindex' => '',
-                       'editor_css' => '', // intended for extra styles for both visual and HTML editors buttons, needs to include the <style> tags, can use "scoped".
+                       'tabfocus_elements' => ':prev,:next', // the previous and next element ID to move the focus to when pressing the Tab key in TinyMCE
+                       'editor_css' => '', // intended for extra styles for both visual and Text editors buttons, needs to include the <style> tags, can use "scoped".
                        'editor_class' => '', // add extra class(es) to the editor textarea
                        'teeny' => false, // output the minimal editor config used in Press This
                        'dfw' => false, // replace the default fullscreen with DFW (needs specific DOM elements and css)
@@ -51,6 +52,28 @@ final class _WP_Editors {
                if ( self::$this_quicktags )
                        self::$has_quicktags = true;
 
+               if ( empty( $set['editor_height'] ) )
+                       return $set;
+
+               if ( 'content' === $editor_id ) {
+                       // A cookie (set when a user resizes the editor) overrides the height.
+                       $cookie = (int) get_user_setting( 'ed_size' );
+
+                       // Upgrade an old TinyMCE cookie if it is still around, and the new one isn't.
+                       if ( ! $cookie && isset( $_COOKIE['TinyMCE_content_size'] ) ) {
+                               parse_str( $_COOKIE['TinyMCE_content_size'], $cookie );
+                               $cookie = $cookie['ch'];
+                       }
+
+                       if ( $cookie )
+                               $set['editor_height'] = $cookie;
+               }
+
+               if ( $set['editor_height'] < 50 )
+                       $set['editor_height'] = 50;
+               elseif ( $set['editor_height'] > 5000 )
+                       $set['editor_height'] = 5000;
+
                return $set;
        }
 
@@ -66,16 +89,21 @@ final class _WP_Editors {
                $set = self::parse_settings($editor_id, $settings);
                $editor_class = ' class="' . trim( $set['editor_class'] . ' wp-editor-area' ) . '"';
                $tabindex = $set['tabindex'] ? ' tabindex="' . (int) $set['tabindex'] . '"' : '';
-               $rows = ' rows="' . (int) $set['textarea_rows'] . '"';
                $switch_class = 'html-active';
                $toolbar = $buttons = '';
 
+               if ( ! empty( $set['editor_height'] ) )
+                       $height = ' style="height: ' . $set['editor_height'] . 'px"';
+               else
+                       $height = ' rows="' . $set['textarea_rows'] . '"';
+
                if ( !current_user_can( 'upload_files' ) )
                        $set['media_buttons'] = false;
 
                if ( self::$this_quicktags && self::$this_tinymce ) {
                        $switch_class = 'html-active';
 
+                       // 'html' and 'switch-html' are used for the "Text" editor tab.
                        if ( 'html' == wp_default_editor() ) {
                                add_filter('the_editor_content', 'wp_htmledit_pre');
                        } else {
@@ -83,11 +111,11 @@ final class _WP_Editors {
                                $switch_class = 'tmce-active';
                        }
 
-                       $buttons .= '<a id="' . $editor_id . '-html" class="hide-if-no-js wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">' . __('HTML') . "</a>\n";
-                       $buttons .= '<a id="' . $editor_id . '-tmce" class="hide-if-no-js wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">' . __('Visual') . "</a>\n";
+                       $buttons .= '<a id="' . $editor_id . '-html" class="wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">' . _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ) . "</a>\n";
+                       $buttons .= '<a id="' . $editor_id . '-tmce" class="wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">' . __('Visual') . "</a>\n";
                }
 
-               echo '<div id="wp-' . $editor_id . '-wrap" class="wp-editor-wrap ' . $switch_class . '">';
+               echo '<div id="wp-' . $editor_id . '-wrap" class="wp-core-ui wp-editor-wrap ' . $switch_class . '">';
 
                if ( self::$editor_buttons_css ) {
                        wp_print_styles('editor-buttons');
@@ -98,7 +126,7 @@ final class _WP_Editors {
                        echo $set['editor_css'] . "\n";
 
                if ( !empty($buttons) || $set['media_buttons'] ) {
-                       echo '<div id="wp-' . $editor_id . '-editor-tools" class="wp-editor-tools">';
+                       echo '<div id="wp-' . $editor_id . '-editor-tools" class="wp-editor-tools hide-if-no-js">';
                        echo $buttons;
 
                        if ( $set['media_buttons'] ) {
@@ -107,14 +135,14 @@ final class _WP_Editors {
                                if ( !function_exists('media_buttons') )
                                        include(ABSPATH . 'wp-admin/includes/media.php');
 
-                               echo '<div id="wp-' . $editor_id . '-media-buttons" class="hide-if-no-js wp-media-buttons">';
+                               echo '<div id="wp-' . $editor_id . '-media-buttons" class="wp-media-buttons">';
                                do_action('media_buttons', $editor_id);
                                echo "</div>\n";
                        }
                        echo "</div>\n";
                }
 
-               $the_editor = apply_filters('the_editor', '<div id="wp-' . $editor_id . '-editor-container" class="wp-editor-container"><textarea' . $editor_class . $rows . $tabindex . ' cols="40" name="' . $set['textarea_name'] . '" id="' . $editor_id . '">%s</textarea></div>');
+               $the_editor = apply_filters('the_editor', '<div id="wp-' . $editor_id . '-editor-container" class="wp-editor-container"><textarea' . $editor_class . $height . $tabindex . ' cols="40" name="' . $set['textarea_name'] . '" id="' . $editor_id . '">%s</textarea></div>');
                $content = apply_filters('the_editor_content', $content);
 
                printf($the_editor, $content);
@@ -124,7 +152,7 @@ final class _WP_Editors {
        }
 
        public static function editor_settings($editor_id, $set) {
-               global $editor_styles, $post;
+               global $editor_styles;
                $first_run = false;
 
                if ( empty(self::$first_init) ) {
@@ -170,7 +198,7 @@ final class _WP_Editors {
                                $ext_plugins = '';
 
                                if ( $set['teeny'] ) {
-                                       self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs'), $editor_id );
+                                       self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs' ), $editor_id );
                                } else {
                                        /*
                                        The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
@@ -209,7 +237,7 @@ final class _WP_Editors {
 
                                                foreach ( $mce_external_plugins as $name => $url ) {
 
-                                                       if ( is_ssl() ) $url = str_replace('http://', 'https://', $url);
+                                                       $url = set_url_scheme( $url );
 
                                                        $plugins[] = '-' . $name;
 
@@ -310,14 +338,14 @@ final class _WP_Editors {
                                        'keep_styles' => false,
                                        'entities' => '38,amp,60,lt,62,gt',
                                        'accessibility_focus' => true,
-                                       'tabfocus_elements' => 'title,publish',
                                        'media_strict' => false,
                                        'paste_remove_styles' => true,
                                        'paste_remove_spans' => true,
                                        'paste_strip_class_attributes' => 'all',
                                        'paste_text_use_dialog' => true,
+                                       'webkit_fake_resize' => false,
                                        'spellchecker_rpc_url' => self::$baseurl . '/plugins/spellchecker/rpc.php',
-                                       'extended_valid_elements' => 'article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr',
+                                       'schema' => 'html5',
                                        'wpeditimage_disable_captions' => $no_captions,
                                        'wp_fullscreen_content_css' => self::$baseurl . '/plugins/wpfullscreen/css/wp-fullscreen.css',
                                        'plugins' => implode( ',', $plugins )
@@ -335,9 +363,8 @@ final class _WP_Editors {
                                                $template_dir = get_template_directory();
 
                                                foreach ( $editor_styles as $key => $file ) {
-                                                       if ( $file && file_exists( "$template_dir/$file" ) ) {
+                                                       if ( $file && file_exists( "$template_dir/$file" ) )
                                                                $mce_css[] = "$template_uri/$file";
-                                                       }
                                                }
                                        }
 
@@ -358,19 +385,19 @@ final class _WP_Editors {
                        }
 
                        if ( $set['teeny'] ) {
-                               $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold', 'italic', 'underline', 'blockquote', 'separator', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'undo', 'redo', 'link', 'unlink', 'fullscreen'), $editor_id );
+                               $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold', 'italic', 'underline', 'blockquote', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'undo', 'redo', 'link', 'unlink', 'fullscreen'), $editor_id );
                                $mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = array();
                        } else {
-                               $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' ), $editor_id);
-                               $mce_buttons_2 = apply_filters('mce_buttons_2', array( 'formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' ), $editor_id);
+                               $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', 'bullist', 'numlist', 'blockquote', 'justifyleft', 'justifycenter', 'justifyright', 'link', 'unlink', 'wp_more', 'spellchecker', 'fullscreen', 'wp_adv' ), $editor_id);
+                               $mce_buttons_2 = apply_filters('mce_buttons_2', array( 'formatselect', 'underline', 'justifyfull', 'forecolor', 'pastetext', 'pasteword', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo', 'wp_help' ), $editor_id);
                                $mce_buttons_3 = apply_filters('mce_buttons_3', array(), $editor_id);
                                $mce_buttons_4 = apply_filters('mce_buttons_4', array(), $editor_id);
                        }
 
                        $body_class = $editor_id;
 
-                       if ( isset($post) )
-                               $body_class .= " post-type-$post->post_type";
+                       if ( $post = get_post() )
+                               $body_class .= ' post-type-' . $post->post_type;
 
                        if ( !empty($set['tinymce']['body_class']) ) {
                                $body_class .= ' ' . $set['tinymce']['body_class'];
@@ -398,9 +425,13 @@ final class _WP_Editors {
                                'theme_advanced_buttons2' => implode($mce_buttons_2, ','),
                                'theme_advanced_buttons3' => implode($mce_buttons_3, ','),
                                'theme_advanced_buttons4' => implode($mce_buttons_4, ','),
+                               'tabfocus_elements' => $set['tabfocus_elements'],
                                'body_class' => $body_class
                        );
 
+                       // The main editor doesn't use the TinyMCE resizing cookie.
+                       $mceInit['theme_advanced_resizing_use_cookie'] = 'content' !== $editor_id || empty( $set['editor_height'] );
+
                        if ( $first_run )
                                $mceInit = array_merge(self::$first_init, $mceInit);
 
@@ -408,7 +439,7 @@ final class _WP_Editors {
                                $mceInit = array_merge($mceInit, $set['tinymce']);
 
                        // For people who really REALLY know what they're doing with TinyMCE
-                       // You can modify initArray to add, remove, change elements of the config before tinyMCE.init
+                       // You can modify $mceInit to add, remove, change elements of the config before tinyMCE.init
                        // Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through this filter.
                        // Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0.
                        if ( $set['teeny'] ) {
@@ -538,25 +569,37 @@ final class _WP_Editors {
                $baseurl = self::$baseurl;
 
                if ( $tmce_on ) {
-                       if ( $compressed )
+                       if ( $compressed ) {
                                echo "<script type='text/javascript' src='{$baseurl}/wp-tinymce.php?c=1&amp;$version'></script>\n";
-                       else
+                       } else {
                                echo "<script type='text/javascript' src='{$baseurl}/tiny_mce.js?$version'></script>\n";
+                               echo "<script type='text/javascript' src='{$baseurl}/wp-tinymce-schema.js?$version'></script>\n";
+                       }
 
                        if ( 'en' != self::$mce_locale && isset($lang) )
                                echo "<script type='text/javascript'>\n$lang\n</script>\n";
                        else
                                echo "<script type='text/javascript' src='{$baseurl}/langs/wp-langs-en.js?$version'></script>\n";
                }
+
+               $mce = ( self::$has_tinymce && wp_default_editor() == 'tinymce' ) || ! self::$has_quicktags;
 ?>
 
        <script type="text/javascript">
+               var wpActiveEditor;
+
                (function(){
-                       var init, ed, qt, first_init, mce = <?php echo wp_default_editor() == 'tinymce' ? 'true' : 'false'; ?>;
+                       var init, ed, qt, first_init, DOM, el, i, mce = <?php echo (int) $mce; ?>;
 
                        if ( typeof(tinymce) == 'object' ) {
+                               DOM = tinymce.DOM;
                                // mark wp_theme/ui.css as loaded
-                               tinymce.DOM.files[tinymce.baseURI.getURI() + '/themes/advanced/skins/wp_theme/ui.css'] = true;
+                               DOM.files[tinymce.baseURI.getURI() + '/themes/advanced/skins/wp_theme/ui.css'] = true;
+
+                               DOM.events.add( DOM.select('.wp-editor-wrap'), 'mousedown', function(e){
+                                       if ( this.id )
+                                               wpActiveEditor = this.id.slice(3, -5);
+                               });
 
                                for ( ed in tinyMCEPreInit.mceInit ) {
                                        if ( first_init ) {
@@ -568,6 +611,14 @@ final class _WP_Editors {
                                        if ( mce )
                                                try { tinymce.init(init); } catch(e){}
                                }
+                       } else {
+                               if ( tinyMCEPreInit.qtInit ) {
+                                       for ( i in tinyMCEPreInit.qtInit ) {
+                                               el = tinyMCEPreInit.qtInit[i].id;
+                                               if ( el )
+                                                       document.getElementById('wp-'+el+'-wrap').onmousedown = function(){ wpActiveEditor = this.id.slice(3, -5); }
+                                       }
+                               }
                        }
 
                        if ( typeof(QTags) == 'function' ) {
@@ -576,29 +627,23 @@ final class _WP_Editors {
                                }
                        }
                })();
-
-               var wpActiveEditor;
-
-               jQuery('.wp-editor-wrap').mousedown(function(e){
-                       wpActiveEditor = this.id.slice(3, -5);
-               });
-
-<?php
+               <?php
 
                if ( self::$ext_plugins )
                        echo self::$ext_plugins . "\n";
 
                if ( ! $compressed && $tmce_on ) {
-?>
-               (function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.ref.language,th=t.ref.theme,pl=t.ref.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');sl.markDone(t.base+'/themes/advanced/skins/wp_theme/ui.css');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
-<?php
+                       ?>
+                       (function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.ref.language,th=t.ref.theme,pl=t.ref.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');sl.markDone(t.base+'/themes/advanced/skins/wp_theme/ui.css');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
+                       <?php
                }
 
                if ( !is_admin() )
                        echo 'var ajaxurl = "' . admin_url( 'admin-ajax.php', 'relative' ) . '";';
-?>
-       </script>
-<?php
+
+               ?>
+               </script>
+               <?php
 
                if ( in_array('wplink', self::$plugins, true) || in_array('link', self::$qt_buttons, true) )
                        self::wp_link_dialog();
@@ -610,7 +655,8 @@ final class _WP_Editors {
        }
 
        public static function wp_fullscreen_html() {
-               global $content_width, $post;
+               global $content_width;
+               $post = get_post();
 
                $width = isset($content_width) && 800 > $content_width ? $content_width : 800;
                $width = $width + 22; // compensate for the padding and border
@@ -624,8 +670,8 @@ final class _WP_Editors {
                        <div id="wp-fullscreen-central-toolbar" style="width:<?php echo $width; ?>px;">
 
                        <div id="wp-fullscreen-mode-bar"><div id="wp-fullscreen-modes">
-                               <a href="#" onclick="fullscreen.switchmode('tinymce');return false;"><?php _e('Visual'); ?></a>
-                               <a href="#" onclick="fullscreen.switchmode('html');return false;"><?php _e('HTML'); ?></a>
+                               <a href="#" onclick="fullscreen.switchmode('tinymce');return false;"><?php _e( 'Visual' ); ?></a>
+                               <a href="#" onclick="fullscreen.switchmode('html');return false;"><?php _ex( 'Text', 'Name for the Text editor tab (formerly HTML)' ); ?></a>
                        </div></div>
 
                        <div id="wp-fullscreen-button-bar"><div id="wp-fullscreen-buttons" class="wp_themeSkin">
@@ -667,9 +713,9 @@ final class _WP_Editors {
                        </div></div>
 
                        <div id="wp-fullscreen-save">
-                               <span><?php if ( $post->post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?></span>
-                               <img src="<?php echo admin_url('images/wpspin_light.gif'); ?>" alt="" />
-                               <input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" />
+                               <input type="button" class="button-primary right" value="<?php echo $save; ?>" onclick="fullscreen.save();" />
+                               <span class="spinner"></span>
+                               <span class="fs-saved"><?php if ( $post->post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?></span>
                        </div>
 
                        </div>
@@ -768,13 +814,13 @@ final class _WP_Editors {
                <div id="link-options">
                        <p class="howto"><?php _e( 'Enter the destination URL' ); ?></p>
                        <div>
-                               <label><span><?php _e( 'URL' ); ?></span><input id="url-field" type="text" tabindex="10" name="href" /></label>
+                               <label><span><?php _e( 'URL' ); ?></span><input id="url-field" type="text" name="href" /></label>
                        </div>
                        <div>
-                               <label><span><?php _e( 'Title' ); ?></span><input id="link-title-field" type="text" tabindex="20" name="linktitle" /></label>
+                               <label><span><?php _e( 'Title' ); ?></span><input id="link-title-field" type="text" name="linktitle" /></label>
                        </div>
                        <div class="link-target">
-                               <label><input type="checkbox" id="link-target-checkbox" tabindex="30" /> <?php _e( 'Open link in a new window/tab' ); ?></label>
+                               <label><input type="checkbox" id="link-target-checkbox" /> <?php _e( 'Open link in a new window/tab' ); ?></label>
                        </div>
                </div>
                <?php $show_internal = '1' == get_user_setting( 'wplink', '0' ); ?>
@@ -782,33 +828,33 @@ final class _WP_Editors {
                <div id="search-panel"<?php if ( ! $show_internal ) echo ' style="display:none"'; ?>>
                        <div class="link-search-wrapper">
                                <label>
-                                       <span><?php _e( 'Search' ); ?></span>
-                                       <input type="text" id="search-field" class="link-search-field" tabindex="60" autocomplete="off" />
-                                       <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+                                       <span class="search-label"><?php _e( 'Search' ); ?></span>
+                                       <input type="search" id="search-field" class="link-search-field" autocomplete="off" />
+                                       <span class="spinner"></span>
                                </label>
                        </div>
                        <div id="search-results" class="query-results">
                                <ul></ul>
                                <div class="river-waiting">
-                                       <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+                                       <span class="spinner"></span>
                                </div>
                        </div>
                        <div id="most-recent-results" class="query-results">
                                <div class="query-notice"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></div>
                                <ul></ul>
                                <div class="river-waiting">
-                                       <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
+                                       <span class="spinner"></span>
                                </div>
                        </div>
                </div>
        </div>
        <div class="submitbox">
+               <div id="wp-link-update">
+                       <input type="submit" value="<?php esc_attr_e( 'Add Link' ); ?>" class="button-primary" id="wp-link-submit" name="wp-link-submit">
+               </div>
                <div id="wp-link-cancel">
                        <a class="submitdelete deletion" href="#"><?php _e( 'Cancel' ); ?></a>
                </div>
-               <div id="wp-link-update">
-                       <input type="submit" tabindex="100" value="<?php esc_attr_e( 'Add Link' ); ?>" class="button-primary" id="wp-link-submit" name="wp-link-submit">
-               </div>
        </div>
        </form>
        </div>
diff --git a/wp-includes/class-wp-embed.php b/wp-includes/class-wp-embed.php
new file mode 100644 (file)
index 0000000..9404ba4
--- /dev/null
@@ -0,0 +1,277 @@
+<?php
+/**
+ * API for easily embedding rich media such as videos and images into content.
+ *
+ * @package WordPress
+ * @subpackage Embed
+ * @since 2.9.0
+ */
+class WP_Embed {
+       var $handlers = array();
+       var $post_ID;
+       var $usecache = true;
+       var $linkifunknown = true;
+
+       /**
+        * Constructor
+        */
+       function __construct() {
+               // Hack to get the [embed] shortcode to run before wpautop()
+               add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 );
+
+               // Shortcode placeholder for strip_shortcodes()
+               add_shortcode( 'embed', '__return_false' );
+
+               // Attempts to embed all URLs in a post
+               add_filter( 'the_content', array( $this, 'autoembed' ), 8 );
+
+               // When a post is saved, invalidate the oEmbed cache
+               add_action( 'pre_post_update', array( $this, 'delete_oembed_caches' ) );
+
+               // After a post is saved, cache oEmbed items via AJAX
+               add_action( 'edit_form_advanced', array( $this, 'maybe_run_ajax_cache' ) );
+       }
+
+       /**
+        * Process the [embed] shortcode.
+        *
+        * Since the [embed] shortcode needs to be run earlier than other shortcodes,
+        * this function removes all existing shortcodes, registers the [embed] shortcode,
+        * calls {@link do_shortcode()}, and then re-registers the old shortcodes.
+        *
+        * @uses $shortcode_tags
+        * @uses remove_all_shortcodes()
+        * @uses add_shortcode()
+        * @uses do_shortcode()
+        *
+        * @param string $content Content to parse
+        * @return string Content with shortcode parsed
+        */
+       function run_shortcode( $content ) {
+               global $shortcode_tags;
+
+               // Back up current registered shortcodes and clear them all out
+               $orig_shortcode_tags = $shortcode_tags;
+               remove_all_shortcodes();
+
+               add_shortcode( 'embed', array( $this, 'shortcode' ) );
+
+               // Do the shortcode (only the [embed] one is registered)
+               $content = do_shortcode( $content );
+
+               // Put the original shortcodes back
+               $shortcode_tags = $orig_shortcode_tags;
+
+               return $content;
+       }
+
+       /**
+        * If a post/page was saved, then output JavaScript to make
+        * an AJAX request that will call WP_Embed::cache_oembed().
+        */
+       function maybe_run_ajax_cache() {
+               $post = get_post();
+
+               if ( ! $post || empty($_GET['message']) || 1 != $_GET['message'] )
+                       return;
+
+?>
+<script type="text/javascript">
+/* <![CDATA[ */
+       jQuery(document).ready(function($){
+               $.get("<?php echo admin_url( 'admin-ajax.php?action=oembed-cache&post=' . $post->ID, 'relative' ); ?>");
+       });
+/* ]]> */
+</script>
+<?php
+       }
+
+       /**
+        * Register an embed handler. Do not use this function directly, use {@link wp_embed_register_handler()} instead.
+        * This function should probably also only be used for sites that do not support oEmbed.
+        *
+        * @param string $id An internal ID/name for the handler. Needs to be unique.
+        * @param string $regex The regex that will be used to see if this handler should be used for a URL.
+        * @param callback $callback The callback function that will be called if the regex is matched.
+        * @param int $priority Optional. Used to specify the order in which the registered handlers will be tested (default: 10). Lower numbers correspond with earlier testing, and handlers with the same priority are tested in the order in which they were added to the action.
+        */
+       function register_handler( $id, $regex, $callback, $priority = 10 ) {
+               $this->handlers[$priority][$id] = array(
+                       'regex'    => $regex,
+                       'callback' => $callback,
+               );
+       }
+
+       /**
+        * Unregister a previously registered embed handler. Do not use this function directly, use {@link wp_embed_unregister_handler()} instead.
+        *
+        * @param string $id The handler ID that should be removed.
+        * @param int $priority Optional. The priority of the handler to be removed (default: 10).
+        */
+       function unregister_handler( $id, $priority = 10 ) {
+               if ( isset($this->handlers[$priority][$id]) )
+                       unset($this->handlers[$priority][$id]);
+       }
+
+       /**
+        * The {@link do_shortcode()} callback function.
+        *
+        * Attempts to convert a URL into embed HTML. Starts by checking the URL against the regex of the registered embed handlers.
+        * If none of the regex matches and it's enabled, then the URL will be given to the {@link WP_oEmbed} class.
+        *
+        * @uses wp_oembed_get()
+        * @uses wp_parse_args()
+        * @uses wp_embed_defaults()
+        * @uses WP_Embed::maybe_make_link()
+        * @uses get_option()
+        * @uses author_can()
+        * @uses wp_cache_get()
+        * @uses wp_cache_set()
+        * @uses get_post_meta()
+        * @uses update_post_meta()
+        *
+        * @param array $attr Shortcode attributes.
+        * @param string $url The URL attempting to be embedded.
+        * @return string The embed HTML on success, otherwise the original URL.
+        */
+       function shortcode( $attr, $url = '' ) {
+               $post = get_post();
+
+               if ( empty( $url ) )
+                       return '';
+
+               $rawattr = $attr;
+               $attr = wp_parse_args( $attr, wp_embed_defaults() );
+
+               // kses converts & into &amp; and we need to undo this
+               // See http://core.trac.wordpress.org/ticket/11311
+               $url = str_replace( '&amp;', '&', $url );
+
+               // Look for known internal handlers
+               ksort( $this->handlers );
+               foreach ( $this->handlers as $priority => $handlers ) {
+                       foreach ( $handlers as $id => $handler ) {
+                               if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) {
+                                       if ( false !== $return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr ) )
+                                               return apply_filters( 'embed_handler_html', $return, $url, $attr );
+                               }
+                       }
+               }
+
+               $post_ID = ( ! empty( $post->ID ) ) ? $post->ID : null;
+               if ( ! empty( $this->post_ID ) ) // Potentially set by WP_Embed::cache_oembed()
+                       $post_ID = $this->post_ID;
+
+               // Unknown URL format. Let oEmbed have a go.
+               if ( $post_ID ) {
+
+                       // Check for a cached result (stored in the post meta)
+                       $cachekey = '_oembed_' . md5( $url . serialize( $attr ) );
+                       if ( $this->usecache ) {
+                               $cache = get_post_meta( $post_ID, $cachekey, true );
+
+                               // Failures are cached
+                               if ( '{{unknown}}' === $cache )
+                                       return $this->maybe_make_link( $url );
+
+                               if ( ! empty( $cache ) )
+                                       return apply_filters( 'embed_oembed_html', $cache, $url, $attr, $post_ID );
+                       }
+
+                       // Use oEmbed to get the HTML
+                       $attr['discover'] = ( apply_filters('embed_oembed_discover', false) && author_can( $post_ID, 'unfiltered_html' ) );
+                       $html = wp_oembed_get( $url, $attr );
+
+                       // Cache the result
+                       $cache = ( $html ) ? $html : '{{unknown}}';
+                       update_post_meta( $post_ID, $cachekey, $cache );
+
+                       // If there was a result, return it
+                       if ( $html )
+                               return apply_filters( 'embed_oembed_html', $html, $url, $attr, $post_ID );
+               }
+
+               // Still unknown
+               return $this->maybe_make_link( $url );
+       }
+
+       /**
+        * Delete all oEmbed caches.
+        *
+        * @param int $post_ID Post ID to delete the caches for.
+        */
+       function delete_oembed_caches( $post_ID ) {
+               $post_metas = get_post_custom_keys( $post_ID );
+               if ( empty($post_metas) )
+                       return;
+
+               foreach( $post_metas as $post_meta_key ) {
+                       if ( '_oembed_' == substr( $post_meta_key, 0, 8 ) )
+                               delete_post_meta( $post_ID, $post_meta_key );
+               }
+       }
+
+       /**
+        * Triggers a caching of all oEmbed results.
+        *
+        * @param int $post_ID Post ID to do the caching for.
+        */
+       function cache_oembed( $post_ID ) {
+               $post = get_post( $post_ID );
+
+               if ( empty($post->ID) || !in_array( $post->post_type, apply_filters( 'embed_cache_oembed_types', array( 'post', 'page' ) ) ) )
+                       return;
+
+               // Trigger a caching
+               if ( !empty($post->post_content) ) {
+                       $this->post_ID = $post->ID;
+                       $this->usecache = false;
+
+                       $content = $this->run_shortcode( $post->post_content );
+                       $this->autoembed( $content );
+
+                       $this->usecache = true;
+               }
+       }
+
+       /**
+        * Passes any unlinked URLs that are on their own line to {@link WP_Embed::shortcode()} for potential embedding.
+        *
+        * @uses WP_Embed::autoembed_callback()
+        *
+        * @param string $content The content to be searched.
+        * @return string Potentially modified $content.
+        */
+       function autoembed( $content ) {
+               return preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
+       }
+
+       /**
+        * Callback function for {@link WP_Embed::autoembed()}.
+        *
+        * @uses WP_Embed::shortcode()
+        *
+        * @param array $match A regex match array.
+        * @return string The embed HTML on success, otherwise the original URL.
+        */
+       function autoembed_callback( $match ) {
+               $oldval = $this->linkifunknown;
+               $this->linkifunknown = false;
+               $return = $this->shortcode( array(), $match[1] );
+               $this->linkifunknown = $oldval;
+
+               return "\n$return\n";
+       }
+
+       /**
+        * Conditionally makes a hyperlink based on an internal class variable.
+        *
+        * @param string $url URL to potentially be linked.
+        * @return string Linked URL or the original URL.
+        */
+       function maybe_make_link( $url ) {
+               $output = ( $this->linkifunknown ) ? '<a href="' . esc_attr($url) . '">' . esc_html($url) . '</a>' : $url;
+               return apply_filters( 'embed_maybe_make_link', $output, $url );
+       }
+}
+$GLOBALS['wp_embed'] = new WP_Embed();
diff --git a/wp-includes/class-wp-image-editor-gd.php b/wp-includes/class-wp-image-editor-gd.php
new file mode 100644 (file)
index 0000000..b0781b5
--- /dev/null
@@ -0,0 +1,390 @@
+<?php
+/**
+ * WordPress GD Image Editor
+ *
+ * @package WordPress
+ * @subpackage Image_Editor
+ */
+
+/**
+ * WordPress Image Editor Class for Image Manipulation through GD
+ *
+ * @since 3.5.0
+ * @package WordPress
+ * @subpackage Image_Editor
+ * @uses WP_Image_Editor Extends class
+ */
+class WP_Image_Editor_GD extends WP_Image_Editor {
+
+       protected $image = false; // GD Resource
+
+       function __destruct() {
+               if ( $this->image ) {
+                       // we don't need the original in memory anymore
+                       imagedestroy( $this->image );
+               }
+       }
+
+       /**
+        * Checks to see if current environment supports GD.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @return boolean
+        */
+       public static function test( $args = array() ) {
+               if ( ! extension_loaded('gd') || ! function_exists('gd_info') )
+                       return false;
+
+               // On some setups GD library does not provide imagerotate() - Ticket #11536
+               if ( isset( $args['methods'] ) &&
+                        in_array( 'rotate', $args['methods'] ) &&
+                        ! function_exists('imagerotate') ){
+
+                               return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * Checks to see if editor supports the mime-type specified.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $mime_type
+        * @return boolean
+        */
+       public static function supports_mime_type( $mime_type ) {
+               $image_types = imagetypes();
+               switch( $mime_type ) {
+                       case 'image/jpeg':
+                               return ($image_types & IMG_JPG) != 0;
+                       case 'image/png':
+                               return ($image_types & IMG_PNG) != 0;
+                       case 'image/gif':
+                               return ($image_types & IMG_GIF) != 0;
+               }
+
+               return false;
+       }
+
+       /**
+        * Loads image from $this->file into new GD Resource.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @return boolean|\WP_Error
+        */
+       public function load() {
+               if ( $this->image )
+                       return true;
+
+               if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) )
+                       return new WP_Error( 'error_loading_image', __('File doesn&#8217;t exist?'), $this->file );
+
+               // Set artificially high because GD uses uncompressed images in memory
+               @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );
+               $this->image = @imagecreatefromstring( file_get_contents( $this->file ) );
+
+               if ( ! is_resource( $this->image ) )
+                       return new WP_Error( 'invalid_image', __('File is not an image.'), $this->file );
+
+               $size = @getimagesize( $this->file );
+               if ( ! $size )
+                       return new WP_Error( 'invalid_image', __('Could not read image size.'), $this->file );
+
+               $this->update_size( $size[0], $size[1] );
+               $this->mime_type = $size['mime'];
+
+               return true;
+       }
+
+       /**
+        * Sets or updates current image size.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param int $width
+        * @param int $height
+        */
+       protected function update_size( $width = false, $height = false ) {
+               if ( ! $width )
+                       $width = imagesx( $this->image );
+
+               if ( ! $height )
+                       $height = imagesy( $this->image );
+
+               return parent::update_size( $width, $height );
+       }
+
+       /**
+        * Resizes current image.
+        * Wraps _resize, since _resize returns a GD Resource.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param int $max_w
+        * @param int $max_h
+        * @param boolean $crop
+        * @return boolean|WP_Error
+        */
+       public function resize( $max_w, $max_h, $crop = false ) {
+               if ( ( $this->size['width'] == $max_w ) && ( $this->size['height'] == $max_h ) )
+                       return true;
+
+               $resized = $this->_resize( $max_w, $max_h, $crop );
+
+               if ( is_resource( $resized ) ) {
+                       imagedestroy( $this->image );
+                       $this->image = $resized;
+                       return true;
+
+               } elseif ( is_wp_error( $resized ) )
+                       return $resized;
+
+               return new WP_Error( 'image_resize_error', __('Image resize failed.'), $this->file );
+       }
+
+       protected function _resize( $max_w, $max_h, $crop = false ) {
+               $dims = image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop );
+               if ( ! $dims ) {
+                       return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions'), $this->file );
+               }
+               list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
+
+               $resized = wp_imagecreatetruecolor( $dst_w, $dst_h );
+               imagecopyresampled( $resized, $this->image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
+
+               if ( is_resource( $resized ) ) {
+                       $this->update_size( $dst_w, $dst_h );
+                       return $resized;
+               }
+
+               return new WP_Error( 'image_resize_error', __('Image resize failed.'), $this->file );
+       }
+
+       /**
+        * Processes current image and saves to disk
+        * multiple sizes from single source.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+        * @return array
+        */
+       public function multi_resize( $sizes ) {
+               $metadata = array();
+               $orig_size = $this->size;
+
+               foreach ( $sizes as $size => $size_data ) {
+                       $image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
+
+                       if( ! is_wp_error( $image ) ) {
+                               $resized = $this->_save( $image );
+
+                               imagedestroy( $image );
+
+                               if ( ! is_wp_error( $resized ) && $resized ) {
+                                       unset( $resized['path'] );
+                                       $metadata[$size] = $resized;
+                               }
+                       }
+
+                       $this->size = $orig_size;
+               }
+
+               return $metadata;
+       }
+
+       /**
+        * Crops Image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string|int $src The source file or Attachment ID.
+        * @param int $src_x The start x position to crop from.
+        * @param int $src_y The start y position to crop from.
+        * @param int $src_w The width to crop.
+        * @param int $src_h The height to crop.
+        * @param int $dst_w Optional. The destination width.
+        * @param int $dst_h Optional. The destination height.
+        * @param boolean $src_abs Optional. If the source crop points are absolute.
+        * @return boolean|WP_Error
+        */
+       public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ) {
+               // If destination width/height isn't specified, use same as
+               // width/height from source.
+               if ( ! $dst_w )
+                       $dst_w = $src_w;
+               if ( ! $dst_h )
+                       $dst_h = $src_h;
+
+               $dst = wp_imagecreatetruecolor( $dst_w, $dst_h );
+
+               if ( $src_abs ) {
+                       $src_w -= $src_x;
+                       $src_h -= $src_y;
+               }
+
+               if ( function_exists( 'imageantialias' ) )
+                       imageantialias( $dst, true );
+
+               imagecopyresampled( $dst, $this->image, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
+
+               if ( is_resource( $dst ) ) {
+                       imagedestroy( $this->image );
+                       $this->image = $dst;
+                       $this->update_size();
+                       return true;
+               }
+
+               return new WP_Error( 'image_crop_error', __('Image crop failed.'), $this->file );
+       }
+
+       /**
+        * Rotates current image counter-clockwise by $angle.
+        * Ported from image-edit.php
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param float $angle
+        * @return boolean|WP_Error
+        */
+       public function rotate( $angle ) {
+               if ( function_exists('imagerotate') ) {
+                       $rotated = imagerotate( $this->image, $angle, 0 );
+
+                       if ( is_resource( $rotated ) ) {
+                               imagedestroy( $this->image );
+                               $this->image = $rotated;
+                               $this->update_size();
+                               return true;
+                       }
+               }
+               return new WP_Error( 'image_rotate_error', __('Image rotate failed.'), $this->file );
+       }
+
+       /**
+        * Flips current image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param boolean $horz Horizontal Flip
+        * @param boolean $vert Vertical Flip
+        * @returns boolean|WP_Error
+        */
+       public function flip( $horz, $vert ) {
+               $w = $this->size['width'];
+               $h = $this->size['height'];
+               $dst = wp_imagecreatetruecolor( $w, $h );
+
+               if ( is_resource( $dst ) ) {
+                       $sx = $vert ? ($w - 1) : 0;
+                       $sy = $horz ? ($h - 1) : 0;
+                       $sw = $vert ? -$w : $w;
+                       $sh = $horz ? -$h : $h;
+
+                       if ( imagecopyresampled( $dst, $this->image, 0, 0, $sx, $sy, $w, $h, $sw, $sh ) ) {
+                               imagedestroy( $this->image );
+                               $this->image = $dst;
+                               return true;
+                       }
+               }
+               return new WP_Error( 'image_flip_error', __('Image flip failed.'), $this->file );
+       }
+
+       /**
+        * Saves current in-memory image to file.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $destfilename
+        * @param string $mime_type
+        * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string}
+        */
+       public function save( $filename = null, $mime_type = null ) {
+               $saved = $this->_save( $this->image, $filename, $mime_type );
+
+               if ( ! is_wp_error( $saved ) ) {
+                       $this->file = $saved['path'];
+                       $this->mime_type = $saved['mime-type'];
+               }
+
+               return $saved;
+       }
+
+       protected function _save( $image, $filename = null, $mime_type = null ) {
+               list( $filename, $extension, $mime_type ) = $this->get_output_format( $filename, $mime_type );
+
+               if ( ! $filename )
+                       $filename = $this->generate_filename( null, null, $extension );
+
+               if ( 'image/gif' == $mime_type ) {
+                       if ( ! $this->make_image( $filename, 'imagegif', array( $image, $filename ) ) )
+                               return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
+               }
+               elseif ( 'image/png' == $mime_type ) {
+                       // convert from full colors to index colors, like original PNG.
+                       if ( function_exists('imageistruecolor') && ! imageistruecolor( $image ) )
+                               imagetruecolortopalette( $image, false, imagecolorstotal( $image ) );
+
+                       if ( ! $this->make_image( $filename, 'imagepng', array( $image, $filename ) ) )
+                               return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
+               }
+               elseif ( 'image/jpeg' == $mime_type ) {
+                       if ( ! $this->make_image( $filename, 'imagejpeg', array( $image, $filename, apply_filters( 'jpeg_quality', $this->quality, 'image_resize' ) ) ) )
+                               return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
+               }
+               else {
+                       return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
+               }
+
+               // Set correct file permissions
+               $stat = stat( dirname( $filename ) );
+               $perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits
+               @ chmod( $filename, $perms );
+
+               return array(
+                       'path' => $filename,
+                       'file' => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ),
+                       'width' => $this->size['width'],
+                       'height' => $this->size['height'],
+                       'mime-type'=> $mime_type,
+               );
+       }
+
+       /**
+        * Returns stream of current image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $mime_type
+        */
+       public function stream( $mime_type = null ) {
+               list( $filename, $extension, $mime_type ) = $this->get_output_format( null, $mime_type );
+
+               switch ( $mime_type ) {
+                       case 'image/png':
+                               header( 'Content-Type: image/png' );
+                               return imagepng( $this->image );
+                       case 'image/gif':
+                               header( 'Content-Type: image/gif' );
+                               return imagegif( $this->image );
+                       default:
+                               header( 'Content-Type: image/jpeg' );
+                               return imagejpeg( $this->image, null, $this->quality );
+               }
+       }
+}
diff --git a/wp-includes/class-wp-image-editor-imagick.php b/wp-includes/class-wp-image-editor-imagick.php
new file mode 100644 (file)
index 0000000..21e4e0c
--- /dev/null
@@ -0,0 +1,468 @@
+<?php
+/**
+ * WordPress Imagick Image Editor
+ *
+ * @package WordPress
+ * @subpackage Image_Editor
+ */
+
+/**
+ * WordPress Image Editor Class for Image Manipulation through Imagick PHP Module
+ *
+ * @since 3.5.0
+ * @package WordPress
+ * @subpackage Image_Editor
+ * @uses WP_Image_Editor Extends class
+ */
+class WP_Image_Editor_Imagick extends WP_Image_Editor {
+
+       protected $image = null; // Imagick Object
+
+       function __destruct() {
+               if ( $this->image ) {
+                       // we don't need the original in memory anymore
+                       $this->image->clear();
+                       $this->image->destroy();
+               }
+       }
+
+       /**
+        * Checks to see if current environment supports Imagick.
+        *
+        * We require Imagick 2.2.0 or greater, based on whether the queryFormats()
+        * method can be called statically.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @return boolean
+        */
+       public static function test( $args = array() ) {
+
+               // First, test Imagick's extension and classes.
+               if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick' ) || ! class_exists( 'ImagickPixel' ) )
+                       return false;
+
+               if ( version_compare( phpversion( 'imagick' ), '2.2.0', '<' ) )
+                       return false;
+
+               $required_methods = array(
+                       'clear',
+                       'destroy',
+                       'valid',
+                       'getimage',
+                       'writeimage',
+                       'getimageblob',
+                       'getimagegeometry',
+                       'getimageformat',
+                       'setimageformat',
+                       'setimagecompression',
+                       'setimagecompressionquality',
+                       'setimagepage',
+                       'scaleimage',
+                       'cropimage',
+                       'rotateimage',
+                       'flipimage',
+                       'flopimage',
+               );
+
+               // Now, test for deep requirements within Imagick.
+               if ( ! defined( 'imagick::COMPRESSION_JPEG' ) )
+                       return false;
+
+               if ( array_diff( $required_methods, get_class_methods( 'Imagick' ) ) )
+                       return false;
+
+               return true;
+       }
+
+       /**
+        * Checks to see if editor supports the mime-type specified.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $mime_type
+        * @return boolean
+        */
+       public static function supports_mime_type( $mime_type ) {
+               $imagick_extension = strtoupper( self::get_extension( $mime_type ) );
+
+               if ( ! $imagick_extension )
+                       return false;
+
+               // setIteratorIndex is optional unless mime is an animated format.
+               // Here, we just say no if you are missing it and aren't loading a jpeg.
+               if ( ! method_exists( 'Imagick', 'setIteratorIndex' ) && $mime_type != 'image/jpeg' )
+                               return false;
+
+               try {
+                       return ( (bool) Imagick::queryFormats( $imagick_extension ) );
+               }
+               catch ( Exception $e ) {
+                       return false;
+               }
+       }
+
+       /**
+        * Loads image from $this->file into new Imagick Object.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @return boolean|WP_Error True if loaded; WP_Error on failure.
+        */
+       public function load() {
+               if ( $this->image )
+                       return true;
+
+               if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) )
+                       return new WP_Error( 'error_loading_image', __('File doesn&#8217;t exist?'), $this->file );
+
+               // Even though Imagick uses less PHP memory than GD, set higher limit for users that have low PHP.ini limits
+               @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );
+
+               try {
+                       $this->image = new Imagick( $this->file );
+
+                       if( ! $this->image->valid() )
+                               return new WP_Error( 'invalid_image', __('File is not an image.'), $this->file);
+
+                       // Select the first frame to handle animated images properly
+                       if ( is_callable( array( $this->image, 'setIteratorIndex' ) ) )
+                               $this->image->setIteratorIndex(0);
+
+                       $this->mime_type = $this->get_mime_type( $this->image->getImageFormat() );
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'invalid_image', $e->getMessage(), $this->file );
+               }
+
+               $updated_size = $this->update_size();
+               if ( is_wp_error( $updated_size ) )
+                               return $updated_size;
+
+               return $this->set_quality();
+       }
+
+       /**
+        * Sets Image Compression quality on a 1-100% scale.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param int $quality Compression Quality. Range: [1,100]
+        * @return boolean|WP_Error
+        */
+       public function set_quality( $quality = null ) {
+               if ( !$quality )
+                       $quality = $this->quality;
+
+               try {
+                       if( 'image/jpeg' == $this->mime_type ) {
+                               $this->image->setImageCompressionQuality( apply_filters( 'jpeg_quality', $quality, 'image_resize' ) );
+                               $this->image->setImageCompression( imagick::COMPRESSION_JPEG );
+                       }
+                       else {
+                               $this->image->setImageCompressionQuality( $quality );
+                       }
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_quality_error', $e->getMessage() );
+               }
+
+               return parent::set_quality( $quality );
+       }
+
+       /**
+        * Sets or updates current image size.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param int $width
+        * @param int $height
+        */
+       protected function update_size( $width = null, $height = null ) {
+               $size = null;
+               if ( !$width || !$height ) {
+                       try {
+                               $size = $this->image->getImageGeometry();
+                       }
+                       catch ( Exception $e ) {
+                               return new WP_Error( 'invalid_image', __('Could not read image size'), $this->file );
+                       }
+               }
+
+               if ( ! $width )
+                       $width = $size['width'];
+
+               if ( ! $height )
+                       $height = $size['height'];
+
+               return parent::update_size( $width, $height );
+       }
+
+       /**
+        * Resizes current image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param int $max_w
+        * @param int $max_h
+        * @param boolean $crop
+        * @return boolean|WP_Error
+        */
+       public function resize( $max_w, $max_h, $crop = false ) {
+               if ( ( $this->size['width'] == $max_w ) && ( $this->size['height'] == $max_h ) )
+                       return true;
+
+               $dims = image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop );
+               if ( ! $dims )
+                       return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions') );
+               list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
+
+               if ( $crop ) {
+                       return $this->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h );
+               }
+
+               try {
+                       /**
+                        * @TODO: Thumbnail is more efficient, given a newer version of Imagemagick.
+                        * $this->image->thumbnailImage( $dst_w, $dst_h );
+                        */
+                       $this->image->scaleImage( $dst_w, $dst_h );
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_resize_error', $e->getMessage() );
+               }
+
+               return $this->update_size( $dst_w, $dst_h );
+       }
+
+       /**
+        * Processes current image and saves to disk
+        * multiple sizes from single source.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+        * @return array
+        */
+       public function multi_resize( $sizes ) {
+               $metadata = array();
+               $orig_size = $this->size;
+               $orig_image = $this->image->getImage();
+
+               foreach ( $sizes as $size => $size_data ) {
+                       if ( ! $this->image )
+                               $this->image = $orig_image->getImage();
+
+                       $resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
+
+                       if( ! is_wp_error( $resize_result ) ) {
+                               $resized = $this->_save( $this->image );
+
+                               $this->image->clear();
+                               $this->image->destroy();
+                               $this->image = null;
+
+                               if ( ! is_wp_error( $resized ) && $resized ) {
+                                       unset( $resized['path'] );
+                                       $metadata[$size] = $resized;
+                               }
+                       }
+
+                       $this->size = $orig_size;
+               }
+
+               $this->image = $orig_image;
+
+               return $metadata;
+       }
+
+       /**
+        * Crops Image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string|int $src The source file or Attachment ID.
+        * @param int $src_x The start x position to crop from.
+        * @param int $src_y The start y position to crop from.
+        * @param int $src_w The width to crop.
+        * @param int $src_h The height to crop.
+        * @param int $dst_w Optional. The destination width.
+        * @param int $dst_h Optional. The destination height.
+        * @param boolean $src_abs Optional. If the source crop points are absolute.
+        * @return boolean|WP_Error
+        */
+       public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ) {
+               if ( $src_abs ) {
+                       $src_w -= $src_x;
+                       $src_h -= $src_y;
+               }
+
+               try {
+                       $this->image->cropImage( $src_w, $src_h, $src_x, $src_y );
+                       $this->image->setImagePage( $src_w, $src_h, 0, 0);
+
+                       if ( $dst_w || $dst_h ) {
+                               // If destination width/height isn't specified, use same as
+                               // width/height from source.
+                               if ( ! $dst_w )
+                                       $dst_w = $src_w;
+                               if ( ! $dst_h )
+                                       $dst_h = $src_h;
+
+                               $this->image->scaleImage( $dst_w, $dst_h );
+                               return $this->update_size();
+                       }
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_crop_error', $e->getMessage() );
+               }
+               return $this->update_size();
+       }
+
+       /**
+        * Rotates current image counter-clockwise by $angle.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param float $angle
+        * @return boolean|WP_Error
+        */
+       public function rotate( $angle ) {
+               /**
+                * $angle is 360-$angle because Imagick rotates clockwise
+                * (GD rotates counter-clockwise)
+                */
+               try {
+                       $this->image->rotateImage( new ImagickPixel('none'), 360-$angle );
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_rotate_error', $e->getMessage() );
+               }
+               return $this->update_size();
+       }
+
+       /**
+        * Flips current image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param boolean $horz Horizontal Flip
+        * @param boolean $vert Vertical Flip
+        * @returns boolean|WP_Error
+        */
+       public function flip( $horz, $vert ) {
+               try {
+                       if ( $horz )
+                               $this->image->flipImage();
+
+                       if ( $vert )
+                               $this->image->flopImage();
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_flip_error', $e->getMessage() );
+               }
+               return true;
+       }
+
+       /**
+        * Saves current image to file.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $destfilename
+        * @param string $mime_type
+        * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string}
+        */
+       public function save( $destfilename = null, $mime_type = null ) {
+               $saved = $this->_save( $this->image, $destfilename, $mime_type );
+
+               if ( ! is_wp_error( $saved ) ) {
+                       $this->file = $saved['path'];
+                       $this->mime_type = $saved['mime-type'];
+
+                       try {
+                               $this->image->setImageFormat( strtoupper( $this->get_extension( $this->mime_type ) ) );
+                       }
+                       catch ( Exception $e ) {
+                               return new WP_Error( 'image_save_error', $e->getMessage(), $this->file );
+                       }
+               }
+
+               return $saved;
+       }
+
+       protected function _save( $image, $filename = null, $mime_type = null ) {
+               list( $filename, $extension, $mime_type ) = $this->get_output_format( $filename, $mime_type );
+
+               if ( ! $filename )
+                       $filename = $this->generate_filename( null, null, $extension );
+
+               try {
+                       // Store initial Format
+                       $orig_format = $this->image->getImageFormat();
+
+                       $this->image->setImageFormat( strtoupper( $this->get_extension( $mime_type ) ) );
+                       $this->make_image( $filename, array( $image, 'writeImage' ), array( $filename ) );
+
+                       // Reset original Format
+                       $this->image->setImageFormat( $orig_format );
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_save_error', $e->getMessage(), $filename );
+               }
+
+               // Set correct file permissions
+               $stat = stat( dirname( $filename ) );
+               $perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits
+               @ chmod( $filename, $perms );
+
+               return array(
+                       'path' => $filename,
+                       'file' => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ),
+                       'width' => $this->size['width'],
+                       'height' => $this->size['height'],
+                       'mime-type' => $mime_type,
+               );
+       }
+
+       /**
+        * Streams current image to browser.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $mime_type
+        * @return boolean|WP_Error
+        */
+       public function stream( $mime_type = null ) {
+               list( $filename, $extension, $mime_type ) = $this->get_output_format( null, $mime_type );
+
+               try {
+                       // Temporarily change format for stream
+                       $this->image->setImageFormat( strtoupper( $extension ) );
+
+                       // Output stream of image content
+                       header( "Content-Type: $mime_type" );
+                       print $this->image->getImageBlob();
+
+                       // Reset Image to original Format
+                       $this->image->setImageFormat( $this->get_extension( $this->mime_type ) );
+               }
+               catch ( Exception $e ) {
+                       return new WP_Error( 'image_stream_error', $e->getMessage() );
+               }
+
+               return true;
+       }
+}
diff --git a/wp-includes/class-wp-image-editor.php b/wp-includes/class-wp-image-editor.php
new file mode 100644 (file)
index 0000000..099df1e
--- /dev/null
@@ -0,0 +1,400 @@
+<?php
+/**
+ * Base WordPress Image Editor
+ *
+ * @package WordPress
+ * @subpackage Image_Editor
+ */
+
+/**
+ * Base image editor class from which implementations extend
+ *
+ * @since 3.5.0
+ */
+abstract class WP_Image_Editor {
+       protected $file = null;
+       protected $size = null;
+       protected $mime_type = null;
+       protected $default_mime_type = 'image/jpeg';
+       protected $quality = 90;
+
+       /**
+        * Each instance handles a single file.
+        */
+       public function __construct( $file ) {
+               $this->file = $file;
+       }
+
+       /**
+        * Checks to see if current environment supports the editor chosen.
+        * Must be overridden in a sub-class.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param array $args
+        * @return boolean
+        */
+       public static function test( $args = array() ) {
+               return false;
+       }
+
+       /**
+        * Checks to see if editor supports the mime-type specified.
+        * Must be overridden in a sub-class.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param string $mime_type
+        * @return boolean
+        */
+       public static function supports_mime_type( $mime_type ) {
+               return false;
+       }
+
+       /**
+        * Loads image from $this->file into editor.
+        *
+        * @since 3.5.0
+        * @access protected
+        * @abstract
+        *
+        * @return boolean|WP_Error True if loaded; WP_Error on failure.
+        */
+       abstract public function load();
+
+       /**
+        * Saves current image to file.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param string $destfilename
+        * @param string $mime_type
+        * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string}
+        */
+       abstract public function save( $destfilename = null, $mime_type = null );
+
+       /**
+        * Resizes current image.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param int $max_w
+        * @param int $max_h
+        * @param boolean $crop
+        * @return boolean|WP_Error
+        */
+       abstract public function resize( $max_w, $max_h, $crop = false );
+
+       /**
+        * Processes current image and saves to disk
+        * multiple sizes from single source.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+        * @return array
+        */
+       abstract public function multi_resize( $sizes );
+
+       /**
+        * Crops Image.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param string|int $src The source file or Attachment ID.
+        * @param int $src_x The start x position to crop from.
+        * @param int $src_y The start y position to crop from.
+        * @param int $src_w The width to crop.
+        * @param int $src_h The height to crop.
+        * @param int $dst_w Optional. The destination width.
+        * @param int $dst_h Optional. The destination height.
+        * @param boolean $src_abs Optional. If the source crop points are absolute.
+        * @return boolean|WP_Error
+        */
+       abstract public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false );
+
+       /**
+        * Rotates current image counter-clockwise by $angle.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param float $angle
+        * @return boolean|WP_Error
+        */
+       abstract public function rotate( $angle );
+
+       /**
+        * Flips current image.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param boolean $horz Horizontal Flip
+        * @param boolean $vert Vertical Flip
+        * @return boolean|WP_Error
+        */
+       abstract public function flip( $horz, $vert );
+
+       /**
+        * Streams current image to browser.
+        *
+        * @since 3.5.0
+        * @access public
+        * @abstract
+        *
+        * @param string $mime_type
+        * @return boolean|WP_Error
+        */
+       abstract public function stream( $mime_type = null );
+
+       /**
+        * Gets dimensions of image.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @return array {'width'=>int, 'height'=>int}
+        */
+       public function get_size() {
+               return $this->size;
+       }
+
+       /**
+        * Sets current image size.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param int $width
+        * @param int $height
+        */
+       protected function update_size( $width = null, $height = null ) {
+               $this->size = array(
+                       'width' => (int) $width,
+                       'height' => (int) $height
+               );
+               return true;
+       }
+
+       /**
+        * Sets Image Compression quality on a 1-100% scale.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param int $quality Compression Quality. Range: [1,100]
+        * @return boolean
+        */
+       public function set_quality( $quality ) {
+               $this->quality = apply_filters( 'wp_editor_set_quality', $quality );
+
+               return ( (bool) $this->quality );
+       }
+
+       /**
+        * Returns preferred mime-type and extension based on provided
+        * file's extension and mime, or current file's extension and mime.
+        *
+        * Will default to $this->default_mime_type if requested is not supported.
+        *
+        * Provides corrected filename only if filename is provided.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param string $filename
+        * @param string $mime_type
+        * @return array { filename|null, extension, mime-type }
+        */
+       protected function get_output_format( $filename = null, $mime_type = null ) {
+               $new_ext = $file_ext = null;
+               $file_mime = null;
+
+               // By default, assume specified type takes priority
+               if ( $mime_type ) {
+                       $new_ext = $this->get_extension( $mime_type );
+               }
+
+               if ( $filename ) {
+                       $file_ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
+                       $file_mime = $this->get_mime_type( $file_ext );
+               }
+               else {
+                       // If no file specified, grab editor's current extension and mime-type.
+                       $file_ext = strtolower( pathinfo( $this->file, PATHINFO_EXTENSION ) );
+                       $file_mime = $this->mime_type;
+               }
+
+               // Check to see if specified mime-type is the same as type implied by
+               // file extension.  If so, prefer extension from file.
+               if ( ! $mime_type || ( $file_mime == $mime_type ) ) {
+                       $mime_type = $file_mime;
+                       $new_ext = $file_ext;
+               }
+
+               // Double-check that the mime-type selected is supported by the editor.
+               // If not, choose a default instead.
+               if ( ! $this->supports_mime_type( $mime_type ) ) {
+                       $mime_type = apply_filters( 'image_editor_default_mime_type', $this->default_mime_type );
+                       $new_ext = $this->get_extension( $mime_type );
+               }
+
+               if ( $filename ) {
+                       $ext = '';
+                       $info = pathinfo( $filename );
+                       $dir  = $info['dirname'];
+
+                       if( isset( $info['extension'] ) )
+                               $ext = $info['extension'];
+
+                       $filename = trailingslashit( $dir ) . wp_basename( $filename, ".$ext" ) . ".{$new_ext}";
+               }
+
+               return array( $filename, $new_ext, $mime_type );
+       }
+
+       /**
+        * Builds an output filename based on current file, and adding proper suffix
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $suffix
+        * @param string $dest_path
+        * @param string $extension
+        * @return string filename
+        */
+       public function generate_filename( $suffix = null, $dest_path = null, $extension = null ) {
+               // $suffix will be appended to the destination filename, just before the extension
+               if ( ! $suffix )
+                       $suffix = $this->get_suffix();
+
+               $info = pathinfo( $this->file );
+               $dir  = $info['dirname'];
+               $ext  = $info['extension'];
+
+               $name = wp_basename( $this->file, ".$ext" );
+               $new_ext = strtolower( $extension ? $extension : $ext );
+
+               if ( ! is_null( $dest_path ) && $_dest_path = realpath( $dest_path ) )
+                       $dir = $_dest_path;
+
+               return trailingslashit( $dir ) . "{$name}-{$suffix}.{$new_ext}";
+       }
+
+       /**
+        * Builds and returns proper suffix for file based on height and width.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @return string suffix
+        */
+       public function get_suffix() {
+               if ( ! $this->get_size() )
+                       return false;
+
+               return "{$this->size['width']}x{$this->size['height']}";
+       }
+
+       /**
+        * Either calls editor's save function or handles file as a stream.
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param string|stream $filename
+        * @param callable $function
+        * @param array $arguments
+        * @return boolean
+        */
+       protected function make_image( $filename, $function, $arguments ) {
+               $dst_file = $filename;
+
+               if ( $stream = wp_is_stream( $filename ) ) {
+                       $filename = null;
+                       ob_start();
+               }
+
+               $result = call_user_func_array( $function, $arguments );
+
+               if ( $result && $stream ) {
+                       $contents = ob_get_contents();
+
+                       $fp = fopen( $dst_file, 'w' );
+
+                       if ( ! $fp )
+                               return false;
+
+                       fwrite( $fp, $contents );
+                       fclose( $fp );
+               }
+
+               if ( $stream ) {
+                       ob_end_clean();
+               }
+
+               return $result;
+       }
+
+       /**
+        * Returns first matched mime-type from extension,
+        * as mapped from wp_get_mime_types()
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param string $extension
+        * @return string|boolean
+        */
+       protected static function get_mime_type( $extension = null ) {
+               if ( ! $extension )
+                       return false;
+
+               $mime_types = wp_get_mime_types();
+               $extensions = array_keys( $mime_types );
+
+               foreach( $extensions as $_extension ) {
+                       if ( preg_match( "/{$extension}/i", $_extension ) ) {
+                               return $mime_types[$_extension];
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Returns first matched extension from Mime-type,
+        * as mapped from wp_get_mime_types()
+        *
+        * @since 3.5.0
+        * @access protected
+        *
+        * @param string $mime_type
+        * @return string|boolean
+        */
+       protected static function get_extension( $mime_type = null ) {
+               $extensions = explode( '|', array_search( $mime_type, wp_get_mime_types() ) );
+
+               if ( empty( $extensions[0] ) )
+                       return false;
+
+               return $extensions[0];
+       }
+}
+
index c45bf78c96a972a88d79d927a1fba5ade6b197b1..7585fba9519d0245c16839b7baf14b33a4f721bb 100644 (file)
@@ -41,6 +41,7 @@ final class WP_Theme implements ArrayAccess {
                'default'      => 'WordPress Default',
                'twentyten'    => 'Twenty Ten',
                'twentyeleven' => 'Twenty Eleven',
+               'twentytwelve' => 'Twenty Twelve',
        );
 
        /**
@@ -253,6 +254,7 @@ final class WP_Theme implements ArrayAccess {
                                // Parent theme is missing.
                                $this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
                                $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                               $this->parent = new WP_Theme( $this->template, $this->theme_root, $this );
                                return;
                        }
                }
@@ -1102,7 +1104,7 @@ final class WP_Theme implements ArrayAccess {
        public static function get_allowed_on_site( $blog_id = null ) {
                static $allowed_themes = array();
 
-               if ( ! $blog_id )
+               if ( ! $blog_id || ! is_multisite() )
                        $blog_id = get_current_blog_id();
 
                if ( isset( $allowed_themes[ $blog_id ] ) )
@@ -1110,18 +1112,24 @@ final class WP_Theme implements ArrayAccess {
 
                $current = $blog_id == get_current_blog_id();
 
-               if ( $current )
+               if ( $current ) {
                        $allowed_themes[ $blog_id ] = get_option( 'allowedthemes' );
-               else
-                       $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowedthemes' );
+               } else {
+                       switch_to_blog( $blog_id );
+                       $allowed_themes[ $blog_id ] = get_option( 'allowedthemes' );
+                       restore_current_blog();
+               }
 
                // This is all super old MU back compat joy.
                // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name.
                if ( false === $allowed_themes[ $blog_id ] ) {
-                       if ( $current )
+                       if ( $current ) {
                                $allowed_themes[ $blog_id ] = get_option( 'allowed_themes' );
-                       else
-                               $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowed_themes' );
+                       } else {
+                               switch_to_blog( $blog_id );
+                               $allowed_themes[ $blog_id ] = get_option( 'allowed_themes' );
+                               restore_current_blog();
+                       }
 
                        if ( ! is_array( $allowed_themes[ $blog_id ] ) || empty( $allowed_themes[ $blog_id ] ) ) {
                                $allowed_themes[ $blog_id ] = array();
@@ -1140,8 +1148,10 @@ final class WP_Theme implements ArrayAccess {
                                        update_option( 'allowedthemes', $allowed_themes[ $blog_id ] );
                                        delete_option( 'allowed_themes' );
                                } else {
-                                       update_blog_option( $blog_id, 'allowedthemes', $allowed_themes[ $blog_id ] );
-                                       delete_blog_option( $blog_id, 'allowed_themes' );
+                                       switch_to_blog( $blog_id );
+                                       update_option( 'allowedthemes', $allowed_themes[ $blog_id ] );
+                                       delete_option( 'allowed_themes' );
+                                       restore_current_blog();
                                }
                        }
                }
index 5478da90d8a7f67bd7de69c722a7b3fdbc1070cf..df9d9b61f07964d1e99f48405b02a963fce87e33 100644 (file)
@@ -126,7 +126,7 @@ class Walker {
                if ( is_array( $args[0] ) )
                        $args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
                $cb_args = array_merge( array(&$output, $element, $depth), $args);
-               call_user_func_array(array(&$this, 'start_el'), $cb_args);
+               call_user_func_array(array($this, 'start_el'), $cb_args);
 
                $id = $element->$id_field;
 
@@ -139,7 +139,7 @@ class Walker {
                                        $newlevel = true;
                                        //start the child delimiter
                                        $cb_args = array_merge( array(&$output, $depth), $args);
-                                       call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
+                                       call_user_func_array(array($this, 'start_lvl'), $cb_args);
                                }
                                $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
                        }
@@ -149,12 +149,12 @@ class Walker {
                if ( isset($newlevel) && $newlevel ){
                        //end the child delimiter
                        $cb_args = array_merge( array(&$output, $depth), $args);
-                       call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
+                       call_user_func_array(array($this, 'end_lvl'), $cb_args);
                }
 
                //end this element
                $cb_args = array_merge( array(&$output, $element, $depth), $args);
-               call_user_func_array(array(&$this, 'end_el'), $cb_args);
+               call_user_func_array(array($this, 'end_el'), $cb_args);
        }
 
        /**
index 14b83343b11c4bcf8f00522b969a182eca435542..ac758e4c1b81331066049923d741b607d3e221fd 100644 (file)
@@ -48,6 +48,10 @@ class wp_xmlrpc_server extends IXR_Server {
                        'wp.getTerms'                   => 'this:wp_getTerms',
                        'wp.getTaxonomy'                => 'this:wp_getTaxonomy',
                        'wp.getTaxonomies'              => 'this:wp_getTaxonomies',
+                       'wp.getUser'                    => 'this:wp_getUser',
+                       'wp.getUsers'                   => 'this:wp_getUsers',
+                       'wp.getProfile'                 => 'this:wp_getProfile',
+                       'wp.editProfile'                => 'this:wp_editProfile',
                        'wp.getPage'                    => 'this:wp_getPage',
                        'wp.getPages'                   => 'this:wp_getPages',
                        'wp.newPage'                    => 'this:wp_newPage',
@@ -78,14 +82,14 @@ class wp_xmlrpc_server extends IXR_Server {
                        'wp.getPostFormats'     => 'this:wp_getPostFormats',
                        'wp.getPostType'                => 'this:wp_getPostType',
                        'wp.getPostTypes'               => 'this:wp_getPostTypes',
+                       'wp.getRevisions'               => 'this:wp_getRevisions',
+                       'wp.restoreRevision'    => 'this:wp_restoreRevision',
 
                        // Blogger API
                        'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
                        'blogger.getUserInfo' => 'this:blogger_getUserInfo',
                        'blogger.getPost' => 'this:blogger_getPost',
                        'blogger.getRecentPosts' => 'this:blogger_getRecentPosts',
-                       'blogger.getTemplate' => 'this:blogger_getTemplate',
-                       'blogger.setTemplate' => 'this:blogger_setTemplate',
                        'blogger.newPost' => 'this:blogger_newPost',
                        'blogger.editPost' => 'this:blogger_editPost',
                        'blogger.deletePost' => 'this:blogger_deletePost',
@@ -101,8 +105,6 @@ class wp_xmlrpc_server extends IXR_Server {
                        // MetaWeblog API aliases for Blogger API
                        // see http://www.xmlrpc.com/stories/storyReader$2460
                        'metaWeblog.deletePost' => 'this:blogger_deletePost',
-                       'metaWeblog.getTemplate' => 'this:blogger_getTemplate',
-                       'metaWeblog.setTemplate' => 'this:blogger_setTemplate',
                        'metaWeblog.getUsersBlogs' => 'this:blogger_getUsersBlogs',
 
                        // MovableType API
@@ -157,49 +159,34 @@ class wp_xmlrpc_server extends IXR_Server {
                return $number1 + $number2;
        }
 
-       /**
-        * Check user's credentials.
-        *
-        * @since 1.5.0
-        *
-        * @param string $user_login User's username.
-        * @param string $user_pass User's password.
-        * @return bool Whether authentication passed.
-        * @deprecated use wp_xmlrpc_server::login
-        * @see wp_xmlrpc_server::login
-        */
-       function login_pass_ok($user_login, $user_pass) {
-               if ( !get_option( 'enable_xmlrpc' ) ) {
-                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site. An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
-                       return false;
-               }
-
-               if (!user_pass_ok($user_login, $user_pass)) {
-                       $this->error = new IXR_Error(403, __('Bad login/pass combination.'));
-                       return false;
-               }
-               return true;
-       }
-
        /**
         * Log user in.
         *
-        * @since 2.8
+        * @since 2.8.0
         *
         * @param string $username User's username.
         * @param string $password User's password.
         * @return mixed WP_User object if authentication passed, false otherwise
         */
-       function login($username, $password) {
-               if ( !get_option( 'enable_xmlrpc' ) ) {
-                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site. An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+       function login( $username, $password ) {
+               // Respect any old filters against get_option() for 'enable_xmlrpc'.
+               $enabled = apply_filters( 'pre_option_enable_xmlrpc', false ); // Deprecated
+               if ( false === $enabled )
+                       $enabled = apply_filters( 'option_enable_xmlrpc', true ); // Deprecated
+
+               // Proper filter for turning off XML-RPC. It is on by default.
+               $enabled = apply_filters( 'xmlrpc_enabled', $enabled );
+
+               if ( ! $enabled ) {
+                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site.' ) ) );
                        return false;
                }
 
                $user = wp_authenticate($username, $password);
 
                if (is_wp_error($user)) {
-                       $this->error = new IXR_Error(403, __('Bad login/pass combination.'));
+                       $this->error = new IXR_Error( 403, __( 'Incorrect username or password.' ) );
+                       $this->error = apply_filters( 'xmlrpc_login_error', $this->error, $user );
                        return false;
                }
 
@@ -207,6 +194,22 @@ class wp_xmlrpc_server extends IXR_Server {
                return $user;
        }
 
+       /**
+        * Check user's credentials. Deprecated.
+        *
+        * @since 1.5.0
+        * @deprecated 2.8.0
+        * @deprecated use wp_xmlrpc_server::login
+        * @see wp_xmlrpc_server::login
+        *
+        * @param string $username User's username.
+        * @param string $password User's password.
+        * @return bool Whether authentication passed.
+        */
+       function login_pass_ok( $username, $password ) {
+               return (bool) $this->login( $username, $password );
+       }
+
        /**
         * Sanitize string or array of strings for database.
         *
@@ -319,6 +322,11 @@ class wp_xmlrpc_server extends IXR_Server {
                                'readonly'      => true,
                                'option'        => 'siteurl'
                        ),
+                       'home_url'          => array(
+                               'desc'          => __( 'Home URL' ),
+                               'readonly'      => true,
+                               'option'        => 'home'
+                       ),
                        'image_default_link_type' => array(
                                'desc'          => __( 'Image default link type' ),
                                'readonly'      => true,
@@ -473,15 +481,17 @@ class wp_xmlrpc_server extends IXR_Server {
                                continue;
 
                        $blog_id = $blog->userblog_id;
-                       switch_to_blog($blog_id);
-                       $is_admin = current_user_can('manage_options');
+
+                       switch_to_blog( $blog_id );
+
+                       $is_admin = current_user_can( 'manage_options' );
 
                        $struct[] = array(
                                'isAdmin'               => $is_admin,
-                               'url'                   => get_option( 'home' ) . '/',
+                               'url'                   => home_url( '/' ),
                                'blogid'                => (string) $blog_id,
                                'blogName'              => get_option( 'blogname' ),
-                               'xmlrpc'                => site_url( 'xmlrpc.php' )
+                               'xmlrpc'                => site_url( 'xmlrpc.php', 'rpc' ),
                        );
 
                        restore_current_blog();
@@ -773,7 +783,7 @@ class wp_xmlrpc_server extends IXR_Server {
                // Get info the page parent if there is one.
                $parent_title = "";
                if ( ! empty( $page->post_parent ) ) {
-                       $parent = get_page( $page->post_parent );
+                       $parent = get_post( $page->post_parent );
                        $parent_title = $parent->post_title;
                }
 
@@ -870,6 +880,46 @@ class wp_xmlrpc_server extends IXR_Server {
                return apply_filters( 'xmlrpc_prepare_comment', $_comment, $comment );
        }
 
+       /**
+        * Prepares user data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param WP_User $user The unprepared user object
+        * @param array $fields The subset of user fields to return
+        * @return array The prepared user data
+        */
+       protected function _prepare_user( $user, $fields ) {
+               $_user = array( 'user_id' => strval( $user->ID ) );
+
+               $user_fields = array(
+                       'username'          => $user->user_login,
+                       'first_name'        => $user->user_firstname,
+                       'last_name'         => $user->user_lastname,
+                       'registered'        => $this->_convert_date( $user->user_registered ),
+                       'bio'               => $user->user_description,
+                       'email'             => $user->user_email,
+                       'nickname'          => $user->nickname,
+                       'nicename'          => $user->user_nicename,
+                       'url'               => $user->user_url,
+                       'display_name'      => $user->display_name,
+                       'roles'             => $user->roles,
+               );
+
+               if ( in_array( 'all', $fields ) ) {
+                       $_user = array_merge( $_user, $user_fields );
+               } else {
+                       if ( in_array( 'basic', $fields ) ) {
+                               $basic_fields = array( 'username', 'email', 'registered', 'display_name', 'nicename' );
+                               $fields = array_merge( $fields, $basic_fields );
+                       }
+                       $requested_fields = array_intersect_key( $user_fields, array_flip( $fields ) );
+                       $_user = array_merge( $_user, $requested_fields );
+               }
+
+               return apply_filters( 'xmlrpc_prepare_user', $_user, $user, $fields );
+       }
+
        /**
         * Create a new post for any registered post type.
         *
@@ -885,7 +935,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *      - post_status (default: 'draft')
         *      - post_title
         *      - post_author
-        *      - post_exerpt
+        *      - post_excerpt
         *      - post_content
         *      - post_date_gmt | post_date
         *      - post_format
@@ -962,7 +1012,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        if ( $post_data['post_type'] != get_post_type( $post_data['ID'] ) )
                                return new IXR_Error( 401, __( 'The post type may not be changed.' ) );
                } else {
-                       if ( ! current_user_can( $post_type->cap->edit_posts ) )
+                       if ( ! current_user_can( $post_type->cap->create_posts ) || ! current_user_can( $post_type->cap->edit_posts ) )
                                return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) );
                }
 
@@ -980,7 +1030,8 @@ class wp_xmlrpc_server extends IXR_Server {
                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' ) );
                                break;
                        default:
-                               $post_data['post_status'] = 'draft';
+                               if ( ! get_post_status_object( $post_data['post_status'] ) )
+                                       $post_data['post_status'] = 'draft';
                        break;
                }
 
@@ -1045,8 +1096,9 @@ class wp_xmlrpc_server extends IXR_Server {
                        // empty value deletes, non-empty value adds/updates
                        if ( ! $post_data['post_thumbnail'] )
                                delete_post_thumbnail( $post_ID );
-                       elseif ( ! set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] ) )
-                                       return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
+                       elseif ( ! get_post( absint( $post_data['post_thumbnail'] ) ) )
+                               return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
+                       set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] );
                        unset( $content_struct['post_thumbnail'] );
                }
 
@@ -1157,7 +1209,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $post_data = apply_filters( 'xmlrpc_wp_insert_post_data', $post_data, $content_struct );
 
-               $post_ID = wp_insert_post( $post_data, true );
+               $post_ID = $update ? wp_update_post( $post_data, true ) : wp_insert_post( $post_data, true );
                if ( is_wp_error( $post_ID ) )
                        return new IXR_Error( 500, $post_ID->get_error_message() );
 
@@ -1205,6 +1257,13 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( empty( $post['ID'] ) )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
+               if ( isset( $content_struct['if_not_modified_since'] ) ) {
+                       // If the post has been modified since the date provided, return an error.
+                       if ( mysql2date( 'U', $post['post_modified_gmt'] ) > $content_struct['if_not_modified_since']->getTimestamp() ) {
+                               return new IXR_Error( 409, __( 'There is a revision of this post that is more recent.' ) );
+                       }
+               }
+
                // convert the date field back to IXR form
                $post['post_date'] = $this->_convert_date( $post['post_date'] );
 
@@ -1254,7 +1313,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action( 'xmlrpc_call', 'wp.deletePost' );
 
-               $post = wp_get_single_post( $post_id, ARRAY_A );
+               $post = get_post( $post_id, ARRAY_A );
                if ( empty( $post['ID'] ) )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
@@ -1284,7 +1343,7 @@ class wp_xmlrpc_server extends IXR_Server {
         * groups are 'post' (all basic fields), 'taxonomies', 'custom_fields',
         * and 'enclosure'.
         *
-        * @uses wp_get_single_post()
+        * @uses get_post()
         * @param array $args Method parameters. Contains:
         *  - int     $post_id
         *  - string  $username
@@ -1335,7 +1394,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action( 'xmlrpc_call', 'wp.getPost' );
 
-               $post = wp_get_single_post( $post_id, ARRAY_A );
+               $post = get_post( $post_id, ARRAY_A );
 
                if ( empty( $post['ID'] ) )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
@@ -1423,6 +1482,10 @@ class wp_xmlrpc_server extends IXR_Server {
                                $query['order'] = $filter['order'];
                }
 
+               if ( isset( $filter['s'] ) ) {
+                       $query['s'] = $filter['s'];
+               }
+
                $posts_list = wp_get_recent_posts( $query );
 
                if ( ! $posts_list )
@@ -1917,6 +1980,262 @@ class wp_xmlrpc_server extends IXR_Server {
                return $struct;
        }
 
+       /**
+        * Retrieve a user.
+        *
+        * The optional $fields parameter specifies what fields will be included
+        * in the response array. This should be a list of field names. 'user_id' will
+        * always be included in the response regardless of the value of $fields.
+        *
+        * Instead of, or in addition to, individual field names, conceptual group
+        * names can be used to specify multiple fields. The available conceptual
+        * groups are 'basic' and 'all'.
+        *
+        * @uses get_userdata()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - int     $user_id
+        *  - array   $fields optional
+        * @return array contains (based on $fields parameter):
+        *  - 'user_id'
+        *  - 'username'
+        *  - 'first_name'
+        *  - 'last_name'
+        *  - 'registered'
+        *  - 'bio'
+        *  - 'email'
+        *  - 'nickname'
+        *  - 'nicename'
+        *  - 'url'
+        *  - 'display_name'
+        *  - 'roles'
+        */
+       function wp_getUser( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+               $user_id    = (int) $args[3];
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUser' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getUser' );
+
+               if ( ! current_user_can( 'edit_user', $user_id ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot edit users.' ) );
+
+               $user_data = get_userdata( $user_id );
+
+               if ( ! $user_data )
+                       return new IXR_Error( 404, __( 'Invalid user ID' ) );
+
+               return $this->_prepare_user( $user_data, $fields );
+       }
+
+       /**
+        * Retrieve users.
+        *
+        * The optional $filter parameter modifies the query used to retrieve users.
+        * Accepted keys are 'number' (default: 50), 'offset' (default: 0), 'role',
+        * 'who', 'orderby', and 'order'.
+        *
+        * The optional $fields parameter specifies what fields will be included
+        * in the response array.
+        *
+        * @uses get_users()
+        * @see wp_getUser() for more on $fields and return values
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $filter optional
+        *  - array   $fields optional
+        * @return array users data
+        */
+       function wp_getUsers( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+               $filter     = isset( $args[3] ) ? $args[3] : array();
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUsers' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getUsers' );
+
+               if ( ! current_user_can( 'list_users' ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot list users.' ) );
+
+               $query = array( 'fields' => 'all_with_meta' );
+
+               $query['number'] = ( isset( $filter['number'] ) ) ? absint( $filter['number'] ) : 50;
+               $query['offset'] = ( isset( $filter['offset'] ) ) ? absint( $filter['offset'] ) : 0;
+
+               if ( isset( $filter['orderby'] ) ) {
+                       $query['orderby'] = $filter['orderby'];
+
+                       if ( isset( $filter['order'] ) )
+                               $query['order'] = $filter['order'];
+               }
+
+               if ( isset( $filter['role'] ) ) {
+                       if ( get_role( $filter['role'] ) === null )
+                               return new IXR_Error( 403, __( 'The role specified is not valid' ) );
+
+                       $query['role'] = $filter['role'];
+               }
+
+               if ( isset( $filter['who'] ) ) {
+                       $query['who'] = $filter['who'];
+               }
+
+               $users = get_users( $query );
+
+               $_users = array();
+               foreach ( $users as $user_data ) {
+                       if ( current_user_can( 'edit_user', $user_data->ID ) )
+                               $_users[] = $this->_prepare_user( $user_data, $fields );
+               }
+               return $_users;
+       }
+
+       /**
+        * Retrieve information about the requesting user.
+        *
+        * @uses get_userdata()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $fields optional
+        * @return array (@see wp_getUser)
+        */
+       function wp_getProfile( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+
+               if ( isset( $args[3] ) )
+                       $fields = $args[3];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getProfile' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getProfile' );
+
+               if ( ! current_user_can( 'edit_user', $user->ID ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot edit your profile.' ) );
+
+               $user_data = get_userdata( $user->ID );
+
+               return $this->_prepare_user( $user_data, $fields );
+       }
+
+       /**
+        * Edit user's profile.
+        *
+        * @uses wp_update_user()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $content_struct
+        *      It can optionally contain:
+        *      - 'first_name'
+        *      - 'last_name'
+        *      - 'website'
+        *      - 'display_name'
+        *      - 'nickname'
+        *      - 'nicename'
+        *      - 'bio'
+        * @return bool True, on success.
+        */
+       function wp_editProfile( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $content_struct = $args[3];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.editProfile' );
+
+               if ( ! current_user_can( 'edit_user', $user->ID ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot edit your profile.' ) );
+
+               // holds data of the user
+               $user_data = array();
+               $user_data['ID'] = $user->ID;
+
+               // only set the user details if it was given
+               if ( isset( $content_struct['first_name'] ) )
+                       $user_data['first_name'] = $content_struct['first_name'];
+
+               if ( isset( $content_struct['last_name'] ) )
+                       $user_data['last_name'] = $content_struct['last_name'];
+
+               if ( isset( $content_struct['url'] ) )
+                       $user_data['user_url'] = $content_struct['url'];
+
+               if ( isset( $content_struct['display_name'] ) )
+                       $user_data['display_name'] = $content_struct['display_name'];
+
+               if ( isset( $content_struct['nickname'] ) )
+                       $user_data['nickname'] = $content_struct['nickname'];
+
+               if ( isset( $content_struct['nicename'] ) )
+                       $user_data['user_nicename'] = $content_struct['nicename'];
+
+               if ( isset( $content_struct['bio'] ) )
+                       $user_data['description'] = $content_struct['bio'];
+
+               $result = wp_update_user( $user_data );
+
+               if ( is_wp_error( $result ) )
+                       return new IXR_Error( 500, $result->get_error_message() );
+
+               if ( ! $result )
+                       return new IXR_Error( 500, __( 'Sorry, the user cannot be updated.' ) );
+
+               return true;
+       }
+
        /**
         * Retrieve page.
         *
@@ -1941,7 +2260,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
                }
 
-               $page = get_page($page_id);
+               $page = get_post($page_id);
                if ( ! $page )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
@@ -2058,7 +2377,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                // Get the current page based on the page_id and
                // make sure it is a page and not a post.
-               $actual_page = wp_get_single_post($page_id, ARRAY_A);
+               $actual_page = get_post($page_id, ARRAY_A);
                if ( !$actual_page || ($actual_page['post_type'] != 'page') )
                        return(new IXR_Error(404, __('Sorry, no such page.')));
 
@@ -2099,7 +2418,7 @@ class wp_xmlrpc_server extends IXR_Server {
                do_action('xmlrpc_call', 'wp.editPage');
 
                // Get the page data and make sure it is a page.
-               $actual_page = wp_get_single_post($page_id, ARRAY_A);
+               $actual_page = get_post($page_id, ARRAY_A);
                if ( !$actual_page || ($actual_page['post_type'] != 'page') )
                        return(new IXR_Error(404, __('Sorry, no such page.')));
 
@@ -3169,6 +3488,128 @@ class wp_xmlrpc_server extends IXR_Server {
                return $struct;
        }
 
+       /**
+        * Retrieve revisions for a specific post.
+        *
+        * @since 3.5.0
+        *
+        * The optional $fields parameter specifies what fields will be included
+        * in the response array.
+        *
+        * @uses wp_get_post_revisions()
+        * @see wp_getPost() for more on $fields
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - int     $post_id
+        *  - array   $fields
+        * @return array contains a collection of posts.
+        */
+       function wp_getRevisions( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+               $post_id    = (int) $args[3];
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_revision_fields', array( 'post_date', 'post_date_gmt' ), 'wp.getRevisions' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getRevisions' );
+
+               if ( ! $post = get_post( $post_id ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID' ) );
+
+               if ( ! current_user_can( 'edit_post', $post_id ) )
+                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
+
+               // Check if revisions are enabled.
+               if ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) )
+                       return new IXR_Error( 401, __( 'Sorry, revisions are disabled.' ) );
+
+               $revisions = wp_get_post_revisions( $post_id );
+
+               if ( ! $revisions )
+                       return array();
+
+               $struct = array();
+
+               foreach ( $revisions as $revision ) {
+                       if ( ! current_user_can( 'read_post', $revision->ID ) )
+                               continue;
+
+                       // Skip autosaves
+                       if ( wp_is_post_autosave( $revision ) )
+                               continue;
+
+                       $struct[] = $this->_prepare_post( get_object_vars( $revision ), $fields );
+               }
+
+               return $struct;
+       }
+
+       /**
+        * Restore a post revision
+        *
+        * @since 3.5.0
+        *
+        * @uses wp_restore_post_revision()
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - int     $post_id
+        * @return bool false if there was an error restoring, true if success.
+        */
+       function wp_restoreRevision( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id     = (int) $args[0];
+               $username    = $args[1];
+               $password    = $args[2];
+               $revision_id = (int) $args[3];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.restoreRevision' );
+
+               if ( ! $revision = wp_get_post_revision( $revision_id ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID' ) );
+
+               if ( wp_is_post_autosave( $revision ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID' ) );
+
+               if ( ! $post = get_post( $revision->post_parent ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID' ) );
+
+               if ( ! current_user_can( 'edit_post', $revision->post_parent ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
+
+               // Check if revisions are disabled.
+               if ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) )
+                       return new IXR_Error( 401, __( 'Sorry, revisions are disabled.' ) );
+
+               $post = wp_restore_post_revision( $revision_id );
+
+               return (bool) $post;
+       }
+
        /* Blogger API functions.
         * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
         */
@@ -3204,7 +3645,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        'url'      => get_option('home') . '/',
                        'blogid'   => '1',
                        'blogName' => get_option('blogname'),
-                       'xmlrpc'   => site_url( 'xmlrpc.php' )
+                       'xmlrpc'   => site_url( 'xmlrpc.php', 'rpc' ),
                );
 
                return array($struct);
@@ -3216,12 +3657,12 @@ class wp_xmlrpc_server extends IXR_Server {
         * @access protected
         */
        function _multisite_getUsersBlogs($args) {
-               global $current_blog;
+               $current_blog = get_blog_details();
+
                $domain = $current_blog->domain;
                $path = $current_blog->path . 'xmlrpc.php';
-               $protocol = is_ssl() ? 'https' : 'http';
 
-               $rpc = new IXR_Client("$protocol://{$domain}{$path}");
+               $rpc = new IXR_Client( set_url_scheme( "http://{$domain}{$path}" ) );
                $rpc->query('wp.getUsersBlogs', $args[1], $args[2]);
                $blogs = $rpc->getResponse();
 
@@ -3294,7 +3735,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
-               $post_data = wp_get_single_post($post_ID, ARRAY_A);
+               $post_data = get_post($post_ID, ARRAY_A);
                if ( ! $post_data )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
@@ -3381,82 +3822,23 @@ class wp_xmlrpc_server extends IXR_Server {
        }
 
        /**
-        * Retrieve blog_filename content.
+        * Deprecated.
         *
         * @since 1.5.0
-        *
-        * @param array $args Method parameters.
-        * @return string
+        * @deprecated 3.5.0
         */
        function blogger_getTemplate($args) {
-
-               $this->escape($args);
-
-               $blog_ID    = (int) $args[1];
-               $username = $args[2];
-               $password  = $args[3];
-               $template   = $args[4]; /* could be 'main' or 'archiveIndex', but we don't use it */
-
-               if ( !$user = $this->login($username, $password) )
-                       return $this->error;
-
-               do_action('xmlrpc_call', 'blogger.getTemplate');
-
-               if ( !current_user_can('edit_themes') )
-                       return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
-
-               /* warning: here we make the assumption that the blog's URL is on the same server */
-               $filename = get_option('home') . '/';
-               $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
-
-               $f = fopen($filename, 'r');
-               $content = fread($f, filesize($filename));
-               fclose($f);
-
-               /* so it is actually editable with a windows/mac client */
-               // FIXME: (or delete me) do we really want to cater to bad clients at the expense of good ones by BEEPing up their line breaks? commented. $content = str_replace("\n", "\r\n", $content);
-
-               return $content;
+               return new IXR_Error( 403, __('Sorry, that file cannot be edited.' ) );
        }
 
        /**
-        * Updates the content of blog_filename.
+        * Deprecated.
         *
         * @since 1.5.0
-        *
-        * @param array $args Method parameters.
-        * @return bool True when done.
+        * @deprecated 3.5.0
         */
        function blogger_setTemplate($args) {
-
-               $this->escape($args);
-
-               $blog_ID    = (int) $args[1];
-               $username = $args[2];
-               $password  = $args[3];
-               $content    = $args[4];
-               $template   = $args[5]; /* could be 'main' or 'archiveIndex', but we don't use it */
-
-               if ( !$user = $this->login($username, $password) )
-                       return $this->error;
-
-               do_action('xmlrpc_call', 'blogger.setTemplate');
-
-               if ( !current_user_can('edit_themes') )
-                       return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
-
-               /* warning: here we make the assumption that the blog's URL is on the same server */
-               $filename = get_option('home') . '/';
-               $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
-
-               if ($f = fopen($filename, 'w+')) {
-                       fwrite($f, $content);
-                       fclose($f);
-               } else {
-                       return new IXR_Error(500, __('Either the file is not writable, or something wrong happened. The file has not been updated.'));
-               }
-
-               return true;
+               return new IXR_Error( 403, __('Sorry, that file cannot be edited.' ) );
        }
 
        /**
@@ -3483,7 +3865,7 @@ class wp_xmlrpc_server extends IXR_Server {
                do_action('xmlrpc_call', 'blogger.newPost');
 
                $cap = ($publish) ? 'publish_posts' : 'edit_posts';
-               if ( !current_user_can($cap) )
+               if ( ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) || !current_user_can($cap) )
                        return new IXR_Error(401, __('Sorry, you are not allowed to post on this site.'));
 
                $post_status = ($publish) ? 'publish' : 'draft';
@@ -3536,7 +3918,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'blogger.editPost');
 
-               $actual_post = wp_get_single_post($post_ID,ARRAY_A);
+               $actual_post = get_post($post_ID,ARRAY_A);
 
                if ( !$actual_post || $actual_post['post_type'] != 'post' )
                        return new IXR_Error(404, __('Sorry, no such post.'));
@@ -3590,7 +3972,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'blogger.deletePost');
 
-               $actual_post = wp_get_single_post($post_ID,ARRAY_A);
+               $actual_post = get_post($post_ID,ARRAY_A);
 
                if ( !$actual_post || $actual_post['post_type'] != 'post' )
                        return new IXR_Error(404, __('Sorry, no such post.'));
@@ -3698,6 +4080,8 @@ class wp_xmlrpc_server extends IXR_Server {
                        $post_type = 'post';
                }
 
+               if ( ! current_user_can( get_post_type_object( $post_type )->cap->create_posts ) )
+                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts on this site.' ) );
                if ( !current_user_can( $cap ) )
                        return new IXR_Error( 401, $error_message );
 
@@ -3730,18 +4114,18 @@ class wp_xmlrpc_server extends IXR_Server {
                $post_author = $user->ID;
 
                // If an author id was provided then use it instead.
-               if ( isset($content_struct['wp_author_id']) && ($user->ID != $content_struct['wp_author_id']) ) {
+               if ( isset( $content_struct['wp_author_id'] ) && ( $user->ID != $content_struct['wp_author_id'] ) ) {
                        switch ( $post_type ) {
                                case "post":
-                                       if ( !current_user_can('edit_others_posts') )
-                                               return(new IXR_Error(401, __('You are not allowed to post as this user')));
+                                       if ( !current_user_can( 'edit_others_posts' ) )
+                                               return( new IXR_Error( 401, __( 'You are not allowed to create posts as this user.' ) ) );
                                        break;
                                case "page":
-                                       if ( !current_user_can('edit_others_pages') )
-                                               return(new IXR_Error(401, __('You are not allowed to create pages as this user')));
+                                       if ( !current_user_can( 'edit_others_pages' ) )
+                                               return( new IXR_Error( 401, __( 'You are not allowed to create pages as this user.' ) ) );
                                        break;
                                default:
-                                       return(new IXR_Error(401, __('Invalid post type')));
+                                       return( new IXR_Error( 401, __( 'Invalid post type' ) ) );
                                        break;
                        }
                        $author = get_userdata( $content_struct['wp_author_id'] );
@@ -3902,7 +4286,7 @@ class wp_xmlrpc_server extends IXR_Server {
                // Handle post formats if assigned, value is validated earlier
                // in this function
                if ( isset( $content_struct['wp_post_format'] ) )
-                       wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );
+                       set_post_format( $post_ID, $content_struct['wp_post_format'] );
 
                $post_ID = wp_insert_post( $postdata, true );
                if ( is_wp_error( $post_ID ) )
@@ -3980,7 +4364,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'metaWeblog.editPost');
 
-               $postdata = wp_get_single_post( $post_ID, ARRAY_A );
+               $postdata = get_post( $post_ID, ARRAY_A );
 
                // If there is no post data for the give post id, stop
                // now and return an error. Other wise a new post will be
@@ -4219,7 +4603,7 @@ class wp_xmlrpc_server extends IXR_Server {
                // Handle post formats if assigned, validation is handled
                // earlier in this function
                if ( isset( $content_struct['wp_post_format'] ) )
-                       wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );
+                       set_post_format( $post_ID, $content_struct['wp_post_format'] );
 
                do_action( 'xmlrpc_call_success_mw_editPost', $post_ID, $args );
 
@@ -4245,7 +4629,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
-               $postdata = wp_get_single_post($post_ID, ARRAY_A);
+               $postdata = get_post($post_ID, ARRAY_A);
                if ( ! $postdata )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
@@ -4380,6 +4764,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$posts_list )
                        return array();
 
+               $struct = array();
                foreach ($posts_list as $entry) {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
@@ -4568,8 +4953,13 @@ class wp_xmlrpc_server extends IXR_Server {
                        return new IXR_Error(500, $errorString);
                }
                // Construct the attachment array
-               // attach to post_id 0
                $post_id = 0;
+               if ( ! empty( $data['post_id'] ) ) {
+                       $post_id = (int) $data['post_id'];
+
+                       if ( ! current_user_can( 'edit_post', $post_id ) )
+                               return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
+               }
                $attachment = array(
                        'post_title' => $name,
                        'post_content' => '',
@@ -4767,6 +5157,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !current_user_can('edit_post', $post_ID) )
                        return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
 
+               $catids = array();
                foreach ( $categories as $cat ) {
                        $catids[] = $cat['categoryId'];
                }
@@ -4824,7 +5215,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'mt.getTrackbackPings');
 
-               $actual_post = wp_get_single_post($post_ID, ARRAY_A);
+               $actual_post = get_post($post_ID, ARRAY_A);
 
                if ( !$actual_post )
                        return new IXR_Error(404, __('Sorry, no such post.'));
@@ -4871,7 +5262,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'mt.publishPost');
 
-               $postdata = wp_get_single_post($post_ID, ARRAY_A);
+               $postdata = get_post($post_ID, ARRAY_A);
                if ( ! $postdata )
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
@@ -4934,7 +5325,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        $blah = explode('/', $match[0]);
                        $post_ID = (int) $blah[1];
                        $way = 'from the path';
-               } elseif ( preg_match('#p=[0-9]{1,}#', $urltest['query'], $match) ) {
+               } elseif ( isset( $urltest['query'] ) && preg_match('#p=[0-9]{1,}#', $urltest['query'], $match) ) {
                        // the querystring defines the post_ID (?p=XXXX)
                        $blah = explode('=', $match[0]);
                        $post_ID = (int) $blah[1];
@@ -4994,7 +5385,7 @@ class wp_xmlrpc_server extends IXR_Server {
                // Work around bug in strip_tags():
                $linea = str_replace('<!DOC', '<DOC', $linea);
                $linea = preg_replace( '/[\s\r\n\t]+/', ' ', $linea ); // normalize spaces
-               $linea = preg_replace( "/ <(h1|h2|h3|h4|h5|h6|p|th|td|li|dt|dd|pre|caption|input|textarea|button|body)[^>]*>/", "\n\n", $linea );
+               $linea = preg_replace( "/<\/*(h1|h2|h3|h4|h5|h6|p|th|td|li|dt|dd|pre|caption|input|textarea|button|body)[^>]*>/", "\n\n", $linea );
 
                preg_match('|<title>([^<]*?)</title>|is', $linea, $matchtitle);
                $title = $matchtitle[1];
@@ -5085,7 +5476,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));
                }
 
-               $actual_post = wp_get_single_post($post_ID, ARRAY_A);
+               $actual_post = get_post($post_ID, ARRAY_A);
 
                if ( !$actual_post ) {
                        // No such post = resource not found
index 4f8bc3582593ddb8c5a0b43e6731407f0adb4c38..b1b1e2876e301b26441d011eb0731f4f42bd5347 100644 (file)
@@ -120,6 +120,9 @@ class WP {
        function parse_request($extra_query_vars = '') {
                global $wp_rewrite;
 
+               if ( ! apply_filters( 'do_parse_request', true, $this, $extra_query_vars ) )
+                       return;
+
                $this->query_vars = array();
                $post_type_query_vars = array();
 
@@ -161,13 +164,13 @@ class WP {
                        // requested permalink.
                        $req_uri = str_replace($pathinfo, '', $req_uri);
                        $req_uri = trim($req_uri, '/');
-                       $req_uri = preg_replace("|^$home_path|", '', $req_uri);
+                       $req_uri = preg_replace("|^$home_path|i", '', $req_uri);
                        $req_uri = trim($req_uri, '/');
                        $pathinfo = trim($pathinfo, '/');
-                       $pathinfo = preg_replace("|^$home_path|", '', $pathinfo);
+                       $pathinfo = preg_replace("|^$home_path|i", '', $pathinfo);
                        $pathinfo = trim($pathinfo, '/');
                        $self = trim($self, '/');
-                       $self = preg_replace("|^$home_path|", '', $self);
+                       $self = preg_replace("|^$home_path|i", '', $self);
                        $self = trim($self, '/');
 
                        // The requested permalink is in $pathinfo for path info requests and
@@ -192,7 +195,7 @@ class WP {
                                        $query = $rewrite['$'];
                                        $matches = array('');
                                }
-                       } else if ( $req_uri != 'wp-app.php' ) {
+                       } else {
                                foreach ( (array) $rewrite as $match => $query ) {
                                        // If the requesting file is the anchor of the match, prepend it to the path info.
                                        if ( ! empty($req_uri) && strpos($match, $req_uri) === 0 && $req_uri != $request )
@@ -226,16 +229,14 @@ class WP {
                                // Parse the query.
                                parse_str($query, $perma_query_vars);
 
-                               // If we're processing a 404 request, clear the error var
-                               // since we found something.
-                               unset( $_GET['error'] );
-                               unset( $error );
+                               // If we're processing a 404 request, clear the error var since we found something.
+                               if ( '404' == $error )
+                                       unset( $error, $_GET['error'] );
                        }
 
                        // If req_uri is empty or if it is a request for ourself, unset error.
                        if ( empty($request) || $req_uri == $self || strpos($_SERVER['PHP_SELF'], 'wp-admin/') !== false ) {
-                               unset( $_GET['error'] );
-                               unset( $error );
+                               unset( $error, $_GET['error'] );
 
                                if ( isset($perma_query_vars) && strpos($_SERVER['PHP_SELF'], 'wp-admin/') !== false )
                                        unset( $perma_query_vars );
@@ -322,11 +323,15 @@ class WP {
 
                if ( is_user_logged_in() )
                        $headers = array_merge($headers, wp_get_nocache_headers());
-               if ( !empty($this->query_vars['error']) && '404' == $this->query_vars['error'] ) {
-                       $status = 404;
-                       if ( !is_user_logged_in() )
-                               $headers = array_merge($headers, wp_get_nocache_headers());
-                       $headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
+               if ( ! empty( $this->query_vars['error'] ) ) {
+                       $status = (int) $this->query_vars['error'];
+                       if ( 404 === $status ) {
+                               if ( ! is_user_logged_in() )
+                                       $headers = array_merge($headers, wp_get_nocache_headers());
+                               $headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
+                       } elseif ( in_array( $status, array( 403, 500, 502, 503 ) ) ) {
+                               $exit_required = true;
+                       }
                } else if ( empty($this->query_vars['feed']) ) {
                        $headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
                } else {
@@ -376,6 +381,9 @@ class WP {
                foreach( (array) $headers as $name => $field_value )
                        @header("{$name}: {$field_value}");
 
+               if ( isset( $headers['Last-Modified'] ) && empty( $headers['Last-Modified'] ) && function_exists( 'header_remove' ) )
+                       @header_remove( 'Last-Modified' );
+
                if ( $exit_required )
                        exit();
 
@@ -601,7 +609,7 @@ class WP_MatchesMapRegex {
         * @return string
         */
        function _map() {
-               $callback = array(&$this, 'callback');
+               $callback = array($this, 'callback');
                return preg_replace_callback($this->_pattern, $callback, $this->_subject);
        }
 
index fb1f1ee0c275753f0ef986a1278b49b88db76fe7..eb075c85744876bba75aac29a43b37fab50aabd8 100644 (file)
@@ -196,24 +196,27 @@ class WP_Dependencies {
                }
        }
 
-       function query( $handle, $list = 'registered' ) { // registered, queue, done, to_do
-               switch ( $list ) :
-               case 'registered':
-               case 'scripts': // back compat
-                       if ( isset($this->registered[$handle]) )
-                               return $this->registered[$handle];
-                       break;
-               case 'to_print': // back compat
-               case 'printed': // back compat
-                       if ( 'to_print' == $list )
-                               $list = 'to_do';
-                       else
-                               $list = 'printed';
-               default:
-                       if ( in_array($handle, $this->$list) )
-                               return true;
-                       break;
-               endswitch;
+
+       function query( $handle, $list = 'registered' ) {
+               switch ( $list ) {
+                       case 'registered' :
+                       case 'scripts': // back compat
+                               if ( isset( $this->registered[ $handle ] ) )
+                                       return $this->registered[ $handle ];
+                               return false;
+
+                       case 'enqueued' :
+                       case 'queue' :
+                               return in_array( $handle, $this->queue );
+
+                       case 'to_do' :
+                       case 'to_print': // back compat
+                               return in_array( $handle, $this->to_do );
+
+                       case 'done' :
+                       case 'printed': // back compat
+                               return in_array( $handle, $this->done );
+               }
                return false;
        }
 
@@ -244,8 +247,8 @@ class _WP_Dependency {
        var $extra = array();
 
        function __construct() {
-               @list($this->handle, $this->src, $this->deps, $this->ver, $this->args) = func_get_args();
-               if ( !is_array($this->deps) )
+               @list( $this->handle, $this->src, $this->deps, $this->ver, $this->args ) = func_get_args();
+               if ( ! is_array($this->deps) )
                        $this->deps = array();
        }
 
index 0ac2af4d9738299d830a5677281bb5579d2cfebd..f75929b4abf875beb27ab1f6f3f325b23ca27eb1 100644 (file)
@@ -110,7 +110,7 @@ class WP_Scripts extends WP_Dependencies {
                }
 
                $this->print_extra_script( $handle );
-               if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
+               if ( !preg_match('|^(https?:)?//|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
                        $src = $this->base_url . $src;
                }
 
index 48e8f7ef1d8f4f452f32aa51fa48b14b7b98b049..fdfe5afe3213b2afd7ded35095b6ca1bae47085d 100644 (file)
@@ -135,7 +135,7 @@ class WP_Styles extends WP_Dependencies {
        }
 
        function _css_href( $src, $ver, $handle ) {
-               if ( !is_bool($src) && !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
+               if ( !is_bool($src) && !preg_match('|^(https?:)?//|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
                        $src = $this->base_url . $src;
                }
 
index 5bacda18d3857a4d1e02263905067c1addafff06..8be25e10d58c208d4fd00f9f75edde02b6976a64 100644 (file)
@@ -810,11 +810,8 @@ function pings_open( $post_id = null ) {
  * @uses $post Gets the ID of the current post for the token
  */
 function wp_comment_form_unfiltered_html_nonce() {
-       global $post;
-
-       $post_id = 0;
-       if ( !empty($post) )
-               $post_id = $post->ID;
+       $post = get_post();
+       $post_id = $post ? $post->ID : 0;
 
        if ( current_user_can( 'unfiltered_html' ) ) {
                wp_nonce_field( 'unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment_disabled', false );
@@ -897,7 +894,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        update_comment_cache($wp_query->comments);
 
        if ( $separate_comments ) {
-               $wp_query->comments_by_type = &separate_comments($comments);
+               $wp_query->comments_by_type = separate_comments($comments);
                $comments_by_type = &$wp_query->comments_by_type;
        }
 
@@ -907,7 +904,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                $overridden_cpage = true;
        }
 
-       if ( !defined('COMMENTS_TEMPLATE') || !COMMENTS_TEMPLATE)
+       if ( !defined('COMMENTS_TEMPLATE') )
                define('COMMENTS_TEMPLATE', true);
 
        $include = apply_filters('comments_template', STYLESHEETPATH . $file );
@@ -1331,13 +1328,13 @@ class Walker_Comment extends Walker {
        function start_el( &$output, $comment, $depth, $args, $id = 0 ) {
                $depth++;
                $GLOBALS['comment_depth'] = $depth;
+               $GLOBALS['comment'] = $comment;
 
                if ( !empty($args['callback']) ) {
                        call_user_func($args['callback'], $comment, $args, $depth);
                        return;
                }
 
-               $GLOBALS['comment'] = $comment;
                extract($args, EXTR_SKIP);
 
                if ( 'div' == $args['style'] ) {
@@ -1431,7 +1428,7 @@ function wp_list_comments($args = array(), $comments = null ) {
                if ( empty($comments) )
                        return;
                if ( 'all' != $r['type'] ) {
-                       $comments_by_type = &separate_comments($comments);
+                       $comments_by_type = separate_comments($comments);
                        if ( empty($comments_by_type[$r['type']]) )
                                return;
                        $_comments = $comments_by_type[$r['type']];
@@ -1443,7 +1440,7 @@ function wp_list_comments($args = array(), $comments = null ) {
                        return;
                if ( 'all' != $r['type'] ) {
                        if ( empty($wp_query->comments_by_type) )
-                               $wp_query->comments_by_type = &separate_comments($wp_query->comments);
+                               $wp_query->comments_by_type = separate_comments($wp_query->comments);
                        if ( empty($wp_query->comments_by_type[$r['type']]) )
                                return;
                        $_comments = $wp_query->comments_by_type[$r['type']];
@@ -1524,9 +1521,9 @@ function comment_form( $args = array(), $post_id = null ) {
        $req = get_option( 'require_name_email' );
        $aria_req = ( $req ? " aria-required='true'" : '' );
        $fields =  array(
-               'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
+               'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
-               'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
+               'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
                'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
                            '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
@@ -1537,7 +1534,7 @@ function comment_form( $args = array(), $post_id = null ) {
                'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
                'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
                'must_log_in'          => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
-               'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
+               'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), get_edit_user_link(), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
                'comment_notes_after'  => '<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>',
                'id_form'              => 'commentform',
index 49406f61c7d03597b94ccf80e86cc6451dfbb316..7a8f71cfd470b59c980e7ca2999c4ce0283c232d 100644 (file)
@@ -127,7 +127,7 @@ function get_approved_comments($post_id) {
  * @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants.
  * @return object|array|null Depends on $output value.
  */
-function &get_comment(&$comment, $output = OBJECT) {
+function get_comment(&$comment, $output = OBJECT) {
        global $wpdb;
        $null = null;
 
@@ -190,6 +190,14 @@ function get_comments( $args = '' ) {
  * @since 3.1.0
  */
 class WP_Comment_Query {
+       /**
+        * Metadata query container
+        *
+        * @since 3.5.0
+        * @access public
+        * @var object WP_Meta_Query
+        */
+       var $meta_query = false;
 
        /**
         * Execute the query
@@ -222,25 +230,32 @@ class WP_Comment_Query {
                        'type' => '',
                        'user_id' => '',
                        'search' => '',
-                       'count' => false
+                       'count' => false,
+                       'meta_key' => '',
+                       'meta_value' => '',
+                       'meta_query' => '',
                );
 
+               $groupby = '';
+
                $this->query_vars = wp_parse_args( $query_vars, $defaults );
+
+               // Parse meta query
+               $this->meta_query = new WP_Meta_Query();
+               $this->meta_query->parse_query_vars( $this->query_vars );
+
                do_action_ref_array( 'pre_get_comments', array( &$this ) );
                extract( $this->query_vars, EXTR_SKIP );
 
                // $args can be whatever, only use the args defined in defaults to compute the key
                $key = md5( serialize( compact(array_keys($defaults)) )  );
-               $last_changed = wp_cache_get('last_changed', 'comment');
-               if ( !$last_changed ) {
-                       $last_changed = time();
-                       wp_cache_set('last_changed', $last_changed, 'comment');
-               }
+               $last_changed = wp_cache_get( 'last_changed', 'comment' );
+               if ( ! $last_changed )
+                       $last_changed = wp_cache_set( 'last_changed', 1, 'comment' );
                $cache_key = "get_comments:$key:$last_changed";
 
-               if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) {
+               if ( $cache = wp_cache_get( $cache_key, 'comment' ) )
                        return $cache;
-               }
 
                $post_id = absint($post_id);
 
@@ -248,10 +263,8 @@ class WP_Comment_Query {
                        $approved = "comment_approved = '0'";
                elseif ( 'approve' == $status )
                        $approved = "comment_approved = '1'";
-               elseif ( 'spam' == $status )
-                       $approved = "comment_approved = 'spam'";
-               elseif ( 'trash' == $status )
-                       $approved = "comment_approved = 'trash'";
+               elseif ( ! empty( $status ) && 'all' != $status )
+                       $approved = $wpdb->prepare( "comment_approved = %s", $status );
                else
                        $approved = "( comment_approved = '0' OR comment_approved = '1' )";
 
@@ -259,26 +272,36 @@ class WP_Comment_Query {
 
                if ( ! empty( $orderby ) ) {
                        $ordersby = is_array($orderby) ? $orderby : preg_split('/[,\s]/', $orderby);
-                       $ordersby = array_intersect(
-                               $ordersby,
-                               array(
-                                       'comment_agent',
-                                       'comment_approved',
-                                       'comment_author',
-                                       'comment_author_email',
-                                       'comment_author_IP',
-                                       'comment_author_url',
-                                       'comment_content',
-                                       'comment_date',
-                                       'comment_date_gmt',
-                                       'comment_ID',
-                                       'comment_karma',
-                                       'comment_parent',
-                                       'comment_post_ID',
-                                       'comment_type',
-                                       'user_id',
-                               )
+                       $allowed_keys = array(
+                               'comment_agent',
+                               'comment_approved',
+                               'comment_author',
+                               'comment_author_email',
+                               'comment_author_IP',
+                               'comment_author_url',
+                               'comment_content',
+                               'comment_date',
+                               'comment_date_gmt',
+                               'comment_ID',
+                               'comment_karma',
+                               'comment_parent',
+                               'comment_post_ID',
+                               'comment_type',
+                               'user_id',
                        );
+                       if ( ! empty( $this->query_vars['meta_key'] ) ) {
+                               $allowed_keys[] = $q['meta_key'];
+                               $allowed_keys[] = 'meta_value';
+                               $allowed_keys[] = 'meta_value_num';
+                       }
+                       $ordersby = array_intersect( $ordersby, $allowed_keys );
+                       foreach ( $ordersby as $key => $value ) {
+                               if ( $value == $q['meta_key'] || $value == 'meta_value' ) {
+                                       $ordersby[ $key ] = "$wpdb->commentmeta.meta_value";
+                               } elseif ( $value == 'meta_value_num' ) {
+                                       $ordersby[ $key ] = "$wpdb->commentmeta.meta_value+0";
+                               }
+                       }
                        $orderby = empty( $ordersby ) ? 'comment_date_gmt' : implode(', ', $ordersby);
                } else {
                        $orderby = 'comment_date_gmt';
@@ -331,12 +354,22 @@ class WP_Comment_Query {
                                $where .= $wpdb->prepare( " AND {$wpdb->posts}.{$field_name} = %s", $field_value );
                }
 
-               $pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits' );
+               if ( ! empty( $this->meta_query->queries ) ) {
+                       $clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
+                       $join .= $clauses['join'];
+                       $where .= $clauses['where'];
+                       $groupby = "{$wpdb->comments}.comment_ID";
+               }
+
+               $pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits', 'groupby' );
                $clauses = apply_filters_ref_array( 'comments_clauses', array( compact( $pieces ), &$this ) );
                foreach ( $pieces as $piece )
                        $$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : '';
 
-               $query = "SELECT $fields FROM $wpdb->comments $join WHERE $where ORDER BY $orderby $order $limits";
+               if ( $groupby )
+                       $groupby = 'GROUP BY ' . $groupby;
+
+               $query = "SELECT $fields FROM $wpdb->comments $join WHERE $where $groupby ORDER BY $orderby $order $limits";
 
                if ( $count )
                        return $wpdb->get_var( $query );
@@ -399,14 +432,14 @@ function get_comment_statuses( ) {
  *
  * @since 1.5.0
  * @uses $wpdb
- * @global array $cache_lastcommentmodified
  *
  * @param string $timezone Which timezone to use in reference to 'gmt', 'blog',
  *             or 'server' locations.
  * @return string Last comment modified date.
  */
 function get_lastcommentmodified($timezone = 'server') {
-       global $cache_lastcommentmodified, $wpdb;
+       global $wpdb;
+       static $cache_lastcommentmodified = array();
 
        if ( isset($cache_lastcommentmodified[$timezone]) )
                return $cache_lastcommentmodified[$timezone];
@@ -636,7 +669,7 @@ function wp_allow_comment($commentdata) {
 
        // Simple duplicate check
        // expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
-       $dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
+       $dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_parent = '$comment_parent' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
        if ( $comment_author_email )
                $dupe .= "OR comment_author_email = '$comment_author_email' ";
        $dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
@@ -650,13 +683,12 @@ function wp_allow_comment($commentdata) {
 
        do_action( 'check_comment_flood', $comment_author_IP, $comment_author_email, $comment_date_gmt );
 
-       if ( isset($user_id) && $user_id) {
-               $userdata = get_userdata($user_id);
-               $user = new WP_User($user_id);
+       if ( ! empty( $user_id ) ) {
+               $user = get_userdata( $user_id );
                $post_author = $wpdb->get_var($wpdb->prepare("SELECT post_author FROM $wpdb->posts WHERE ID = %d LIMIT 1", $comment_post_ID));
        }
 
-       if ( isset($userdata) && ( $user_id == $post_author || $user->has_cap('moderate_comments') ) ) {
+       if ( isset( $user ) && ( $user_id == $post_author || $user->has_cap( 'moderate_comments' ) ) ) {
                // The author and the admins get respect.
                $approved = 1;
         } else {
@@ -694,7 +726,7 @@ function check_comment_flood_db( $ip, $email, $date ) {
        global $wpdb;
        if ( current_user_can( 'manage_options' ) )
                return; // don't throttle admins
-       $hour_ago = gmdate( 'Y-m-d H:i:s', time() - 3600 );
+       $hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS );
        if ( $lasttime = $wpdb->get_var( $wpdb->prepare( "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( `comment_author_IP` = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $ip, $email ) ) ) {
                $time_lastcomment = mysql2date('U', $lasttime, false);
                $time_newcomment  = mysql2date('U', $date, false);
@@ -718,7 +750,7 @@ function check_comment_flood_db( $ip, $email, $date ) {
  * @param array $comments Array of comments
  * @return array Array of comments keyed by comment_type.
  */
-function &separate_comments(&$comments) {
+function separate_comments(&$comments) {
        $comments_by_type = array('comment' => array(), 'trackback' => array(), 'pingback' => array(), 'pings' => array());
        $count = count($comments);
        for ( $i = 0; $i < $count; $i++ ) {
@@ -1258,6 +1290,13 @@ function wp_insert_comment($commentdata) {
        $comment = get_comment($id);
        do_action('wp_insert_comment', $id, $comment);
 
+       if ( function_exists( 'wp_cache_incr' ) ) {
+               wp_cache_incr( 'last_changed', 1, 'comment' );
+       } else {
+               $last_changed = wp_cache_get( 'last_changed', 'comment' );
+               wp_cache_set( 'last_changed', $last_changed + 1, 'comment' );
+       }
+
        return $id;
 }
 
@@ -1366,7 +1405,7 @@ function wp_new_comment( $commentdata ) {
                if ( '0' == $commentdata['comment_approved'] )
                        wp_notify_moderator($comment_ID);
 
-               $post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
+               $post = get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
 
                if ( get_option('comments_notify') && $commentdata['comment_approved'] && ( ! isset( $commentdata['user_id'] ) || $post->post_author != $commentdata['user_id'] ) )
                        wp_notify_postauthor($comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' );
@@ -1479,7 +1518,7 @@ function wp_update_comment($commentarr) {
        else if ( 'approve' == $comment_approved )
                $comment_approved = 1;
 
-       $data = compact('comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt');
+       $data = compact( 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_parent' );
        $rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) );
 
        clean_comment_cache($comment_ID);
@@ -1704,7 +1743,7 @@ function do_all_pings() {
 function do_trackbacks($post_id) {
        global $wpdb;
 
-       $post = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $post_id) );
+       $post = get_post( $post_id );
        $to_ping = get_to_ping($post_id);
        $pinged  = get_pung($post_id);
        if ( empty($to_ping) ) {
@@ -1929,7 +1968,12 @@ function clean_comment_cache($ids) {
        foreach ( (array) $ids as $id )
                wp_cache_delete($id, 'comment');
 
-       wp_cache_set('last_changed', time(), 'comment');
+       if ( function_exists( 'wp_cache_incr' ) ) {
+               wp_cache_incr( 'last_changed', 1, 'comment' );
+       } else {
+               $last_changed = wp_cache_get( 'last_changed', 'comment' );
+               wp_cache_set( 'last_changed', $last_changed + 1, 'comment' );
+       }
 }
 
 /**
@@ -1976,7 +2020,7 @@ function _close_comments_for_old_posts( $posts, $query ) {
        if ( ! $days_old )
                return $posts;
 
-       if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * 24 * 60 * 60 ) ) {
+       if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) {
                $posts[0]->comment_status = 'closed';
                $posts[0]->ping_status = 'closed';
        }
@@ -2011,7 +2055,7 @@ function _close_comments_for_old_post( $open, $post_id ) {
        if ( ! in_array( $post->post_type, $post_types ) )
                return $open;
 
-       if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * 24 * 60 * 60 ) )
+       if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) )
                return false;
 
        return $open;
index 9117ae5d348d911151eacdc8aee9f8dd4fa0645b..4e469a051c2bed2926cf8943eda89cbe7809d0f3 100644 (file)
@@ -22,7 +22,7 @@
 function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
        // don't schedule a duplicate if there's already an identical event due in the next 10 minutes
        $next = wp_next_scheduled($hook, $args);
-       if ( $next && $next <= $timestamp + 600 )
+       if ( $next && $next <= $timestamp + 10 * MINUTE_IN_SECONDS )
                return;
 
        $crons = _get_cron_array();
@@ -192,10 +192,10 @@ function wp_next_scheduled( $hook, $args = array() ) {
  *
  * @return null Cron could not be spawned, because it is not needed to run.
  */
-function spawn_cron( $local_time = 0 ) {
+function spawn_cron( $gmt_time = 0 ) {
 
-       if ( ! $local_time )
-               $local_time = microtime( true );
+       if ( ! $gmt_time )
+               $gmt_time = microtime( true );
 
        if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) )
                return;
@@ -206,11 +206,11 @@ function spawn_cron( $local_time = 0 ) {
        */
        $lock = get_transient('doing_cron');
 
-       if ( $lock > $local_time + 10*60 )
+       if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS )
                $lock = 0;
 
        // don't run if another process is currently running it or more than once every 60 sec.
-       if ( $lock + WP_CRON_LOCK_TIMEOUT > $local_time )
+       if ( $lock + WP_CRON_LOCK_TIMEOUT > $gmt_time )
                return;
 
        //sanity check
@@ -219,14 +219,14 @@ function spawn_cron( $local_time = 0 ) {
                return;
 
        $keys = array_keys( $crons );
-       if ( isset($keys[0]) && $keys[0] > $local_time )
+       if ( isset($keys[0]) && $keys[0] > $gmt_time )
                return;
 
        if ( defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON ) {
                if ( !empty($_POST) || defined('DOING_AJAX') )
                        return;
 
-               $doing_wp_cron = sprintf( '%.22F', $local_time );
+               $doing_wp_cron = sprintf( '%.22F', $gmt_time );
                set_transient( 'doing_cron', $doing_wp_cron );
 
                ob_start();
@@ -241,11 +241,16 @@ function spawn_cron( $local_time = 0 ) {
                return;
        }
 
-       $doing_wp_cron = sprintf( '%.22F', $local_time );
+       $doing_wp_cron = sprintf( '%.22F', $gmt_time );
        set_transient( 'doing_cron', $doing_wp_cron );
 
-       $cron_url = site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron );
-       wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );
+       $cron_request = apply_filters( 'cron_request', array(
+               'url' => site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron ),
+               'key' => $doing_wp_cron,
+               'args' => array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) )
+       ) );
+
+       wp_remote_post( $cron_request['url'], $cron_request['args'] );
 }
 
 /**
@@ -264,18 +269,18 @@ function wp_cron() {
        if ( false === $crons = _get_cron_array() )
                return;
 
-       $local_time = microtime( true );
+       $gmt_time = microtime( true );
        $keys = array_keys( $crons );
-       if ( isset($keys[0]) && $keys[0] > $local_time )
+       if ( isset($keys[0]) && $keys[0] > $gmt_time )
                return;
 
        $schedules = wp_get_schedules();
        foreach ( $crons as $timestamp => $cronhooks ) {
-               if ( $timestamp > $local_time ) break;
+               if ( $timestamp > $gmt_time ) break;
                foreach ( (array) $cronhooks as $hook => $args ) {
                        if ( isset($schedules[$hook]['callback']) && !call_user_func( $schedules[$hook]['callback'] ) )
                                continue;
-                       spawn_cron( $local_time );
+                       spawn_cron( $gmt_time );
                        break 2;
                }
        }
@@ -313,9 +318,9 @@ function wp_cron() {
  */
 function wp_get_schedules() {
        $schedules = array(
-               'hourly' => array( 'interval' => 3600, 'display' => __('Once Hourly') ),
-               'twicedaily' => array( 'interval' => 43200, 'display' => __('Twice Daily') ),
-               'daily' => array( 'interval' => 86400, 'display' => __('Once Daily') ),
+               'hourly'     => array( 'interval' => HOUR_IN_SECONDS,      'display' => __( 'Once Hourly' ) ),
+               'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily' ) ),
+               'daily'      => array( 'interval' => DAY_IN_SECONDS,       'display' => __( 'Once Daily' ) ),
        );
        return array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
 }
index e2e2fb46878d373e135de0e0034ec4a653eeb4d5..a190f2122c96e084d7dc3a8428f6d125dc197937 100644 (file)
@@ -1 +1,201 @@
-#wpadminbar *{font-family:Tahoma,Arial,Helvetica,sans-serif}#wpadminbar{direction:rtl;font-family:Tahoma,Arial,Helvetica,sans-serif;left:auto;right:0}#wpadminbar .quicklinks{border-left:0;border-right:1px solid transparent}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .quicklinks>ul>li{border-right:0;border-left:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:0;border-left:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:0;border-right:1px solid #333;float:left}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-right:1px solid #555;border-left:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 -1px 0 0}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{left:auto;right:0}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:auto;left:0;margin:0 0 0 -1px}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:0;margin-right:100%}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:inherit;margin-right:0;left:100%;right:inherit}#wpadminbar .menupop .menupop>.ab-item{background-position:5% -46px;padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-position:95% -20px;padding-left:1em;padding-right:2em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{right:0;left:auto}#wpadminbar .ab-top-secondary{float:left;right:auto;left:0}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-left:0}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px;margin-left:16px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:0;padding-right:8px}#wp-admin-bar-user-info .avatar{left:auto;right:-72px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{margin-left:-1px;margin-right:4px}#wpadminbar .quicklinks li img.blavatar{margin-right:0;margin-left:4px}#wpadminbar #adminbarsearch .adminbar-input{font-family:Tahoma,Arial,Helvetica,sans-serif;padding:0 24px 0 3px;margin:0;background-position:50% 2px}#wpadminbar #adminbarsearch .adminbar-input:focus,#wpadminbar.ie7 #adminbarsearch .adminbar-input{background-position:99% 2px}#wpadminbar .ab-icon{float:right}.ie7 #wp-admin-bar-wp-logo>.ab-item .ab-icon{position:static}#wpadminbar.ie7 .ab-icon{float:left;left:12px}#wpadminbar .ab-label{margin-left:0;margin-right:4px;float:left}#wpadminbar.ie7 .ab-label{margin-right:0}#wpadminbar.ie7 #wp-admin-bar-comments>a{min-width:25px}#wpadminbar a:hover .ab-comments-icon-arrow{border-right-color:#bbb}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{right:0}#wpadminbar .quicklinks .menupop ul li a{position:relative}* html #wpadminbar .quicklinks ul li a{float:right}
\ No newline at end of file
+#wpadminbar * {
+       font-family: Tahoma, Arial, Helvetica, sans-serif;
+}
+
+#wpadminbar {
+       direction: rtl;
+       font-family: Tahoma, Arial, Helvetica, sans-serif;
+       left: auto;
+       right: 0;
+}
+
+#wpadminbar .quicklinks ul {
+       text-align: right;
+}
+
+#wpadminbar li {
+       float: right;
+}
+
+#wpadminbar .quicklinks > ul > li {
+       border-right: 0;
+       border-left: 1px solid #555;
+}
+
+#wpadminbar .quicklinks > ul > li > a,
+#wpadminbar .quicklinks > ul > li > .ab-empty-item {
+       border-right: 0;
+       border-left: 1px solid #333;
+}
+
+#wpadminbar .quicklinks .ab-top-secondary > li {
+       border-left: 0;
+       border-right: 1px solid #333;
+       float: left;
+}
+
+#wpadminbar .quicklinks .ab-top-secondary > li > a,
+#wpadminbar .quicklinks .ab-top-secondary > li > .ab-empty-item {
+       border-right: 1px solid #555;
+       border-left: 0;
+}
+
+#wpadminbar .menupop .ab-sub-wrapper,
+#wpadminbar .shortlink-input {
+       margin: 0 -1px 0 0;
+}
+
+#wpadminbar.ie7 .menupop .ab-sub-wrapper,
+#wpadminbar.ie7 .shortlink-input {
+       left: auto;
+       right: 0;
+}
+
+#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
+       right: auto;
+       left: 0;
+       margin: 0 0 0 -1px;
+}
+
+#wpadminbar .menupop li:hover > .ab-sub-wrapper,
+#wpadminbar .menupop li.hover > .ab-sub-wrapper {
+       margin-left: 0px;
+       margin-right: 100%;
+}
+
+#wpadminbar .ab-top-secondary .menupop li:hover > .ab-sub-wrapper,
+#wpadminbar .ab-top-secondary .menupop li.hover > .ab-sub-wrapper {
+       margin-left: inherit;
+       margin-right: 0;
+       left: 100%;
+       right: inherit;
+}
+
+#wpadminbar .menupop .menupop > .ab-item {
+       background-position: 5% -46px;
+       padding-left: 2em;
+       padding-right: 1em;
+}
+
+#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item {
+       background-position: 95% -20px;
+       padding-left: 1em;
+       padding-right: 2em;
+}
+
+#wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
+       right: 0;
+       left: auto;
+}
+
+#wpadminbar .ab-top-secondary {
+       float: left;
+       right: auto;
+       left: 0;
+}
+
+#wpadminbar ul li:last-child,
+#wpadminbar ul li:last-child .ab-item {
+       border-left: 0;
+}
+
+#wpadminbar .screen-reader-shortcut:focus {
+       left: auto;
+       right: 6px;
+}
+
+/**
+ * My Account
+ */
+#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions > li {
+       margin-right: 88px;
+       margin-left: 16px;
+}
+
+#wp-admin-bar-user-actions > li > .ab-item {
+       padding-left: 0;
+       padding-right: 8px;
+}
+
+#wp-admin-bar-user-info .avatar {
+       left: auto;
+       right: -72px;
+}
+
+#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
+       margin-left: -1px;
+       margin-right: 4px
+}
+
+/*
+ * My Sites
+ */
+#wpadminbar .quicklinks li .blavatar {
+       margin-right: 0px;
+       margin-left: 4px;
+}
+
+/*
+ * Search
+ */
+#wpadminbar #adminbarsearch .adminbar-input {
+       font-family: Tahoma, Arial, Helvetica, sans-serif;
+       padding: 0 24px 0 3px;
+       margin: 0;
+       background-position: 50% 2px;
+}
+
+#wpadminbar #adminbarsearch .adminbar-input:focus,
+#wpadminbar.ie7 #adminbarsearch .adminbar-input {
+       background-position: 99% 2px;
+}
+
+/**
+ * Comments icon
+ */
+#wpadminbar .ab-icon {
+       float: right;
+}
+
+.ie7 #wp-admin-bar-wp-logo > .ab-item .ab-icon {
+       position: static;
+}
+
+#wpadminbar.ie7 .ab-icon {
+       float: left;
+       left: 12px;
+}
+
+#wpadminbar .ab-label {
+       margin-left: 0px;
+       margin-right: 4px;
+       float: left;
+}
+
+#wpadminbar.ie7 .ab-label {
+       margin-right: 0;
+}
+
+#wpadminbar.ie7 #wp-admin-bar-comments > a {
+       min-width: 25px;
+}
+
+#wpadminbar a:hover .ab-comments-icon-arrow {
+       border-right-color: #bbb;
+}
+
+#wpadminbar .menupop .ab-sub-wrapper,
+#wpadminbar .shortlink-input {
+       right: 0;
+}
+
+#wpadminbar .quicklinks .menupop ul li a {
+       position: relative;
+}
+
+/**
+ * IE 6-targeted rules
+ */
+* html #wpadminbar .quicklinks ul li a {
+       float: right;
+}
diff --git a/wp-includes/css/admin-bar-rtl.dev.css b/wp-includes/css/admin-bar-rtl.dev.css
deleted file mode 100644 (file)
index 328bfcf..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-#wpadminbar * {
-       font-family: Tahoma, Arial, Helvetica, sans-serif;
-}
-
-#wpadminbar {
-       direction: rtl;
-       font-family: Tahoma, Arial, Helvetica, sans-serif;
-       left: auto;
-       right: 0;
-}
-
-#wpadminbar .quicklinks {
-       border-left: 0;
-       border-right: 1px solid transparent;
-}
-
-#wpadminbar .quicklinks ul {
-       text-align: right;
-}
-
-#wpadminbar li {
-       float: right;
-}
-
-#wpadminbar .quicklinks > ul > li {
-       border-right: 0;
-       border-left: 1px solid #555;
-}
-
-#wpadminbar .quicklinks > ul > li > a,
-#wpadminbar .quicklinks > ul > li > .ab-empty-item {
-       border-right: 0;
-       border-left: 1px solid #333;
-}
-
-#wpadminbar .quicklinks .ab-top-secondary > li {
-       border-left: 0;
-       border-right: 1px solid #333;
-       float: left;
-}
-
-#wpadminbar .quicklinks .ab-top-secondary > li > a,
-#wpadminbar .quicklinks .ab-top-secondary > li > .ab-empty-item {
-       border-right: 1px solid #555;
-       border-left: 0;
-}
-
-#wpadminbar .menupop .ab-sub-wrapper,
-#wpadminbar .shortlink-input {
-       margin: 0 -1px 0 0;
-}
-
-#wpadminbar.ie7 .menupop .ab-sub-wrapper,
-#wpadminbar.ie7 .shortlink-input {
-       left: auto;
-       right: 0;
-}
-
-#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
-       right: auto;
-       left: 0;
-       margin: 0 0 0 -1px;
-}
-
-#wpadminbar .menupop li:hover > .ab-sub-wrapper,
-#wpadminbar .menupop li.hover > .ab-sub-wrapper {
-       margin-left: 0px;
-       margin-right: 100%;
-}
-
-#wpadminbar .ab-top-secondary .menupop li:hover > .ab-sub-wrapper,
-#wpadminbar .ab-top-secondary .menupop li.hover > .ab-sub-wrapper {
-       margin-left: inherit;
-       margin-right: 0;
-       left: 100%;
-       right: inherit;
-}
-
-#wpadminbar .menupop .menupop > .ab-item {
-       background-position: 5% -46px;
-       padding-left: 2em;
-       padding-right: 1em;
-}
-
-#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item {
-       background-position: 95% -20px;
-       padding-left: 1em;
-       padding-right: 2em;
-}
-
-#wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
-       right: 0;
-       left: auto;
-}
-
-#wpadminbar .ab-top-secondary {
-       float: left;
-       right: auto;
-       left: 0;
-}
-
-#wpadminbar ul li:last-child,
-#wpadminbar ul li:last-child .ab-item {
-       border-left: 0;
-}
-
-/**
- * My Account
- */
-#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions > li {
-       margin-right: 88px;
-       margin-left: 16px;
-}
-
-#wp-admin-bar-user-actions > li > .ab-item {
-       padding-left: 0;
-       padding-right: 8px;
-}
-
-#wp-admin-bar-user-info .avatar {
-       left: auto;
-       right: -72px;
-}
-
-#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
-       margin-left: -1px;
-       margin-right: 4px
-}
-
-/*
- * My Sites
- */
-#wpadminbar .quicklinks li img.blavatar {
-       margin-right: 0px;
-       margin-left: 4px;
-}
-
-/*
- * Search
- */
-#wpadminbar #adminbarsearch .adminbar-input {
-       font-family: Tahoma, Arial, Helvetica, sans-serif;
-       padding: 0 24px 0 3px;
-       margin: 0;
-       background-position: 50% 2px;
-}
-
-#wpadminbar #adminbarsearch .adminbar-input:focus,
-#wpadminbar.ie7 #adminbarsearch .adminbar-input {
-       background-position: 99% 2px;
-}
-
-/**
- * Comments icon
- */
-#wpadminbar .ab-icon {
-       float: right;
-}
-
-.ie7 #wp-admin-bar-wp-logo > .ab-item .ab-icon {
-       position: static;
-}
-
-#wpadminbar.ie7 .ab-icon {
-       float: left;
-       left: 12px;
-}
-
-#wpadminbar .ab-label {
-       margin-left: 0px;
-       margin-right: 4px;
-       float: left;
-}
-
-#wpadminbar.ie7 .ab-label {
-       margin-right: 0;
-}
-
-#wpadminbar.ie7 #wp-admin-bar-comments > a {
-       min-width: 25px;
-}
-
-#wpadminbar a:hover .ab-comments-icon-arrow {
-       border-right-color: #bbb;
-}
-
-#wpadminbar .menupop .ab-sub-wrapper,
-#wpadminbar .shortlink-input {
-       right: 0;
-}
-
-#wpadminbar .quicklinks .menupop ul li a {
-       position: relative;
-}
-
-/**
- * IE 6-targeted rules
- */
-* html #wpadminbar .quicklinks ul li a {
-       float: right;
-}
diff --git a/wp-includes/css/admin-bar-rtl.min.css b/wp-includes/css/admin-bar-rtl.min.css
new file mode 100644 (file)
index 0000000..d53db89
--- /dev/null
@@ -0,0 +1 @@
+#wpadminbar *{font-family:Tahoma,Arial,Helvetica,sans-serif}#wpadminbar{direction:rtl;font-family:Tahoma,Arial,Helvetica,sans-serif;left:auto;right:0}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .quicklinks>ul>li{border-right:0;border-left:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:0;border-left:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:0;border-right:1px solid #333;float:left}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-right:1px solid #555;border-left:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 -1px 0 0}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{left:auto;right:0}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:auto;left:0;margin:0 0 0 -1px}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:0;margin-right:100%}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:inherit;margin-right:0;left:100%;right:inherit}#wpadminbar .menupop .menupop>.ab-item{background-position:5% -46px;padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-position:95% -20px;padding-left:1em;padding-right:2em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{right:0;left:auto}#wpadminbar .ab-top-secondary{float:left;right:auto;left:0}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-left:0}#wpadminbar .screen-reader-shortcut:focus{left:auto;right:6px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px;margin-left:16px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:0;padding-right:8px}#wp-admin-bar-user-info .avatar{left:auto;right:-72px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{margin-left:-1px;margin-right:4px}#wpadminbar .quicklinks li .blavatar{margin-right:0;margin-left:4px}#wpadminbar #adminbarsearch .adminbar-input{font-family:Tahoma,Arial,Helvetica,sans-serif;padding:0 24px 0 3px;margin:0;background-position:50% 2px}#wpadminbar #adminbarsearch .adminbar-input:focus,#wpadminbar.ie7 #adminbarsearch .adminbar-input{background-position:99% 2px}#wpadminbar .ab-icon{float:right}.ie7 #wp-admin-bar-wp-logo>.ab-item .ab-icon{position:static}#wpadminbar.ie7 .ab-icon{float:left;left:12px}#wpadminbar .ab-label{margin-left:0;margin-right:4px;float:left}#wpadminbar.ie7 .ab-label{margin-right:0}#wpadminbar.ie7 #wp-admin-bar-comments>a{min-width:25px}#wpadminbar a:hover .ab-comments-icon-arrow{border-right-color:#bbb}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{right:0}#wpadminbar .quicklinks .menupop ul li a{position:relative}* html #wpadminbar .quicklinks ul li a{float:right}
\ No newline at end of file
index 1838d2f02eba35c093670062d6dac77e3684cabe..6f462e9cd9ec5cbf4415c7f47e2c646c69e3ea17 100644 (file)
@@ -1 +1,685 @@
-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:0;border:0;text-decoration:none;background:0}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px)}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0;clear:none;list-style:none;margin:0;padding:0;position:relative;z-index:99999}#wpadminbar .quicklinks{border-left:1px solid transparent}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-moz-box-shadow:0 4px 4px rgba(0,0,0,0.2);-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;left:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto;margin:0 -1px 0 0}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:0}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%}#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus{color:#fafafa;background-color:#3a3a3a;background-image:-ms-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(bottom,#3a3a3a,#222)}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;border-right-color:transparent;border-left-color:transparent}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none}#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#21759b}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px)}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline}#wpadminbar .quicklinks li img.blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0}#wpadminbar #wp-admin-bar-search .ab-item{padding:0}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent}#wpadminbar #adminbarsearch{height:28px;padding:0 2px}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:0;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:3px 2px;background-repeat:no-repeat;outline:0;cursor:pointer;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);cursor:text}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-button{display:none}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px}#wpadminbar .ab-label{margin-left:4px}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:0 -76px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -159px;background-repeat:no-repeat}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-1px -134px;background-repeat:no-repeat}#wpadminbar span.count-0{display:none}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -182px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize{display:none}@media only screen and (-webkit-min-device-pixel-ratio:1.5){#wpadminbar .menupop .menupop>.ab-item,#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item,#wpadminbar #adminbarsearch .adminbar-input,#wp-admin-bar-wp-logo>.ab-item .ab-icon,#wp-admin-bar-updates>.ab-item .ab-icon,#wp-admin-bar-comments>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite-2x.png?d=20120516);background-size:20px 220px}}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}
\ No newline at end of file
+#wpadminbar * {
+       height: auto;
+       width: auto;
+       margin: 0;
+       padding: 0;
+       position: static;
+       text-transform: none;
+       letter-spacing: normal;
+       line-height: 1;
+       font: normal 13px/28px sans-serif;
+       color: #ccc;
+       text-shadow: #444 0px -1px 0px;
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing:    content-box;
+       box-sizing:         content-box;
+}
+
+#wpadminbar ul li:before,
+#wpadminbar ul li:after {
+       content: normal;
+}
+
+#wpadminbar a,
+#wpadminbar a:hover,
+#wpadminbar a img,
+#wpadminbar a img:hover {
+       outline: none;
+       border: none;
+       text-decoration: none;
+       background: none;
+}
+
+#wpadminbar a:focus,
+#wpadminbar a:active,
+#wpadminbar input[type="text"],
+#wpadminbar input[type="password"],
+#wpadminbar input[type="number"],
+#wpadminbar input[type="search"],
+#wpadminbar input[type="email"],
+#wpadminbar input[type="url"],
+#wpadminbar select,
+#wpadminbar textarea,
+#wpadminbar div {
+       outline: none;
+}
+
+#wpadminbar {
+       direction: ltr;
+       color: #ccc;
+       font: normal 13px/28px sans-serif;
+       height: 28px;
+       position: fixed;
+       top: 0;
+       left: 0;
+       width: 100%;
+       min-width: 600px; /* match the min-width of the body in wp-admin.css */
+       z-index: 99999;
+       background: #464646;
+       background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #373737), color-stop(18%, #464646));
+       background-image: -webkit-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image:    -moz-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image:      -o-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image: linear-gradient(to top, #373737 0, #464646 5px);
+}
+
+#wpadminbar .ab-sub-wrapper,
+#wpadminbar ul,
+#wpadminbar ul li {
+       background: none;
+       clear: none;
+       list-style: none;
+       margin: 0;
+       padding: 0;
+       position: relative;
+       text-indent: 0;
+       z-index: 99999;
+}
+
+#wpadminbar .quicklinks {
+       border-left: 1px solid transparent;
+}
+
+#wpadminbar .quicklinks ul {
+       text-align: left;
+}
+
+#wpadminbar li {
+       float: left;
+}
+
+#wpadminbar .ab-empty-item {
+       outline: none;
+}
+
+#wpadminbar .quicklinks > ul > li {
+       border-right: 1px solid #555;
+}
+
+#wpadminbar .quicklinks > ul > li > a,
+#wpadminbar .quicklinks > ul > li > .ab-empty-item {
+       border-right: 1px solid #333;
+}
+
+#wpadminbar .quicklinks .ab-top-secondary > li {
+       border-left: 1px solid #333;
+       border-right: 0;
+       float: right;
+}
+
+#wpadminbar .quicklinks .ab-top-secondary > li > a,
+#wpadminbar .quicklinks .ab-top-secondary > li > .ab-empty-item {
+       border-left: 1px solid #555;
+       border-right: 0;
+}
+
+#wpadminbar .quicklinks a,
+#wpadminbar .quicklinks .ab-empty-item,
+#wpadminbar .shortlink-input {
+       height: 28px;
+       display: block;
+       padding: 0 12px;
+       margin: 0;
+}
+
+#wpadminbar .menupop .ab-sub-wrapper,
+#wpadminbar .shortlink-input {
+       margin: 0 0 0 -1px;
+       padding: 0;
+       -webkit-box-shadow: 0 4px 4px rgba(0,0,0,0.2);
+       box-shadow: 0 4px 4px rgba(0,0,0,0.2);
+       background: #fff;
+       display: none;
+       position: absolute;
+       float: none;
+       border-width: 0 1px 1px 1px;
+       border-style: solid;
+       border-color: #dfdfdf;
+}
+
+#wpadminbar.ie7 .menupop .ab-sub-wrapper,
+#wpadminbar.ie7 .shortlink-input {
+       top: 28px;
+       left: 0;
+}
+
+#wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper {
+       min-width: 100%;
+}
+
+#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
+       right: 0;
+       left: auto;
+       margin: 0 -1px 0 0;
+}
+
+#wpadminbar .ab-sub-wrapper > .ab-submenu:first-child {
+       border-top: none;
+}
+
+#wpadminbar .ab-submenu {
+       padding: 6px 0;
+       border-top: 1px solid #dfdfdf;
+}
+
+#wpadminbar .selected .shortlink-input {
+       display: block;
+}
+
+#wpadminbar .quicklinks .menupop ul li {
+       float: none;
+}
+
+#wpadminbar .quicklinks .menupop ul li a strong {
+       font-weight: bold;
+}
+
+#wpadminbar .quicklinks .menupop ul li .ab-item,
+#wpadminbar .quicklinks .menupop ul li a strong,
+#wpadminbar .quicklinks .menupop.hover ul li .ab-item,
+#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,
+#wpadminbar .shortlink-input {
+       line-height: 26px;
+       height: 26px;
+       text-shadow: none;
+       white-space: nowrap;
+       min-width: 140px;
+}
+
+#wpadminbar .shortlink-input {
+       width: 200px;
+}
+
+#wpadminbar.nojs li:hover > .ab-sub-wrapper,
+#wpadminbar li.hover > .ab-sub-wrapper {
+       display: block;
+}
+
+#wpadminbar .menupop li:hover > .ab-sub-wrapper,
+#wpadminbar .menupop li.hover > .ab-sub-wrapper {
+       margin-left: 100%;
+       margin-top: -33px;
+       border-width: 1px;
+}
+
+#wpadminbar .ab-top-secondary .menupop li:hover > .ab-sub-wrapper,
+#wpadminbar .ab-top-secondary .menupop li.hover > .ab-sub-wrapper {
+       margin-left: 0;
+       left: inherit;
+       right: 100%;
+}
+
+#wpadminbar .ab-top-menu > li:hover > .ab-item,
+#wpadminbar .ab-top-menu > li.hover > .ab-item,
+#wpadminbar .ab-top-menu > li > .ab-item:focus,
+#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus {
+       color: #fafafa;
+       background: #222;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#3a3a3a), to(#222));
+       background-image: -webkit-linear-gradient(bottom, #3a3a3a, #222);
+       background-image:    -moz-linear-gradient(bottom, #3a3a3a, #222);
+       background-image:      -o-linear-gradient(bottom, #3a3a3a, #222);
+       background-image: linear-gradient(to top, #3a3a3a, #222);
+}
+
+#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item,
+#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item {
+       background: #fff;
+       color: #333;
+       text-shadow: none;
+       border-right-color: transparent;
+       border-left-color: transparent;
+}
+
+#wpadminbar .hover .ab-label,
+#wpadminbar.nojq .ab-item:focus .ab-label {
+       color: #fafafa;
+}
+
+#wpadminbar .menupop.hover .ab-label {
+       color: #333;
+       text-shadow: none;
+}
+
+#wpadminbar .menupop li:hover,
+#wpadminbar .menupop li.hover,
+#wpadminbar .quicklinks .menupop .ab-item:focus,
+#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus {
+       background-color: #eaf2fa;
+}
+
+#wpadminbar .ab-submenu .ab-item {
+       color: #333;
+       text-shadow: none;
+}
+
+#wpadminbar .quicklinks .menupop ul li a,
+#wpadminbar .quicklinks .menupop ul li a strong,
+#wpadminbar .quicklinks .menupop.hover ul li a,
+#wpadminbar.nojs .quicklinks .menupop:hover ul li a {
+       color: #21759B;
+}
+
+#wpadminbar .menupop .menupop > .ab-item {
+       display: block;
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: 95% -20px;
+       background-repeat: no-repeat;
+       padding-right: 2em;
+}
+
+#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item {
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: 5% -46px;
+       background-repeat: no-repeat;
+       padding-left: 2em;
+       padding-right: 1em;
+}
+
+#wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
+       display: block;
+       position: relative;
+       right: auto;
+       margin: 0;
+       background: #eee;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+#wpadminbar .quicklinks .menupop .ab-sub-secondary > li:hover,
+#wpadminbar .quicklinks .menupop .ab-sub-secondary > li.hover,
+#wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus {
+       background-color: #dfdfdf;
+}
+
+#wpadminbar .quicklinks a span#ab-updates {
+       background: #eee;
+       color: #333;
+       text-shadow: none;
+       display: inline;
+       padding: 2px 5px;
+       font-size: 10px;
+       font-weight: bold;
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+}
+
+#wpadminbar .quicklinks a:hover span#ab-updates  {
+       background: #fff;
+       color: #000;
+}
+
+#wpadminbar .ab-top-secondary {
+       float: right;
+       background: #464646;
+       background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #373737), color-stop(18%, #464646));
+       background-image: -webkit-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image:    -moz-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image:      -o-linear-gradient(bottom, #373737 0, #464646 5px);
+       background-image: linear-gradient(to top, #373737 0, #464646 5px);
+}
+
+#wpadminbar ul li:last-child,
+#wpadminbar ul li:last-child .ab-item {
+       border-right: 0;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+/**
+ * My Account
+ */
+#wp-admin-bar-my-account > ul {
+       min-width: 198px;
+}
+
+#wp-admin-bar-my-account.with-avatar > ul {
+       min-width: 270px;
+}
+
+#wpadminbar #wp-admin-bar-user-actions > li {
+       margin-left: 16px;
+       margin-right: 16px;
+}
+
+#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions > li {
+       margin-left: 88px;
+}
+
+#wp-admin-bar-user-actions > li > .ab-item {
+       padding-left: 8px;
+}
+
+#wpadminbar #wp-admin-bar-user-info {
+       margin-top: 6px;
+       margin-bottom: 15px;
+       height: auto;
+       background: none;
+}
+
+#wp-admin-bar-user-info .avatar {
+       position: absolute;
+       left: -72px;
+       top: 4px;
+       width: 64px;
+       height: 64px;
+}
+
+#wpadminbar #wp-admin-bar-user-info a {
+       background: none;
+       height: auto;
+}
+
+#wpadminbar #wp-admin-bar-user-info span {
+       background: none;
+       padding: 0;
+       height: 18px;
+}
+
+#wpadminbar #wp-admin-bar-user-info .display-name,
+#wpadminbar #wp-admin-bar-user-info .username {
+       text-shadow: none;
+       display: block;
+}
+
+#wpadminbar #wp-admin-bar-user-info .display-name {
+       color: #333;
+}
+
+#wpadminbar #wp-admin-bar-user-info .username {
+       color: #999;
+       font-size: 11px;
+}
+
+#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
+       width: 16px;
+       height: 16px;
+       border: 1px solid #999;
+       padding: 0;
+       background: #eee;
+       line-height: 24px;
+       vertical-align: middle;
+       margin: -3px 0 0 6px;
+       float: none;
+       display: inline;
+}
+
+/*
+ * My Sites
+ */
+#wpadminbar .quicklinks li .blavatar {
+       vertical-align: middle;
+       margin: -3px 4px 0 0;
+       padding: 0;
+}
+
+#wpadminbar .quicklinks li div.blavatar {
+       background: url('../images/wpmini-blue.png') no-repeat;
+       height: 16px;
+       width: 16px;
+       display: inline-block;
+}
+
+/**
+ * Search
+ */
+#wpadminbar #wp-admin-bar-search .ab-item {
+       padding: 0;
+}
+
+#wpadminbar #wp-admin-bar-search .ab-item {
+       /* default background */
+       background: transparent;
+}
+
+#wpadminbar #adminbarsearch {
+       height: 28px;
+       padding: 0 2px;
+}
+
+#wpadminbar #adminbarsearch .adminbar-input {
+       font: 13px/24px sans-serif;
+       height: 24px;
+       width: 24px;
+       border: none;
+       padding: 0 3px 0 23px;
+       margin: 0;
+       color: #ccc;
+       text-shadow: #444 0px -1px 0px;
+       background-color: rgba( 255, 255, 255, 0 );
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: 3px 2px;
+       background-repeat: no-repeat;
+       outline: none;
+       cursor: pointer;
+
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+
+       -webkit-box-shadow: none;
+       box-shadow: none;
+
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box;
+       box-sizing: border-box;
+
+       -webkit-transition-duration: 400ms;
+       -webkit-transition-property: width, background;
+       -webkit-transition-timing-function: ease;
+       -moz-transition-duration: 400ms;
+       -moz-transition-property: width, background;
+       -moz-transition-timing-function: ease;
+       -o-transition-duration: 400ms;
+       -o-transition-property: width, background;
+       -o-transition-timing-function: ease;
+}
+
+#wpadminbar.ie7 #adminbarsearch .adminbar-input {
+       margin-top: 1px;
+       width: 120px;
+}
+
+#wpadminbar #adminbarsearch .adminbar-input:focus {
+       color: #555;
+       text-shadow: 0 1px 0 #fff;
+       width: 200px;
+       background-color: rgba( 255, 255, 255, 0.9 );
+       cursor: text;
+}
+
+#wpadminbar.ie8 #adminbarsearch .adminbar-input {
+       background-color: #464646;
+}
+
+#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus {
+       background-color: #fff;
+}
+
+/* Two rules to ensure browser recognition */
+#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
+       color: #ddd;
+}
+
+#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder {
+       color: #ddd;
+}
+
+#wpadminbar #adminbarsearch .adminbar-button {
+       display: none;
+}
+
+/**
+ * Site Menu
+ */
+#wpadminbar #wp-admin-bar-appearance {
+       border-top: none;
+       margin-top: -12px;
+}
+
+/**
+ * Site Menu
+ */
+#wpadminbar #wp-admin-bar-appearance {
+       border-top: none;
+       margin-top: -12px;
+}
+
+/**
+ * ICONS
+ */
+#wpadminbar .ab-icon {
+       position: relative;
+       float: left;
+       width: 16px;
+       height: 16px;
+       margin-top: 6px;
+}
+
+#wpadminbar .ab-label {
+       margin-left: 4px;
+}
+
+/**
+ * WP Logo icon
+ */
+#wp-admin-bar-wp-logo > .ab-item .ab-icon {
+       width: 20px;
+       height: 20px;
+       margin-top: 4px;
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: 0 -76px;
+       background-repeat: no-repeat;
+}
+
+#wpadminbar.nojs #wp-admin-bar-wp-logo:hover > .ab-item .ab-icon,
+#wpadminbar #wp-admin-bar-wp-logo.hover > .ab-item .ab-icon {
+       background-position: 0 -104px;
+}
+
+/**
+ * Updates icon
+ */
+#wp-admin-bar-updates > .ab-item .ab-icon {
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: -2px -159px;
+       background-repeat: no-repeat;
+}
+
+/**
+ * Comments icon
+ */
+#wp-admin-bar-comments > .ab-item .ab-icon {
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: -1px -134px;
+       background-repeat: no-repeat;
+}
+
+#wpadminbar span.count-0 {
+       display: none;
+}
+
+/**
+ * Add New icon
+ */
+#wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
+       background-image: url(../images/admin-bar-sprite.png?d=20120830);
+       background-position: -2px -182px;
+       background-repeat: no-repeat;
+}
+
+/**
+ * Add New icon
+ */
+#wpadminbar.nojs #wp-admin-bar-new-content:hover > .ab-item .ab-icon,
+#wpadminbar #wp-admin-bar-new-content.hover > .ab-item .ab-icon {
+       background-position: -2px -203px;
+}
+
+/**
+ * Customize support classes
+ */
+.no-customize-support .hide-if-no-customize,
+.customize-support .hide-if-customize,
+.no-customize-support.wp-core-ui .hide-if-no-customize,
+.no-customize-support .wp-core-ui .hide-if-no-customize,
+.customize-support.wp-core-ui .hide-if-customize,
+.customize-support .wp-core-ui .hide-if-customize {
+       display: none;
+}
+
+/**
+ * Retina display 2x icons
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       #wpadminbar .menupop .menupop > .ab-item,
+       #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item,
+       #wpadminbar #adminbarsearch .adminbar-input,
+       #wp-admin-bar-wp-logo > .ab-item .ab-icon,
+       #wp-admin-bar-updates > .ab-item .ab-icon,
+       #wp-admin-bar-comments > .ab-item .ab-icon,
+       #wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
+               background-image: url(../images/admin-bar-sprite-2x.png?d=20120830);
+               background-size: 20px 220px;
+       }
+
+       #wpadminbar .quicklinks li div.blavatar {
+               background: url('../images/wpmini-blue-2x.png') no-repeat;
+               background-size: 16px 16px;
+       }
+}
+
+/* Skip link */
+#wpadminbar .screen-reader-text,
+#wpadminbar .screen-reader-text span {
+       position: absolute;
+       left: -1000em;
+       top: -1000em;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+}
+
+#wpadminbar .screen-reader-shortcut {
+       position: absolute;
+       top: -1000em;
+}
+
+#wpadminbar .screen-reader-shortcut:focus {
+       left: 6px;
+       top: 7px;
+       height: auto;
+       width: auto;
+       display: block;
+       font-size: 14px;
+       font-weight: bold;
+       padding: 15px 23px 14px;
+       background: #f1f1f1;
+       color: #21759b;
+       text-shadow: none;
+       border-radius: 3px;
+       z-index: 100000;
+       line-height: normal;
+       -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
+       box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
+       text-decoration: none;
+}
+
+/**
+ * IE 6-targeted rules
+ */
+* html #wpadminbar {
+       overflow: hidden;
+       position: absolute;
+}
+
+* html #wpadminbar .quicklinks ul li a {
+       float: left;
+}
+
+* html #wpadminbar .menupop a span {
+       background-image: none;
+}
diff --git a/wp-includes/css/admin-bar.dev.css b/wp-includes/css/admin-bar.dev.css
deleted file mode 100644 (file)
index d4e2309..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-#wpadminbar * {
-       height: auto;
-       width: auto;
-       margin: 0;
-       padding: 0;
-       position: static;
-       text-transform: none;
-       letter-spacing: normal;
-       line-height: 1;
-       font: normal 13px/28px sans-serif;
-       color: #ccc;
-       text-shadow: #444 0px -1px 0px;
-}
-
-#wpadminbar ul li:before,
-#wpadminbar ul li:after {
-       content: normal;
-}
-
-#wpadminbar a,
-#wpadminbar a:hover,
-#wpadminbar a img,
-#wpadminbar a img:hover {
-       outline: none;
-       border: none;
-       text-decoration: none;
-       background: none;
-}
-
-#wpadminbar {
-       direction: ltr;
-       color: #ccc;
-       font: normal 13px/28px sans-serif;
-       height: 28px;
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       min-width: 600px; /* match the min-width of the body in wp-admin.css */
-       z-index: 99999;
-
-       background-color: #464646; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #373737, #464646 5px); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #373737, #464646 5px); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #373737, #464646 5px); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#373737), to(#464646)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #373737, #464646 5px); /* new Webkit */
-       background-image: linear-gradient(bottom, #373737, #464646 5px); /* proposed W3C Markup */
-}
-
-#wpadminbar .ab-sub-wrapper,
-#wpadminbar ul,
-#wpadminbar ul li {
-       background: none;
-       clear: none;
-       list-style: none;
-       margin: 0;
-       padding: 0;
-       position: relative;
-       z-index: 99999;
-}
-
-#wpadminbar .quicklinks {
-       border-left: 1px solid transparent;
-}
-
-#wpadminbar .quicklinks ul {
-       text-align: left;
-}
-
-#wpadminbar li {
-       float: left;
-}
-
-#wpadminbar .ab-empty-item {
-       outline: none;
-}
-
-#wpadminbar .quicklinks > ul > li {
-       border-right: 1px solid #555;
-}
-
-#wpadminbar .quicklinks > ul > li > a,
-#wpadminbar .quicklinks > ul > li > .ab-empty-item {
-       border-right: 1px solid #333;
-}
-
-#wpadminbar .quicklinks .ab-top-secondary > li {
-       border-left: 1px solid #333;
-       border-right: 0;
-       float: right;
-}
-
-#wpadminbar .quicklinks .ab-top-secondary > li > a,
-#wpadminbar .quicklinks .ab-top-secondary > li > .ab-empty-item {
-       border-left: 1px solid #555;
-       border-right: 0;
-}
-
-#wpadminbar .quicklinks a,
-#wpadminbar .quicklinks .ab-empty-item,
-#wpadminbar .shortlink-input {
-       height: 28px;
-       display: block;
-       padding: 0 12px;
-       margin: 0;
-}
-
-#wpadminbar .menupop .ab-sub-wrapper,
-#wpadminbar .shortlink-input {
-       margin: 0 0 0 -1px;
-       padding: 0;
-       -moz-box-shadow: 0 4px 4px rgba(0,0,0,0.2);
-       -webkit-box-shadow: 0 4px 4px rgba(0,0,0,0.2);
-       box-shadow: 0 4px 4px rgba(0,0,0,0.2);
-       background: #fff;
-       display: none;
-       position: absolute;
-       float: none;
-       border-width: 0 1px 1px 1px;
-       border-style: solid;
-       border-color: #dfdfdf;
-}
-
-#wpadminbar.ie7 .menupop .ab-sub-wrapper,
-#wpadminbar.ie7 .shortlink-input {
-       top: 28px;
-       left: 0;
-}
-
-#wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper {
-       min-width: 100%;
-}
-
-#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
-       right: 0;
-       left: auto;
-       margin: 0 -1px 0 0;
-}
-
-#wpadminbar .ab-sub-wrapper > .ab-submenu:first-child {
-       border-top: none;
-}
-
-#wpadminbar .ab-submenu {
-       padding: 6px 0;
-       border-top: 1px solid #dfdfdf;
-}
-
-#wpadminbar .selected .shortlink-input {
-       display: block;
-}
-
-#wpadminbar .quicklinks .menupop ul li {
-       float: none;
-}
-
-#wpadminbar .quicklinks .menupop ul li a strong {
-       font-weight: bold;
-}
-
-#wpadminbar .quicklinks .menupop ul li .ab-item,
-#wpadminbar .quicklinks .menupop ul li a strong,
-#wpadminbar .quicklinks .menupop.hover ul li .ab-item,
-#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,
-#wpadminbar .shortlink-input {
-       line-height: 26px;
-       height: 26px;
-       text-shadow: none;
-       white-space: nowrap;
-       min-width: 140px;
-}
-
-#wpadminbar .shortlink-input {
-       width: 200px;
-}
-
-#wpadminbar.nojs li:hover > .ab-sub-wrapper,
-#wpadminbar li.hover > .ab-sub-wrapper {
-       display: block;
-}
-
-#wpadminbar .menupop li:hover > .ab-sub-wrapper,
-#wpadminbar .menupop li.hover > .ab-sub-wrapper {
-       margin-left: 100%;
-       margin-top: -33px;
-       border-width: 1px;
-}
-
-#wpadminbar .ab-top-secondary .menupop li:hover > .ab-sub-wrapper,
-#wpadminbar .ab-top-secondary .menupop li.hover > .ab-sub-wrapper {
-       margin-left: 0;
-       left: inherit;
-       right: 100%;
-}
-
-#wpadminbar .ab-top-menu > li:hover > .ab-item,
-#wpadminbar .ab-top-menu > li.hover > .ab-item,
-#wpadminbar .ab-top-menu > li > .ab-item:focus,
-#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus {
-       color: #fafafa;
-       background-color: #3a3a3a; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #3a3a3a, #222); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #3a3a3a, #222); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #3a3a3a, #222); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#3a3a3a), to(#222)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #3a3a3a, #222); /* new Webkit */
-       background-image: linear-gradient(bottom, #3a3a3a, #222); /* proposed W3C Markup */
-}
-
-#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item,
-#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item {
-       background: #fff;
-       color: #333;
-       text-shadow: none;
-       border-right-color: transparent;
-       border-left-color: transparent;
-}
-
-#wpadminbar .hover .ab-label,
-#wpadminbar.nojq .ab-item:focus .ab-label {
-       color: #fafafa;
-}
-
-#wpadminbar .menupop.hover .ab-label {
-       color: #333;
-       text-shadow: none;
-}
-
-#wpadminbar .menupop li:hover,
-#wpadminbar .menupop li.hover,
-#wpadminbar .quicklinks .menupop .ab-item:focus,
-#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus {
-       background-color: #eaf2fa;
-}
-
-#wpadminbar .ab-submenu .ab-item {
-       color: #333;
-       text-shadow: none;
-}
-
-#wpadminbar .quicklinks .menupop ul li a,
-#wpadminbar .quicklinks .menupop ul li a strong,
-#wpadminbar .quicklinks .menupop.hover ul li a,
-#wpadminbar.nojs .quicklinks .menupop:hover ul li a {
-       color: #21759B;
-}
-
-#wpadminbar .menupop .menupop > .ab-item {
-       display: block;
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: 95% -20px;
-       background-repeat: no-repeat;
-       padding-right: 2em;
-}
-
-#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item {
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: 5% -46px;
-       background-repeat: no-repeat;
-       padding-left: 2em;
-       padding-right: 1em;
-}
-
-#wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
-       display: block;
-       position: relative;
-       right: auto;
-       margin: 0;
-
-       background: #eee;
-
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-}
-
-#wpadminbar .quicklinks .menupop .ab-sub-secondary > li:hover,
-#wpadminbar .quicklinks .menupop .ab-sub-secondary > li.hover,
-#wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus {
-       background-color: #dfdfdf;
-}
-
-#wpadminbar .quicklinks a span#ab-updates {
-       background: #eee;
-       color: #333;
-       text-shadow: none;
-       display: inline;
-       padding: 2px 5px;
-       font-size: 10px;
-       font-weight: bold;
-       -webkit-border-radius: 10px;
-       border-radius: 10px;
-}
-
-#wpadminbar .quicklinks a:hover span#ab-updates  {
-       background: #fff;
-       color: #000;
-}
-
-#wpadminbar .ab-top-secondary {
-       float: right;
-       background-color: #464646; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #373737, #464646 5px); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #373737, #464646 5px); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #373737, #464646 5px); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#373737), to(#464646)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #373737, #464646 5px); /* new Webkit */
-       background-image: linear-gradient(bottom, #373737, #464646 5px); /* proposed W3C Markup */
-}
-
-#wpadminbar ul li:last-child,
-#wpadminbar ul li:last-child .ab-item {
-       border-right: 0;
-       -webkit-box-shadow: none;
-       -moz-box-shadow: none;
-       box-shadow: none;
-}
-
-/**
- * My Account
- */
-#wp-admin-bar-my-account > ul {
-       min-width: 198px;
-}
-
-#wp-admin-bar-my-account.with-avatar > ul {
-       min-width: 270px;
-}
-
-#wpadminbar #wp-admin-bar-user-actions > li {
-       margin-left: 16px;
-       margin-right: 16px;
-}
-
-#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions > li {
-       margin-left: 88px;
-}
-
-#wp-admin-bar-user-actions > li > .ab-item {
-       padding-left: 8px;
-}
-
-#wpadminbar #wp-admin-bar-user-info {
-       margin-top: 6px;
-       margin-bottom: 15px;
-       height: auto;
-       background: none;
-}
-
-#wp-admin-bar-user-info .avatar {
-       position: absolute;
-       left: -72px;
-       top: 4px;
-       width: 64px;
-       height: 64px;
-}
-
-#wpadminbar #wp-admin-bar-user-info a {
-       background: none;
-       height: auto;
-}
-
-#wpadminbar #wp-admin-bar-user-info span {
-       background: none;
-       padding: 0;
-       height: 18px;
-}
-
-#wpadminbar #wp-admin-bar-user-info .display-name,
-#wpadminbar #wp-admin-bar-user-info .username {
-       text-shadow: none;
-       display: block;
-}
-
-#wpadminbar #wp-admin-bar-user-info .display-name {
-       color: #333;
-}
-
-#wpadminbar #wp-admin-bar-user-info .username {
-       color: #999;
-       font-size: 11px;
-}
-
-#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
-       width: 16px;
-       height: 16px;
-       border: 1px solid #999;
-       padding: 0;
-       background: #eee;
-       line-height: 24px;
-       vertical-align: middle;
-       margin: -3px 0 0 6px;
-       float: none;
-       display: inline;
-}
-
-/*
- * My Sites
- */
-#wpadminbar .quicklinks li img.blavatar {
-       vertical-align: middle;
-       margin: -3px 4px 0 0;
-       padding: 0;
-}
-
-/**
- * Search
- */
-#wpadminbar #wp-admin-bar-search .ab-item {
-       padding: 0;
-}
-
-#wpadminbar #wp-admin-bar-search .ab-item {
-       /* default background */
-       background: transparent;
-}
-
-#wpadminbar #adminbarsearch {
-       height: 28px;
-       padding: 0 2px;
-}
-
-#wpadminbar #adminbarsearch .adminbar-input {
-       font: 13px/24px sans-serif;
-       height: 24px;
-       width: 24px;
-       border: none;
-       padding: 0 3px 0 23px;
-       margin: 0;
-       color: #ccc;
-       text-shadow: #444 0px -1px 0px;
-       background-color: rgba( 255, 255, 255, 0 );
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: 3px 2px;
-       background-repeat: no-repeat;
-       outline: none;
-       cursor: pointer;
-
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-
-       -moz-box-shadow: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       -ms-box-sizing: border-box;
-       box-sizing: border-box;
-
-       -webkit-transition-duration: 400ms;
-       -webkit-transition-property: width, background;
-       -webkit-transition-timing-function: ease;
-       -moz-transition-duration: 400ms;
-       -moz-transition-property: width, background;
-       -moz-transition-timing-function: ease;
-       -o-transition-duration: 400ms;
-       -o-transition-property: width, background;
-       -o-transition-timing-function: ease;
-}
-
-#wpadminbar.ie7 #adminbarsearch .adminbar-input {
-       margin-top: 1px;
-       width: 120px;
-}
-
-#wpadminbar #adminbarsearch .adminbar-input:focus {
-       color: #555;
-       text-shadow: 0 1px 0 #fff;
-       width: 200px;
-       background-color: rgba( 255, 255, 255, 0.9 );
-       cursor: text;
-}
-
-#wpadminbar.ie8 #adminbarsearch .adminbar-input {
-       background-color: #464646;
-}
-
-#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus {
-       background-color: #fff;
-}
-
-/* Two rules to ensure browser recognition */
-#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
-       color: #ddd;
-}
-
-#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder {
-       color: #ddd;
-}
-
-#wpadminbar #adminbarsearch .adminbar-button {
-       display: none;
-}
-
-/**
- * Site Menu
- */
-#wpadminbar #wp-admin-bar-appearance {
-       border-top: none;
-       margin-top: -12px;
-}
-
-/**
- * Site Menu
- */
-#wpadminbar #wp-admin-bar-appearance {
-       border-top: none;
-       margin-top: -12px;
-}
-
-/**
- * ICONS
- */
-#wpadminbar .ab-icon {
-       position: relative;
-       float: left;
-       width: 16px;
-       height: 16px;
-       margin-top: 6px;
-}
-
-#wpadminbar .ab-label {
-       margin-left: 4px;
-}
-
-/**
- * WP Logo icon
- */
-#wp-admin-bar-wp-logo > .ab-item .ab-icon {
-       width: 20px;
-       height: 20px;
-       margin-top: 4px;
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: 0 -76px;
-       background-repeat: no-repeat;
-}
-
-#wpadminbar.nojs #wp-admin-bar-wp-logo:hover > .ab-item .ab-icon,
-#wpadminbar #wp-admin-bar-wp-logo.hover > .ab-item .ab-icon {
-       background-position: 0 -104px;
-}
-
-/**
- * Updates icon
- */
-#wp-admin-bar-updates > .ab-item .ab-icon {
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: -2px -159px;
-       background-repeat: no-repeat;
-}
-
-/**
- * Comments icon
- */
-#wp-admin-bar-comments > .ab-item .ab-icon {
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: -1px -134px;
-       background-repeat: no-repeat;
-}
-
-#wpadminbar span.count-0 {
-       display: none;
-}
-
-/**
- * Add New icon
- */
-#wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
-       background-image: url(../images/admin-bar-sprite.png?d=20111130);
-       background-position: -2px -182px;
-       background-repeat: no-repeat;
-}
-
-/**
- * Add New icon
- */
-#wpadminbar.nojs #wp-admin-bar-new-content:hover > .ab-item .ab-icon,
-#wpadminbar #wp-admin-bar-new-content.hover > .ab-item .ab-icon {
-       background-position: -2px -203px;
-}
-
-/**
- * Customize support classes
- */
-.no-customize-support .hide-if-no-customize,
-.customize-support .hide-if-customize {
-       display: none;
-}
-
-/**
- * Retina display 2x icons
- */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
-       #wpadminbar .menupop .menupop > .ab-item,
-       #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item,
-       #wpadminbar #adminbarsearch .adminbar-input,
-       #wp-admin-bar-wp-logo > .ab-item .ab-icon,
-       #wp-admin-bar-updates > .ab-item .ab-icon,
-       #wp-admin-bar-comments > .ab-item .ab-icon,
-       #wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
-               background-image: url(../images/admin-bar-sprite-2x.png?d=20120516);
-               background-size: 20px 220px;
-       }
-}
-
-/**
- * IE 6-targeted rules
- */
-* html #wpadminbar {
-       overflow: hidden;
-       position: absolute;
-}
-
-* html #wpadminbar .quicklinks ul li a {
-       float: left;
-}
-
-* html #wpadminbar .menupop a span {
-       background-image: none;
-}
diff --git a/wp-includes/css/admin-bar.min.css b/wp-includes/css/admin-bar.min.css
new file mode 100644 (file)
index 0000000..0a9b1dc
--- /dev/null
@@ -0,0 +1 @@
+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:0;border:0;text-decoration:none;background:0}#wpadminbar a:focus,#wpadminbar a:active,#wpadminbar input[type="text"],#wpadminbar input[type="password"],#wpadminbar input[type="number"],#wpadminbar input[type="search"],#wpadminbar input[type="email"],#wpadminbar input[type="url"],#wpadminbar select,#wpadminbar textarea,#wpadminbar div{outline:0}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar .quicklinks{border-left:1px solid transparent}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;left:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto;margin:0 -1px 0 0}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:0}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%}#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus{color:#fafafa;background:#222;background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(to top,#3a3a3a,#222)}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;border-right-color:transparent;border-left-color:transparent}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none}#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#21759b}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline}#wpadminbar .quicklinks li .blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue.png') no-repeat;height:16px;width:16px;display:inline-block}#wpadminbar #wp-admin-bar-search .ab-item{padding:0}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent}#wpadminbar #adminbarsearch{height:28px;padding:0 2px}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:0;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:3px 2px;background-repeat:no-repeat;outline:0;cursor:pointer;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);cursor:text}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-button{display:none}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px}#wpadminbar .ab-label{margin-left:4px}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:0 -76px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -159px;background-repeat:no-repeat}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-1px -134px;background-repeat:no-repeat}#wpadminbar span.count-0{display:none}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -182px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize{display:none}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wpadminbar .menupop .menupop>.ab-item,#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item,#wpadminbar #adminbarsearch .adminbar-input,#wp-admin-bar-wp-logo>.ab-item .ab-icon,#wp-admin-bar-updates>.ab-item .ab-icon,#wp-admin-bar-comments>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite-2x.png?d=20120830);background-size:20px 220px}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue-2x.png') no-repeat;background-size:16px 16px}}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{position:absolute;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{left:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;text-shadow:none;border-radius:3px;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}
\ No newline at end of file
diff --git a/wp-includes/css/buttons.css b/wp-includes/css/buttons.css
new file mode 100644 (file)
index 0000000..5ae473c
--- /dev/null
@@ -0,0 +1,288 @@
+/* ----------------------------------------------------------------------------
+
+
+WordPress-style Buttons
+=======================
+Create a button by adding the `.button` class to an element. For backwards
+compatibility, we support several other classes (such as `.button-secondary`),
+but these will *not* work with the stackable classes described below.
+
+Button Styles
+-------------
+To display a primary button style, add the `.button-primary` class to a button.
+
+Button Sizes
+------------
+Adjust a button's size by adding the `.button-large` or `.button-small` class.
+
+Button States
+-------------
+Lock the state of a button by adding the name of the pseudoclass as
+an actual class (e.g. `.hover` for `:hover`).
+
+
+TABLE OF CONTENTS:
+------------------
+ 1.0 - Button Layouts
+ 2.0 - Default Button Style
+ 3.0 - Primary Button Style
+ 4.0 - Button Groups
+
+---------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------------
+  1.0 - Button Layouts
+---------------------------------------------------------------------------- */
+
+.wp-core-ui .button,
+.wp-core-ui .button-primary,
+.wp-core-ui .button-secondary {
+       display: inline-block;
+       text-decoration: none;
+       font-size: 12px;
+       line-height: 23px;
+       height: 24px;
+       margin: 0;
+       padding: 0 10px 1px;
+       cursor: pointer;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-radius: 3px;
+       -webkit-appearance: none;
+       border-radius: 3px;
+       white-space: nowrap;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing:    border-box;
+       box-sizing:         border-box;
+}
+
+/* Remove the dotted border on :focus and the extra padding in Firefox */
+.wp-core-ui button::-moz-focus-inner,
+.wp-core-ui input[type="reset"]::-moz-focus-inner,
+.wp-core-ui input[type="button"]::-moz-focus-inner,
+.wp-core-ui input[type="submit"]::-moz-focus-inner {
+       border-width: 1px 0;
+       border-style: solid none;
+       border-color: transparent;
+       padding: 0;
+}
+
+.wp-core-ui .button.button-large,
+.wp-core-ui .button-group.button-large .button {
+       height: 30px;
+    line-height: 28px;
+    padding: 0 12px 2px;
+}
+
+.wp-core-ui .button.button-small,
+.wp-core-ui .button-group.button-small .button {
+       height: 21px;
+       line-height: 20px;
+       padding: 0 8px 1px;
+}
+
+.wp-core-ui .button.button-hero,
+.wp-core-ui .button-group.button-hero .button {
+       font-size: 14px;
+       height: 46px;
+       line-height: 44px;
+       padding: 0 36px;
+}
+
+.wp-core-ui .button:active {
+       outline: none;
+}
+
+.wp-core-ui .button.hidden {
+       display: none;
+}
+
+/* ----------------------------------------------------------------------------
+  2.0 - Default Button Style
+---------------------------------------------------------------------------- */
+
+.wp-core-ui .button,
+.wp-core-ui .button-secondary {
+       background: #f3f3f3;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#f4f4f4));
+       background-image: -webkit-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:    -moz-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:      -o-linear-gradient(top, #fefefe, #f4f4f4);
+       background-image:   linear-gradient(to bottom, #fefefe, #f4f4f4);
+       border-color: #bbb;
+       color: #333;
+       text-shadow: 0 1px 0 #fff;
+}
+
+.wp-core-ui .button.hover,
+.wp-core-ui .button:hover,
+.wp-core-ui .button-secondary:hover,
+.wp-core-ui .button.focus,
+.wp-core-ui .button:focus,
+.wp-core-ui .button-secondary:focus {
+       background: #f3f3f3;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));
+       background-image: -webkit-linear-gradient(top, #fff, #f3f3f3);
+       background-image:    -moz-linear-gradient(top, #fff, #f3f3f3);
+       background-image:     -ms-linear-gradient(top, #fff, #f3f3f3);
+       background-image:      -o-linear-gradient(top, #fff, #f3f3f3);
+       background-image:   linear-gradient(to bottom, #fff, #f3f3f3);
+       border-color: #999;
+       color: #222;
+}
+
+.wp-core-ui .button.focus,
+.wp-core-ui .button:focus,
+.wp-core-ui .button-secondary:focus {
+       -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
+       box-shadow: 1px 1px 1px rgba(0,0,0,.2);
+}
+
+.wp-core-ui .button.active,
+.wp-core-ui .button.active:hover,
+.wp-core-ui .button.active:focus,
+.wp-core-ui .button:active,
+.wp-core-ui .button-secondary:active {
+       background: #eee;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#fefefe));
+       background-image: -webkit-linear-gradient(top, #f4f4f4, #fefefe);
+       background-image:    -moz-linear-gradient(top, #f4f4f4, #fefefe);
+       background-image:     -ms-linear-gradient(top, #f4f4f4, #fefefe);
+       background-image:      -o-linear-gradient(top, #f4f4f4, #fefefe);
+       background-image:   linear-gradient(to bottom, #f4f4f4, #fefefe);
+       border-color: #999;
+       color: #333;
+       text-shadow: 0 -1px 0 #fff;
+       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+}
+
+.wp-core-ui .button[disabled],
+.wp-core-ui .button:disabled,
+.wp-core-ui .button-secondary[disabled],
+.wp-core-ui .button-secondary:disabled,
+.wp-core-ui .button-disabled {
+       color: #aaa !important;
+       border-color: #ddd !important;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f4f4f4)) !important;
+       background-image: -webkit-linear-gradient(top, #f9f9f9, #f4f4f4) !important;
+       background-image:    -moz-linear-gradient(top, #f9f9f9, #f4f4f4) !important;
+       background-image:     -ms-linear-gradient(top, #f9f9f9, #f4f4f4) !important;
+       background-image:      -o-linear-gradient(top, #f9f9f9, #f4f4f4) !important;
+       background-image:   linear-gradient(to bottom, #f9f9f9, #f4f4f4) !important;
+       -webkit-box-shadow: none !important;
+       box-shadow:         none !important;
+       text-shadow: 0 1px 0 #fff !important;
+       cursor: default;
+}
+
+/* ----------------------------------------------------------------------------
+  3.0 - Primary Button Style
+---------------------------------------------------------------------------- */
+
+.wp-core-ui .button-primary {
+       background-color: #21759b;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#2a95c5), to(#21759b));
+       background-image: -webkit-linear-gradient(top, #2a95c5, #21759b);
+       background-image:    -moz-linear-gradient(top, #2a95c5, #21759b);
+       background-image:     -ms-linear-gradient(top, #2a95c5, #21759b);
+       background-image:      -o-linear-gradient(top, #2a95c5, #21759b);
+       background-image:   linear-gradient(to bottom, #2a95c5, #21759b);
+       border-color: #21759b;
+       border-bottom-color: #1e6a8d;
+       -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
+       box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
+       color: #fff;
+       text-decoration: none;
+       text-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+.wp-core-ui .button-primary.hover,
+.wp-core-ui .button-primary:hover,
+.wp-core-ui .button-primary.focus,
+.wp-core-ui .button-primary:focus {
+       background-color: #278ab7;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#2e9fd2), to(#21759b));
+       background-image: -webkit-linear-gradient(top, #2e9fd2, #21759b);
+       background-image:    -moz-linear-gradient(top, #2e9fd2, #21759b);
+       background-image:     -ms-linear-gradient(top, #2e9fd2, #21759b);
+       background-image:      -o-linear-gradient(top, #2e9fd2, #21759b);
+       background-image:   linear-gradient(to bottom, #2e9fd2, #21759b);
+       border-color: #1b607f;
+       -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
+       box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
+       color: #fff;
+       text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.wp-core-ui .button-primary.focus,
+.wp-core-ui .button-primary:focus {
+       border-color: #0e3950;
+       -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
+       box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
+}
+
+.wp-core-ui .button-primary.active,
+.wp-core-ui .button-primary.active:hover,
+.wp-core-ui .button-primary.active:focus,
+.wp-core-ui .button-primary:active {
+       background: #1b607f;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#21759b), to(#278ab7));
+       background-image: -webkit-linear-gradient(top, #21759b, #278ab7);
+       background-image:    -moz-linear-gradient(top, #21759b, #278ab7);
+       background-image:     -ms-linear-gradient(top, #21759b, #278ab7);
+       background-image:      -o-linear-gradient(top, #21759b, #278ab7);
+       background-image:   linear-gradient(to bottom, #21759b, #278ab7);
+       border-color: #124560 #2382ae #2382ae #2382ae;
+       color: rgba(255,255,255,0.95);
+       -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
+       box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
+       text-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+.wp-core-ui .button-primary[disabled],
+.wp-core-ui .button-primary:disabled,
+.wp-core-ui .button-primary-disabled {
+       color: #94cde7 !important;
+       background: #298cba !important;
+       border-color: #1b607f !important;
+       -webkit-box-shadow: none !important;
+       box-shadow:         none !important;
+       text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
+       cursor: default;
+}
+
+/* ----------------------------------------------------------------------------
+  4.0 - Button Groups
+---------------------------------------------------------------------------- */
+
+.wp-core-ui .button-group {
+       position: relative;
+       display: inline-block;
+       white-space: nowrap;
+       font-size: 0;
+       vertical-align: middle;
+}
+
+.wp-core-ui .button-group > .button {
+       display: inline-block;
+       border-radius: 0;
+       margin-right: -1px;
+       z-index: 10;
+}
+
+.wp-core-ui .button-group > .button-primary {
+       z-index: 100;
+}
+
+.wp-core-ui .button-group > .button:hover {
+       z-index: 20;
+}
+
+.wp-core-ui .button-group > .button:first-child {
+       border-radius: 3px 0 0 3px;
+}
+
+.wp-core-ui .button-group > .button:last-child {
+       border-radius: 0 3px 3px 0;
+}
diff --git a/wp-includes/css/buttons.min.css b/wp-includes/css/buttons.min.css
new file mode 100644 (file)
index 0000000..31470d8
--- /dev/null
@@ -0,0 +1 @@
+.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:12px;line-height:23px;height:24px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:3px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type="reset"]::-moz-focus-inner,.wp-core-ui input[type="button"]::-moz-focus-inner,.wp-core-ui input[type="submit"]::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.wp-core-ui .button.button-large,.wp-core-ui .button-group.button-large .button{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button.button-small,.wp-core-ui .button-group.button-small .button{height:21px;line-height:20px;padding:0 8px 1px}.wp-core-ui .button.button-hero,.wp-core-ui .button-group.button-hero .button{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active{outline:0}.wp-core-ui .button.hidden{display:none}.wp-core-ui .button,.wp-core-ui .button-secondary{background:#f3f3f3;background-image:-webkit-gradient(linear,left top,left bottom,from(#fefefe),to(#f4f4f4));background-image:-webkit-linear-gradient(top,#fefefe,#f4f4f4);background-image:-moz-linear-gradient(top,#fefefe,#f4f4f4);background-image:-o-linear-gradient(top,#fefefe,#f4f4f4);background-image:linear-gradient(to bottom,#fefefe,#f4f4f4);border-color:#bbb;color:#333;text-shadow:0 1px 0 #fff}.wp-core-ui .button.hover,.wp-core-ui .button:hover,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button:focus,.wp-core-ui .button-secondary:focus{background:#f3f3f3;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3));background-image:-webkit-linear-gradient(top,#fff,#f3f3f3);background-image:-moz-linear-gradient(top,#fff,#f3f3f3);background-image:-ms-linear-gradient(top,#fff,#f3f3f3);background-image:-o-linear-gradient(top,#fff,#f3f3f3);background-image:linear-gradient(to bottom,#fff,#f3f3f3);border-color:#999;color:#222}.wp-core-ui .button.focus,.wp-core-ui .button:focus,.wp-core-ui .button-secondary:focus{-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2)}.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button.active:focus,.wp-core-ui .button:active,.wp-core-ui .button-secondary:active{background:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#f4f4f4),to(#fefefe));background-image:-webkit-linear-gradient(top,#f4f4f4,#fefefe);background-image:-moz-linear-gradient(top,#f4f4f4,#fefefe);background-image:-ms-linear-gradient(top,#f4f4f4,#fefefe);background-image:-o-linear-gradient(top,#f4f4f4,#fefefe);background-image:linear-gradient(to bottom,#f4f4f4,#fefefe);border-color:#999;color:#333;text-shadow:0 -1px 0 #fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}.wp-core-ui .button[disabled],.wp-core-ui .button:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-disabled{color:#aaa!important;border-color:#ddd!important;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f4f4f4))!important;background-image:-webkit-linear-gradient(top,#f9f9f9,#f4f4f4)!important;background-image:-moz-linear-gradient(top,#f9f9f9,#f4f4f4)!important;background-image:-ms-linear-gradient(top,#f9f9f9,#f4f4f4)!important;background-image:-o-linear-gradient(top,#f9f9f9,#f4f4f4)!important;background-image:linear-gradient(to bottom,#f9f9f9,#f4f4f4)!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}.wp-core-ui .button-primary{background-color:#21759b;background-image:-webkit-gradient(linear,left top,left bottom,from(#2a95c5),to(#21759b));background-image:-webkit-linear-gradient(top,#2a95c5,#21759b);background-image:-moz-linear-gradient(top,#2a95c5,#21759b);background-image:-ms-linear-gradient(top,#2a95c5,#21759b);background-image:-o-linear-gradient(top,#2a95c5,#21759b);background-image:linear-gradient(to bottom,#2a95c5,#21759b);border-color:#21759b;border-bottom-color:#1e6a8d;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,0.5);box-shadow:inset 0 1px 0 rgba(120,200,230,0.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,0.1)}.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:hover,.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{background-color:#278ab7;background-image:-webkit-gradient(linear,left top,left bottom,from(#2e9fd2),to(#21759b));background-image:-webkit-linear-gradient(top,#2e9fd2,#21759b);background-image:-moz-linear-gradient(top,#2e9fd2,#21759b);background-image:-ms-linear-gradient(top,#2e9fd2,#21759b);background-image:-o-linear-gradient(top,#2e9fd2,#21759b);background-image:linear-gradient(to bottom,#2e9fd2,#21759b);border-color:#1b607f;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,0.6);box-shadow:inset 0 1px 0 rgba(120,200,230,0.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3)}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,0.6),1px 1px 2px rgba(0,0,0,0.4);box-shadow:inset 0 1px 0 rgba(120,200,230,0.6),1px 1px 2px rgba(0,0,0,0.4)}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary:active{background:#1b607f;background-image:-webkit-gradient(linear,left top,left bottom,from(#21759b),to(#278ab7));background-image:-webkit-linear-gradient(top,#21759b,#278ab7);background-image:-moz-linear-gradient(top,#21759b,#278ab7);background-image:-ms-linear-gradient(top,#21759b,#278ab7);background-image:-o-linear-gradient(top,#21759b,#278ab7);background-image:linear-gradient(to bottom,#21759b,#278ab7);border-color:#124560 #2382ae #2382ae #2382ae;color:rgba(255,255,255,0.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,0.1);box-shadow:inset 0 1px 0 rgba(0,0,0,0.1);text-shadow:0 1px 0 rgba(0,0,0,0.1)}.wp-core-ui .button-primary[disabled],.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary-disabled{color:#94cde7!important;background:#298cba!important;border-color:#1b607f!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,0.1)!important;cursor:default}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;border-radius:0;margin-right:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{border-radius:0 3px 3px 0}
\ No newline at end of file
index c3eb59b3fca643a572a03ed9ab935b22dd7058e4..a5d15d81e9ff3d17851a0b5bb34accc3ae0e6afb 100644 (file)
@@ -1 +1,2114 @@
-.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default}.wp_themeSkin table td{vertical-align:middle}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000}.wp_themeSkin iframe{display:block}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff}.wp_themeSkin .mceToolbar{padding:1px}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0}.wp_themeSkin table.mceLayout{border:0}.wp_themeSkin .mceStatusbar{display:block;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0}.wp_themeSkin .mceStatusbar *{color:#555}.wp_themeSkin .mceStatusbar div{float:left;padding:2px}.rtl .wp_themeSkin .mceStatusbar div{float:right}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline}.wp_themeSkin table.mceToolbar{margin:0 6px 2px}.wp_themeSkin #content_toolbar1{margin-top:2px}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin a.mceButtonSelected{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.5;filter:alpha(opacity=50)}.wp_themeSkin .mceSeparator{height:24px;width:1px;display:block;background:transparent;overflow:hidden;margin:0 2px}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block}.wp_themeSkin .mceListBox .mceText{padding:1px 2px 1px 5px;text-align:left;text-decoration:none;width:70px;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden}.wp_themeSkin .mceListBox{margin:1px;direction:ltr}.wp_themeSkin .mceListBox .mceOpen{width:14px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin .mceListBox .mceOpen span{display:block;width:14px;height:20px;background-image:url("../images/down_arrow.gif");background-position:2px 1px;background-repeat:no-repeat}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen{background-image:none}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px}.wp_themeSkin select.mceListBox{font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;border-color:#b2b2b2;background-color:#fff}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px}.wp_themeSkin .mceSplitButton{display:block;margin:1px;direction:ltr}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin table.mceSplitButton td a{-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px}.wp_themeSkin .mceSplitButton a.mceOpen{width:10px;height:20px;background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;padding:1px;border-left:0 none!important}.wp_themeSkin .mceSplitButton span.mceOpen{display:none}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30)}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url(../images/wpicons.png)}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td{padding:2px}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd}.wp_themeSkin .mceNoIcons span.mceIcon{width:0}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px}.wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center}.wp_themeSkin .mceMenu span.mceMenuLine{display:none}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray}.wp_themeSkin .mce_address span.mceText{font-style:italic}.wp_themeSkin .mce_pre span.mceText{font-family:monospace}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:17px}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:15px}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:14px}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:13px}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:12px}.wp_themeSkin span.mce_undo{background-position:-500px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0}.wp_themeSkin span.mce_redo{background-position:-480px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0}.wp_themeSkin span.mce_bullist{background-position:-40px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0}.wp_themeSkin span.mce_numlist{background-position:-61px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-61px 0}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0}.wp_themeSkin span.mce_charmap{background-position:-420px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0}.wp_themeSkin span.mce_bold{background-position:-1px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:-1px 0}.wp_themeSkin span.mce_italic{background-position:-21px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-21px 0}.wp_themeSkin span.mce_underline{background-position:-280px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 1px}.wp_themeSkin span.mce_justifyleft{background-position:-100px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 1px}.wp_themeSkin span.mce_justifyright{background-position:-141px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-141px 1px}.wp_themeSkin span.mce_justifycenter{background-position:-120px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 1px}.wp_themeSkin span.mce_justifyfull{background-position:-300px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 1px}.wp_themeSkin span.mce_indent{background-position:-461px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-461px 1px}.wp_themeSkin span.mce_outdent{background-position:-440px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 1px}.wp_themeSkin span.mce_link{background-position:-161px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-161px 0}.wp_themeSkin span.mce_unlink{background-position:-180px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0}.wp_themeSkin span.mce_help{background-position:-521px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-521px 0}.wp_themeSkin span.mce_removeformat{background-position:-381px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-381px 0}.wp_themeSkin span.mce_strikethrough{background-position:-540px -18px}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-321px -22px}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonActive span.mce_forecolor{background-position:-321px -2px}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_media{background-position:-401px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-401px 0}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0}.wp_themeSkin span.mce_spellchecker{background-position:-220px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonActive span.mce_spellchecker{background-position:-220px 1px}.wp_themeSkin span.mce_wp_help{background-position:-521px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-521px 0}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0}.wp_themeSkin span.mce_wp_more{background-position:-201px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-201px 0}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px}.wp_themeSkin span.mce_anchor{background-position:-200px 0}.wp_themeSkin span.mce_sub{background-position:-600px 0}.wp_themeSkin span.mce_sup{background-position:-620px 0}.wp_themeSkin span.mce_newdocument{background-position:-520px 0}.wp_themeSkin span.mce_image{background-position:-380px 0}.wp_themeSkin span.mce_code{background-position:-260px 0}.wp_themeSkin span.mce_hr{background-position:-360px 0}.wp_themeSkin span.mce_visualaid{background-position:-660px 0}.wp_themeSkin span.mce_paste{background-position:-560px 0}.wp_themeSkin span.mce_copy{background-position:-700px 0}.wp_themeSkin span.mce_cut{background-position:-680px 0}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0}.wp_themeSkin span.mce_advhr{background-position:-0px -20px}.wp_themeSkin span.mce_ltr{background-position:-20px -20px}.wp_themeSkin span.mce_rtl{background-position:-40px -20px}.wp_themeSkin span.mce_emotions{background-position:-60px -20px}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px}.wp_themeSkin span.mce_iespell{background-position:-120px -20px}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px}.wp_themeSkin span.mce_absolute{background-position:-180px -20px}.wp_themeSkin span.mce_backward{background-position:-200px -20px}.wp_themeSkin span.mce_forward{background-position:-220px -20px}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px}.wp_themeSkin span.mce_selectall{background-position:-400px -20px}.wp_themeSkin span.mce_preview{background-position:-420px -20px}.wp_themeSkin span.mce_print{background-position:-440px -20px}.wp_themeSkin span.mce_cancel{background-position:-460px -20px}.wp_themeSkin span.mce_save{background-position:-480px -20px}.wp_themeSkin span.mce_replace{background-position:-500px -20px}.wp_themeSkin span.mce_search{background-position:-520px -20px}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px}.wp_themeSkin span.mce_table{background-position:-580px -20px}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px}.wp_themeSkin span.mce_col_after{background-position:-680px -20px}.wp_themeSkin span.mce_col_before{background-position:-700px -20px}.wp_themeSkin span.mce_row_after{background-position:-720px -20px}.wp_themeSkin span.mce_row_before{background-position:-740px -20px}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px}.wp_themeSkin span.mce_table_props{background-position:-980px -20px}.wp_themeSkin span.mce_row_props{background-position:-780px -20px}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px}.wp_themeSkin span.mce_template{background-position:-820px -20px}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px}.wp_themeSkin span.mce_abbr{background-position:-860px -20px}.wp_themeSkin span.mce_acronym{background-position:-880px -20px}.wp_themeSkin span.mce_attribs{background-position:-900px -20px}.wp_themeSkin span.mce_cite{background-position:-920px -20px}.wp_themeSkin span.mce_del{background-position:-940px -20px}.wp_themeSkin span.mce_ins{background-position:-960px -20px}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px}.wp_themeSkin iframe{background:transparent}.wp_themeSkin .mceButton,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff)}.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover{background-color:#ddd;background-image:-ms-linear-gradient(bottom,#eee,#bbb);background-image:-moz-linear-gradient(bottom,#eee,#bbb);background-image:-o-linear-gradient(bottom,#eee,#bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#bbb));background-image:-webkit-linear-gradient(bottom,#eee,#bbb);background-image:linear-gradient(bottom,#eee,#bbb);border-color:#909090}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important}.wp_themeSkin .mceListBox .mceOpen{border-left:0!important}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxHover:active .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#ccc;border-color:#999}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen{border-color:#909090;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#ccc}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#909090}.wp_themeSkin table.mceSplitButton td{background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff)}.wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin .mceSplitButtonActive{background-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}#mceModalBlocker{background:#000}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;line-height:150%;border:0 none;outline:0;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.wp-editor-tools{height:30px;padding:0 10px}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf}.wp-editor-container textarea.wp-editor-area{width:99.9%}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#e9e9e9;background-image:-ms-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-moz-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-o-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-webkit-linear-gradient(bottom,#ddd,#e9e9e9);background-image:linear-gradient(bottom,#ddd,#e9e9e9)}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999}html[dir="rtl"] .wp-switch-editor{float:left}.wp-switch-editor:hover{text-decoration:none!important}.js .tmce-active .wp-editor-area{color:white}.tmce-active .quicktags-toolbar{display:none}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #e9e9e9;background-color:#e9e9e9;color:#333}.wp-media-buttons{line-height:1;padding:9px 0 0}.wp-media-buttons a{text-decoration:none;color:#333;font-size:12px;vertical-align:bottom}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:29px}.quicktags-toolbar>div{padding:2px 4px 0}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background-color:#eee;background-image:-ms-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(bottom,#e3e3e3,#fff)}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.quicktags-toolbar input[value="link"]{text-decoration:underline}.quicktags-toolbar input[value="del"]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:bold}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:999998}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc}#wp-link{background-color:#f5f5f5;line-height:1.4em;font-size:12px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type="text"]{-webkit-box-sizing:border-box}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px}#wp-link p.howto{margin:3px}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px}#wp-link .toggle-arrow-active{background-position:center left}#wp-link label input[type="text"]{width:360px;margin-top:5px}#wp-link label span{display:inline-block;width:80px;text-align:right;padding-right:5px}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:9px}#wp-link .link-search-wrapper input[type="text"]{float:left;width:220px}#wp-link .link-search-wrapper img.waiting{margin:8px 1px 0 4px;float:left;display:none}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333}#wp-link li.selected{background:#ddd;color:#333}#wp-link li.selected .item-title{font-weight:bold}#wp-link .item-title{display:inline-block;width:80%}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0}#wp-link #search-results{display:none}#wp-link #search-panel{float:left;width:100%}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .river-waiting img.waiting{margin:0 auto;display:block}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.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}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-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}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#fff;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0}.rtl #wp-link label span{text-align:left;padding-left:5px;padding-right:0}.rtl #wp-link .link-search-wrapper span{float:right}.rtl #wp-link .link-search-wrapper input[type="text"]{float:right}.rtl #wp-link .link-search-wrapper img.waiting{margin:8px 4px 0 1px;float:right}.rtl #wp-link .link-target{margin:0 87px 0 0}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0}.rtl #wp-link #search-panel{float:right}.rtl #wp-link-cancel{float:right}.rtl #wp-link-update{float:left}.rtl #wp-link .toggle-arrow{background-position:top right}.rtl #wp-link .toggle-arrow-active{background-position:center right}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px}.rtl .mceListBoxMenu.mceNoIcons{margin-left:-14px}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block}.fullscreen-fader{z-index:200000}.fullscreen-active .fullscreen-fader{display:none}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;font-size:12px}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px}#wp-fullscreen-container{padding:4px 10px 50px}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:0;resize:none}#wp-fullscreen-tagline{color:#bbb;font-size:18px;float:right;padding-top:5px}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px}#wp-fullscreen-central-toolbar{margin:auto;padding:0}#wp-fullscreen-buttons>div{float:left}#wp-fullscreen-mode-bar{padding:1px 14px 0 0}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9))}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background-color:#eee;background-image:-moz-linear-gradient(bottom,#f9f9f9,#e0e0e0);background-image:-webkit-gradient(linear,left bottom,left top,from(#f9f9f9),to(#e0e0e0))}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}#wp-fullscreen-buttons .active a{background:inherit}#wp-fullscreen-buttons .hidden{display:none}#wp-fullscreen-buttons .disabled{opacity:.5}.wp-html-mode #wp-fullscreen-buttons div{display:none}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block}#fullscreen-topbar.fullscreen-make-sticky{display:block!important}#wp-fullscreen-save img{vertical-align:middle}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none}#wp-fullscreen-buttons .mce_image .mce_image{background-image:url('../../wp-admin/images/media-button.png?ver=20120201');background-position:3px 3px}.fullscreen-active #TB_overlay{z-index:150100}.fullscreen-active #TB_window{z-index:150102}#wp_mce_fullscreen_ifr{background:transparent}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc}#fullscreen-topbar{border-bottom-color:#dfdfdf;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec)}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.fade-trigger{opacity:1}.rtl #wp-fullscreen-tagline{float:left}.rtl #fullscreen-topbar{left:auto;right:0}.rtl #wp-fullscreen-mode-bar,.rtl #wp-fullscreen-button-bar,.rtl #wp-fullscreen-close,.rtl #wp-fullscreen-count{float:right}.rtl #wp-fullscreen-save{float:left}.rtl #wp-fullscreen-save{padding:2px 5px 0 2px}.rtl #wp-fullscreen-buttons>div{float:right}.rtl #wp-fullscreen-mode-bar{padding:1px 0 0 14px}.rtl #wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px}.rtl #wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-right-left:0;border-bottom-right-radius:3px}.rtl #wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.rtl #wp-fullscreen-save img,.rtl #wp-fullscreen-save span{padding-right:0;padding-left:4px}
\ No newline at end of file
+
+/*------------------------------------------------------------------------------
+ TinyMCE and Quicklinks toolbars
+------------------------------------------------------------------------------*/
+
+/* wp_theme/ui.css */
+.wp_themeSkin table,
+.wp_themeSkin tbody,
+.wp_themeSkin a,
+.wp_themeSkin img,
+.wp_themeSkin tr,
+.wp_themeSkin div,
+.wp_themeSkin td,
+.wp_themeSkin iframe,
+.wp_themeSkin span,
+.wp_themeSkin *,
+.wp_themeSkin .mceText {
+       border: 0;
+       margin: 0;
+       padding: 0;
+       white-space: nowrap;
+       text-decoration: none;
+       font-weight: normal;
+       cursor: default;
+       vertical-align: baseline;
+       width: auto;
+       border-collapse: separate;
+}
+
+.wp_themeSkin a:hover,
+.wp_themeSkin a:link,
+.wp_themeSkin a:visited,
+.wp_themeSkin a:active {
+       text-decoration: none;
+       font-weight: normal;
+       cursor: default;
+}
+
+.wp_themeSkin table td {
+       vertical-align: middle;
+}
+
+.wp_themeSkin *,
+.wp_themeSkin a:hover,
+.wp_themeSkin a:link,
+.wp_themeSkin a:visited,
+.wp_themeSkin a:active {
+       color: #555;
+}
+
+/* Containers */
+.wp_themeSkin table {}
+
+.wp_themeSkin iframe {
+       display: block;
+}
+
+.wp_themeSkin #mce_fullscreen_ifr {
+       background-color: #fff;
+}
+
+.wp_themeSkin .mceToolbar {
+       padding: 1px;
+}
+
+/* External */
+.wp_themeSkin .mceExternalToolbar {
+       position: absolute;
+       border-bottom: 0;
+       display: none;
+}
+
+.wp_themeSkin .mceExternalToolbar td.mceToolbar {
+       padding-right: 13px;
+}
+
+.wp_themeSkin .mceExternalClose {
+       position: absolute;
+       top: 3px;
+       right: 3px;
+       width: 7px;
+       height: 7px;
+       background: url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0;
+}
+
+/* Layout */
+.wp_themeSkin table.mceToolbar,
+.wp_themeSkin tr.mceFirst .mceToolbar tr td,
+.wp_themeSkin tr.mceLast .mceToolbar tr td {
+       border: 0;
+       margin: 0;
+       padding: 0;
+}
+
+.wp_themeSkin table.mceLayout {
+       border: 0;
+}
+
+.wp_themeSkin .mceStatusbar {
+       display: block;
+       font-family: sans-serif;
+       font-size: 12px;
+       line-height: 16px;
+       padding: 0 0 0 8px;
+       overflow: visible;
+       height: 20px;
+       border-top: 1px solid #dfdfdf;
+       color: #000;
+       background-color: #f5f5f5;
+}
+
+.rtl .wp_themeSkin .mceStatusbar {
+       padding: 0 8px 0 0;
+}
+
+.wp_themeSkin .mceStatusbar * {
+       color: #555;
+}
+
+.wp_themeSkin .mceStatusbar div {
+       float: left;
+       padding: 2px;
+}
+
+.rtl .wp_themeSkin .mceStatusbar div {
+       float: right;
+}
+
+.wp_themeSkin .mceStatusbar a.mceResize {
+       display: block;
+       float: right;
+       background: url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;
+       width: 20px;
+       height: 20px;
+       cursor: se-resize;
+}
+
+.rtl .wp_themeSkin .mceStatusbar a.mceResize {
+       float: left;
+}
+
+.wp_themeSkin .mceStatusbar a:hover {
+       text-decoration: underline;
+}
+
+.wp_themeSkin table.mceToolbar {
+       margin: 0 6px 2px;
+}
+
+.wp_themeSkin table.mceToolbar :active,
+.wp_themeSkin table.mceToolbar :focus,
+.wp_themeSkin table.mceToolbar:focus,
+.wp_themeSkin span.mceSeparator:focus {
+       outline: none;
+}
+
+.wp_themeSkin #content_toolbar1 {
+       margin-top: 2px;
+}
+
+.wp_themeSkin .mceToolbar .mceToolbarEndListBox span {
+       display: none;
+}
+
+.wp_themeSkin span.mceIcon,
+.wp_themeSkin img.mceIcon {
+       display: block;
+       width: 20px;
+       height: 20px;
+}
+
+.wp_themeSkin .mceIcon {
+       background: url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px;
+}
+
+/* Button */
+.wp_themeSkin .mceButton {
+       display: block;
+       width: 20px;
+       height: 20px;
+       cursor: default;
+       padding: 1px 2px;
+       margin: 1px;
+       -webkit-border-radius: 2px;
+       border-radius: 2px;
+}
+
+.wp_themeSkin a.mceButtonEnabled:hover {
+       background-image: inherit 0 -10px;
+}
+
+.wp_themeSkin .mceOldBoxModel a.mceButton span, .wp_themeSkin .mceOldBoxModel a.mceButton img {
+       margin: 0 0 0 1px;
+}
+
+.wp_themeSkin .mceButtonDisabled .mceIcon {
+       opacity: 0.2;
+       filter: alpha(opacity=20);
+}
+
+/* Separator */
+.wp_themeSkin .mceSeparator {
+       display: none;
+}
+
+/* ListBox */
+.wp_themeSkin .mceListBox,
+.wp_themeSkin .mceListBox a {
+       display: block;
+}
+
+.wp_themeSkin .mceListBox .mceText {
+       padding: 1px 4px 1px 5px;
+       width: 70px;
+       text-align: left;
+       text-decoration: none;
+       -webkit-border-bottom-left-radius: 2px;
+       -webkit-border-top-left-radius: 2px;
+       border-bottom-left-radius: 2px;
+       border-top-left-radius: 2px;
+       font-family: sans-serif;
+       font-size: 12px;
+       height: 20px;
+       line-height: 20px;
+       overflow: hidden;
+}
+
+.wp_themeSkin .mceListBox {
+       margin: 1px;
+       direction: ltr;
+       background-color: #fff;
+       border: 1px solid #ddd;
+       -webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2);
+       box-shadow:         inset 0 1px 1px -1px rgba(0, 0, 0, .2);
+}
+
+.wp_themeSkin .mceListBox .mceOpen {
+       width: 12px;
+       height: 20px;
+       border-collapse: separate;
+       padding: 1px;
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-top-left-radius: 0;
+       border-bottom-left-radius: 0;
+       border-top-left-radius: 0;
+}
+
+.wp_themeSkin .mceListBox .mceFirst a {
+       border-style: solid;
+       border-width: 1px;
+       border-bottom-right-radius: 2px;
+       border-top-right-radius: 2px;
+}
+
+/*.wp_themeSkin .mceListBox .mceLast {
+       display: none;
+}*/
+
+.wp_themeSkin .mceListBox .mceOpen,
+.wp_themeSkin .mceListBoxHover .mceOpen,
+.wp_themeSkin .mceListBoxSelected .mceOpen,
+.wp_themeSkin table.mceListBoxEnabled .mceOpen {
+       background-image: url("../images/down_arrow.gif");
+       background-position: 3px 1px;
+       background-repeat: no-repeat;
+}
+
+.wp_themeSkin .mceListBoxDisabled .mceText {
+       color: gray;
+}
+
+.wp_themeSkin .mceListBoxMenu {
+       overflow: auto;
+       overflow-x: hidden;
+}
+
+.wp_themeSkin .mceOldBoxModel .mceListBox .mceText {
+       height: 22px;
+}
+
+.wp_themeSkin select.mceListBox {
+       font-family: sans-serif;
+       font-size: 12px;
+       border-color: #b2b2b2;
+       background-color: #fff;
+}
+
+/* SplitButton */
+.wp_themeSkin .mceSplitButton a,
+.wp_themeSkin .mceSplitButton span {
+       display: block;
+       height: 20px;
+}
+
+.wp_themeSkin .mceSplitButton {
+       display: block;
+       direction: ltr;
+}
+
+.wp_themeSkin table.mceSplitButton td {
+       padding: 2px;
+       -webkit-border-radius: 2px;
+       border-radius: 2px;
+}
+
+.wp_themeSkin table.mceSplitButton:hover td {
+       background-image: inherit 0 -10px;
+}
+
+.wp_themeSkin .mceSplitButton a.mceAction {
+       height: 20px;
+       width: 20px;
+       padding: 1px 2px;
+       border-right: 0 none;
+}
+
+.wp_themeSkin .mceSplitButton span.mceAction {
+       background-image: url("../js/tinymce/themes/advanced/img/icons.gif");
+       background-repeat: no-repeat;
+       background-color: transparent;
+       width: 20px;
+}
+
+.wp_themeSkin .mceSplitButton a.mceOpen {
+       width: 11px;
+       height: 20px;
+       background-position: 0px 2px;
+       background-repeat: no-repeat;
+       padding: 1px 0;
+}
+
+.wp_themeSkin .mceSplitButton span.mceOpen {
+       display: none;
+}
+
+.wp_themeSkin .mceSplitButtonDisabled .mceAction {
+       opacity: 0.3;
+       filter: alpha(opacity=30);
+}
+
+.wp_themeSkin .mceListBox a.mceText,
+.wp_themeSkin .mceSplitButton a.mceAction {
+       -webkit-border-bottom-left-radius: 2px;
+       -webkit-border-top-left-radius: 2px;
+       border-bottom-left-radius: 2px;
+       border-top-left-radius: 2px;
+}
+
+.wp_themeSkin .mceSplitButton a.mceOpen,
+.wp_themeSkin .mceListBox a.mceOpen {
+       -webkit-border-bottom-right-radius: 2px;
+       -webkit-border-top-right-radius: 2px;
+       border-bottom-right-radius: 2px;
+       border-top-right-radius: 2px;
+}
+
+.wp_themeSkin span.mce_undo,
+.wp_themeSkin span.mce_redo,
+.wp_themeSkin span.mce_bullist,
+.wp_themeSkin span.mce_numlist,
+.wp_themeSkin span.mce_blockquote,
+.wp_themeSkin span.mce_charmap,
+.wp_themeSkin span.mce_bold,
+.wp_themeSkin span.mce_italic,
+.wp_themeSkin span.mce_underline,
+.wp_themeSkin span.mce_justifyleft,
+.wp_themeSkin span.mce_justifyright,
+.wp_themeSkin span.mce_justifycenter,
+.wp_themeSkin span.mce_justifyfull,
+.wp_themeSkin span.mce_indent,
+.wp_themeSkin span.mce_outdent,
+.wp_themeSkin span.mce_link,
+.wp_themeSkin span.mce_unlink,
+.wp_themeSkin span.mce_help,
+.wp_themeSkin span.mce_removeformat,
+.wp_themeSkin span.mce_fullscreen,
+.wp_themeSkin span.mce_wp_fullscreen,
+.wp_themeSkin span.mce_media,
+.wp_themeSkin span.mce_pastetext,
+.wp_themeSkin span.mce_pasteword,
+.wp_themeSkin span.mce_wp_help,
+.wp_themeSkin span.mce_wp_adv,
+.wp_themeSkin span.mce_wp_more,
+.wp_themeSkin span.mce_strikethrough,
+.wp_themeSkin span.mce_spellchecker,
+.wp_themeSkin span.mce_forecolor,
+.wp_themeSkin .mce_forecolorpicker,
+.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,
+.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,
+.wp_themeSkin .mceSplitButton span.mce_numlist,
+.wp_themeSkin .mceSplitButton span.mce_bullist {
+       background-image: url('../images/wpicons.png?ver=20120720');
+}
+
+/* ColorSplitButton */
+.wp_themeSkin div.mceColorSplitMenu table {
+       background-color: #ebebeb;
+       border-color: #bbb;
+}
+
+.wp_themeSkin .mceColorSplitMenu td {
+       padding: 2px;
+}
+
+.wp_themeSkin .mceColorSplitMenu a {
+       display: block;
+       width: 9px;
+       height: 9px;
+       overflow: hidden;
+       border-color: #B2B2B2;
+}
+
+.wp_themeSkin .mceColorSplitMenu td.mceMoreColors {
+       padding: 1px 3px 1px 1px;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
+       width: 100%;
+       height: auto;
+       text-align: center;
+       font-family: Tahoma,Verdana,Arial,Helvetica;
+       font-size: 11px;
+       line-height: 20px;
+       border-color: #fff;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {}
+.wp_themeSkin a.mceMoreColors:hover {}
+.wp_themeSkin .mceColorPreview {
+       margin: -5px 0 0 2px;
+       width: 16px;
+       height: 4px;
+       overflow: hidden;
+}
+
+/* Menu */
+.wp_themeSkin .mceMenu {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 1000;
+       border-color: #ddd;
+       direction: ltr;
+}
+
+.wp_themeSkin .mceNoIcons span.mceIcon {
+       width: 0;
+}
+
+.wp_themeSkin .mceNoIcons a .mceText {
+       padding-left: 10px;
+}
+
+.wp_themeSkin .mceMenu table {
+       background-color: #ebeaeb;
+}
+
+.wp_themeSkin .mceMenu a,
+.wp_themeSkin .mceMenu span,
+.wp_themeSkin .mceMenu {
+       display: block;
+}
+
+.wp_themeSkin .mceMenu td {
+       height: 20px;overflow: hidden;
+}
+
+.wp_themeSkin .mceMenu a {
+       position: relative;
+       padding: 3px 0 4px 0;
+       text-decoration: none !important;
+}
+
+.wp_themeSkin .mceMenu .mceText {
+       position: relative;
+       display: block;
+       font-family: Tahoma,Verdana,Arial,Helvetica;
+       cursor: default;
+       margin: 0;
+       padding: 0 25px;
+       color: #000;
+}
+
+.wp_themeSkin .mceMenu span.mceText, .wp_themeSkin .mceMenu .mcePreview {
+       font-size: 12px;
+}
+
+.wp_themeSkin .mceMenu pre.mceText {
+       font-family: Monospace;
+}
+
+.wp_themeSkin .mceMenu .mceIcon {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 22px;
+}
+
+.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
+.wp_themeSkin .mceMenu .mceMenuItemActive {
+       background-color: #f5f5f5;
+}
+
+.wp_themeSkin td.mceMenuItemSeparator {
+       height: 1px;
+       background-color: #aaa;
+}
+
+.wp_themeSkin .mceMenuItemTitle a {
+       border-top: 0;
+       border-right: 0;
+       border-left: 0;
+       border-bottom: 1px solid #aaa;
+       text-decoration: none !important;
+       background-color: #ccc;
+}
+
+.wp_themeSkin .mceMenuItemTitle span.mceText {
+       font-weight: bold;
+       padding-left: 4px;
+       color: #000;
+}
+
+.wp_themeSkin .mceMenuItemSelected .mceIcon {
+       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");
+       color: #888;
+}
+
+.wp_themeSkin .mceNoIcons .mceMenuItemSelected a {
+       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center;
+}
+
+.wp_themeSkin .mceMenu span.mceMenuLine {
+       display: none;
+}
+
+.wp_themeSkin .mceMenuItemSub a {
+       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right;
+}
+
+/* Progress,Resize */
+.wp_themeSkin .mceBlocker {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 1000;
+       opacity: 0.5;
+       filter: alpha(opacity=50);
+       background: #FFF;
+}
+
+.wp_themeSkin .mceProgress {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 1001;
+       background: url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;
+       width: 32px;
+       height: 32px;
+       margin: -16px 0 0 -16px;
+}
+
+.wp_themeSkin .mcePlaceHolder {
+       border: 1px dotted gray;
+}
+
+/* Rtl */
+.mceRtl .mceListBox .mceText {
+       text-align: right;
+       padding: 0 4px 0 0;
+}
+
+.mceRtl .mceMenuItem .mceText {
+       text-align: right;
+}
+
+/* Formats */
+.wp_themeSkin .mce_p span.mceText {}
+.wp_themeSkin .mce_address span.mceText {
+       font-style: italic;
+}
+
+.wp_themeSkin .mce_pre span.mceText {
+       font-family: monospace;
+}
+
+.wp_themeSkin .mce_h1 span.mceText {
+       font-weight: bolder;
+       font-size: 17px;
+}
+
+.wp_themeSkin .mce_h2 span.mceText {
+       font-weight: bolder;
+       font-size: 16px;
+}
+
+.wp_themeSkin .mce_h3 span.mceText {
+       font-weight: bolder;
+       font-size: 15px;
+}
+
+.wp_themeSkin .mce_h4 span.mceText {
+       font-weight: bolder;
+       font-size: 14px;
+}
+
+.wp_themeSkin .mce_h5 span.mceText {
+       font-weight: bolder;
+       font-size: 13px;
+}
+
+.wp_themeSkin .mce_h6 span.mceText {
+       font-weight: bolder;
+       font-size: 12px;
+}
+
+/* Theme */
+.wp_themeSkin span.mce_undo {background-position:-500px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,
+.wp_themeSkin .mceButtonActive span.mce_undo {background-position:-500px 0}
+
+.wp_themeSkin span.mce_redo {background-position:-480px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,
+.wp_themeSkin .mceButtonActive span.mce_redo {background-position:-480px 0}
+
+.wp_themeSkin span.mce_bullist {background-position:-40px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,
+.wp_themeSkin .mceButtonActive span.mce_bullist,
+.wp_themeSkin .mceSplitButton:hover span.mce_bullist {background-position:-40px 0}
+
+.wp_themeSkin span.mce_numlist {background-position:-60px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,
+.wp_themeSkin .mceButtonActive span.mce_numlist,
+.wp_themeSkin .mceSplitButton:hover span.mce_numlist {background-position:-60px 0}
+
+.wp_themeSkin span.mce_blockquote {background-position:-80px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,
+.wp_themeSkin .mceButtonActive span.mce_blockquote {background-position:-80px 0}
+
+.wp_themeSkin span.mce_charmap {background-position:-420px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,
+.wp_themeSkin .mceButtonActive span.mce_charmap {background-position:-420px 0}
+
+.wp_themeSkin span.mce_bold {background-position:0 -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,
+.wp_themeSkin .mceButtonActive span.mce_bold {background-position:0 0}
+
+.wp_themeSkin span.mce_italic {background-position:-20px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,
+.wp_themeSkin .mceButtonActive span.mce_italic {background-position:-20px 0}
+
+.wp_themeSkin span.mce_underline {background-position:-280px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,
+.wp_themeSkin .mceButtonActive span.mce_underline {background-position:-280px 0}
+
+.wp_themeSkin span.mce_justifyleft {background-position:-100px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,
+.wp_themeSkin .mceButtonActive span.mce_justifyleft {background-position:-100px 0}
+
+.wp_themeSkin span.mce_justifyright {background-position:-140px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,
+.wp_themeSkin .mceButtonActive span.mce_justifyright {background-position:-140px 0}
+
+.wp_themeSkin span.mce_justifycenter {background-position:-120px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,
+.wp_themeSkin .mceButtonActive span.mce_justifycenter {background-position:-120px 0}
+
+.wp_themeSkin span.mce_justifyfull {background-position:-300px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,
+.wp_themeSkin .mceButtonActive span.mce_justifyfull {background-position:-300px 0}
+
+.wp_themeSkin span.mce_indent {background-position:-460px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,
+.wp_themeSkin .mceButtonActive span.mce_indent {background-position:-460px 0}
+
+.wp_themeSkin span.mce_outdent {background-position:-440px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,
+.wp_themeSkin .mceButtonActive span.mce_outdent {background-position:-440px 0}
+
+.wp_themeSkin span.mce_link {background-position:-160px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_link,
+.wp_themeSkin .mceButtonActive span.mce_link {background-position:-160px 0}
+
+.wp_themeSkin span.mce_unlink {background-position:-180px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,
+.wp_themeSkin .mceButtonActive span.mce_unlink {background-position:-180px 0}
+
+.wp_themeSkin span.mce_help {background-position:-520px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_help,
+.wp_themeSkin .mceButtonActive span.mce_help {background-position:-520px 0}
+
+.wp_themeSkin span.mce_removeformat {background-position:-380px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,
+.wp_themeSkin .mceButtonActive span.mce_removeformat {background-position:-380px 0}
+
+.wp_themeSkin span.mce_strikethrough {background-position:-540px -20px;}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,
+.wp_themeSkin .mceButtonActive span.mce_strikethrough {background-position:-540px 0}
+
+.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor {background-position:-320px -20px}
+.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,
+.wp_themeSkin .mceSplitButtonSelected span.mce_forecolor {background-position:-320px 0}
+
+.wp_themeSkin .mce_forecolorpicker {background-position:-320px -20px}
+
+/* Plugins in WP */
+.wp_themeSkin span.mce_fullscreen {background-position:-240px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,
+.wp_themeSkin .mceButtonActive span.mce_fullscreen {background-position:-240px 0}
+
+.wp_themeSkin span.mce_wp_fullscreen {background-position:-240px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,
+.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen {background-position:-240px 0}
+
+.wp_themeSkin span.mce_media {background-position:-400px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_media,
+.wp_themeSkin .mceButtonActive span.mce_media {background-position:-400px 0}
+
+.wp_themeSkin span.mce_pastetext {background-position:-340px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,
+.wp_themeSkin .mceButtonActive span.mce_pastetext {background-position:-340px 0}
+
+.wp_themeSkin span.mce_pasteword {background-position:-360px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,
+.wp_themeSkin .mceButtonActive span.mce_pasteword {background-position:-360px 0}
+
+.wp_themeSkin span.mce_spellchecker {background-position:-220px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,
+.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,
+.wp_themeSkin .mceButtonActive span.mce_spellchecker,
+.wp_themeSkin .mceSplitButtonSelected span.mce_spellchecker {background-position:-220px 0}
+
+.wp_themeSkin span.mce_wp_help {background-position:-520px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,
+.wp_themeSkin .mceButtonActive span.mce_wp_help {background-position:-520px 0}
+
+.wp_themeSkin span.mce_wp_adv {background-position:-260px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,
+.wp_themeSkin .mceButtonActive span.mce_wp_adv {background-position:-260px 0}
+
+.wp_themeSkin span.mce_wp_more {background-position:-200px -20px}
+.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,
+.wp_themeSkin .mceButtonActive span.mce_wp_more {background-position:-200px 0}
+
+/* Default icons */
+.wp_themeSkin span.mce_cleanup {background-position:-380px -20px}
+.wp_themeSkin span.mce_anchor {background-position:-200px 0}
+.wp_themeSkin span.mce_sub {background-position:-600px 0}
+.wp_themeSkin span.mce_sup {background-position:-620px 0}
+.wp_themeSkin span.mce_newdocument {background-position:-520px 0}
+.wp_themeSkin span.mce_image {background-position:-380px 0}
+.wp_themeSkin span.mce_code {background-position:-260px 0}
+.wp_themeSkin span.mce_hr {background-position:-360px 0}
+.wp_themeSkin span.mce_visualaid {background-position:-660px 0}
+.wp_themeSkin span.mce_paste {background-position:-560px 0}
+.wp_themeSkin span.mce_copy {background-position:-700px 0}
+.wp_themeSkin span.mce_cut {background-position:-680px 0}
+.wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
+.wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.wp_themeSkin span.mce_advhr {background-position:-0px -20px}
+.wp_themeSkin span.mce_ltr {background-position:-20px -20px}
+.wp_themeSkin span.mce_rtl {background-position:-40px -20px}
+.wp_themeSkin span.mce_emotions {background-position:-60px -20px}
+.wp_themeSkin span.mce_fullpage {background-position:-80px -20px}
+.wp_themeSkin span.mce_iespell {background-position:-120px -20px}
+.wp_themeSkin span.mce_insertdate {background-position:-140px -20px}
+.wp_themeSkin span.mce_inserttime {background-position:-160px -20px}
+.wp_themeSkin span.mce_absolute {background-position:-180px -20px}
+.wp_themeSkin span.mce_backward {background-position:-200px -20px}
+.wp_themeSkin span.mce_forward {background-position:-220px -20px}
+.wp_themeSkin span.mce_insert_layer {background-position:-240px -20px}
+.wp_themeSkin span.mce_insertlayer {background-position:-260px -20px}
+.wp_themeSkin span.mce_movebackward {background-position:-280px -20px}
+.wp_themeSkin span.mce_moveforward {background-position:-300px -20px}
+.wp_themeSkin span.mce_nonbreaking {background-position:-340px -20px}
+.wp_themeSkin span.mce_selectall {background-position:-400px -20px}
+.wp_themeSkin span.mce_preview {background-position:-420px -20px}
+.wp_themeSkin span.mce_print {background-position:-440px -20px}
+.wp_themeSkin span.mce_cancel {background-position:-460px -20px}
+.wp_themeSkin span.mce_save {background-position:-480px -20px}
+.wp_themeSkin span.mce_replace {background-position:-500px -20px}
+.wp_themeSkin span.mce_search {background-position:-520px -20px}
+.wp_themeSkin span.mce_styleprops {background-position:-560px -20px}
+.wp_themeSkin span.mce_table {background-position:-580px -20px}
+.wp_themeSkin span.mce_cell_props {background-position:-600px -20px}
+.wp_themeSkin span.mce_delete_table {background-position:-620px -20px}
+.wp_themeSkin span.mce_delete_col {background-position:-640px -20px}
+.wp_themeSkin span.mce_delete_row {background-position:-660px -20px}
+.wp_themeSkin span.mce_col_after {background-position:-680px -20px}
+.wp_themeSkin span.mce_col_before {background-position:-700px -20px}
+.wp_themeSkin span.mce_row_after {background-position:-720px -20px}
+.wp_themeSkin span.mce_row_before {background-position:-740px -20px}
+.wp_themeSkin span.mce_merge_cells {background-position:-760px -20px}
+.wp_themeSkin span.mce_table_props {background-position:-980px -20px}
+.wp_themeSkin span.mce_row_props {background-position:-780px -20px}
+.wp_themeSkin span.mce_split_cells {background-position:-800px -20px}
+.wp_themeSkin span.mce_template {background-position:-820px -20px}
+.wp_themeSkin span.mce_visualchars {background-position:-840px -20px}
+.wp_themeSkin span.mce_abbr {background-position:-860px -20px}
+.wp_themeSkin span.mce_acronym {background-position:-880px -20px}
+.wp_themeSkin span.mce_attribs {background-position:-900px -20px}
+.wp_themeSkin span.mce_cite {background-position:-920px -20px}
+.wp_themeSkin span.mce_del {background-position:-940px -20px}
+.wp_themeSkin span.mce_ins {background-position:-960px -20px}
+.wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
+.wp_themeSkin span.mce_restoredraft {background-position:-20px -40px}
+.wp_themeSkin span.mce_visualblocks {background-position: -40px -40px}
+
+/* border */
+.wp_themeSkin .mceExternalToolbar,
+.wp_themeSkin .mceButton,
+.wp_themeSkin a.mceButtonEnabled:hover,
+.wp_themeSkin a.mceButtonActive,
+.wp_themeSkin a.mceButtonSelected,
+.wp_themeSkin .mceListBox .mceText,
+.wp_themeSkin .mceListBox .mceOpen,
+.wp_themeSkin select.mceListBox,
+.wp_themeSkin .mceSplitButton a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceOpen,
+.wp_themeSkin .mceSplitButton a.mceOpen:hover,
+.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
+.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceAction:hover,
+.wp_themeSkin div.mceColorSplitMenu table,
+.wp_themeSkin .mceColorSplitMenu a,
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,
+.wp_themeSkin a.mceMoreColors:hover,
+.wp_themeSkin .mceMenu {
+       border-style: solid;
+       border-width: 1px;
+}
+.wp_themeSkin .mceListBox .mceText {
+       border-right: 0 none;
+}
+.wp_themeSkin iframe {
+       background: transparent;
+}
+
+.wp_themeSkin .mceButton {
+       border-color: transparent;
+}
+
+.wp_themeSkin .mceListBox .mceText,
+.wp_themeSkin .mceListBox .mceOpen {
+       border-color: transparent;
+}
+
+.wp_themeSkin a.mceButtonEnabled:hover,
+.wp_themeSkin table.mceSplitButton:hover {
+       border-color: #bbb;
+       background: #eee;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#e5e5e5), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #e5e5e5, #fff);
+       background-image:    -moz-linear-gradient(bottom, #e5e5e5, #fff);
+       background-image:      -o-linear-gradient(bottom, #e5e5e5, #fff);
+       background-image: linear-gradient(to top, #e5e5e5, #fff);
+}
+
+.wp_themeSkin a.mceButton:active,
+.wp_themeSkin a.mceButtonEnabled:active,
+.wp_themeSkin a.mceButtonSelected:active,
+.wp_themeSkin a.mceButtonActive,
+.wp_themeSkin a.mceButtonActive:active,
+.wp_themeSkin a.mceButtonActive:hover,
+.wp_themeSkin .mceSplitButtonSelected table,
+.wp_themeSkin .mceSplitButtonSelected table:hover {
+       outline: none;
+       border-color: #999 #ccc #ccc #999;
+       background: #eee;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f6f6f6), to(#e3e3e3));
+       background-image: -webkit-linear-gradient(bottom, #f6f6f6, #e3e3e3);
+       background-image:    -moz-linear-gradient(bottom, #f6f6f6, #e3e3e3);
+       background-image:      -o-linear-gradient(bottom, #f6f6f6, #e3e3e3);
+       background-image: linear-gradient(to top, #f6f6f6, #e3e3e3);
+}
+
+.wp_themeSkin .mceSplitButtonSelected table a.mceOpen,
+.wp_themeSkin .mceSplitButtonSelected table a.mceAction {
+       border-color: #999 #ccc #ccc #999;
+}
+
+.wp_themeSkin .mceButtonDisabled {
+       border-color: transparent;
+}
+
+.wp_themeSkin .mceListBox .mceOpen {
+       border-left: 0;
+}
+
+.wp_themeSkin .mceListBoxEnabled:hover,
+.wp_themeSkin .mceListBoxEnabled:active,
+.wp_themeSkin .mceListBoxHover,
+.wp_themeSkin .mceListBoxHover:active,
+.wp_themeSkin .mceListBoxSelected {
+       -webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .3);
+       box-shadow:         inset 0 1px 1px -1px rgba(0, 0, 0, .3);
+       border-color: #bbb;
+}
+
+/* SplitButton */
+.wp_themeSkin .mceSplitButton .mceLast span.mceOpen .mceIconOnly {
+       display: block;
+}
+
+.wp_themeSkin .mceSplitButton a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceOpen {
+       border-color: transparent;
+}
+
+.wp_themeSkin .mceSplitButton:hover a {
+       border-color: #bbb;
+}
+
+.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,
+.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
+.wp_themeSkin .mceSplitButtonActive a.mceOpen,
+.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen {
+       background-image: url("../images/down_arrow.gif");
+       background-position: 1px 2px;
+       background-repeat: no-repeat;
+       border-left: 0;
+}
+
+.wp_themeSkin .mceSplitButtonActive td {
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
+       border-color: #0A246A;
+       background-color: #B6BDD2;
+}
+
+.wp_themeSkin a.mceMoreColors:hover {
+       border-color: #0A246A;
+}
+
+.wp_themeSkin .mceMenuItemDisabled .mceText {
+       color: #888;
+}
+
+#mceModalBlocker {
+       background: #000;
+}
+
+/* WP specific */
+.wp-editor-wrap {
+       position: relative;
+}
+
+.wp-editor-area {
+       font-family: Consolas, Monaco, monospace;
+       padding: 10px;
+       margin: 1px 0 0;
+       line-height: 150%;
+       border: 0 none;
+       outline: none;
+       display: block;
+       resize: vertical;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+.wp-editor-tools {
+       height: 30px;
+       padding: 0 10px 0 0;
+}
+
+.rtl .wp-editor-tools {
+       padding: 0 0 0 10px;
+}
+
+.wp-editor-container {
+    border-width: 1px;
+       border-style: solid;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-color: #ccc #ccc #dfdfdf;
+}
+
+.wp-editor-container textarea.wp-editor-area {
+       width: 100%;
+       margin: 0;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.quicktags-toolbar,
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+       border-bottom: 1px solid #d1d1d1;
+       background: #eee;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#e5e5e5), to(#f4f4f4));
+       background-image: -webkit-linear-gradient(bottom, #e5e5e5, #f4f4f4);
+       background-image:    -moz-linear-gradient(bottom, #e5e5e5, #f4f4f4);
+       background-image:      -o-linear-gradient(bottom, #e5e5e5, #f4f4f4);
+       background-image: linear-gradient(to top, #e5e5e5, #f4f4f4);
+}
+
+.wp-switch-editor {
+       height: 18px;
+    font: 13px/18px Arial,Helvetica,sans-serif normal;
+       margin: 5px 5px 0 0;
+       padding: 4px 5px 2px;
+       float: right;
+       cursor: pointer;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       background-color: #f1f1f1;
+       border-color: #dfdfdf #dfdfdf #ccc;
+       color: #999;
+}
+
+html[dir="rtl"] .wp-switch-editor {
+       float: left;
+}
+
+.wp-switch-editor:active {
+       background-color: #f1f1f1;
+}
+
+.wp-switch-editor:hover {
+       text-decoration: none !important;
+}
+
+.js .tmce-active .wp-editor-area {
+       color: white;
+}
+
+.tmce-active .quicktags-toolbar {
+        display: none;
+}
+
+.tmce-active .switch-tmce,
+.html-active .switch-html {
+       border-color: #ccc #ccc #f4f4f4;
+       background-color: #f4f4f4;
+       color: #555;
+}
+
+.wp-media-buttons .button {
+       margin-right: 5px;
+}
+
+.rtl .wp-media-buttons .button {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+.wp-media-buttons .insert-media {
+       padding-left: 0.4em;
+}
+
+.rtl .wp-media-buttons .insert-media {
+       padding-left: 10px;
+       padding-right: 0.4em;
+}
+
+.wp-media-buttons a {
+       text-decoration: none;
+       color: #464646;
+       font-size: 12px;
+}
+
+.wp-media-buttons img {
+       padding: 0 4px;
+       vertical-align: middle;
+}
+
+.wp-media-buttons span.wp-media-buttons-icon {
+       display: inline-block;
+       width: 16px;
+       height: 16px;
+       vertical-align: text-top;
+       margin: 0 2px;
+}
+
+.wp-media-buttons .add_media span.wp-media-buttons-icon {
+       background: url('../../wp-admin/images/media-button.png') no-repeat top left;
+}
+
+.quicktags-toolbar {
+       border-bottom-style: solid;
+       border-bottom-width: 1px;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       padding: 2px 8px 0;
+       min-height: 29px;
+}
+
+.quicktags-toolbar > div {
+       padding: 2px 4px 0;
+}
+
+.quicktags-toolbar input {
+       margin: 2px 1px 4px;
+       line-height: 18px;
+       display: inline-block;
+       min-width: 26px;
+       padding: 2px 4px;
+       font: 12px/18px Arial, Helvetica, sans-serif normal;
+       color: #464646;
+       border: 1px solid #c3c3c3;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       background: #eee;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #e3e3e3, #fff);
+       background-image:    -moz-linear-gradient(bottom, #e3e3e3, #fff);
+       background-image:      -o-linear-gradient(bottom, #e3e3e3, #fff);
+       background-image: linear-gradient(to top, #e3e3e3, #fff);
+}
+
+.quicktags-toolbar input:hover {
+       border-color: #aaa;
+       background: #ddd;
+}
+
+.quicktags-toolbar input[value="link"] {
+       text-decoration: underline;
+}
+
+.quicktags-toolbar input[value="del"] {
+       text-decoration: line-through;
+}
+
+.quicktags-toolbar input[value="i"] {
+       font-style: italic;
+}
+
+.quicktags-toolbar input[value="b"] {
+       font-weight: bold;
+}
+
+#wp_editbtns,
+#wp_gallerybtns {
+       padding: 2px;
+       position: absolute;
+       display: none;
+       z-index: 155000;
+}
+
+#wp_editimgbtn,
+#wp_delimgbtn,
+#wp_editgallery,
+#wp_delgallery {
+       border-color: #999;
+       background-color: #eee;
+       margin: 2px;
+       padding: 2px;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+#wp_editimgbtn:hover,
+#wp_delimgbtn:hover,
+#wp_editgallery:hover,
+#wp_delgallery:hover {
+       border-color: #555;
+       background-color: #ccc;
+}
+
+/*------------------------------------------------------------------------------
+ wp-link
+------------------------------------------------------------------------------*/
+
+#wp-link {
+       background-color: #F5F5F5;
+       line-height: 1.4em;
+       font-size: 12px;
+}
+
+#wp-link ol,
+#wp-link ul {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+
+#wp-link input[type="text"] {
+       -webkit-box-sizing: border-box;
+}
+
+#wp-link input[type="text"],
+#wp-link textarea {
+       border-width: 1px;
+       border-style: solid;
+       -webkit-border-radius: 4px;
+       border-radius: 4px;
+       font-size: 12px;
+       margin: 1px;
+       padding: 3px;
+}
+
+#wp-link #link-options {
+       padding: 10px 0 14px;
+       border-bottom: 1px solid #dfdfdf;
+       margin: 0 6px 14px;
+}
+
+#wp-link p.howto {
+       margin: 3px;
+}
+
+#wp-link #internal-toggle {
+       display: inline-block;
+       cursor: pointer;
+       padding-left: 18px;
+}
+
+#wp-link .toggle-arrow {
+       background: transparent url( '../images/toggle-arrow.png' ) top left no-repeat;
+       height: 23px;
+       line-height: 23px;
+}
+
+#wp-link .toggle-arrow-active {
+       background-position: center left;
+}
+
+#wp-link label input[type="text"] {
+       width: 360px;
+       margin-top: 5px;
+}
+
+#wp-link #link-options label span,
+#wp-link #search-panel label span.search-label {
+       display: inline-block;
+       width: 80px;
+       text-align: right;
+       padding-right: 5px;
+}
+
+#wp-link .link-search-field {
+       float: left;
+       margin-right: 5px;
+}
+
+#wp-link .link-search-wrapper {
+       margin: 5px 6px 9px;
+       display: block;
+       overflow: hidden;
+}
+
+#wp-link .link-search-wrapper span {
+       float: left;
+       margin-top: 4px;
+}
+
+#wp-link .link-search-wrapper input[type="text"] {
+       float: left;
+       width: 220px;
+}
+
+#wp-link .link-search-wrapper .spinner {
+       margin: 4px 2px 0 0;
+       display: none;
+       vertical-align: text-bottom;
+}
+
+#wp-link .link-target {
+       width: auto;
+       padding: 3px 0 0;
+       margin: 0 0 0 87px;
+       font-size: 11px;
+}
+
+#wp-link .query-results {
+       border: 1px #dfdfdf solid;
+       margin: 0 5px 5px;
+       background: #fff;
+       height: 185px;
+       overflow: auto;
+       position: relative;
+}
+
+#wp-link li,
+#wp-link .query-notice {
+       clear: both;
+       margin-bottom: 0;
+       border-bottom: 1px solid #f1f1f1;
+       color: #333;
+       padding: 4px 6px;
+       cursor: pointer;
+       position: relative;
+}
+
+#wp-link li:hover {
+       background: #eaf2fa;
+       color: #151515;
+}
+
+#wp-link li.unselectable {
+       border-bottom: 1px solid #dfdfdf;
+}
+
+#wp-link li.unselectable:hover {
+       background: #fff;
+       cursor: auto;
+       color: #333;
+}
+
+#wp-link li.selected {
+       background: #ddd;
+       color: #333;
+}
+
+#wp-link li.selected .item-title {
+       font-weight: bold;
+}
+
+#wp-link .item-title {
+       display: inline-block;
+       width: 80%;
+}
+
+#wp-link .item-info {
+       text-transform: uppercase;
+       color: #666;
+       font-size: 11px;
+       position: absolute;
+       right: 5px;
+       top: 4px;
+       bottom: 0;
+}
+
+#wp-link #search-results {
+       display: none;
+}
+
+#wp-link  #search-panel {
+       float: left;
+       width: 100%;
+}
+
+#wp-link .river-waiting {
+       display: none;
+       padding: 10px 0;
+}
+
+#wp-link .river-waiting .spinner {
+       margin: 0 auto;
+       display: block;
+}
+
+#wp-link .submitbox {
+       padding: 5px 10px;
+       font-size: 11px;
+       overflow: auto;
+       height: 29px;
+}
+
+#wp-link-cancel {
+       line-height: 25px;
+       float: left;
+}
+
+#wp-link-update {
+       line-height: 23px;
+       float: right;
+}
+
+/*
+ * Based on:
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+ * jQuery UI Resizable
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+
+/*
+ * jQuery UI Dialog
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
+.wp-dialog .ui-dialog-titlebar { position: relative; }
+.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
+.wp-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; }
+.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+
+/* WP jQuery Dialog Theme */
+.wp-dialog {
+       border: 1px solid #999;
+       -webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+       box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+}
+
+.wp-dialog .ui-dialog-title {
+       display: block;
+       text-align: center;
+       padding: 1px 0 2px;
+}
+
+.wp-dialog .ui-dialog-titlebar {
+       padding: 0 1em;
+       background-color: #444;
+       font-weight: bold;
+       font-size: 11px;
+       line-height: 18px;
+       color: #e5e5e5;
+}
+
+.wp-dialog {
+       background-color: #fff;
+       -webkit-border-top-left-radius: 4px;
+       -webkit-border-top-right-radius: 4px;
+       border-top-left-radius: 4px;
+       border-top-right-radius: 4px;
+}
+
+.wp-dialog .ui-dialog-titlebar {
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-left-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.wp-dialog .ui-dialog-titlebar-close {
+       position: absolute;
+       width: 29px;
+       height: 16px;
+       top: 2px;
+       right: 6px;
+       background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
+       padding: 0;
+}
+
+.wp-dialog .ui-dialog-titlebar-close:hover,
+.wp-dialog .ui-dialog-titlebar-close:focus {
+       background-position: -87px -32px;
+}
+
+.ui-widget-overlay {
+       background-color: #000;
+       opacity: 0.6;
+       filter: alpha(opacity=60);
+}
+
+/*
+RTL
+*/
+.rtl #wp-link #internal-toggle {
+       padding-right: 18px;
+       padding-left: 0;
+}
+
+.rtl #wp-link label span {
+       text-align: left;
+       padding-left: 5px;
+       padding-right: 0;
+}
+
+.rtl #wp-link .link-search-wrapper span {
+       float: right;
+}
+
+.rtl #wp-link .link-search-wrapper input[type="text"] {
+       float: right;
+}
+
+.rtl #wp-link .link-target {
+       margin: 0 87px 0 0;
+}
+
+.rtl #wp-link .item-info {
+       left: 5px;
+       right: auto;
+       top: 4px;
+       bottom: 0;
+}
+
+.rtl #wp-link #search-panel {
+       float: right;
+}
+
+.rtl #wp-link-cancel {
+       float: right;
+}
+
+.rtl #wp-link-update {
+       float: left;
+}
+
+.rtl #wp-link .toggle-arrow {
+       background-position: top right;
+}
+
+.rtl #wp-link .toggle-arrow-active {
+       background-position: center right;
+}
+
+.rtl .wp_themeSkin .mceListBox .mceText {
+       text-align: right;
+}
+
+.rtl .wp_themeSkin .mceNoIcons a .mceText {
+       padding-right: 10px;
+       padding-left: 25px;
+}
+
+.rtl .mceListBoxMenu.mceNoIcons {
+       margin-left: -14px;
+}
+
+.clearlooks2 .mceFocus .mceTop .mceLeft {
+       background: #444444;
+       border-left: 1px solid #999;
+       border-top: 1px solid #999;
+       -webkit-border-top-left-radius: 3px;
+       border-top-left-radius: 3px;
+}
+
+.clearlooks2 .mceFocus .mceTop .mceRight {
+       background: #444444;
+       border-right: 1px solid #999;
+       border-top: 1px solid #999;
+       -webkit-border-top-right-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.clearlooks2 .mceMiddle .mceLeft {
+       background: #f1f1f1;
+       border-left: 1px solid #999;
+}
+
+.clearlooks2 .mceMiddle .mceRight {
+       background: #f1f1f1;
+       border-right: 1px solid #999;
+}
+
+.clearlooks2 .mceBottom {
+       background: #f1f1f1;
+       border-bottom: 1px solid #999;
+}
+
+.clearlooks2 .mceBottom .mceLeft {
+       background: #f1f1f1;
+       border-bottom: 1px solid #999;
+       border-left: 1px solid #999;
+}
+
+.clearlooks2 .mceBottom .mceCenter {
+       background: #f1f1f1;
+       border-bottom: 1px solid #999;
+}
+
+.clearlooks2 .mceBottom .mceRight {
+       background: #f1f1f1;
+       border-bottom: 1px solid #999;
+       border-right: 1px solid #999;
+}
+
+.clearlooks2 .mceFocus .mceTop span {
+       color: #e5e5e5;
+}
+
+
+/* Distraction Free Writing mode
+ * =Overlay Styles
+-------------------------------------------------------------- */
+.fullscreen-overlay {
+       z-index: 149999;
+       display: none;
+       position: fixed;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       filter: inherit;
+}
+
+.fullscreen-active .fullscreen-overlay,
+.fullscreen-active #wp-fullscreen-body {
+       display: block;
+}
+
+.fullscreen-fader {
+       z-index: 200000;
+}
+
+.fullscreen-active .fullscreen-fader {
+       display: none;
+}
+
+/* =Overlay Body
+-------------------------------------------------------------- */
+#wp-fullscreen-body {
+       width: 100%;
+       z-index: 150005;
+       display: none;
+       position: absolute;
+       top: 0;
+       left: 0;
+       font-size: 12px;
+}
+
+#wp-fullscreen-wrap {
+       margin: 0 auto 50px;
+       position: relative;
+       padding-top: 60px;
+}
+
+#wp-fullscreen-title {
+    font-size: 1.7em;
+    line-height: 100%;
+    outline: medium none;
+    padding: 6px 7px;
+    width: 100%;
+    margin-bottom: 30px;
+}
+
+#wp-fullscreen-container {
+       padding: 4px 10px 50px;
+}
+
+#wp-fullscreen-title,
+#wp-fullscreen-container {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+       border: 1px dashed transparent;
+       background: transparent;
+       -moz-transition-property: border-color;
+       -moz-transition-duration: 0.6s;
+       -webkit-transition-property: border-color;
+       -webkit-transition-duration: 0.6s;
+       -o-transition-property: border-color;
+       -o-transition-duration: 0.6s;
+       transition-property: border-color;
+       transition-duration: 0.6s;
+}
+
+#wp_mce_fullscreen {
+       width: 100%;
+       min-height: 300px;
+       border: 0;
+       background: transparent;
+       font-family: Consolas, Monaco, monospace;
+       line-height: 1.6em;
+       padding: 0;
+       overflow-y: hidden;
+       outline: none;
+       resize: none;
+}
+
+#wp-fullscreen-tagline {
+       color: #BBBBBB;
+       font-size: 18px;
+       float: right;
+       padding-top: 5px;
+}
+
+/* =Top bar
+-------------------------------------------------------------- */
+#fullscreen-topbar {
+       position: fixed;
+       top: 0;
+       left: 0;
+       z-index: 150050;
+       border-bottom-style: solid;
+       border-bottom-width: 1px;
+       min-width: 800px;
+       width: 100%;
+       height: 40px;
+}
+
+#wp-fullscreen-toolbar {
+       padding: 6px 10px 0;
+       clear: both;
+       max-width: 1100px;
+       min-width: 820px;
+       margin: 0 auto;
+}
+
+#wp-fullscreen-mode-bar,
+#wp-fullscreen-button-bar,
+#wp-fullscreen-close,
+#wp-fullscreen-count {
+       float: left;
+}
+
+#wp-fullscreen-save {
+       float: right;
+       padding: 2px 2px 0 5px;
+}
+
+#wp-fullscreen-count,
+#wp-fullscreen-close {
+       padding-top: 5px;
+}
+
+#wp-fullscreen-central-toolbar {
+       margin: auto;
+       padding: 0;
+}
+
+#wp-fullscreen-buttons > div {
+       float: left;
+}
+
+#wp-fullscreen-mode-bar {
+       padding: 1px 14px 0 0;
+}
+
+#wp-fullscreen-modes a {
+       display: block;
+       font-size: 11px;
+       text-decoration: none;
+       float: left;
+       margin: 1px 0 0 0;
+       padding: 2px 6px 2px;
+       border-width: 1px 1px 1px 0;
+       border-style: solid;
+       border-color: #bbb;
+       color: #777;
+       text-shadow: 0 1px 0 #fff;
+       background-color: #f4f4f4;
+       background: #f4f4f4;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9));
+       background-image: -webkit-linear-gradient(bottom, #e4e4e4, #f9f9f9);
+       background-image:    -moz-linear-gradient(bottom, #e4e4e4, #f9f9f9);
+       background-image:      -o-linear-gradient(bottom, #e4e4e4, #f9f9f9);
+       background-image: linear-gradient(to top, #e4e4e4, #f9f9f9);
+}
+
+#wp-fullscreen-modes a:hover,
+.wp-html-mode #wp-fullscreen-modes a:last-child,
+.wp-tmce-mode #wp-fullscreen-modes a:first-child {
+       color: #333;
+       border-color: #999;
+       background: #eee;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#e4e4e4), to(#f9f9f9));
+       background-image: -webkit-linear-gradient(top, #e4e4e4, #f9f9f9);
+       background-image:    -moz-linear-gradient(top, #e4e4e4, #f9f9f9);
+       background-image:      -o-linear-gradient(top, #e4e4e4, #f9f9f9);
+       background-image: linear-gradient(to bottom, #e4e4e4, #f9f9f9);
+}
+
+#wp-fullscreen-modes a:first-child {
+       border-width: 1px;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+#wp-fullscreen-modes a:last-child {
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-bottom-right-radius: 3px;
+       border-top-right-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+#wp-fullscreen-buttons .active a {
+       background: inherit;
+}
+
+#wp-fullscreen-buttons .hidden {
+       display: none;
+}
+
+#wp-fullscreen-buttons .disabled {
+       opacity: 0.5;
+}
+
+.wp-html-mode #wp-fullscreen-buttons div {
+       display: none;
+}
+
+.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both {
+       display: block;
+}
+
+#fullscreen-topbar.fullscreen-make-sticky {
+       display: block !important;
+}
+
+#wp-fullscreen-save img {
+       vertical-align: middle;
+}
+
+#wp-fullscreen-save img,
+#wp-fullscreen-save span {
+       padding-right: 4px;
+       display: none;
+}
+
+#wp-fullscreen-buttons #wp_fs_image span.mce_image {
+       background-image: url('../../wp-admin/images/media-button.png');
+       background-position: 2px 2px;
+}
+
+/* =Thickbox Adjustments
+-------------------------------------------------------------- */
+.fullscreen-active #TB_overlay {
+       z-index: 150100;
+}
+
+.fullscreen-active #TB_window {
+       z-index: 150102;
+}
+
+/* =TinyMCE Adjustments
+-------------------------------------------------------------- */
+#wp_mce_fullscreen_ifr {
+       background: transparent;
+}
+
+#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst {
+       display : none;
+}
+
+#wp-fullscreen-container .wp_themeSkin table td {
+       vertical-align: top;
+}
+
+/* Colors */
+.fullscreen-overlay {
+       background: #fff;
+}
+
+.wp-fullscreen-focus #wp-fullscreen-title,
+.wp-fullscreen-focus #wp-fullscreen-container {
+       border-color: #ccc;
+}
+
+#fullscreen-topbar {
+       border-bottom-color: #DFDFDF;
+       background: #f1f1f1;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9));
+       background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image:    -moz-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image:      -o-linear-gradient(bottom, #ececec, #f9f9f9);
+       background-image: linear-gradient(to top, #ececec, #f9f9f9);
+}
+
+/* =CSS 3 transitions
+-------------------------------------------------------------- */
+
+.fade-1000,
+.fade-600,
+.fade-400,
+.fade-300 {
+       opacity: 0;
+       -moz-transition-property: opacity;
+       -webkit-transition-property: opacity;
+       -o-transition-property: opacity;
+       transition-property: opacity;
+}
+
+.fade-1000 {
+       -moz-transition-duration: 1s;
+       -webkit-transition-duration: 1s;
+       -o-transition-duration: 1s;
+       transition-duration: 1s;
+}
+
+.fade-600 {
+       -moz-transition-duration: 0.6s;
+       -webkit-transition-duration: 0.6s;
+       -o-transition-duration: 0.6s;
+       transition-duration: 0.6s;
+}
+
+.fade-400 {
+       -moz-transition-duration: 0.4s;
+       -webkit-transition-duration: 0.4s;
+       -o-transition-duration: 0.4s;
+       transition-duration: 0.4s;
+}
+
+.fade-300 {
+       -moz-transition-duration: 0.3s;
+       -webkit-transition-duration: 0.3s;
+       -o-transition-duration: 0.3s;
+       transition-duration: 0.3s;
+}
+
+.fade-trigger {
+       opacity: 1;
+}
+
+/* Distraction Free Writing - RTL
+ * =Overlay Styles
+-------------------------------------------------------------- */
+
+/* No RTL for now, this space intentionally left blank */
+
+/* =Overlay Body
+-------------------------------------------------------------- */
+.rtl #wp-fullscreen-tagline {
+       float: left;
+}
+
+/* =Top bar
+-------------------------------------------------------------- */
+.rtl #fullscreen-topbar {
+       left:auto;
+       right: 0;
+}
+
+.rtl #wp-fullscreen-mode-bar,
+.rtl #wp-fullscreen-button-bar,
+.rtl #wp-fullscreen-close,
+.rtl #wp-fullscreen-count {
+       float: right;
+}
+
+.rtl #wp-fullscreen-save {
+       float: left;
+}
+
+.rtl #wp-fullscreen-save {
+       padding: 2px 5px 0 2px;
+}
+
+.rtl #wp-fullscreen-buttons > div {
+       float: right;
+}
+
+.rtl #wp-fullscreen-mode-bar {
+       padding: 1px 0 0 14px;
+}
+
+.rtl #wp-fullscreen-modes a {
+       float: right;
+       border-width: 1px 0 1px 1px;
+}
+
+.rtl #wp-fullscreen-modes a:first-child {
+       -webkit-border-top-left-radius: 0;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: 3px;
+       border-width: 1px;
+       border-top-left-radius: 0;
+       border-top-right-radius: 3px;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 3px;
+}
+
+.rtl #wp-fullscreen-modes a:last-child {
+       -webkit-border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-right-radius: 0;
+       border-top-left-radius: 3px;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 3px;
+}
+
+.rtl #wp-fullscreen-save img,
+.rtl #wp-fullscreen-save span {
+       padding-right: 0;
+       padding-left: 4px;
+}
+
+/* =Thickbox Adjustments
+-------------------------------------------------------------- */
+/* No RTL for now, this space intentionally left blank */
+
+
+/* =TinyMCE Adjustments
+-------------------------------------------------------------- */
+/* No RTL for now, this space intentionally left blank */
+
+
+/* HiDPI */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       .wp_themeSkin span.mce_undo,
+       .wp_themeSkin span.mce_redo,
+       .wp_themeSkin span.mce_bullist,
+       .wp_themeSkin span.mce_numlist,
+       .wp_themeSkin span.mce_blockquote,
+       .wp_themeSkin span.mce_charmap,
+       .wp_themeSkin span.mce_bold,
+       .wp_themeSkin span.mce_italic,
+       .wp_themeSkin span.mce_underline,
+       .wp_themeSkin span.mce_justifyleft,
+       .wp_themeSkin span.mce_justifyright,
+       .wp_themeSkin span.mce_justifycenter,
+       .wp_themeSkin span.mce_justifyfull,
+       .wp_themeSkin span.mce_indent,
+       .wp_themeSkin span.mce_outdent,
+       .wp_themeSkin span.mce_link,
+       .wp_themeSkin span.mce_unlink,
+       .wp_themeSkin span.mce_help,
+       .wp_themeSkin span.mce_removeformat,
+       .wp_themeSkin span.mce_fullscreen,
+       .wp_themeSkin span.mce_wp_fullscreen,
+       .wp_themeSkin span.mce_media,
+       .wp_themeSkin span.mce_pastetext,
+       .wp_themeSkin span.mce_pasteword,
+       .wp_themeSkin span.mce_wp_help,
+       .wp_themeSkin span.mce_wp_adv,
+       .wp_themeSkin span.mce_wp_more,
+       .wp_themeSkin span.mce_strikethrough,
+       .wp_themeSkin span.mce_spellchecker,
+       .wp_themeSkin span.mce_forecolor,
+       .wp_themeSkin .mce_forecolorpicker,
+       .wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,
+       .wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,
+       .wp_themeSkin .mceSplitButton span.mce_numlist,
+       .wp_themeSkin .mceSplitButton span.mce_bullist {
+               background-image: url('../images/wpicons-2x.png?ver=20120720');
+               background-size: 560px 40px;
+       }
+
+       .wp-media-buttons .add_media span.wp-media-buttons-icon,
+       #wp-fullscreen-buttons #wp_fs_image span.mce_image {
+               background-image: url('../../wp-admin/images/media-button-2x.png');
+               background-size: 16px 16px;
+       }
+
+       .wp_themeSkin .mceListBox .mceOpen,
+       .wp_themeSkin .mceListBoxHover .mceOpen,
+       .wp_themeSkin .mceListBoxSelected .mceOpen,
+       .wp_themeSkin table.mceListBoxEnabled .mceOpen {
+               background-image: url('../images/down_arrow-2x.gif');
+               background-size: 10px 20px;
+       }
+
+       .wp_themeSkin .mceSplitButtonEnabled a.mceOpen,
+       .wp_themeSkin .mceSplitButtonSelected a.mceOpen,
+       .wp_themeSkin .mceSplitButtonActive a.mceOpen,
+       .wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen {
+               background-image: url('../images/down_arrow-2x.gif');
+               background-size: 10px 20px;
+       }
+
+       #wp-link .toggle-arrow {
+               background: transparent url('../images/toggle-arrow-2x.png') top left no-repeat;
+               background-size: 19px 69px;
+       }
+}
+
diff --git a/wp-includes/css/editor.dev.css b/wp-includes/css/editor.dev.css
deleted file mode 100644 (file)
index 5a9f428..0000000
+++ /dev/null
@@ -1,2021 +0,0 @@
-
-/*------------------------------------------------------------------------------
- TinyMCE and Quicklinks toolbars
-------------------------------------------------------------------------------*/
-
-/* wp_theme/ui.css */
-.wp_themeSkin table,
-.wp_themeSkin tbody,
-.wp_themeSkin a,
-.wp_themeSkin img,
-.wp_themeSkin tr,
-.wp_themeSkin div,
-.wp_themeSkin td,
-.wp_themeSkin iframe,
-.wp_themeSkin span,
-.wp_themeSkin *,
-.wp_themeSkin .mceText {
-       border: 0;
-       margin: 0;
-       padding: 0;
-       white-space: nowrap;
-       text-decoration: none;
-       font-weight: normal;
-       cursor: default;
-       vertical-align: baseline;
-       width: auto;
-       border-collapse: separate;
-}
-
-.wp_themeSkin a:hover,
-.wp_themeSkin a:link,
-.wp_themeSkin a:visited,
-.wp_themeSkin a:active {
-       text-decoration: none;
-       font-weight: normal;
-       cursor: default;
-}
-
-.wp_themeSkin table td {
-       vertical-align: middle;
-}
-
-.wp_themeSkin *,
-.wp_themeSkin a:hover,
-.wp_themeSkin a:link,
-.wp_themeSkin a:visited,
-.wp_themeSkin a:active {
-       color: #000;
-}
-
-/* Containers */
-.wp_themeSkin table {}
-
-.wp_themeSkin iframe {
-       display: block;
-}
-
-.wp_themeSkin #mce_fullscreen_ifr {
-       background-color: #fff;
-}
-
-.wp_themeSkin .mceToolbar {
-       padding: 1px;
-}
-
-/* External */
-.wp_themeSkin .mceExternalToolbar {
-       position: absolute;
-       border-bottom: 0;
-       display: none;
-}
-
-.wp_themeSkin .mceExternalToolbar td.mceToolbar {
-       padding-right: 13px;
-}
-
-.wp_themeSkin .mceExternalClose {
-       position: absolute;
-       top: 3px;
-       right: 3px;
-       width: 7px;
-       height: 7px;
-       background: url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0;
-}
-
-/* Layout */
-.wp_themeSkin table.mceToolbar,
-.wp_themeSkin tr.mceFirst .mceToolbar tr td,
-.wp_themeSkin tr.mceLast .mceToolbar tr td {
-       border: 0;
-       margin: 0;
-       padding: 0;
-}
-
-.wp_themeSkin table.mceLayout {
-       border: 0;
-}
-
-.wp_themeSkin .mceStatusbar {
-       display: block;
-       font-family: Arial, "Bitstream Vera Sans", Helvetica, Verdana, sans-serif;
-       font-size: 12px;
-       line-height: 16px;
-       padding: 0 0 0 8px;
-       overflow: visible;
-       height: 20px;
-       border-top: 1px solid #dfdfdf;
-       color: #000;
-       background-color: #f5f5f5;
-}
-
-.rtl .wp_themeSkin .mceStatusbar {
-       padding: 0 8px 0 0;
-}
-
-.wp_themeSkin .mceStatusbar * {
-       color: #555;
-}
-
-.wp_themeSkin .mceStatusbar div {
-       float: left;
-       padding: 2px;
-}
-
-.rtl .wp_themeSkin .mceStatusbar div {
-       float: right;
-}
-
-.wp_themeSkin .mceStatusbar a.mceResize {
-       display: block;
-       float: right;
-       background: url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;
-       width: 20px;
-       height: 20px;
-       cursor: se-resize;
-}
-
-.rtl .wp_themeSkin .mceStatusbar a.mceResize {
-       float: left;
-}
-
-.wp_themeSkin .mceStatusbar a:hover {
-       text-decoration: underline;
-}
-
-.wp_themeSkin table.mceToolbar {
-       margin: 0 6px 2px;
-}
-
-.wp_themeSkin #content_toolbar1 {
-       margin-top: 2px;
-}
-
-.wp_themeSkin .mceToolbar .mceToolbarEndListBox span {
-       display: none;
-}
-
-.wp_themeSkin span.mceIcon,
-.wp_themeSkin img.mceIcon {
-       display: block;
-       width: 20px;
-       height: 20px;
-}
-
-.wp_themeSkin .mceIcon {
-       background: url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px;
-}
-
-/* Button */
-.wp_themeSkin .mceButton {
-       display: block;
-       width: 20px;
-       height: 20px;
-       cursor: default;
-       padding: 1px 2px;
-       margin: 1px;
-       -webkit-border-radius: 2px;
-       border-radius: 2px;
-       -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-}
-
-.wp_themeSkin a.mceButtonEnabled:hover {
-       background-image: inherit 0 -10px;
-}
-
-.wp_themeSkin .mceOldBoxModel a.mceButton span, .wp_themeSkin .mceOldBoxModel a.mceButton img {
-       margin: 0 0 0 1px;
-}
-
-.wp_themeSkin a.mceButton:active,
-.wp_themeSkin a.mceButtonActive,
-.wp_themeSkin a.mceButtonActive:hover,
-.wp_themeSkin a.mceButtonSelected {
-       -webkit-box-shadow:      0 1px 1px rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-}
-
-.wp_themeSkin .mceButtonDisabled .mceIcon {
-       opacity: 0.5;
-       filter: alpha(opacity=50);
-}
-
-/* Separator */
-.wp_themeSkin .mceSeparator {
-       height: 24px;
-       width: 1px;
-       display: block;
-       background: transparent;
-       overflow: hidden;
-       margin: 0 2px;
-}
-
-/* ListBox */
-.wp_themeSkin .mceListBox,
-.wp_themeSkin .mceListBox a {
-       display: block;
-}
-
-.wp_themeSkin .mceListBox .mceText {
-       padding: 1px 2px 1px 5px;
-       text-align: left;
-       text-decoration: none;
-       width: 70px;
-       -webkit-border-bottom-left-radius: 2px;
-       -webkit-border-top-left-radius: 2px;
-       border-bottom-left-radius: 2px;
-       border-top-left-radius: 2px;
-       -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       font-family: Arial, "Bitstream Vera Sans", Helvetica, Verdana, sans-serif;
-       font-size: 12px;
-       height: 20px;
-       line-height: 20px;
-       overflow: hidden;
-}
-
-.wp_themeSkin .mceListBox {
-       margin: 1px;
-       direction: ltr;
-}
-
-.wp_themeSkin .mceListBox .mceOpen {
-       width: 14px;
-       height: 20px;
-       border-collapse: separate;
-       padding: 1px;
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-top-left-radius: 0;
-       border-bottom-left-radius: 0;
-       border-top-left-radius: 0;
-       -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-}
-
-.wp_themeSkin .mceListBox .mceOpen span {
-       display: block;
-       width: 14px;
-       height: 20px;
-       background-image: url("../images/down_arrow.gif");
-       background-position: 2px 1px;
-       background-repeat: no-repeat;
-}
-
-.wp_themeSkin table.mceListBoxEnabled:hover .mceText,
-.wp_themeSkin .mceListBoxHover .mceText,
-.wp_themeSkin .mceListBoxSelected .mceText,
-.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp_themeSkin .mceListBoxHover .mceOpen,
-.wp_themeSkin .mceListBoxSelected .mceOpen {
-       background-image: none;
-}
-
-.wp_themeSkin .mceListBoxDisabled .mceText {
-       color: gray;
-}
-
-.wp_themeSkin .mceListBoxMenu {
-       overflow: auto;
-       overflow-x: hidden;
-}
-
-.wp_themeSkin .mceOldBoxModel .mceListBox .mceText {
-       height: 22px;
-}
-
-.wp_themeSkin select.mceListBox {
-       font-family: Arial, "Bitstream Vera Sans", Helvetica, Verdana, sans-serif;
-       font-size: 12px;
-       border-color: #B2B2B2;
-       background-color: #fff;
-}
-
-/* SplitButton */
-.wp_themeSkin .mceSplitButton a,
-.wp_themeSkin .mceSplitButton span {
-       display: block;
-       height: 20px;
-}
-
-.wp_themeSkin .mceSplitButton {
-       display: block;
-       margin: 1px;
-       direction: ltr;
-}
-
-.wp_themeSkin table.mceSplitButton td {
-       padding: 2px;
-       -webkit-border-radius: 2px;
-       border-radius: 2px;
-}
-
-.wp_themeSkin table.mceSplitButton td a {
-       -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-       box-shadow: 0 1px 0 rgba(0, 0, 0, 0.15), inset 0 0 2px 1px #fff;
-}
-
-.wp_themeSkin table.mceSplitButton:hover td {
-       background-image: inherit 0 -10px;
-}
-
-.wp_themeSkin .mceSplitButton a.mceAction {
-       height: 20px;
-       width: 20px;
-       padding: 1px 2px;
-}
-
-.wp_themeSkin .mceSplitButton span.mceAction {
-       background-image: url("../js/tinymce/themes/advanced/img/icons.gif");
-       background-repeat: no-repeat;
-       background-color: transparent;
-       width: 20px;
-}
-
-.wp_themeSkin .mceSplitButton a.mceOpen {
-       width: 10px;
-       height: 20px;
-       background-image: url("../images/down_arrow.gif");
-       background-position: 1px 2px;
-       background-repeat: no-repeat;
-       padding: 1px;
-       border-left: 0 none !important;
-}
-
-.wp_themeSkin .mceSplitButton span.mceOpen {
-       display: none;
-}
-
-.wp_themeSkin .mceSplitButtonDisabled .mceAction {
-       opacity: 0.3;
-       filter: alpha(opacity=30);
-}
-
-.wp_themeSkin .mceListBox a.mceText,
-.wp_themeSkin .mceSplitButton a.mceAction {
-       -webkit-border-bottom-left-radius: 2px;
-       -webkit-border-top-left-radius: 2px;
-       border-bottom-left-radius: 2px;
-       border-top-left-radius: 2px;
-}
-
-.wp_themeSkin .mceSplitButton a.mceOpen,
-.wp_themeSkin .mceListBox a.mceOpen {
-       -webkit-border-bottom-right-radius: 2px;
-       -webkit-border-top-right-radius: 2px;
-       border-bottom-right-radius: 2px;
-       border-top-right-radius: 2px;
-}
-
-.wp_themeSkin span.mce_undo,
-.wp_themeSkin span.mce_redo,
-.wp_themeSkin span.mce_bullist,
-.wp_themeSkin span.mce_numlist,
-.wp_themeSkin span.mce_blockquote,
-.wp_themeSkin span.mce_charmap,
-.wp_themeSkin span.mce_bold,
-.wp_themeSkin span.mce_italic,
-.wp_themeSkin span.mce_underline,
-.wp_themeSkin span.mce_justifyleft,
-.wp_themeSkin span.mce_justifyright,
-.wp_themeSkin span.mce_justifycenter,
-.wp_themeSkin span.mce_justifyfull,
-.wp_themeSkin span.mce_indent,
-.wp_themeSkin span.mce_outdent,
-.wp_themeSkin span.mce_link,
-.wp_themeSkin span.mce_unlink,
-.wp_themeSkin span.mce_help,
-.wp_themeSkin span.mce_removeformat,
-.wp_themeSkin span.mce_fullscreen,
-.wp_themeSkin span.mce_wp_fullscreen,
-.wp_themeSkin span.mce_media,
-.wp_themeSkin span.mce_pastetext,
-.wp_themeSkin span.mce_pasteword,
-.wp_themeSkin span.mce_wp_help,
-.wp_themeSkin span.mce_wp_adv,
-.wp_themeSkin span.mce_wp_more,
-.wp_themeSkin span.mce_strikethrough,
-.wp_themeSkin span.mce_spellchecker,
-.wp_themeSkin span.mce_forecolor,
-.wp_themeSkin .mce_forecolorpicker,
-.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,
-.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,
-.wp_themeSkin .mceSplitButton span.mce_numlist,
-.wp_themeSkin .mceSplitButton span.mce_bullist {
-       background-image: url(../images/wpicons.png);
-}
-
-/* ColorSplitButton */
-.wp_themeSkin div.mceColorSplitMenu table {
-       background-color: #ebebeb;
-       border-color: #B2B2B2;
-}
-
-.wp_themeSkin .mceColorSplitMenu td {
-       padding: 2px;
-}
-
-.wp_themeSkin .mceColorSplitMenu a {
-       display: block;
-       width: 9px;
-       height: 9px;
-       overflow: hidden;
-       border-color: #B2B2B2;
-}
-
-.wp_themeSkin .mceColorSplitMenu td.mceMoreColors {
-       padding: 1px 3px 1px 1px;
-}
-
-.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
-       width: 100%;
-       height: auto;
-       text-align: center;
-       font-family: Tahoma,Verdana,Arial,Helvetica;
-       font-size: 11px;
-       line-height: 20px;
-       border-color: #fff;
-}
-
-.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {}
-.wp_themeSkin a.mceMoreColors:hover {}
-.wp_themeSkin .mceColorPreview {
-       margin: -5px 0 0 2px;
-       width: 16px;
-       height: 4px;
-       overflow: hidden;
-}
-
-/* Menu */
-.wp_themeSkin .mceMenu {
-       position: absolute;
-       left: 0;
-       top: 0;
-       z-index: 1000;
-       border-color: #ddd;
-}
-
-.wp_themeSkin .mceNoIcons span.mceIcon {
-       width: 0;
-}
-
-.wp_themeSkin .mceNoIcons a .mceText {
-       padding-left: 10px;
-}
-
-.wp_themeSkin .mceMenu table {
-       background-color: #ebeaeb;
-}
-
-.wp_themeSkin .mceMenu a,
-.wp_themeSkin .mceMenu span,
-.wp_themeSkin .mceMenu {
-       display: block;
-}
-
-.wp_themeSkin .mceMenu td {
-       height: 20px;overflow: hidden;
-}
-
-.wp_themeSkin .mceMenu a {
-       position: relative;
-       padding: 3px 0 4px 0;
-       text-decoration: none !important;
-}
-
-.wp_themeSkin .mceMenu .mceText {
-       position: relative;
-       display: block;
-       font-family: Tahoma,Verdana,Arial,Helvetica;
-       cursor: default;
-       margin: 0;
-       padding: 0 25px;
-       color: #000;
-}
-
-.wp_themeSkin .mceMenu span.mceText, .wp_themeSkin .mceMenu .mcePreview {
-       font-size: 12px;
-}
-
-.wp_themeSkin .mceMenu pre.mceText {
-       font-family: Monospace;
-}
-
-.wp_themeSkin .mceMenu .mceIcon {
-       position: absolute;
-       top: 0;
-       left: 0;
-       width: 22px;
-}
-
-.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
-.wp_themeSkin .mceMenu .mceMenuItemActive {
-       background-color: #f5f5f5;
-}
-
-.wp_themeSkin td.mceMenuItemSeparator {
-       height: 1px;
-       background-color: #aaa;
-}
-
-.wp_themeSkin .mceMenuItemTitle a {
-       border-top: 0;
-       border-right: 0;
-       border-left: 0;
-       border-bottom: 1px solid #aaa;
-       text-decoration: none !important;
-       background-color: #ccc;
-}
-
-.wp_themeSkin .mceMenuItemTitle span.mceText {
-       font-weight: bold;
-       padding-left: 4px;
-       color: #000;
-}
-
-.wp_themeSkin .mceMenuItemSelected .mceIcon {
-       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");
-       color: #888;
-}
-
-.wp_themeSkin .mceNoIcons .mceMenuItemSelected a {
-       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center;
-}
-
-.wp_themeSkin .mceMenu span.mceMenuLine {
-       display: none;
-}
-
-.wp_themeSkin .mceMenuItemSub a {
-       background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right;
-}
-
-/* Progress,Resize */
-.wp_themeSkin .mceBlocker {
-       position: absolute;
-       left: 0;
-       top: 0;
-       z-index: 1000;
-       opacity: 0.5;
-       filter: alpha(opacity=50);
-       background: #FFF;
-}
-
-.wp_themeSkin .mceProgress {
-       position: absolute;
-       left: 0;
-       top: 0;
-       z-index: 1001;
-       background: url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;
-       width: 32px;
-       height: 32px;
-       margin: -16px 0 0 -16px;
-}
-
-.wp_themeSkin .mcePlaceHolder {
-       border: 1px dotted gray;
-}
-
-/* Formats */
-.wp_themeSkin .mce_p span.mceText {}
-.wp_themeSkin .mce_address span.mceText {
-       font-style: italic;
-}
-
-.wp_themeSkin .mce_pre span.mceText {
-       font-family: monospace;
-}
-
-.wp_themeSkin .mce_h1 span.mceText {
-       font-weight: bolder;
-       font-size: 17px;
-}
-
-.wp_themeSkin .mce_h2 span.mceText {
-       font-weight: bolder;
-       font-size: 16px;
-}
-
-.wp_themeSkin .mce_h3 span.mceText {
-       font-weight: bolder;
-       font-size: 15px;
-}
-
-.wp_themeSkin .mce_h4 span.mceText {
-       font-weight: bolder;
-       font-size: 14px;
-}
-
-.wp_themeSkin .mce_h5 span.mceText {
-       font-weight: bolder;
-       font-size: 13px;
-}
-
-.wp_themeSkin .mce_h6 span.mceText {
-       font-weight: bolder;
-       font-size: 12px;
-}
-
-/* Theme */
-.wp_themeSkin span.mce_undo {background-position:-500px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,
-.wp_themeSkin .mceButtonActive span.mce_undo {background-position:-500px 0}
-
-.wp_themeSkin span.mce_redo {background-position:-480px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,
-.wp_themeSkin .mceButtonActive span.mce_redo {background-position:-480px 0}
-
-.wp_themeSkin span.mce_bullist {background-position:-40px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,
-.wp_themeSkin .mceButtonActive span.mce_bullist,
-.wp_themeSkin .mceSplitButton:hover span.mce_bullist {background-position:-40px 0}
-
-.wp_themeSkin span.mce_numlist {background-position:-61px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,
-.wp_themeSkin .mceButtonActive span.mce_numlist,
-.wp_themeSkin .mceSplitButton:hover span.mce_numlist {background-position:-61px 0}
-
-.wp_themeSkin span.mce_blockquote {background-position:-80px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,
-.wp_themeSkin .mceButtonActive span.mce_blockquote {background-position:-80px 0}
-
-.wp_themeSkin span.mce_charmap {background-position:-420px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,
-.wp_themeSkin .mceButtonActive span.mce_charmap {background-position:-420px 0}
-
-.wp_themeSkin span.mce_bold {background-position:-1px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,
-.wp_themeSkin .mceButtonActive span.mce_bold {background-position:-1px 0}
-
-.wp_themeSkin span.mce_italic {background-position:-21px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,
-.wp_themeSkin .mceButtonActive span.mce_italic {background-position:-21px 0}
-
-.wp_themeSkin span.mce_underline {background-position:-280px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,
-.wp_themeSkin .mceButtonActive span.mce_underline {background-position:-280px 1px}
-
-.wp_themeSkin span.mce_justifyleft {background-position:-100px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,
-.wp_themeSkin .mceButtonActive span.mce_justifyleft {background-position:-100px 1px}
-
-.wp_themeSkin span.mce_justifyright {background-position:-141px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,
-.wp_themeSkin .mceButtonActive span.mce_justifyright {background-position:-141px 1px}
-
-.wp_themeSkin span.mce_justifycenter {background-position:-120px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,
-.wp_themeSkin .mceButtonActive span.mce_justifycenter {background-position:-120px 1px}
-
-.wp_themeSkin span.mce_justifyfull {background-position:-300px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,
-.wp_themeSkin .mceButtonActive span.mce_justifyfull {background-position:-300px 1px}
-
-.wp_themeSkin span.mce_indent {background-position:-461px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,
-.wp_themeSkin .mceButtonActive span.mce_indent {background-position:-461px 1px}
-
-.wp_themeSkin span.mce_outdent {background-position:-440px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,
-.wp_themeSkin .mceButtonActive span.mce_outdent {background-position:-440px 1px}
-
-.wp_themeSkin span.mce_link {background-position:-161px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_link,
-.wp_themeSkin .mceButtonActive span.mce_link {background-position:-161px 0}
-
-.wp_themeSkin span.mce_unlink {background-position:-180px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,
-.wp_themeSkin .mceButtonActive span.mce_unlink {background-position:-180px 0}
-
-.wp_themeSkin span.mce_help {background-position:-521px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_help,
-.wp_themeSkin .mceButtonActive span.mce_help {background-position:-521px 0}
-
-.wp_themeSkin span.mce_removeformat {background-position:-381px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,
-.wp_themeSkin .mceButtonActive span.mce_removeformat {background-position:-381px 0}
-
-.wp_themeSkin span.mce_strikethrough {background-position:-540px -18px;}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,
-.wp_themeSkin .mceButtonActive span.mce_strikethrough {background-position:-540px 0}
-
-.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor {background-position:-321px -22px}
-.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,
-.wp_themeSkin .mceSplitButtonActive span.mce_forecolor {background-position:-321px -2px}
-
-.wp_themeSkin .mce_forecolorpicker {background-position:-320px -20px}
-
-/* Plugins in WP */
-.wp_themeSkin span.mce_fullscreen {background-position:-240px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,
-.wp_themeSkin .mceButtonActive span.mce_fullscreen {background-position:-240px 0}
-
-.wp_themeSkin span.mce_wp_fullscreen {background-position:-240px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,
-.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen {background-position:-240px 0}
-
-.wp_themeSkin span.mce_media {background-position:-401px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_media,
-.wp_themeSkin .mceButtonActive span.mce_media {background-position:-401px 0}
-
-.wp_themeSkin span.mce_pastetext {background-position:-340px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,
-.wp_themeSkin .mceButtonActive span.mce_pastetext {background-position:-340px 0}
-
-.wp_themeSkin span.mce_pasteword {background-position:-360px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,
-.wp_themeSkin .mceButtonActive span.mce_pasteword {background-position:-360px 0}
-
-.wp_themeSkin span.mce_spellchecker {background-position:-220px -19px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,
-.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,
-.wp_themeSkin .mceButtonActive span.mce_spellchecker,
-.wp_themeSkin .mceSplitButtonActive span.mce_spellchecker {background-position:-220px 1px}
-
-.wp_themeSkin span.mce_wp_help {background-position:-521px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,
-.wp_themeSkin .mceButtonActive span.mce_wp_help {background-position:-521px 0}
-
-.wp_themeSkin span.mce_wp_adv {background-position:-260px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,
-.wp_themeSkin .mceButtonActive span.mce_wp_adv {background-position:-260px 0}
-
-.wp_themeSkin span.mce_wp_more {background-position:-201px -20px}
-.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,
-.wp_themeSkin .mceButtonActive span.mce_wp_more {background-position:-201px 0}
-
-/* Default icons */
-.wp_themeSkin span.mce_cleanup {background-position:-380px -20px}
-.wp_themeSkin span.mce_anchor {background-position:-200px 0}
-.wp_themeSkin span.mce_sub {background-position:-600px 0}
-.wp_themeSkin span.mce_sup {background-position:-620px 0}
-.wp_themeSkin span.mce_newdocument {background-position:-520px 0}
-.wp_themeSkin span.mce_image {background-position:-380px 0}
-.wp_themeSkin span.mce_code {background-position:-260px 0}
-.wp_themeSkin span.mce_hr {background-position:-360px 0}
-.wp_themeSkin span.mce_visualaid {background-position:-660px 0}
-.wp_themeSkin span.mce_paste {background-position:-560px 0}
-.wp_themeSkin span.mce_copy {background-position:-700px 0}
-.wp_themeSkin span.mce_cut {background-position:-680px 0}
-.wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
-.wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.wp_themeSkin span.mce_advhr {background-position:-0px -20px}
-.wp_themeSkin span.mce_ltr {background-position:-20px -20px}
-.wp_themeSkin span.mce_rtl {background-position:-40px -20px}
-.wp_themeSkin span.mce_emotions {background-position:-60px -20px}
-.wp_themeSkin span.mce_fullpage {background-position:-80px -20px}
-.wp_themeSkin span.mce_iespell {background-position:-120px -20px}
-.wp_themeSkin span.mce_insertdate {background-position:-140px -20px}
-.wp_themeSkin span.mce_inserttime {background-position:-160px -20px}
-.wp_themeSkin span.mce_absolute {background-position:-180px -20px}
-.wp_themeSkin span.mce_backward {background-position:-200px -20px}
-.wp_themeSkin span.mce_forward {background-position:-220px -20px}
-.wp_themeSkin span.mce_insert_layer {background-position:-240px -20px}
-.wp_themeSkin span.mce_insertlayer {background-position:-260px -20px}
-.wp_themeSkin span.mce_movebackward {background-position:-280px -20px}
-.wp_themeSkin span.mce_moveforward {background-position:-300px -20px}
-.wp_themeSkin span.mce_nonbreaking {background-position:-340px -20px}
-.wp_themeSkin span.mce_selectall {background-position:-400px -20px}
-.wp_themeSkin span.mce_preview {background-position:-420px -20px}
-.wp_themeSkin span.mce_print {background-position:-440px -20px}
-.wp_themeSkin span.mce_cancel {background-position:-460px -20px}
-.wp_themeSkin span.mce_save {background-position:-480px -20px}
-.wp_themeSkin span.mce_replace {background-position:-500px -20px}
-.wp_themeSkin span.mce_search {background-position:-520px -20px}
-.wp_themeSkin span.mce_styleprops {background-position:-560px -20px}
-.wp_themeSkin span.mce_table {background-position:-580px -20px}
-.wp_themeSkin span.mce_cell_props {background-position:-600px -20px}
-.wp_themeSkin span.mce_delete_table {background-position:-620px -20px}
-.wp_themeSkin span.mce_delete_col {background-position:-640px -20px}
-.wp_themeSkin span.mce_delete_row {background-position:-660px -20px}
-.wp_themeSkin span.mce_col_after {background-position:-680px -20px}
-.wp_themeSkin span.mce_col_before {background-position:-700px -20px}
-.wp_themeSkin span.mce_row_after {background-position:-720px -20px}
-.wp_themeSkin span.mce_row_before {background-position:-740px -20px}
-.wp_themeSkin span.mce_merge_cells {background-position:-760px -20px}
-.wp_themeSkin span.mce_table_props {background-position:-980px -20px}
-.wp_themeSkin span.mce_row_props {background-position:-780px -20px}
-.wp_themeSkin span.mce_split_cells {background-position:-800px -20px}
-.wp_themeSkin span.mce_template {background-position:-820px -20px}
-.wp_themeSkin span.mce_visualchars {background-position:-840px -20px}
-.wp_themeSkin span.mce_abbr {background-position:-860px -20px}
-.wp_themeSkin span.mce_acronym {background-position:-880px -20px}
-.wp_themeSkin span.mce_attribs {background-position:-900px -20px}
-.wp_themeSkin span.mce_cite {background-position:-920px -20px}
-.wp_themeSkin span.mce_del {background-position:-940px -20px}
-.wp_themeSkin span.mce_ins {background-position:-960px -20px}
-.wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
-
-/* border */
-.wp_themeSkin .mceExternalToolbar,
-.wp_themeSkin .mceButton,
-.wp_themeSkin a.mceButtonEnabled:hover,
-.wp_themeSkin a.mceButtonActive,
-.wp_themeSkin a.mceButtonSelected,
-.wp_themeSkin .mceListBox .mceText,
-.wp_themeSkin .mceListBox .mceOpen,
-.wp_themeSkin table.mceListBoxEnabled:hover .mceText,
-.wp_themeSkin .mceListBoxHover .mceText,
-.wp_themeSkin .mceListBoxSelected .mceText,
-.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp_themeSkin .mceListBoxHover .mceOpen,
-.wp_themeSkin .mceListBoxSelected .mceOpen,
-.wp_themeSkin select.mceListBox,
-.wp_themeSkin .mceSplitButton a.mceAction,
-.wp_themeSkin .mceSplitButton a.mceOpen,
-.wp_themeSkin .mceSplitButton a.mceOpen:hover,
-.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
-.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
-.wp_themeSkin .mceSplitButton a.mceAction:hover,
-.wp_themeSkin div.mceColorSplitMenu table,
-.wp_themeSkin .mceColorSplitMenu a,
-.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,
-.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,
-.wp_themeSkin a.mceMoreColors:hover,
-.wp_themeSkin .mceMenu {
-       border-style: solid;
-       border-width: 1px;
-}
-
-.wp_themeSkin iframe {
-       background: transparent;
-}
-
-.wp_themeSkin .mceButton,
-.wp_themeSkin .mceListBox .mceText,
-.wp_themeSkin .mceListBox .mceOpen {
-       border-color: #ccc;
-       background-color: #eee; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */
-}
-
-.wp_themeSkin a.mceButtonEnabled:hover {
-       border-color: #a0a0a0;
-       background: #ddd; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */
-}
-
-.wp_themeSkin a.mceButton:active,
-.wp_themeSkin a.mceButtonEnabled:active,
-.wp_themeSkin a.mceButtonSelected:active,
-.wp_themeSkin a.mceButtonActive,
-.wp_themeSkin a.mceButtonActive:active,
-.wp_themeSkin a.mceButtonActive:hover {
-       background-color: #ddd; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #eee, #bbb); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #eee, #bbb); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #eee, #bbb); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(#bbb)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #eee, #bbb); /* new Webkit */
-       background-image: linear-gradient(bottom, #eee, #bbb); /* proposed W3C Markup */
-       border-color: #909090;
-}
-
-.wp_themeSkin .mceButtonDisabled {
-       border-color: #ccc !important;
-}
-
-.wp_themeSkin .mceListBox .mceOpen {
-       border-left: 0 !important;
-}
-
-.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp_themeSkin .mceListBoxHover .mceOpen,
-.wp_themeSkin .mceListBoxHover:active .mceOpen,
-.wp_themeSkin .mceListBoxSelected .mceOpen,
-.wp_themeSkin .mceListBoxSelected .mceText,
-.wp_themeSkin table.mceListBoxEnabled:active .mceText {
-       background: #ccc;
-       border-color: #999;
-}
-
-.wp_themeSkin table.mceListBoxEnabled:hover .mceText,
-.wp_themeSkin .mceListBoxHover .mceText,
-.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
-.wp_themeSkin .mceListBoxHover .mceOpen {
-       border-color: #909090;
-       background-color: #eee; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */
-}
-
-/* SplitButton */
-.wp_themeSkin .mceSplitButton a.mceAction,
-.wp_themeSkin .mceSplitButton a.mceOpen {
-       border-color: #ccc;
-}
-
-.wp_themeSkin .mceSplitButton a.mceOpen:hover,
-.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
-.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
-.wp_themeSkin .mceSplitButton a.mceAction:hover {
-       border-color: #909090;
-}
-
-.wp_themeSkin table.mceSplitButton td {
-       background-color: #eee; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */
-}
-
-.wp_themeSkin table.mceSplitButton:hover td {
-       background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */
-}
-
-.wp_themeSkin .mceSplitButtonActive {
-       background-color: #B2B2B2;
-}
-
-.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
-       border-color: #0A246A;
-       background-color: #B6BDD2;
-}
-
-.wp_themeSkin a.mceMoreColors:hover {
-       border-color: #0A246A;
-}
-
-.wp_themeSkin .mceMenuItemDisabled .mceText {
-       color: #888;
-}
-
-#mceModalBlocker {
-       background: #000;
-}
-
-/* WP specific */
-.wp-editor-area {
-       font-family: Consolas, Monaco, monospace;
-       padding: 10px;
-       line-height: 150%;
-       border: 0 none;
-       outline: none;
-       resize: vertical;
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
-.wp-editor-tools {
-       height: 30px;
-       padding: 0 10px;
-}
-
-.wp-editor-container {
-    border-width: 1px;
-       border-style: solid;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-color: #ccc #ccc #dfdfdf;
-}
-
-.wp-editor-container textarea.wp-editor-area {
-       width: 99.9%;
-}
-
-.quicktags-toolbar,
-.wp_themeSkin tr.mceFirst td.mceToolbar {
-       border-bottom: 1px solid #ccc;
-       background-color: #e9e9e9; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ddd, #e9e9e9); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ddd, #e9e9e9); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ddd, #e9e9e9); /* Opera */
-       background-image: -webkit-linear-gradient(bottom, #ddd, #e9e9e9); /* new Webkit */
-       background-image: linear-gradient(bottom, #ddd, #e9e9e9); /* proposed W3C Markup */
-}
-
-.wp-switch-editor {
-       height: 18px;
-    font: 13px/18px Arial,Helvetica,sans-serif normal;
-       margin: 5px 5px 0 0;
-       padding: 4px 5px 2px;
-       float: right;
-       cursor: pointer;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       background-color: #f1f1f1;
-       border-color: #dfdfdf #dfdfdf #ccc;
-       color: #999;
-}
-
-html[dir="rtl"] .wp-switch-editor {
-       float: left;
-}
-
-.wp-switch-editor:hover {
-       text-decoration: none !important;
-}
-
-.js .tmce-active .wp-editor-area {
-       color: white;
-}
-
-.tmce-active .quicktags-toolbar {
-        display: none;
-}
-
-.tmce-active .switch-tmce,
-.html-active .switch-html {
-       border-color: #ccc #ccc #e9e9e9;
-       background-color: #e9e9e9;
-       color: #333;
-}
-
-.wp-media-buttons {
-       line-height: 1;
-    padding: 9px 0 0;
-}
-
-.wp-media-buttons a {
-       text-decoration: none;
-       color: #333;
-       font-size: 12px;
-       vertical-align: bottom;
-}
-
-.wp-media-buttons img {
-       padding: 0 4px;
-       vertical-align: middle;
-}
-
-.quicktags-toolbar {
-       border-bottom-style: solid;
-       border-bottom-width: 1px;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       padding: 2px 8px 0;
-       min-height: 29px;
-}
-
-.quicktags-toolbar > div {
-       padding: 2px 4px 0;
-}
-
-.quicktags-toolbar input {
-       margin: 2px 1px 4px;
-       line-height: 18px;
-       display: inline-block;
-       min-width: 26px;
-       padding: 2px 4px;
-       font: 12px/18px Arial,Helvetica,sans-serif normal;
-       color: #464646;
-       border: 1px solid #C3C3C3;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       background-color: #eee;
-       background-image: -ms-linear-gradient(bottom, #e3e3e3, #fff);
-       background-image: -moz-linear-gradient(bottom, #e3e3e3, #fff);
-       background-image: -o-linear-gradient(bottom, #e3e3e3, #fff);
-       background-image: -webkit-linear-gradient(bottom, #e3e3e3, #fff);
-       background-image: linear-gradient(bottom, #e3e3e3, #fff);
-}
-
-.quicktags-toolbar input:hover {
-       border-color: #aaa;
-       background: #ddd;
-}
-
-.quicktags-toolbar input[value="link"] {
-       text-decoration: underline;
-}
-
-.quicktags-toolbar input[value="del"] {
-       text-decoration: line-through;
-}
-
-.quicktags-toolbar input[value="i"] {
-       font-style: italic;
-}
-
-.quicktags-toolbar input[value="b"] {
-       font-weight: bold;
-}
-
-#wp_editbtns,
-#wp_gallerybtns {
-       padding: 2px;
-       position: absolute;
-       display: none;
-       z-index: 999998;
-}
-
-#wp_editimgbtn,
-#wp_delimgbtn,
-#wp_editgallery,
-#wp_delgallery {
-       border-color: #999;
-       background-color: #eee;
-       margin: 2px;
-       padding: 2px;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-}
-
-#wp_editimgbtn:hover,
-#wp_delimgbtn:hover,
-#wp_editgallery:hover,
-#wp_delgallery:hover {
-       border-color: #555;
-       background-color: #ccc;
-}
-
-/*------------------------------------------------------------------------------
- wp-link
-------------------------------------------------------------------------------*/
-
-#wp-link {
-       background-color: #F5F5F5;
-       line-height: 1.4em;
-       font-size: 12px;
-}
-
-#wp-link ol,
-#wp-link ul {
-       list-style: none;
-       margin: 0;
-       padding: 0;
-}
-
-#wp-link input[type="text"] {
-       -webkit-box-sizing: border-box;
-}
-
-#wp-link input[type="text"],
-#wp-link textarea {
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 4px;
-       border-radius: 4px;
-       font-size: 12px;
-       margin: 1px;
-       padding: 3px;
-}
-
-#wp-link #link-options {
-       padding: 10px 0 14px;
-       border-bottom: 1px solid #dfdfdf;
-       margin: 0 6px 14px;
-}
-
-#wp-link p.howto {
-       margin: 3px;
-}
-
-#wp-link #internal-toggle {
-       display: inline-block;
-       cursor: pointer;
-       padding-left: 18px;
-}
-
-#wp-link .toggle-arrow {
-       background: transparent url( '../images/toggle-arrow.png' ) top left no-repeat;
-       height: 23px;
-       line-height: 23px;
-}
-
-#wp-link .toggle-arrow-active {
-       background-position: center left;
-}
-
-#wp-link label input[type="text"] {
-       width: 360px;
-       margin-top: 5px;
-}
-
-#wp-link label span {
-       display: inline-block;
-       width: 80px;
-       text-align: right;
-       padding-right: 5px;
-}
-
-#wp-link .link-search-wrapper {
-       margin: 5px 6px 9px;
-       display: block;
-       overflow: hidden;
-}
-
-#wp-link .link-search-wrapper span {
-       float: left;
-       margin-top: 9px;
-}
-
-#wp-link .link-search-wrapper input[type="text"] {
-       float: left;
-       width: 220px;
-}
-
-#wp-link .link-search-wrapper img.waiting {
-       margin: 8px 1px 0 4px;
-       float: left;
-       display: none;
-}
-
-#wp-link .link-target {
-       width: auto;
-       padding: 3px 0 0;
-       margin: 0 0 0 87px;
-       font-size: 11px;
-}
-
-#wp-link .query-results {
-       border: 1px #dfdfdf solid;
-       margin: 0 5px 5px;
-       background: #fff;
-       height: 185px;
-       overflow: auto;
-       position: relative;
-}
-
-#wp-link li,
-#wp-link .query-notice {
-       clear: both;
-       margin-bottom: 0;
-       border-bottom: 1px solid #f1f1f1;
-       color: #333;
-       padding: 4px 6px;
-       cursor: pointer;
-       position: relative;
-}
-
-#wp-link li:hover {
-       background: #eaf2fa;
-       color: #151515;
-}
-
-#wp-link li.unselectable {
-       border-bottom: 1px solid #dfdfdf;
-}
-
-#wp-link li.unselectable:hover {
-       background: #fff;
-       cursor: auto;
-       color: #333;
-}
-
-#wp-link li.selected {
-       background: #ddd;
-       color: #333;
-}
-
-#wp-link li.selected .item-title {
-       font-weight: bold;
-}
-
-#wp-link .item-title {
-       display: inline-block;
-       width: 80%;
-}
-
-#wp-link .item-info {
-       text-transform: uppercase;
-       color: #666;
-       font-size: 11px;
-       position: absolute;
-       right: 5px;
-       top: 4px;
-       bottom: 0;
-}
-
-#wp-link #search-results {
-       display: none;
-}
-
-#wp-link  #search-panel {
-       float: left;
-       width: 100%;
-}
-
-#wp-link .river-waiting {
-       display: none;
-       padding: 10px 0;
-}
-
-#wp-link .river-waiting img.waiting {
-       margin: 0 auto;
-       display: block;
-}
-
-#wp-link .submitbox {
-       padding: 5px 10px;
-       font-size: 11px;
-       overflow: auto;
-       height: 29px;
-}
-
-#wp-link-cancel {
-       line-height: 25px;
-       float: left;
-}
-
-#wp-link-update {
-       line-height: 23px;
-       float: right;
-}
-
-/*
- * Based on:
- * jQuery UI CSS Framework @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-/*
- * jQuery UI Resizable
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
-
-/*
- * jQuery UI Dialog
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
-.wp-dialog .ui-dialog-titlebar { position: relative; }
-.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
-.wp-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; }
-.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-
-/* WP jQuery Dialog Theme */
-.wp-dialog {
-       border: 1px solid #999;
-       -moz-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-       -webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-       box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-}
-
-.wp-dialog .ui-dialog-title {
-       display: block;
-       text-align: center;
-       padding: 1px 0 2px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
-       padding: 0 1em;
-       background-color: #444;
-       font-weight: bold;
-       font-size: 11px;
-       line-height: 18px;
-       color: #e5e5e5;
-}
-
-.wp-dialog {
-       background-color: #fff;
-       -webkit-border-top-left-radius: 4px;
-       -webkit-border-top-right-radius: 4px;
-       border-top-left-radius: 4px;
-       border-top-right-radius: 4px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-left-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.wp-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       width: 29px;
-       height: 16px;
-       top: 2px;
-       right: 6px;
-       background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
-       padding: 0;
-}
-
-.wp-dialog .ui-dialog-titlebar-close:hover,
-.wp-dialog .ui-dialog-titlebar-close:focus {
-       background-position: -87px -32px;
-}
-
-.ui-widget-overlay {
-       background-color: #000;
-       opacity: 0.6;
-       filter: alpha(opacity=60);
-}
-
-/*
-RTL
-*/
-.rtl #wp-link #internal-toggle {
-       padding-right: 18px;
-       padding-left: 0;
-}
-
-.rtl #wp-link label span {
-       text-align: left;
-       padding-left: 5px;
-       padding-right: 0;
-}
-
-.rtl #wp-link .link-search-wrapper span {
-       float: right;
-}
-
-.rtl #wp-link .link-search-wrapper input[type="text"] {
-       float: right;
-}
-
-.rtl #wp-link .link-search-wrapper img.waiting {
-       margin: 8px 4px 0 1px;
-       float: right;
-}
-
-.rtl #wp-link .link-target {
-       margin: 0 87px 0 0;
-}
-
-.rtl #wp-link .item-info {
-       left: 5px;
-       right: auto;
-       top: 4px;
-       bottom: 0;
-}
-
-.rtl #wp-link #search-panel {
-       float: right;
-}
-
-.rtl #wp-link-cancel {
-       float: right;
-}
-
-.rtl #wp-link-update {
-       float: left;
-}
-
-.rtl #wp-link .toggle-arrow {
-       background-position: top right;
-}
-
-.rtl #wp-link .toggle-arrow-active {
-       background-position: center right;
-}
-
-.rtl .wp_themeSkin .mceListBox .mceText {
-       text-align: right;
-}
-
-.rtl .wp_themeSkin .mceNoIcons a .mceText {
-       padding-right: 10px;
-       padding-left: 25px;
-}
-
-.rtl .mceListBoxMenu.mceNoIcons {
-       margin-left: -14px;
-}
-
-.clearlooks2 .mceFocus .mceTop .mceLeft {
-       background: #444444;
-       border-left: 1px solid #999;
-       border-top: 1px solid #999;
-       -webkit-border-top-left-radius: 3px;
-       border-top-left-radius: 3px;
-}
-
-.clearlooks2 .mceFocus .mceTop .mceRight {
-       background: #444444;
-       border-right: 1px solid #999;
-       border-top: 1px solid #999;
-       -webkit-border-top-right-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.clearlooks2 .mceMiddle .mceLeft {
-       background: #f1f1f1;
-       border-left: 1px solid #999;
-}
-
-.clearlooks2 .mceMiddle .mceRight {
-       background: #f1f1f1;
-       border-right: 1px solid #999;
-}
-
-.clearlooks2 .mceBottom {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-}
-
-.clearlooks2 .mceBottom .mceLeft {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-       border-left: 1px solid #999;
-}
-
-.clearlooks2 .mceBottom .mceCenter {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-}
-
-.clearlooks2 .mceBottom .mceRight {
-       background: #f1f1f1;
-       border-bottom: 1px solid #999;
-       border-right: 1px solid #999;
-}
-
-.clearlooks2 .mceFocus .mceTop span {
-       color: #e5e5e5;
-}
-
-
-/* Distraction Free Writing mode
- * =Overlay Styles
--------------------------------------------------------------- */
-.fullscreen-overlay {
-       z-index: 149999;
-       display: none;
-       position: fixed;
-       top: 0;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       filter: inherit;
-}
-
-.fullscreen-active .fullscreen-overlay,
-.fullscreen-active #wp-fullscreen-body {
-       display: block;
-}
-
-.fullscreen-fader {
-       z-index: 200000;
-}
-
-.fullscreen-active .fullscreen-fader {
-       display: none;
-}
-
-/* =Overlay Body
--------------------------------------------------------------- */
-#wp-fullscreen-body {
-       width: 100%;
-       z-index: 150005;
-       display: none;
-       position: absolute;
-       top: 0;
-       left: 0;
-       font-size: 12px;
-}
-
-#wp-fullscreen-wrap {
-       margin: 0 auto 50px;
-       position: relative;
-       padding-top: 60px;
-}
-
-#wp-fullscreen-title {
-    font-size: 1.7em;
-    line-height: 100%;
-    outline: medium none;
-    padding: 6px 7px;
-    width: 100%;
-    margin-bottom: 30px;
-}
-
-#wp-fullscreen-container {
-       padding: 4px 10px 50px;
-}
-
-#wp-fullscreen-title,
-#wp-fullscreen-container {
-       -webkit-border-radius: 0;
-       border-radius: 0;
-       border: 1px dashed transparent;
-       background: transparent;
-       -moz-transition-property: border-color;
-       -moz-transition-duration: 0.6s;
-       -webkit-transition-property: border-color;
-       -webkit-transition-duration: 0.6s;
-       -o-transition-property: border-color;
-       -o-transition-duration: 0.6s;
-       transition-property: border-color;
-       transition-duration: 0.6s;
-}
-
-#wp_mce_fullscreen {
-       width: 100%;
-       min-height: 300px;
-       border: 0;
-       background: transparent;
-       font-family: Consolas, Monaco, monospace;
-       line-height: 1.6em;
-       padding: 0;
-       overflow-y: hidden;
-       outline: none;
-       resize: none;
-}
-
-#wp-fullscreen-tagline {
-       color: #BBBBBB;
-       font-size: 18px;
-       float: right;
-       padding-top: 5px;
-}
-
-/* =Top bar
--------------------------------------------------------------- */
-#fullscreen-topbar {
-       position: fixed;
-       top: 0;
-       left: 0;
-       z-index: 150050;
-       border-bottom-style: solid;
-       border-bottom-width: 1px;
-       min-width: 800px;
-       width: 100%;
-       height: 40px;
-}
-
-#wp-fullscreen-toolbar {
-       padding: 6px 10px 0;
-       clear: both;
-       max-width: 1100px;
-       min-width: 820px;
-       margin: 0 auto;
-}
-
-#wp-fullscreen-mode-bar,
-#wp-fullscreen-button-bar,
-#wp-fullscreen-close,
-#wp-fullscreen-count {
-       float: left;
-}
-
-#wp-fullscreen-save {
-       float: right;
-       padding: 2px 2px 0 5px;
-}
-
-#wp-fullscreen-count,
-#wp-fullscreen-close {
-       padding-top: 5px;
-}
-
-#wp-fullscreen-central-toolbar {
-       margin: auto;
-       padding: 0;
-}
-
-#wp-fullscreen-buttons > div {
-       float: left;
-}
-
-#wp-fullscreen-mode-bar {
-       padding: 1px 14px 0 0;
-}
-
-#wp-fullscreen-modes a {
-       display: block;
-       font-size: 11px;
-       text-decoration: none;
-       float: left;
-       margin: 1px 0 0 0;
-       padding: 2px 6px 2px;
-       border-width: 1px 1px 1px 0;
-       border-style: solid;
-       border-color: #bbb;
-       color: #777;
-       text-shadow: 0 1px 0 #fff;
-       background-color: #f4f4f4;
-       background-image: -moz-linear-gradient(bottom,  #e4e4e4,  #f9f9f9);
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9));
-}
-
-#wp-fullscreen-modes a:hover,
-.wp-html-mode #wp-fullscreen-modes a:last-child,
-.wp-tmce-mode #wp-fullscreen-modes a:first-child {
-       color: #333;
-       border-color: #999;
-       background-color: #eee;
-       background-image: -moz-linear-gradient(bottom,  #f9f9f9,  #e0e0e0);
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#f9f9f9), to(#e0e0e0));
-}
-
-#wp-fullscreen-modes a:first-child {
-       border-width: 1px;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-#wp-fullscreen-modes a:last-child {
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-right-radius: 3px;
-       border-top-right-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-#wp-fullscreen-buttons .active a {
-       background: inherit;
-}
-
-#wp-fullscreen-buttons .hidden {
-       display: none;
-}
-
-#wp-fullscreen-buttons .disabled {
-       opacity: 0.5;
-}
-
-.wp-html-mode #wp-fullscreen-buttons div {
-       display: none;
-}
-
-.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both {
-       display: block;
-}
-
-#fullscreen-topbar.fullscreen-make-sticky {
-       display: block !important;
-}
-
-#wp-fullscreen-save img {
-       vertical-align: middle;
-}
-
-#wp-fullscreen-save img,
-#wp-fullscreen-save span {
-       padding-right: 4px;
-       display: none;
-}
-
-#wp-fullscreen-buttons .mce_image .mce_image {
-       background-image: url('../../wp-admin/images/media-button.png?ver=20120201');
-       background-position: 3px 3px;
-}
-
-/* =Thickbox Adjustments
--------------------------------------------------------------- */
-.fullscreen-active #TB_overlay {
-       z-index: 150100;
-}
-
-.fullscreen-active #TB_window {
-       z-index: 150102;
-}
-
-/* =TinyMCE Adjustments
--------------------------------------------------------------- */
-#wp_mce_fullscreen_ifr {
-       background: transparent;
-}
-
-#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst {
-       display : none;
-}
-
-#wp-fullscreen-container .wp_themeSkin table td {
-       vertical-align: top;
-}
-
-/* Colors */
-.fullscreen-overlay {
-       background: #fff;
-}
-
-.wp-fullscreen-focus #wp-fullscreen-title,
-.wp-fullscreen-focus #wp-fullscreen-container {
-       border-color: #ccc;
-}
-
-#fullscreen-topbar {
-       border-bottom-color: #DFDFDF;
-       background-color: #f1f1f1; /* Fallback */
-       background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */
-       background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */
-       background-image: -o-linear-gradient(top, #f9f9f9, #ececec); /* Opera */
-       background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); /* old Webkit */
-       background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); /* new Webkit */
-       background-image: linear-gradient(top, #f9f9f9, #ececec); /* proposed W3C Markup */
-}
-
-/* =CSS 3 transitions
--------------------------------------------------------------- */
-
-.fade-1000,
-.fade-600,
-.fade-400,
-.fade-300 {
-       opacity: 0;
-       -moz-transition-property: opacity;
-       -webkit-transition-property: opacity;
-       -o-transition-property: opacity;
-       transition-property: opacity;
-}
-
-.fade-1000 {
-       -moz-transition-duration: 1s;
-       -webkit-transition-duration: 1s;
-       -o-transition-duration: 1s;
-       transition-duration: 1s;
-}
-
-.fade-600 {
-       -moz-transition-duration: 0.6s;
-       -webkit-transition-duration: 0.6s;
-       -o-transition-duration: 0.6s;
-       transition-duration: 0.6s;
-}
-
-.fade-400 {
-       -moz-transition-duration: 0.4s;
-       -webkit-transition-duration: 0.4s;
-       -o-transition-duration: 0.4s;
-       transition-duration: 0.4s;
-}
-
-.fade-300 {
-       -moz-transition-duration: 0.3s;
-       -webkit-transition-duration: 0.3s;
-       -o-transition-duration: 0.3s;
-       transition-duration: 0.3s;
-}
-
-.fade-trigger {
-       opacity: 1;
-}
-
-/* Distraction Free Writing - RTL
- * =Overlay Styles
--------------------------------------------------------------- */
-
-/* No RTL for now, this space intentionally left blank */
-
-/* =Overlay Body
--------------------------------------------------------------- */
-.rtl #wp-fullscreen-tagline {
-       float: left;
-}
-
-/* =Top bar
--------------------------------------------------------------- */
-.rtl #fullscreen-topbar {
-       left:auto;
-       right: 0;
-}
-
-.rtl #wp-fullscreen-mode-bar,
-.rtl #wp-fullscreen-button-bar,
-.rtl #wp-fullscreen-close,
-.rtl #wp-fullscreen-count {
-       float: right;
-}
-
-.rtl #wp-fullscreen-save {
-       float: left;
-}
-
-.rtl #wp-fullscreen-save {
-       padding: 2px 5px 0 2px;
-}
-
-.rtl #wp-fullscreen-buttons > div {
-       float: right;
-}
-
-.rtl #wp-fullscreen-mode-bar {
-       padding: 1px 0 0 14px;
-}
-
-.rtl #wp-fullscreen-modes a {
-       float: right;
-       border-width: 1px 0 1px 1px;
-}
-
-.rtl #wp-fullscreen-modes a:first-child {
-       -webkit-border-top-left-radius: 0;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 3px;
-       border-width: 1px;
-       border-top-left-radius: 0;
-       border-top-right-radius: 3px;
-       border-bottom-right-left: 0;
-       border-bottom-right-radius: 3px;
-}
-
-.rtl #wp-fullscreen-modes a:last-child {
-       -webkit-border-top-right-radius: 0;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-right-radius: 0;
-       border-top-left-radius: 3px;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 3px;
-}
-
-.rtl #wp-fullscreen-save img,
-.rtl #wp-fullscreen-save span {
-       padding-right: 0;
-       padding-left: 4px;
-}
-
-/* =Thickbox Adjustments
--------------------------------------------------------------- */
-/* No RTL for now, this space intentionally left blank */
-
-
-/* =TinyMCE Adjustments
--------------------------------------------------------------- */
-/* No RTL for now, this space intentionally left blank */
-
diff --git a/wp-includes/css/editor.min.css b/wp-includes/css/editor.min.css
new file mode 100644 (file)
index 0000000..3212bcf
--- /dev/null
@@ -0,0 +1 @@
+.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default}.wp_themeSkin table td{vertical-align:middle}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#555}.wp_themeSkin iframe{display:block}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff}.wp_themeSkin .mceToolbar{padding:1px}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0}.wp_themeSkin table.mceLayout{border:0}.wp_themeSkin .mceStatusbar{display:block;font-family:sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0}.wp_themeSkin .mceStatusbar *{color:#555}.wp_themeSkin .mceStatusbar div{float:left;padding:2px}.rtl .wp_themeSkin .mceStatusbar div{float:right}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline}.wp_themeSkin table.mceToolbar{margin:0 6px 2px}.wp_themeSkin table.mceToolbar :active,.wp_themeSkin table.mceToolbar :focus,.wp_themeSkin table.mceToolbar:focus,.wp_themeSkin span.mceSeparator:focus{outline:0}.wp_themeSkin #content_toolbar1{margin-top:2px}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.2;filter:alpha(opacity=20)}.wp_themeSkin .mceSeparator{display:none}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block}.wp_themeSkin .mceListBox .mceText{padding:1px 4px 1px 5px;width:70px;text-align:left;text-decoration:none;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;font-family:sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden}.wp_themeSkin .mceListBox{margin:1px;direction:ltr;background-color:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.wp_themeSkin .mceListBox .mceOpen{width:12px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0}.wp_themeSkin .mceListBox .mceFirst a{border-style:solid;border-width:1px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url("../images/down_arrow.gif");background-position:3px 1px;background-repeat:no-repeat}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px}.wp_themeSkin select.mceListBox{font-family:sans-serif;font-size:12px;border-color:#b2b2b2;background-color:#fff}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px}.wp_themeSkin .mceSplitButton{display:block;direction:ltr}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px;border-right:0 none}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px}.wp_themeSkin .mceSplitButton a.mceOpen{width:11px;height:20px;background-position:0 2px;background-repeat:no-repeat;padding:1px 0}.wp_themeSkin .mceSplitButton span.mceOpen{display:none}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30)}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons.png?ver=20120720')}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#bbb}.wp_themeSkin .mceColorSplitMenu td{padding:2px}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd;direction:ltr}.wp_themeSkin .mceNoIcons span.mceIcon{width:0}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px}.wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center}.wp_themeSkin .mceMenu span.mceMenuLine{display:none}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray}.mceRtl .mceListBox .mceText{text-align:right;padding:0 4px 0 0}.mceRtl .mceMenuItem .mceText{text-align:right}.wp_themeSkin .mce_address span.mceText{font-style:italic}.wp_themeSkin .mce_pre span.mceText{font-family:monospace}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:17px}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:15px}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:14px}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:13px}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:12px}.wp_themeSkin span.mce_undo{background-position:-500px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0}.wp_themeSkin span.mce_redo{background-position:-480px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0}.wp_themeSkin span.mce_bullist{background-position:-40px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0}.wp_themeSkin span.mce_numlist{background-position:-60px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-60px 0}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0}.wp_themeSkin span.mce_charmap{background-position:-420px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0}.wp_themeSkin span.mce_bold{background-position:0 -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:0 0}.wp_themeSkin span.mce_italic{background-position:-20px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-20px 0}.wp_themeSkin span.mce_underline{background-position:-280px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 0}.wp_themeSkin span.mce_justifyleft{background-position:-100px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 0}.wp_themeSkin span.mce_justifyright{background-position:-140px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-140px 0}.wp_themeSkin span.mce_justifycenter{background-position:-120px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 0}.wp_themeSkin span.mce_justifyfull{background-position:-300px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 0}.wp_themeSkin span.mce_indent{background-position:-460px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-460px 0}.wp_themeSkin span.mce_outdent{background-position:-440px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 0}.wp_themeSkin span.mce_link{background-position:-160px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-160px 0}.wp_themeSkin span.mce_unlink{background-position:-180px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0}.wp_themeSkin span.mce_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-520px 0}.wp_themeSkin span.mce_removeformat{background-position:-380px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-380px 0}.wp_themeSkin span.mce_strikethrough{background-position:-540px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-320px -20px}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonSelected span.mce_forecolor{background-position:-320px 0}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_media{background-position:-400px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-400px 0}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0}.wp_themeSkin span.mce_spellchecker{background-position:-220px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonSelected span.mce_spellchecker{background-position:-220px 0}.wp_themeSkin span.mce_wp_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-520px 0}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0}.wp_themeSkin span.mce_wp_more{background-position:-200px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-200px 0}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px}.wp_themeSkin span.mce_anchor{background-position:-200px 0}.wp_themeSkin span.mce_sub{background-position:-600px 0}.wp_themeSkin span.mce_sup{background-position:-620px 0}.wp_themeSkin span.mce_newdocument{background-position:-520px 0}.wp_themeSkin span.mce_image{background-position:-380px 0}.wp_themeSkin span.mce_code{background-position:-260px 0}.wp_themeSkin span.mce_hr{background-position:-360px 0}.wp_themeSkin span.mce_visualaid{background-position:-660px 0}.wp_themeSkin span.mce_paste{background-position:-560px 0}.wp_themeSkin span.mce_copy{background-position:-700px 0}.wp_themeSkin span.mce_cut{background-position:-680px 0}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0}.wp_themeSkin span.mce_advhr{background-position:-0px -20px}.wp_themeSkin span.mce_ltr{background-position:-20px -20px}.wp_themeSkin span.mce_rtl{background-position:-40px -20px}.wp_themeSkin span.mce_emotions{background-position:-60px -20px}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px}.wp_themeSkin span.mce_iespell{background-position:-120px -20px}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px}.wp_themeSkin span.mce_absolute{background-position:-180px -20px}.wp_themeSkin span.mce_backward{background-position:-200px -20px}.wp_themeSkin span.mce_forward{background-position:-220px -20px}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px}.wp_themeSkin span.mce_selectall{background-position:-400px -20px}.wp_themeSkin span.mce_preview{background-position:-420px -20px}.wp_themeSkin span.mce_print{background-position:-440px -20px}.wp_themeSkin span.mce_cancel{background-position:-460px -20px}.wp_themeSkin span.mce_save{background-position:-480px -20px}.wp_themeSkin span.mce_replace{background-position:-500px -20px}.wp_themeSkin span.mce_search{background-position:-520px -20px}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px}.wp_themeSkin span.mce_table{background-position:-580px -20px}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px}.wp_themeSkin span.mce_col_after{background-position:-680px -20px}.wp_themeSkin span.mce_col_before{background-position:-700px -20px}.wp_themeSkin span.mce_row_after{background-position:-720px -20px}.wp_themeSkin span.mce_row_before{background-position:-740px -20px}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px}.wp_themeSkin span.mce_table_props{background-position:-980px -20px}.wp_themeSkin span.mce_row_props{background-position:-780px -20px}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px}.wp_themeSkin span.mce_template{background-position:-820px -20px}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px}.wp_themeSkin span.mce_abbr{background-position:-860px -20px}.wp_themeSkin span.mce_acronym{background-position:-880px -20px}.wp_themeSkin span.mce_attribs{background-position:-900px -20px}.wp_themeSkin span.mce_cite{background-position:-920px -20px}.wp_themeSkin span.mce_del{background-position:-940px -20px}.wp_themeSkin span.mce_ins{background-position:-960px -20px}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px}.wp_themeSkin span.mce_restoredraft{background-position:-20px -40px}.wp_themeSkin span.mce_visualblocks{background-position:-40px -40px}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px}.wp_themeSkin .mceListBox .mceText{border-right:0 none}.wp_themeSkin iframe{background:transparent}.wp_themeSkin .mceButton{border-color:transparent}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:transparent}.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin table.mceSplitButton:hover{border-color:#bbb;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#fff);background-image:-moz-linear-gradient(bottom,#e5e5e5,#fff);background-image:-o-linear-gradient(bottom,#e5e5e5,#fff);background-image:linear-gradient(to top,#e5e5e5,#fff)}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin .mceSplitButtonSelected table,.wp_themeSkin .mceSplitButtonSelected table:hover{outline:0;border-color:#999 #ccc #ccc #999;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6f6f6),to(#e3e3e3));background-image:-webkit-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-moz-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-o-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:linear-gradient(to top,#f6f6f6,#e3e3e3)}.wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#999 #ccc #ccc #999}.wp_themeSkin .mceButtonDisabled{border-color:transparent}.wp_themeSkin .mceListBox .mceOpen{border-left:0}.wp_themeSkin .mceListBoxEnabled:hover,.wp_themeSkin .mceListBoxEnabled:active,.wp_themeSkin .mceListBoxHover,.wp_themeSkin .mceListBoxHover:active,.wp_themeSkin .mceListBoxSelected{-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);border-color:#bbb}.wp_themeSkin .mceSplitButton .mceLast span.mceOpen .mceIconOnly{display:block}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:transparent}.wp_themeSkin .mceSplitButton:hover a{border-color:#bbb}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;border-left:0}.wp_themeSkin .mceSplitButtonActive td{-webkit-border-radius:3px;border-radius:3px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}#mceModalBlocker{background:#000}.wp-editor-wrap{position:relative}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;margin:1px 0 0;line-height:150%;border:0 none;outline:0;display:block;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.wp-editor-tools{height:30px;padding:0 10px 0 0}.rtl .wp-editor-tools{padding:0 0 0 10px}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #d1d1d1;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#f4f4f4));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-moz-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-o-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:linear-gradient(to top,#e5e5e5,#f4f4f4)}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999}html[dir="rtl"] .wp-switch-editor{float:left}.wp-switch-editor:active{background-color:#f1f1f1}.wp-switch-editor:hover{text-decoration:none!important}.js .tmce-active .wp-editor-area{color:white}.tmce-active .quicktags-toolbar{display:none}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #f4f4f4;background-color:#f4f4f4;color:#555}.wp-media-buttons .button{margin-right:5px}.rtl .wp-media-buttons .button{margin-right:0;margin-left:5px}.wp-media-buttons .insert-media{padding-left:.4em}.rtl .wp-media-buttons .insert-media{padding-left:10px;padding-right:.4em}.wp-media-buttons a{text-decoration:none;color:#464646;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:16px;height:16px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:url('../../wp-admin/images/media-button.png') no-repeat top left}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:29px}.quicktags-toolbar>div{padding:2px 4px 0}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.quicktags-toolbar input[value="link"]{text-decoration:underline}.quicktags-toolbar input[value="del"]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:bold}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:155000}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc}#wp-link{background-color:#f5f5f5;line-height:1.4em;font-size:12px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type="text"]{-webkit-box-sizing:border-box}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px}#wp-link p.howto{margin:3px}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px}#wp-link .toggle-arrow-active{background-position:center left}#wp-link label input[type="text"]{width:360px;margin-top:5px}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:right;padding-right:5px}#wp-link .link-search-field{float:left;margin-right:5px}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper input[type="text"]{float:left;width:220px}#wp-link .link-search-wrapper .spinner{margin:4px 2px 0 0;display:none;vertical-align:text-bottom}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333}#wp-link li.selected{background:#ddd;color:#333}#wp-link li.selected .item-title{font-weight:bold}#wp-link .item-title{display:inline-block;width:80%}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0}#wp-link #search-results{display:none}#wp-link #search-panel{float:left;width:100%}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .river-waiting .spinner{margin:0 auto;display:block}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.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}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-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}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#fff;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0}.rtl #wp-link label span{text-align:left;padding-left:5px;padding-right:0}.rtl #wp-link .link-search-wrapper span{float:right}.rtl #wp-link .link-search-wrapper input[type="text"]{float:right}.rtl #wp-link .link-target{margin:0 87px 0 0}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0}.rtl #wp-link #search-panel{float:right}.rtl #wp-link-cancel{float:right}.rtl #wp-link-update{float:left}.rtl #wp-link .toggle-arrow{background-position:top right}.rtl #wp-link .toggle-arrow-active{background-position:center right}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px}.rtl .mceListBoxMenu.mceNoIcons{margin-left:-14px}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block}.fullscreen-fader{z-index:200000}.fullscreen-active .fullscreen-fader{display:none}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;font-size:12px}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px}#wp-fullscreen-container{padding:4px 10px 50px}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:0;resize:none}#wp-fullscreen-tagline{color:#bbb;font-size:18px;float:right;padding-top:5px}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px}#wp-fullscreen-central-toolbar{margin:auto;padding:0}#wp-fullscreen-buttons>div{float:left}#wp-fullscreen-mode-bar{padding:1px 14px 0 0}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:linear-gradient(to top,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:linear-gradient(to bottom,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}#wp-fullscreen-buttons .active a{background:inherit}#wp-fullscreen-buttons .hidden{display:none}#wp-fullscreen-buttons .disabled{opacity:.5}.wp-html-mode #wp-fullscreen-buttons div{display:none}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block}#fullscreen-topbar.fullscreen-make-sticky{display:block!important}#wp-fullscreen-save img{vertical-align:middle}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none}#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button.png');background-position:2px 2px}.fullscreen-active #TB_overlay{z-index:150100}.fullscreen-active #TB_window{z-index:150102}#wp_mce_fullscreen_ifr{background:transparent}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc}#fullscreen-topbar{border-bottom-color:#dfdfdf;background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.fade-trigger{opacity:1}.rtl #wp-fullscreen-tagline{float:left}.rtl #fullscreen-topbar{left:auto;right:0}.rtl #wp-fullscreen-mode-bar,.rtl #wp-fullscreen-button-bar,.rtl #wp-fullscreen-close,.rtl #wp-fullscreen-count{float:right}.rtl #wp-fullscreen-save{float:left}.rtl #wp-fullscreen-save{padding:2px 5px 0 2px}.rtl #wp-fullscreen-buttons>div{float:right}.rtl #wp-fullscreen-mode-bar{padding:1px 0 0 14px}.rtl #wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px}.rtl #wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.rtl #wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.rtl #wp-fullscreen-save img,.rtl #wp-fullscreen-save span{padding-right:0;padding-left:4px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons-2x.png?ver=20120720');background-size:560px 40px}.wp-media-buttons .add_media span.wp-media-buttons-icon,#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button-2x.png');background-size:16px 16px}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow-2x.png') top left no-repeat;background-size:19px 69px}}
\ No newline at end of file
index 2998f9f3a433c0548ce12116d08c86771765bc6f..a29e4f651acdbf2fc5d15fc8b1bcf06c3f1a5a12 100644 (file)
@@ -1 +1,139 @@
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.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}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-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}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}
\ No newline at end of file
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+ * jQuery UI Resizable
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+
+/*
+ * jQuery UI Dialog
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
+.wp-dialog .ui-dialog-titlebar { position: relative; }
+.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
+.wp-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; }
+.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+
+/* WP jQuery Dialog Theme */
+.wp-dialog {
+       border: 1px solid #999;
+       -webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+       box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+}
+
+.wp-dialog .ui-dialog-title {
+       display: block;
+       text-align: center;
+       padding: 1px 0 2px;
+}
+
+.wp-dialog .ui-dialog-titlebar {
+       padding: 0 1em;
+       background-color: #444;
+       font-weight: bold;
+       font-size: 11px;
+       line-height: 18px;
+       color: #e5e5e5;
+}
+
+.wp-dialog {
+       background-color: #f5f5f5;
+       -webkit-border-top-left-radius: 4px;
+       border-top-left-radius: 4px;
+       -webkit-border-top-right-radius: 4px;
+       border-top-right-radius: 4px;
+}
+
+.wp-dialog .ui-dialog-titlebar {
+       -webkit-border-top-left-radius: 3px;
+       border-top-left-radius: 3px;
+       -webkit-border-top-right-radius: 3px;
+       border-top-right-radius: 3px;
+}
+
+.wp-dialog .ui-dialog-titlebar-close {
+       position: absolute;
+       width: 29px;
+       height: 16px;
+       top: 2px;
+       right: 6px;
+       background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
+       padding: 0;
+}
+
+.wp-dialog .ui-dialog-titlebar-close:hover,
+.wp-dialog .ui-dialog-titlebar-close:focus {
+       background-position: -87px -32px;
+}
+
+.ui-widget-overlay {
+       background-color: #000;
+       opacity: 0.6;
+       filter: alpha(opacity=60);
+}
diff --git a/wp-includes/css/jquery-ui-dialog.dev.css b/wp-includes/css/jquery-ui-dialog.dev.css
deleted file mode 100644 (file)
index a6125b9..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * jQuery UI CSS Framework @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-/*
- * jQuery UI Resizable
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
-
-/*
- * jQuery UI Dialog
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
-.wp-dialog .ui-dialog-titlebar { position: relative; }
-.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
-.wp-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; }
-.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-
-/* WP jQuery Dialog Theme */
-.wp-dialog {
-       border: 1px solid #999;
-       -moz-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-       -webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-       box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
-}
-
-.wp-dialog .ui-dialog-title {
-       display: block;
-       text-align: center;
-       padding: 1px 0 2px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
-       padding: 0 1em;
-       background-color: #444;
-       font-weight: bold;
-       font-size: 11px;
-       line-height: 18px;
-       color: #e5e5e5;
-}
-
-.wp-dialog {
-       background-color: #f5f5f5;
-       -webkit-border-top-left-radius: 4px;
-       border-top-left-radius: 4px;
-       -webkit-border-top-right-radius: 4px;
-       border-top-right-radius: 4px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
-       -webkit-border-top-left-radius: 3px;
-       border-top-left-radius: 3px;
-       -webkit-border-top-right-radius: 3px;
-       border-top-right-radius: 3px;
-}
-
-.wp-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       width: 29px;
-       height: 16px;
-       top: 2px;
-       right: 6px;
-       background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
-       padding: 0;
-}
-
-.wp-dialog .ui-dialog-titlebar-close:hover,
-.wp-dialog .ui-dialog-titlebar-close:focus {
-       background-position: -87px -32px;
-}
-
-.ui-widget-overlay {
-       background-color: #000;
-       opacity: 0.6;
-       filter: alpha(opacity=60);
-}
diff --git a/wp-includes/css/jquery-ui-dialog.min.css b/wp-includes/css/jquery-ui-dialog.min.css
new file mode 100644 (file)
index 0000000..1e3c78f
--- /dev/null
@@ -0,0 +1 @@
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.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}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-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}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}
\ No newline at end of file
diff --git a/wp-includes/css/media-views-rtl.css b/wp-includes/css/media-views-rtl.css
new file mode 100644 (file)
index 0000000..28c78b2
--- /dev/null
@@ -0,0 +1,303 @@
+/**
+ * Modal
+ */
+.media-modal-close {
+       right: auto;
+       left: 7px;
+}
+
+/**
+ * Toolbar
+ */
+.media-toolbar-primary {
+       float: left;
+}
+
+.media-toolbar-secondary {
+       float: right;
+}
+
+.media-toolbar-primary > .media-button,
+.media-toolbar-primary > .media-button-group {
+       margin-left: 0;
+       margin-right: 10px;
+       float: right;
+}
+
+.media-toolbar-secondary > .media-button,
+.media-toolbar-secondary > .media-button-group {
+       margin-right: 0;
+       margin-left: 10px;
+       float: right;
+}
+
+/**
+ * Sidebar
+ */
+.media-sidebar {
+       right: auto;
+       left: 0;
+       border-left: 0;
+       border-right: 1px solid #dfdfdf;
+}
+
+.media-sidebar .setting {
+       float: right;
+}
+
+.media-sidebar .setting span {
+       margin-right: 0;
+       margin-left: 4%;
+}
+
+.media-sidebar .setting span,
+.compat-item label span {
+       float: right;
+       text-align: left;
+}
+
+.media-sidebar .setting input,
+.media-sidebar .setting textarea {
+       float: left;
+}
+
+.compat-item {
+       float: right;
+}
+
+.compat-item .label {
+       margin-right: 0;
+       margin-left: 4%;
+       float: right;
+       text-align: left;
+}
+
+.compat-item .field {
+       float: left;
+       padding-right: 0;
+       padding-left: 1px;
+}
+
+/**
+ * Menu
+ */
+.media-menu {
+       border-right: 0;
+       border-left: 1px solid #d9d9d9;
+       box-shadow: inset 6px 0 6px -6px rgba( 0, 0, 0, 0.2 )
+}
+
+/**
+ * Router
+ */
+.media-router > a {
+       float: right;
+       border-right: 0;
+       border-left: 1px solid #dfdfdf;
+}
+.media-router > a:last-child {
+       border-left: 0;
+}
+
+/**
+ * Frame
+ */
+.media-frame-menu {
+       left: auto;
+       right: 0;
+}
+
+.media-frame-title,
+.media-frame-router,
+.media-frame-content,
+.media-frame-toolbar {
+       left: 0;
+       right: 200px;
+}
+
+.media-frame.hide-menu .media-frame-title,
+.media-frame.hide-menu .media-frame-router,
+.media-frame.hide-menu .media-frame-toolbar,
+.media-frame.hide-menu .media-frame-content {
+       right: 0;
+}
+
+.media-frame.hide-menu .media-frame-menu {
+       left: auto;
+       right: -200px;
+}
+
+/**
+ * Attachment Browser Filters
+ */
+.media-frame select.attachment-filters {
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+/**
+ * Search
+ */
+.media-toolbar-secondary .search {
+       margin-right: 0;
+       margin-left: 16px;
+}
+
+/**
+ * Attachments
+ */
+.attachments {
+       padding-right: 0;
+       padding-left: 16px;
+}
+
+/**
+ * Attachment
+ */
+.attachment {
+       float: right;
+}
+
+.attachment .thumbnail {
+       left: auto;
+       right: 0;
+}
+
+.attachment .close {
+       right: auto;
+       left: 5px;
+}
+
+.attachment .check {
+       right: auto;
+       left: -7px;
+}
+
+/**
+ * Attachments Browser
+ */
+.attachments-browser .media-toolbar {
+       right: 0;
+       left: 300px;
+}
+
+.attachments-browser .attachments,
+.attachments-browser .uploader-inline {
+       right: 0;
+       left: 300px;
+}
+
+
+/**
+ * Progress Bar
+ */
+.attachment-preview .media-progress-bar {
+       left: auto;
+       right: 15%;
+}
+
+.media-sidebar .media-uploader-status .upload-dismiss-errors {
+       right: auto;
+       left: 0;
+}
+
+.upload-errors .upload-error-label {
+       margin-right: 0;
+       margin-left: 8px;
+       float: right;
+       margin-top: -3px;
+}
+
+/**
+ * Selection
+ */
+.media-selection {
+       right: 0;
+       left: 350px;
+       padding: 0 16px 0 0;
+}
+
+.media-selection .selection-info {
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+.media-selection .selection-info a {
+       float: right;
+       border-right: 0;
+       border-left: 1px solid #dfdfdf;
+       margin: 1px -8px 1px 8px;
+}
+
+.media-selection .selection-info a:last-child {
+       border-right: 1px;
+       border-left: 0;
+       margin-left: 0;
+       margin-right: -8px;
+}
+
+.media-selection:after {
+       right: auto;
+       left: 0;
+       background-image: -webkit-gradient(linear, left top, right top, from( rgba( 255, 255, 255, 1 ) ), to( rgba( 255, 255, 255, 0 ) ));
+       background-image: -webkit-linear-gradient(left, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:    -moz-linear-gradient(left, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:      -o-linear-gradient(left, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:   linear-gradient(to right, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+}
+
+/**
+ * Attachment Details
+ */
+.attachment-info .thumbnail {
+       float: right;
+       margin-right: 0;
+       margin-left: 10px;
+}
+
+.attachment-info .details {
+       float: right;
+}
+
+/**
+ * Attachment Display Settings
+ */
+.attachment-display-settings {
+       float: right;
+}
+
+/**
+ * Embed from URL
+ */
+.embed-url span {
+       display: block;
+       padding: 4px 2px 6px 0;
+}
+
+.media-embed .thumbnail {
+       float: right;
+}
+
+.media-embed .setting {
+       float: right;
+}
+
+/**
+ * Responsive layout
+ */
+@media only screen and (max-width: 900px) {
+       .media-frame-title,
+       .media-frame-router,
+       .media-frame-content,
+       .media-frame-toolbar {
+               left: 0;
+               right: 140px;
+       }
+
+       .attachments-browser .attachments,
+       .attachments-browser .uploader-inline,
+       .attachments-browser .media-toolbar {
+               right: 0;
+               left: 180px;
+       }
+}
diff --git a/wp-includes/css/media-views-rtl.min.css b/wp-includes/css/media-views-rtl.min.css
new file mode 100644 (file)
index 0000000..5b98dc2
--- /dev/null
@@ -0,0 +1 @@
+.media-modal-close{right:auto;left:7px}.media-toolbar-primary{float:left}.media-toolbar-secondary{float:right}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:0;margin-right:10px;float:right}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:0;margin-left:10px;float:right}.media-sidebar{right:auto;left:0;border-left:0;border-right:1px solid #dfdfdf}.media-sidebar .setting{float:right}.media-sidebar .setting span{margin-right:0;margin-left:4%}.media-sidebar .setting span,.compat-item label span{float:right;text-align:left}.media-sidebar .setting input,.media-sidebar .setting textarea{float:left}.compat-item{float:right}.compat-item .label{margin-right:0;margin-left:4%;float:right;text-align:left}.compat-item .field{float:left;padding-right:0;padding-left:1px}.media-menu{border-right:0;border-left:1px solid #d9d9d9;box-shadow:inset 6px 0 6px -6px rgba(0,0,0,0.2)}.media-router>a{float:right;border-right:0;border-left:1px solid #dfdfdf}.media-router>a:last-child{border-left:0}.media-frame-menu{left:auto;right:0}.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:200px}.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-toolbar,.media-frame.hide-menu .media-frame-content{right:0}.media-frame.hide-menu .media-frame-menu{left:auto;right:-200px}.media-frame select.attachment-filters{margin-right:0;margin-left:10px}.media-toolbar-secondary .search{margin-right:0;margin-left:16px}.attachments{padding-right:0;padding-left:16px}.attachment{float:right}.attachment .thumbnail{left:auto;right:0}.attachment .close{right:auto;left:5px}.attachment .check{right:auto;left:-7px}.attachments-browser .media-toolbar{right:0;left:300px}.attachments-browser .attachments,.attachments-browser .uploader-inline{right:0;left:300px}.attachment-preview .media-progress-bar{left:auto;right:15%}.media-sidebar .media-uploader-status .upload-dismiss-errors{right:auto;left:0}.upload-errors .upload-error-label{margin-right:0;margin-left:8px;float:right;margin-top:-3px}.media-selection{right:0;left:350px;padding:0 16px 0 0}.media-selection .selection-info{margin-right:0;margin-left:10px}.media-selection .selection-info a{float:right;border-right:0;border-left:1px solid #dfdfdf;margin:1px -8px 1px 8px}.media-selection .selection-info a:last-child{border-right:1px;border-left:0;margin-left:0;margin-right:-8px}.media-selection:after{right:auto;left:0;background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-moz-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-o-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to right,rgba(255,255,255,1),rgba(255,255,255,0))}.attachment-info .thumbnail{float:right;margin-right:0;margin-left:10px}.attachment-info .details{float:right}.attachment-display-settings{float:right}.embed-url span{display:block;padding:4px 2px 6px 0}.media-embed .thumbnail{float:right}.media-embed .setting{float:right}@media only screen and (max-width:900px){.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:140px}.attachments-browser .attachments,.attachments-browser .uploader-inline,.attachments-browser .media-toolbar{right:0;left:180px}}
\ No newline at end of file
diff --git a/wp-includes/css/media-views.css b/wp-includes/css/media-views.css
new file mode 100644 (file)
index 0000000..4306156
--- /dev/null
@@ -0,0 +1,1673 @@
+/**
+ * Base Styles
+ */
+.media-modal,
+.media-frame {
+       font-family: sans-serif;
+       font-size: 12px;
+}
+
+.media-frame input,
+.media-frame textarea {
+       padding: 6px 8px;
+       line-height: 16px;
+}
+
+.media-frame select,
+.wp-admin .media-frame select {
+       line-height: 28px;
+       margin-top: 3px;
+}
+
+.media-frame a {
+       border-bottom: none;
+       color: #21759b;
+}
+
+.media-frame a:hover {
+       color: #d54e21;
+}
+
+.media-frame a.button {
+       color: #333;
+}
+
+.media-frame a.button:hover {
+       color: #222;
+}
+
+.media-frame a.button-primary,
+.media-frame a.button-primary:hover {
+       color: #fff;
+}
+
+.media-frame input[type="text"],
+.media-frame input[type="password"],
+.media-frame input[type="number"],
+.media-frame input[type="search"],
+.media-frame input[type="email"],
+.media-frame input[type="url"],
+.media-frame textarea,
+.media-frame select {
+       font-family: sans-serif;
+       font-size: 12px;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box; /* ie8 only */
+       box-sizing: border-box;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       border-width: 1px;
+       border-style: solid;
+       border-color: #dfdfdf;
+}
+
+.media-frame select {
+       height: 24px;
+       padding: 2px;
+}
+
+.media-frame input:disabled,
+.media-frame textarea:disabled,
+.media-frame input[readonly],
+.media-frame textarea[readonly] {
+       background-color: #eee;
+}
+
+.media-frame input[type="search"] {
+       -webkit-appearance: textfield;
+}
+
+.media-frame :-moz-placeholder {
+   color: #a9a9a9;
+}
+
+/* Enable draggable on IE10 touch events until it's rolled into jQuery UI core */
+.ui-sortable,
+.ui-draggable {
+       -ms-touch-action: none;
+}
+
+/**
+ * Modal
+ */
+.media-modal {
+       position: fixed;
+       top: 30px;
+       left: 30px;
+       right: 30px;
+       bottom: 30px;
+       z-index: 160000;
+}
+
+.media-modal-backdrop {
+       position: fixed;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       min-height: 360px;
+       background: #000;
+       opacity: 0.7;
+       z-index: 159900;
+}
+
+.media-modal-close {
+       position: absolute;
+       top: 7px;
+       right: 7px;
+       width: 30px;
+       height: 30px;
+       z-index: 1000;
+}
+.media-modal-close span {
+       display: block;
+       margin: 8px auto 0;
+       width: 15px;
+       height: 15px;
+       background-position: -100px 0;
+}
+
+.media-modal-close:active {
+       outline: 0;
+}
+
+.media-modal-content {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       overflow: auto;
+       min-height: 300px;
+       background: #fff;
+}
+
+.media-modal-icon {
+       background-image: url(../images/uploader-icons.png);
+       background-repeat: no-repeat;
+}
+
+/**
+ * Toolbar
+ */
+.media-toolbar {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       z-index: 100;
+       height: 60px;
+       padding: 0 16px;
+       border: 0 solid #dfdfdf;
+       overflow: hidden;
+}
+
+.media-toolbar-primary {
+       float: right;
+       height: 100%;
+}
+
+.media-toolbar-secondary {
+       float: left;
+       height: 100%;
+}
+
+.media-toolbar-primary > .media-button,
+.media-toolbar-primary > .media-button-group {
+       margin-left: 10px;
+       float: left;
+       margin-top: 15px;
+}
+
+.media-toolbar-secondary > .media-button,
+.media-toolbar-secondary > .media-button-group {
+       margin-right: 10px;
+       float: left;
+       margin-top: 15px;
+}
+
+/**
+ * Sidebar
+ */
+.media-sidebar {
+       position: absolute;
+       top: 0;
+       right: 0;
+       bottom: 0;
+       width: 267px;
+       padding: 0 16px 24px;
+       z-index: 75;
+       background: #f5f5f5;
+       border-left: 1px solid #dfdfdf;
+       overflow: auto;
+       -webkit-overflow-scrolling: touch;
+}
+
+.hide-toolbar .media-sidebar {
+       bottom: 0;
+}
+
+.media-sidebar .sidebar-title {
+       font-weight: 200;
+       font-size: 20px;
+       margin: 0;
+       padding: 12px 10px 10px;
+       line-height: 28px;
+}
+
+.media-sidebar .sidebar-content {
+       padding: 0 10px;
+       margin-bottom: 130px;
+}
+
+.media-sidebar .search {
+       display: block;
+       width: 100%;
+}
+
+.media-sidebar h3 {
+       position: relative;
+       font-weight: bold;
+       text-transform: uppercase;
+       font-size: 12px;
+       color: #777;
+       text-shadow: 0 1px 0 #fff;
+       margin: 24px 0 8px;
+}
+
+.media-sidebar .setting {
+       display: block;
+       float: left;
+       width: 100%;
+       margin: 1px 0;
+}
+
+.media-sidebar .setting label {
+       display: block;
+}
+
+.media-sidebar .setting .link-to-custom {
+       margin: 3px 0;
+}
+
+.media-sidebar .setting span {
+       min-width: 30%;
+       margin-right: 4%;
+       font-size: 12px;
+}
+
+.media-sidebar .setting select {
+       max-width: 65%;
+}
+
+.media-sidebar .setting input[type="checkbox"] {
+       width: auto;
+       float: none;
+       margin-top: 8px;
+       padding: 0;
+}
+
+.media-sidebar .setting span,
+.compat-item label span {
+       float: left;
+       min-height: 22px;
+       padding-top: 8px;
+       line-height: 16px;
+       text-align: right;
+       font-weight: normal;
+       color: #999;
+       text-shadow: 0 1px 0 #fff;
+}
+
+.media-sidebar .setting input,
+.media-sidebar .setting textarea {
+       width: 65%;
+       float: right;
+}
+
+.media-sidebar .setting textarea,
+.compat-item .field textarea {
+       height: 62px;
+       resize: vertical;
+}
+
+.media-sidebar select {
+       margin-top: 3px;
+}
+
+.compat-item {
+       float: left;
+       width: 100%;
+       overflow: hidden;
+}
+
+.compat-item table {
+       width: 100%;
+       table-layout: fixed;
+       border-spacing: 0;
+       border: 0;
+}
+
+.compat-item tr {
+       padding: 2px 0;
+       display: block;
+       overflow: hidden;
+}
+
+.compat-item .label,
+.compat-item .field {
+       display: block;
+       margin: 0;
+       padding: 0;
+}
+
+.compat-item .label {
+       min-width: 30%;
+       margin-right: 4%;
+       float: left;
+       text-align: right;
+}
+
+.compat-item .label span {
+       display: block;
+       width: 100%;
+}
+
+.compat-item .field {
+       float: right;
+       width: 65%;
+       padding-right: 1px;
+}
+
+.compat-item .field input {
+       width: 100%;
+       margin: 0;
+}
+
+
+/**
+ * Menu
+ */
+.media-menu {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       margin: 0;
+       padding: 16px 0;
+       border-right: 1px solid #d9d9d9;
+       box-shadow: inset -6px 0 6px -6px rgba( 0, 0, 0, 0.2 );
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.media-menu > a {
+       display: block;
+       position: relative;
+       padding: 4px 20px;
+       margin: 0;
+       line-height: 18px;
+       font-size: 14px;
+       color: #21759B;
+       text-shadow: 0 1px 0 #fff;
+       text-decoration: none;
+}
+
+.media-menu > a:hover {
+       color: #21759B;
+       background: rgba( 0, 0, 0, 0.04 );
+}
+
+.media-menu > a:active {
+       outline: none;
+}
+
+.media-menu .active,
+.media-menu .active:hover {
+       color: #333;
+       font-weight: bold;
+}
+
+.media-menu .separator {
+       height: 0;
+       margin: 12px 20px;
+       padding: 0;
+       border-top: 1px solid #dfdfdf;
+       border-bottom: 1px solid #fff;
+}
+
+/**
+ * Menu
+ */
+.media-router {
+       position: relative;
+       padding: 0 6px;
+       margin: 0;
+       clear: both;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.media-router > a {
+       position: relative;
+       float: left;
+       padding: 2px 10px;
+       margin: 0;
+       height: 18px;
+       line-height: 18px;
+       font-size: 14px;
+       border-right: 1px solid #dfdfdf;
+       text-shadow: 0 1px 0 #fff;
+       text-decoration: none;
+}
+
+.media-router > a:last-child {
+       border-right: 0;
+}
+
+.media-router > a:active,
+.media-router > a:focus {
+       outline: none;
+}
+
+.media-router .active,
+.media-router .active:hover {
+       color: #333;
+}
+
+.media-router .active:after {
+       content: '';
+       display: block;
+       margin: -100px auto 0;
+       width: 7px;
+       height: 7px;
+       background: #fff;
+       box-shadow: 1px 1px 1px rgba( 0, 0, 0, 0.2 );
+       z-index: 300;
+
+       -webkit-transform: rotate( 45deg ) translate( 75px, 75px );
+       -moz-transform:    rotate( 45deg ) translate( 75px, 75px );
+       -ms-transform:     rotate( 45deg ) translate( 75px, 75px );
+       -o-transform:      rotate( 45deg ) translate( 75px, 75px );
+       transform:         rotate( 45deg ) translate( 75px, 75px );
+}
+
+/**
+ * Frame
+ */
+.media-frame {
+       overflow: hidden;
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+}
+
+.media-frame-menu {
+       position: absolute;
+       top: 0;
+       left: 0;
+       bottom: 0;
+       width: 199px;
+       z-index: 150;
+}
+
+.media-frame-title {
+       position: absolute;
+       top: 0;
+       left: 200px;
+       right: 0;
+       height: 45px;
+       z-index: 200;
+}
+
+.media-frame-router {
+       position: absolute;
+       top: 45px;
+       left: 200px;
+       right: 0;
+       height: 30px;
+       z-index: 200;
+       border-bottom: 1px solid #dfdfdf;
+       box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 );
+}
+
+.media-frame-content {
+       position: absolute;
+       top: 75px;
+       left: 200px;
+       right: 0;
+       bottom: 61px;
+       height: auto;
+       width: auto;
+       margin: 0;
+       overflow: auto;
+}
+
+.media-frame-toolbar {
+       position: absolute;
+       left: 200px;
+       right: 0;
+       bottom: 0;
+       height: 60px;
+       z-index: 100;
+       border: 0 solid #dfdfdf;
+       border-width: 1px 0 0 0;
+       box-shadow: 0 -4px 4px -4px rgba( 0, 0, 0, 0.1 );
+}
+
+.media-frame.hide-menu .media-frame-title,
+.media-frame.hide-menu .media-frame-router,
+.media-frame.hide-menu .media-frame-toolbar,
+.media-frame.hide-menu .media-frame-content {
+       left: 0;
+}
+
+.media-frame.hide-menu .media-frame-menu {
+       left: -200px;
+}
+
+.media-frame.hide-toolbar .media-frame-content {
+       bottom: 0;
+}
+
+.media-frame.hide-toolbar .media-frame-toolbar {
+       bottom: -61px;
+}
+
+.media-frame.hide-router .media-frame-content {
+       top: 45px;
+}
+
+.media-frame.hide-router .media-frame-router {
+       display: none;
+}
+
+.media-frame.hide-router .media-frame-title {
+       border-bottom: 1px solid #dfdfdf;
+       box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 );
+}
+
+.media-frame .media-toolbar .add-to-gallery {
+       display: none;
+}
+
+.media-frame-title h1 {
+       padding: 0 16px;
+       font-size: 22px;
+       font-weight: 200;
+       line-height: 45px;
+       margin: 0;
+}
+
+/**
+ * Iframes
+ */
+.media-frame .media-iframe {
+       overflow: hidden;
+}
+
+.media-frame .media-iframe,
+.media-frame .media-iframe iframe {
+       height: 100%;
+       width: 100%;
+       border: 0;
+}
+
+/**
+ * Attachment Browser Filters
+ */
+.media-frame select.attachment-filters {
+       margin-top: 11px;
+       margin-right: 10px;
+}
+
+/**
+ * Search
+ */
+.media-frame .search {
+       margin-top: 11px;
+       padding: 4px;
+       line-height: 18px;
+       font-size: 13px;
+       color: #464646;
+       font-family: sans-serif;
+       -webkit-appearance: none;
+}
+
+.media-toolbar-secondary .search {
+       margin-right: 16px;
+}
+
+/**
+ * Attachments
+ */
+.attachments {
+       margin: 0;
+       padding-right: 16px;
+       -webkit-overflow-scrolling: touch;
+}
+
+/**
+ * Attachment
+ */
+.attachment {
+       position: relative;
+       float: left;
+
+       padding: 0;
+       margin: 0 10px 20px;
+       color: #464646;
+       list-style: none;
+       text-align: center;
+
+       -webkit-user-select: none;
+       -moz-user-select:    none;
+       -ms-user-select:     none;
+       -o-user-select:      none;
+       user-select:         none;
+}
+
+.selected.attachment {
+       box-shadow:
+               0 0 0 1px #fff,
+               0 0 0 3px #ccc;
+}
+
+.details.attachment {
+       box-shadow:
+               0 0 0 1px #fff,
+               0 0 0 5px #1e8cbe;
+}
+
+.attachment-preview {
+       position: relative;
+       width: 199px;
+       height: 199px;
+       box-shadow:
+               inset 0 0 15px rgba( 0, 0, 0, 0.1 ),
+               inset 0 0 0 1px rgba( 0, 0, 0, 0.05 );
+       background: #eee;
+       cursor: pointer;
+}
+
+.attachment .icon {
+       margin: 0 auto;
+       overflow: hidden;
+       padding-top: 20%;
+}
+
+.attachment .thumbnail {
+       display: block;
+       position: absolute;
+       top: 0;
+       left: 0;
+       margin: 0 auto;
+       overflow: hidden;
+       max-width: 100%;
+       max-height: 100%;
+}
+
+.attachment-preview .thumbnail:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 );
+       overflow: hidden;
+}
+
+.attachment .thumbnail img {
+       top: 0;
+       left: 0;
+}
+
+.attachment .thumbnail .centered {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 100%;
+       height: 100%;
+       -webkit-transform: translate( 50%, 50% );
+       -moz-transform:    translate( 50%, 50% );
+       -ms-transform:     translate( 50%, 50% );
+       -o-transform:      translate( 50%, 50% );
+       transform:         translate( 50%, 50% );
+}
+
+.attachment .thumbnail .centered img {
+       -webkit-transform: translate( -50%, -50% );
+       -moz-transform:    translate( -50%, -50% );
+       -ms-transform:     translate( -50%, -50% );
+       -o-transform:      translate( -50%, -50% );
+       transform:         translate( -50%, -50% );
+}
+
+.attachment .filename {
+       position: absolute;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       overflow: hidden;
+       max-height: 100%;
+
+       word-wrap: break-word;
+       text-align: center;
+       font-weight: bold;
+       background: rgba( 255, 255, 255, 0.8 );
+       box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 );
+}
+
+.attachment .filename div {
+       padding: 5px 10px;
+}
+
+.attachment-preview .thumbnail {
+       width: 199px;
+       height: 199px;
+}
+
+.attachment .thumbnail img {
+       position: absolute;
+}
+
+.attachment .close {
+       display: none;
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       height: 22px;
+       width: 22px;
+       padding: 0;
+       font-size: 20px;
+       line-height: 20px;
+       text-align: center;
+       text-decoration: none;
+       color: #464646;
+       background-color: #fff;
+       background-position: -96px 4px;
+       border-width: 0;
+       border-radius: 3px;
+       box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 );
+}
+
+.attachment .close:hover {
+       box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.6 );
+}
+
+.attachment:hover .close {
+       display: block;
+}
+
+.attachment .check {
+       display: none;
+       height: 24px;
+       width: 24px;
+       position: absolute;
+       top: -7px;
+       right: -7px;
+       outline: none;
+
+       border: 1px solid #fff;
+       border-radius: 3px;
+       box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.4 );
+
+       background: #f1f1f1;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1));
+       background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1);
+       background-image:    -moz-linear-gradient(top, #f1f1f1, #e1e1e1);
+       background-image:      -o-linear-gradient(top, #f1f1f1, #e1e1e1);
+       background-image:   linear-gradient(to bottom, #f1f1f1, #e1e1e1);
+}
+
+.attachment .check div {
+       background-position: -1px 0;
+       height: 15px;
+       width: 15px;
+       margin: 5px;
+}
+
+.attachment .check:hover div {
+       background-position: -40px 0;
+}
+
+.attachment.selected .check {
+       display: block;
+}
+
+.attachment.details .check {
+       box-shadow: 0 0 0 1px #1e8cbe;
+
+       background: #1e8cbe;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#1e8cbe), to(#0074a2));
+       background-image: -webkit-linear-gradient(top, #1e8cbe, #0074a2);
+       background-image:    -moz-linear-gradient(top, #1e8cbe, #0074a2);
+       background-image:      -o-linear-gradient(top, #1e8cbe, #0074a2);
+       background-image:   linear-gradient(to bottom, #1e8cbe, #0074a2);
+}
+
+.attachment.details .check div {
+       background-position: -21px 0;
+}
+
+.attachment.details .check:hover div {
+       background-position: -60px 0;
+}
+
+.media-frame .attachment .describe {
+       position: relative;
+       display: block;
+       width: 100%;
+       margin: -1px 0 0;
+       padding: 8px;
+       font-size: 12px;
+       border-radius: 0;
+}
+
+/**
+ * Attachments Browser
+ */
+.media-frame .attachments-browser {
+       position: relative;
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+}
+
+.attachments-browser .media-toolbar {
+       right: 300px;
+       height: 50px;
+}
+
+.attachments-browser .media-toolbar-primary > .media-button,
+.attachments-browser .media-toolbar-primary > .media-button-group,
+.attachments-browser .media-toolbar-secondary > .media-button,
+.attachments-browser .media-toolbar-secondary > .media-button-group {
+       margin-top: 10px;
+}
+
+.attachments-browser .attachments,
+.attachments-browser .uploader-inline {
+       position: absolute;
+       top: 50px;
+       left: 0;
+       right: 300px;
+       bottom: 0;
+       overflow: auto;
+}
+
+.attachments-browser .instructions {
+       display: inline-block;
+       margin-top: 16px;
+       line-height: 18px;
+       font-size: 13px;
+       color: #999;
+}
+
+/**
+ * Progress Bar
+ */
+.media-progress-bar {
+       position: relative;
+       height: 10px;
+       width: 70%;
+       margin: 10px auto;
+       border-radius: 10px;
+       background: #dfdfdf;
+       background: rgba( 0, 0, 0, 0.1 );
+}
+
+.media-progress-bar div {
+       height: 10px;
+       min-width: 20px;
+       width: 0;
+       background: #aaa;
+       background: rgba( 0, 0, 0, 0.2 );
+       border-radius: 10px;
+       -webkit-transition: width 300ms;
+       -moz-transition:    width 300ms;
+       -ms-transition:     width 300ms;
+       -o-transition:      width 300ms;
+       transition:         width 300ms;
+}
+
+.media-uploader-status .media-progress-bar {
+       display: none;
+       width: 100%;
+}
+
+.uploading.media-uploader-status .media-progress-bar {
+       display: block;
+}
+
+.attachment-preview .media-progress-bar {
+       position: absolute;
+       top: 50%;
+       left: 15%;
+       width: 70%;
+       margin: -5px 0 0 0;
+}
+
+.media-uploader-status {
+       position: relative;
+       margin: 0 auto;
+       padding-bottom: 10px;
+       max-width: 400px;
+}
+
+.media-sidebar .media-uploader-status {
+       border-bottom: 1px solid #dfdfdf;
+       box-shadow: 0 1px 0 #fff;
+}
+
+.uploader-inline .media-uploader-status h3 {
+       display: none;
+}
+
+.media-uploader-status .upload-details {
+       display: none;
+       font-size: 12px;
+       color: #666;
+       text-shadow: 0 1px 0 #fff;
+}
+
+.uploading.media-uploader-status .upload-details {
+       display: block;
+}
+
+.media-uploader-status .upload-detail-separator {
+       padding: 0 4px;
+}
+
+.media-uploader-status .upload-count {
+       color: #464646;
+}
+
+.media-uploader-status .upload-dismiss-errors,
+.media-uploader-status .upload-errors {
+       display: none;
+}
+
+.errors.media-uploader-status .upload-dismiss-errors,
+.errors.media-uploader-status .upload-errors {
+       display: block;
+}
+
+.media-uploader-status .upload-dismiss-errors {
+       text-decoration: none;
+}
+
+.media-sidebar .media-uploader-status .upload-dismiss-errors {
+       position: absolute;
+       top: 0;
+       right: 0;
+}
+
+.upload-errors .upload-error {
+       margin: 8px auto 0 auto;
+       padding: 8px;
+       border: 1px #c00 solid;
+       background: #ffebe8;
+       border-radius: 3px;
+}
+
+.upload-errors .upload-error-label {
+       padding: 2px 4px;
+       margin-right: 8px;
+       font-weight: bold;
+       color: #fff;
+       background: #e00;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#e00), to(#a00));
+       background-image: -webkit-linear-gradient(top, #e00, #a00);
+       background-image:    -moz-linear-gradient(top, #e00, #a00);
+       background-image:      -o-linear-gradient(top, #e00, #a00);
+       background-image:   linear-gradient(to bottom, #e00, #a00);
+       border-radius: 3px;
+}
+
+.upload-errors .upload-error-message {
+       display: block;
+       padding-top: 8px;
+       color: #b44;
+       word-wrap: break-word;
+}
+
+.uploader-window {
+       position: fixed;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       background: rgba( 0, 86, 132, 0.9 );
+
+       z-index: 250000;
+       display: none;
+       text-align: center;
+       opacity: 0;
+
+       -webkit-transition: opacity 250ms;
+       -moz-transition:    opacity 250ms;
+       -ms-transition:     opacity 250ms;
+       -o-transition:      opacity 250ms;
+       transition:         opacity 250ms;
+}
+
+.uploader-window-content {
+       position: absolute;
+       top: 10px;
+       left: 10px;
+       right: 10px;
+       bottom: 10px;
+       border: 1px dashed #fff;
+}
+
+.uploader-window h3 {
+       position: absolute;
+       top: 50%;
+       left: 0;
+       right: 0;
+       -webkit-transform: translateY( -50% );
+       -moz-transform:    translateY( -50% );
+       -ms-transform:     translateY( -50% );
+       -o-transform:      translateY( -50% );
+       transform:         translateY( -50% );
+
+       font-size: 20px;
+       font-weight: 200;
+       color: #fff;
+       padding: 0;
+}
+
+.uploader-window .media-progress-bar {
+       margin-top: 20px;
+       max-width: 300px;
+       background: transparent;
+       border-color: #fff;
+       display: none;
+}
+
+.uploader-window .media-progress-bar div {
+       background: #fff;
+}
+
+.uploading .uploader-window .media-progress-bar {
+       display: block;
+}
+
+.media-frame .uploader-inline {
+       margin: 20px;
+       padding: 20px;
+       text-align: center;
+}
+
+.uploader-inline-content {
+       position: absolute;
+       top: 30%;
+       left: 0;
+       right: 0;
+}
+
+.uploader-inline-content .upload-ui {
+       margin: 4em 0;
+}
+
+.uploader-inline-content .post-upload-ui {
+       margin-bottom: 2em;
+}
+
+.uploader-inline .has-upload-message .upload-ui {
+       margin: 0 0 4em;
+}
+
+.uploader-inline h3 {
+       font-size: 20px;
+       line-height: 28px;
+       font-weight: 200;
+       margin-bottom: 1.6em;
+}
+
+.uploader-inline .has-upload-message .upload-instructions {
+       font-size: 14px;
+       color: #464646;
+       font-weight: normal;
+}
+
+.uploader-inline .drop-instructions {
+       display: none;
+}
+
+.supports-drag-drop .uploader-inline .drop-instructions {
+       display: block;
+}
+
+.uploader-inline p {
+       font-size: 12px;
+}
+
+.uploader-inline .media-progress-bar {
+       display: none;
+}
+
+.uploading.uploader-inline .media-progress-bar {
+       display: block;
+}
+
+.uploader-inline .browser {
+       display: inline-block !important;
+}
+
+/**
+ * Selection
+ */
+.media-selection {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 350px;
+       height: 60px;
+       padding: 0 0 0 16px;
+       overflow: hidden;
+       white-space: nowrap;
+}
+
+.media-selection .selection-info {
+       display: inline-block;
+       font-size: 12px;
+       height: 60px;
+       margin-right: 10px;
+       vertical-align: top;
+}
+
+.media-selection.empty,
+.media-selection.editing {
+       display: none;
+}
+
+.media-selection.one .edit-selection {
+       display: none;
+}
+
+.media-selection .count {
+       display: block;
+       padding-top: 12px;
+       font-size: 14px;
+       line-height: 20px;
+       font-weight: bold;
+}
+
+.media-selection .selection-info a {
+       display: block;
+       float: left;
+       padding: 1px 8px;
+       margin: 1px 8px 1px -8px;
+       line-height: 16px;
+       text-decoration: none;
+       border-right: 1px solid #dfdfdf;
+       color: #21759B;
+}
+
+.media-selection .selection-info a:hover {
+       background: #21759B;
+       color: #fff;
+       border-color: transparent;
+}
+
+.media-selection .selection-info a:last-child {
+       border-right: 0;
+       margin-right: 0;
+}
+
+.media-selection .selection-info .clear-selection {
+       color: red;
+}
+
+.media-selection .selection-info .clear-selection:hover {
+       background: red;
+}
+
+.media-selection .selection-view {
+       display: inline-block;
+       vertical-align: top;
+}
+
+.media-selection .attachments {
+       display: inline-block;
+       height: 48px;
+       margin-top: 5px;
+       overflow: hidden;
+       vertical-align: top;
+}
+
+.media-selection .attachment .icon {
+       width: 50%;
+}
+
+.attachment.selection.selected {
+       box-shadow: none;
+}
+
+.attachment.selection.details {
+       box-shadow:
+               0 0 0 1px #fff,
+               0 0 0 4px #1e8cbe;
+}
+
+.media-selection .attachment.selection.details {
+       box-shadow:
+               0 0 0 1px #fff,
+               0 0 0 3px #1e8cbe;
+}
+
+.media-selection:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       right: 0;
+       bottom: 0;
+       width: 25px;
+       background-image: -webkit-gradient(linear, right top, left top, from( rgba( 255, 255, 255, 1 ) ), to( rgba( 255, 255, 255, 0 ) ));
+       background-image: -webkit-linear-gradient(right, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:    -moz-linear-gradient(right, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:      -o-linear-gradient(right, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image:   linear-gradient(to left, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+}
+
+.media-selection .attachment .filename {
+       display: none;
+}
+
+/**
+ * Spinner
+ */
+
+.media-frame .spinner {
+       background: url(../images/wpspin.gif) no-repeat;
+       background-size: 16px 16px;
+       display: none;
+       opacity: 0.7;
+       filter: alpha(opacity=70);
+       width: 16px;
+       height: 16px;
+       margin: 0;
+}
+
+.media-sidebar .settings-save-status {
+       background: #f5f5f5;
+       float: right;
+       text-transform: none;
+       z-index: 10;
+}
+
+.media-sidebar .settings-save-status .spinner {
+       margin: 0 5px 0;
+}
+
+.media-sidebar .settings-save-status .saved {
+       float: right;
+       display: none;
+}
+
+.media-sidebar .save-waiting .settings-save-status .spinner,
+.media-sidebar .save-complete .settings-save-status .saved {
+       display: block;
+}
+
+/**
+ * Attachment Details
+ */
+.attachment-details {
+       position: relative;
+       overflow: auto;
+}
+
+.attachment-info {
+       overflow: hidden;
+       min-height: 60px;
+       margin-bottom: 16px;
+       line-height: 18px;
+       color: #999;
+       border-bottom: 1px solid #e5e5e5;
+       box-shadow: 0 1px 0 #fff;
+       padding-bottom: 11px;
+}
+
+.attachment-info .filename {
+       font-weight: bold;
+       color: #464646;
+       word-wrap: break-word;
+}
+
+.attachment-info .thumbnail {
+       position: relative;
+       float: left;
+       max-width: 120px;
+       max-height: 120px;
+       margin-top: 5px;
+       margin-right: 10px;
+       margin-bottom: 5px;
+}
+
+.uploading .attachment-info .thumbnail {
+       width: 120px;
+       height: 80px;
+       box-shadow: inset 0 0 15px rgba( 0, 0, 0, 0.1 );
+}
+
+.uploading .attachment-info .media-progress-bar {
+       margin-top: 35px;
+}
+
+.attachment-info .thumbnail:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 );
+       overflow: hidden;
+}
+
+.attachment-info .thumbnail img {
+       display: block;
+       max-width: 120px;
+       max-height: 120px;
+       margin: 0 auto;
+}
+
+.attachment-info .details {
+       float: left;
+       font-size: 12px;
+       max-width: 100%;
+}
+
+.attachment-info .edit-attachment,
+.attachment-info .refresh-attachment,
+.attachment-info .delete-attachment {
+       display: block;
+       text-decoration: none;
+       white-space: nowrap;
+}
+
+.attachment-info .refresh-attachment,
+.attachment-details.needs-refresh .attachment-info .edit-attachment {
+       display: none;
+}
+
+.attachment-details.needs-refresh .attachment-info .refresh-attachment,
+.attachment-info .edit-attachment {
+       display: block;
+}
+
+.attachment-info .delete-attachment {
+       color: #bc0b0b;
+}
+
+.attachment-info .delete-attachment:hover {
+       color: red;
+}
+
+/**
+ * Attachment Display Settings
+ */
+.attachment-display-settings {
+       width: 100%;
+       float: left;
+       overflow: hidden;
+}
+
+.attachment-display-settings h4 {
+       margin: 1.4em 0 0.4em;
+}
+
+.gallery-settings {
+       overflow: hidden;
+}
+
+/**
+ * Embed from URL
+ */
+.embed-url {
+       display: block;
+       position: relative;
+       padding: 0 16px 7px;
+       margin: 0;
+       z-index: 250;
+       background: #fff;
+       border-bottom: 1px solid #dfdfdf;
+       box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 );
+       font-size: 18px;
+       font-weight: 200;
+}
+
+.media-frame .embed-url input {
+       font-size: 18px;
+       padding: 12px 14px;
+       width: 100%;
+       min-width: 200px;
+       box-shadow: inset 2px 2px 4px -2px rgba( 0, 0, 0, 0.1 );
+}
+
+.media-frame .embed-url .spinner {
+       position: absolute;
+       top: 16px;
+       right: 26px;
+}
+
+.media-frame .embed-loading .embed-url .spinner {
+       display: block;
+}
+
+.embed-link-settings,
+.embed-image-settings {
+       position: absolute;
+       background: #f5f5f5;
+       top: 57px;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       padding: 16px 16px 32px;
+       overflow: auto;
+}
+
+.media-embed .thumbnail {
+       max-width: 100%;
+       max-height: 200px;
+       position: relative;
+       float: left;
+}
+
+.media-embed .thumbnail img {
+       max-height: 200px;
+       display: block;
+}
+
+.media-embed .thumbnail:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 );
+       overflow: hidden;
+}
+
+.media-embed .setting {
+       width: 100%;
+       margin-top: 10px;
+       float: left;
+       display: block;
+       clear: both;
+}
+
+.media-embed .setting span {
+       display: block;
+       width: 200px;
+       font-size: 13px;
+       line-height: 24px;
+       color: #999;
+       text-shadow: 0 1px 0 #fff;
+}
+
+.media-embed .setting .button-group {
+       margin: 2px 0;
+}
+
+.media-embed .setting input,
+.media-embed .setting textarea {
+       display: block;
+       width: 100%;
+       max-width: 400px;
+       margin: 1px 0;
+}
+
+/**
+ * IE7 Fixes
+ */
+.ie7 .media-frame .attachments-browser {
+       position: static;
+}
+
+.ie7 .media-frame .embed-url input {
+       margin-top: 4px;
+       width: 90%;
+}
+
+.ie7 .compat-item {
+       width: 99%;
+}
+
+.ie7 .attachment-display-settings {
+       width: auto;
+}
+
+.ie7 .attachment-preview,
+.ie7 .attachment-preview .thumbnail {
+       width: 120px;
+       height: 120px;
+}
+
+.ie7 .media-frame .attachment .describe {
+       width: 102px;
+}
+
+.ie7 .media-sidebar .setting select {
+       max-width: 55%;
+}
+
+.ie7 .media-sidebar .setting input,
+.ie7 .media-sidebar .setting textarea {
+       width: 55%;
+}
+
+.ie7 .media-sidebar .setting .link-to-custom {
+       float: left;
+}
+
+@media only screen and (max-width: 960px) {
+       .media-frame-content .media-toolbar-primary .search,
+       .media-frame-content .media-toolbar-secondary .attachment-filters {
+               max-width: 120px;
+       }
+}
+
+/**
+ * Responsive layout
+ */
+@media only screen and (max-width: 900px) {
+       .media-frame-menu {
+               width: 139px;
+       }
+
+       .media-menu > a {
+               padding: 4px 10px;
+       }
+
+       .media-frame-title,
+       .media-frame-router,
+       .media-frame-content,
+       .media-frame-toolbar {
+               left: 140px;
+       }
+
+       .media-sidebar {
+               width: 159px;
+               padding: 0 10px 24px;
+       }
+
+       .attachments-browser .attachments,
+       .attachments-browser .uploader-inline,
+       .attachments-browser .media-toolbar {
+               right: 180px;
+       }
+
+       .media-sidebar .setting input,
+       .media-sidebar .setting textarea,
+       .media-sidebar .setting span,
+       .compat-item label span {
+               float: none;
+       }
+
+       .media-sidebar .setting span,
+       .compat-item label span {
+               text-align: inherit;
+               display: block;
+               min-height: 16px;
+               margin: 0;
+               padding: 8px 2px 0;
+       }
+
+       .media-sidebar .setting input,
+       .media-sidebar .setting textarea,
+       .media-sidebar .setting select {
+               width: 98%;
+               max-width: none;
+       }
+
+       .media-sidebar .setting select.columns {
+               width: auto;
+       }
+
+       .media-frame input,
+       .media-frame textarea,
+       .media-frame .search {
+               padding: 3px 6px;
+       }
+
+       .media-frame-content .attachment .icon {
+               top: 40%;
+       }
+
+       .media-selection {
+               min-width: 120px;
+       }
+
+       .media-selection:after {
+               background: none;
+       }
+
+       .media-selection .attachments {
+               display: none;
+       }
+
+       .media-menu .separator {
+               margin: 12px 10px;
+       }
+}
+
+@media only screen and (max-width: 800px) {
+       .media-frame-content .media-toolbar .instructions {
+               display: none;
+       }
+}
+
+@media only screen and (max-width: 680px) {
+       .media-frame-content .media-toolbar .search,
+       .media-frame-content .media-toolbar .attachment-filters {
+               max-width: 85px;
+       }
+}
+
+/* Use the same min-width as in the admin */
+@media only screen and (max-width: 600px) {
+       .media-modal {
+               width: 540px;
+               position: absolute;
+       }
+
+       .media-modal-backdrop {
+               width: 600px;
+               position: absolute;
+       }
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       .media-modal-icon {
+               background-image: url(../images/uploader-icons-2x.png);
+               background-size: 134px 15px;
+       }
+
+       .media-frame .spinner {
+               background-image: url(../images/wpspin-2x.gif);
+       }
+}
\ No newline at end of file
diff --git a/wp-includes/css/media-views.min.css b/wp-includes/css/media-views.min.css
new file mode 100644 (file)
index 0000000..f36c191
--- /dev/null
@@ -0,0 +1 @@
+.media-modal,.media-frame{font-family:sans-serif;font-size:12px}.media-frame input,.media-frame textarea{padding:6px 8px;line-height:16px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:0;color:#21759b}.media-frame a:hover{color:#d54e21}.media-frame a.button{color:#333}.media-frame a.button:hover{color:#222}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type="text"],.media-frame input[type="password"],.media-frame input[type="number"],.media-frame input[type="search"],.media-frame input[type="email"],.media-frame input[type="url"],.media-frame textarea,.media-frame select{font-family:sans-serif;font-size:12px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame textarea:disabled,.media-frame input[readonly],.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type="search"]{-webkit-appearance:textfield}.media-frame :-moz-placeholder{color:#a9a9a9}.ui-sortable,.ui-draggable{-ms-touch-action:none}.media-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:160000}.media-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.media-modal-close{position:absolute;top:7px;right:7px;width:30px;height:30px;z-index:1000}.media-modal-close span{display:block;margin:8px auto 0;width:15px;height:15px;background-position:-100px 0}.media-modal-close:active{outline:0}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;background:#fff}.media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.media-toolbar-primary{float:right;height:100%}.media-toolbar-secondary{float:left;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:10px;float:left;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:10px;float:left;margin-top:15px}.media-sidebar{position:absolute;top:0;right:0;bottom:0;width:267px;padding:0 16px 24px;z-index:75;background:#f5f5f5;border-left:1px solid #dfdfdf;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-weight:200;font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.media-sidebar h3{position:relative;font-weight:bold;text-transform:uppercase;font-size:12px;color:#777;text-shadow:0 1px 0 #fff;margin:24px 0 8px}.media-sidebar .setting{display:block;float:left;width:100%;margin:1px 0}.media-sidebar .setting label{display:block}.media-sidebar .setting .link-to-custom{margin:3px 0}.media-sidebar .setting span{min-width:30%;margin-right:4%;font-size:12px}.media-sidebar .setting select{max-width:65%}.media-sidebar .setting input[type="checkbox"]{width:auto;float:none;margin-top:8px;padding:0}.media-sidebar .setting span,.compat-item label span{float:left;min-height:22px;padding-top:8px;line-height:16px;text-align:right;font-weight:normal;color:#999;text-shadow:0 1px 0 #fff}.media-sidebar .setting input,.media-sidebar .setting textarea{width:65%;float:right}.media-sidebar .setting textarea,.compat-item .field textarea{height:62px;resize:vertical}.media-sidebar select{margin-top:3px}.compat-item{float:left;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .label,.compat-item .field{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-right:4%;float:left;text-align:right}.compat-item .label span{display:block;width:100%}.compat-item .field{float:right;width:65%;padding-right:1px}.compat-item .field input{width:100%;margin:0}.media-menu{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:16px 0;border-right:1px solid #d9d9d9;box-shadow:inset -6px 0 6px -6px rgba(0,0,0,0.2);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:4px 20px;margin:0;line-height:18px;font-size:14px;color:#21759b;text-shadow:0 1px 0 #fff;text-decoration:none}.media-menu>a:hover{color:#21759b;background:rgba(0,0,0,0.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#333;font-weight:bold}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #dfdfdf;border-bottom:1px solid #fff}.media-router{position:relative;padding:0 6px;margin:0;clear:both;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-router>a{position:relative;float:left;padding:2px 10px;margin:0;height:18px;line-height:18px;font-size:14px;border-right:1px solid #dfdfdf;text-shadow:0 1px 0 #fff;text-decoration:none}.media-router>a:last-child{border-right:0}.media-router>a:active,.media-router>a:focus{outline:0}.media-router .active,.media-router .active:hover{color:#333}.media-router .active:after{content:'';display:block;margin:-100px auto 0;width:7px;height:7px;background:#fff;box-shadow:1px 1px 1px rgba(0,0,0,0.2);z-index:300;-webkit-transform:rotate(45deg) translate(75px,75px);-moz-transform:rotate(45deg) translate(75px,75px);-ms-transform:rotate(45deg) translate(75px,75px);-o-transform:rotate(45deg) translate(75px,75px);transform:rotate(45deg) translate(75px,75px)}.media-frame{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.media-frame-menu{position:absolute;top:0;left:0;bottom:0;width:199px;z-index:150}.media-frame-title{position:absolute;top:0;left:200px;right:0;height:45px;z-index:200}.media-frame-router{position:absolute;top:45px;left:200px;right:0;height:30px;z-index:200;border-bottom:1px solid #dfdfdf;box-shadow:0 4px 4px -4px rgba(0,0,0,0.1)}.media-frame-content{position:absolute;top:75px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto}.media-frame-toolbar{position:absolute;left:200px;right:0;bottom:0;height:60px;z-index:100;border:0 solid #dfdfdf;border-width:1px 0 0 0;box-shadow:0 -4px 4px -4px rgba(0,0,0,0.1)}.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-toolbar,.media-frame.hide-menu .media-frame-content{left:0}.media-frame.hide-menu .media-frame-menu{left:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:45px}.media-frame.hide-router .media-frame-router{display:none}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;box-shadow:0 4px 4px -4px rgba(0,0,0,0.1)}.media-frame .media-toolbar .add-to-gallery{display:none}.media-frame-title h1{padding:0 16px;font-size:22px;font-weight:200;line-height:45px;margin:0}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-right:10px}.media-frame .search{margin-top:11px;padding:4px;line-height:18px;font-size:13px;color:#464646;font-family:sans-serif;-webkit-appearance:none}.media-toolbar-secondary .search{margin-right:16px}.attachments{margin:0;padding-right:16px;-webkit-overflow-scrolling:touch}.attachment{position:relative;float:left;padding:0;margin:0 10px 20px;color:#464646;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.selected.attachment{box-shadow:0 0 0 1px #fff,0 0 0 3px #ccc}.details.attachment{box-shadow:0 0 0 1px #fff,0 0 0 5px #1e8cbe}.attachment-preview{position:relative;width:199px;height:199px;box-shadow:inset 0 0 15px rgba(0,0,0,0.1),inset 0 0 0 1px rgba(0,0,0,0.05);background:#eee;cursor:pointer}.attachment .icon{margin:0 auto;overflow:hidden;padding-top:20%}.attachment .thumbnail{display:block;position:absolute;top:0;left:0;margin:0 auto;overflow:hidden;max-width:100%;max-height:100%}.attachment-preview .thumbnail:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,0.1);overflow:hidden}.attachment .thumbnail img{top:0;left:0}.attachment .thumbnail .centered{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transform:translate(50%,50%);-moz-transform:translate(50%,50%);-ms-transform:translate(50%,50%);-o-transform:translate(50%,50%);transform:translate(50%,50%)}.attachment .thumbnail .centered img{-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.attachment .filename{position:absolute;left:0;right:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:bold;background:rgba(255,255,255,0.8);box-shadow:inset 0 0 0 1px rgba(0,0,0,0.15)}.attachment .filename div{padding:5px 10px}.attachment-preview .thumbnail{width:199px;height:199px}.attachment .thumbnail img{position:absolute}.attachment .close{display:none;position:absolute;top:5px;right:5px;height:22px;width:22px;padding:0;font-size:20px;line-height:20px;text-align:center;text-decoration:none;color:#464646;background-color:#fff;background-position:-96px 4px;border-width:0;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,0.3)}.attachment .close:hover{box-shadow:0 0 0 1px rgba(0,0,0,0.6)}.attachment:hover .close{display:block}.attachment .check{display:none;height:24px;width:24px;position:absolute;top:-7px;right:-7px;outline:0;border:1px solid #fff;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,0.4);background:#f1f1f1;background-image:-webkit-gradient(linear,left top,left bottom,from(#f1f1f1),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#f1f1f1,#e1e1e1);background-image:-moz-linear-gradient(top,#f1f1f1,#e1e1e1);background-image:-o-linear-gradient(top,#f1f1f1,#e1e1e1);background-image:linear-gradient(to bottom,#f1f1f1,#e1e1e1)}.attachment .check div{background-position:-1px 0;height:15px;width:15px;margin:5px}.attachment .check:hover div{background-position:-40px 0}.attachment.selected .check{display:block}.attachment.details .check{box-shadow:0 0 0 1px #1e8cbe;background:#1e8cbe;background-image:-webkit-gradient(linear,left top,left bottom,from(#1e8cbe),to(#0074a2));background-image:-webkit-linear-gradient(top,#1e8cbe,#0074a2);background-image:-moz-linear-gradient(top,#1e8cbe,#0074a2);background-image:-o-linear-gradient(top,#1e8cbe,#0074a2);background-image:linear-gradient(to bottom,#1e8cbe,#0074a2)}.attachment.details .check div{background-position:-21px 0}.attachment.details .check:hover div{background-position:-60px 0}.media-frame .attachment .describe{position:relative;display:block;width:100%;margin:-1px 0 0;padding:8px;font-size:12px;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{right:300px;height:50px}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin-top:10px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;left:0;right:300px;bottom:0;overflow:auto}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#999}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,0.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#aaa;background:rgba(0,0,0,0.2);border-radius:10px;-webkit-transition:width 300ms;-moz-transition:width 300ms;-ms-transition:width 300ms;-o-transition:width 300ms;transition:width 300ms}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;left:15%;width:70%;margin:-5px 0 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.media-sidebar .media-uploader-status{border-bottom:1px solid #dfdfdf;box-shadow:0 1px 0 #fff}.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666;text-shadow:0 1px 0 #fff}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#464646}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:0;right:0}.upload-errors .upload-error{margin:8px auto 0 auto;padding:8px;border:1px #c00 solid;background:#ffebe8;border-radius:3px}.upload-errors .upload-error-label{padding:2px 4px;margin-right:8px;font-weight:bold;color:#fff;background:#e00;background-image:-webkit-gradient(linear,left top,left bottom,from(#e00),to(#a00));background-image:-webkit-linear-gradient(top,#e00,#a00);background-image:-moz-linear-gradient(top,#e00,#a00);background-image:-o-linear-gradient(top,#e00,#a00);background-image:linear-gradient(to bottom,#e00,#a00);border-radius:3px}.upload-errors .upload-error-message{display:block;padding-top:8px;color:#b44;word-wrap:break-word}.uploader-window{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,86,132,0.9);z-index:250000;display:none;text-align:center;opacity:0;-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-ms-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window h3{position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);font-size:20px;font-weight:200;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:transparent;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin:20px;padding:20px;text-align:center}.uploader-inline-content{position:absolute;top:30%;left:0;right:0}.uploader-inline-content .upload-ui{margin:4em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h3{font-size:20px;line-height:28px;font-weight:200;margin-bottom:1.6em}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;font-weight:normal}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;left:0;right:350px;height:60px;padding:0 0 0 16px;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-right:10px;vertical-align:top}.media-selection.empty,.media-selection.editing{display:none}.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:bold}.media-selection .selection-info a{display:block;float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:16px;text-decoration:none;border-right:1px solid #dfdfdf;color:#21759b}.media-selection .selection-info a:hover{background:#21759b;color:#fff;border-color:transparent}.media-selection .selection-info a:last-child{border-right:0;margin-right:0}.media-selection .selection-info .clear-selection{color:red}.media-selection .selection-info .clear-selection:hover{background:red}.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .attachments{display:inline-block;height:48px;margin-top:5px;overflow:hidden;vertical-align:top}.media-selection .attachment .icon{width:50%}.attachment.selection.selected{box-shadow:none}.attachment.selection.details{box-shadow:0 0 0 1px #fff,0 0 0 4px #1e8cbe}.media-selection .attachment.selection.details{box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe}.media-selection:after{content:'';display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(right,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-moz-linear-gradient(right,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-o-linear-gradient(right,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to left,rgba(255,255,255,1),rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/wpspin.gif) no-repeat;background-size:16px 16px;display:none;opacity:.7;filter:alpha(opacity=70);width:16px;height:16px;margin:0}.media-sidebar .settings-save-status{background:#f5f5f5;float:right;text-transform:none;z-index:10}.media-sidebar .settings-save-status .spinner{margin:0 5px 0}.media-sidebar .settings-save-status .saved{float:right;display:none}.media-sidebar .save-waiting .settings-save-status .spinner,.media-sidebar .save-complete .settings-save-status .saved{display:block}.attachment-details{position:relative;overflow:auto}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#999;border-bottom:1px solid #e5e5e5;box-shadow:0 1px 0 #fff;padding-bottom:11px}.attachment-info .filename{font-weight:bold;color:#464646;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:left;max-width:120px;max-height:120px;margin-top:5px;margin-right:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;box-shadow:inset 0 0 15px rgba(0,0,0,0.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,0.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:left;font-size:12px;max-width:100%}.attachment-info .edit-attachment,.attachment-info .refresh-attachment,.attachment-info .delete-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-info .refresh-attachment,.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-details.needs-refresh .attachment-info .refresh-attachment,.attachment-info .edit-attachment{display:block}.attachment-info .delete-attachment{color:#bc0b0b}.attachment-info .delete-attachment:hover{color:red}.attachment-display-settings{width:100%;float:left;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.gallery-settings{overflow:hidden}.embed-url{display:block;position:relative;padding:0 16px 7px;margin:0;z-index:250;background:#fff;border-bottom:1px solid #dfdfdf;box-shadow:0 4px 4px -4px rgba(0,0,0,0.1);font-size:18px;font-weight:200}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,0.1)}.media-frame .embed-url .spinner{position:absolute;top:16px;right:26px}.media-frame .embed-loading .embed-url .spinner{display:block}.embed-link-settings,.embed-image-settings{position:absolute;background:#f5f5f5;top:57px;left:0;right:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:left}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,0.1);overflow:hidden}.media-embed .setting{width:100%;margin-top:10px;float:left;display:block;clear:both}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#999;text-shadow:0 1px 0 #fff}.media-embed .setting .button-group{margin:2px 0}.media-embed .setting input,.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input,.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:left}@media only screen and (max-width:960px){.media-frame-content .media-toolbar-primary .search,.media-frame-content .media-toolbar-secondary .attachment-filters{max-width:120px}}@media only screen and (max-width:900px){.media-frame-menu{width:139px}.media-menu>a{padding:4px 10px}.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:140px}.media-sidebar{width:159px;padding:0 10px 24px}.attachments-browser .attachments,.attachments-browser .uploader-inline,.attachments-browser .media-toolbar{right:180px}.media-sidebar .setting input,.media-sidebar .setting textarea,.media-sidebar .setting span,.compat-item label span{float:none}.media-sidebar .setting span,.compat-item label span{text-align:inherit;display:block;min-height:16px;margin:0;padding:8px 2px 0}.media-sidebar .setting input,.media-sidebar .setting textarea,.media-sidebar .setting select{width:98%;max-width:none}.media-sidebar .setting select.columns{width:auto}.media-frame input,.media-frame textarea,.media-frame .search{padding:3px 6px}.media-frame-content .attachment .icon{top:40%}.media-selection{min-width:120px}.media-selection:after{background:0}.media-selection .attachments{display:none}.media-menu .separator{margin:12px 10px}}@media only screen and (max-width:800px){.media-frame-content .media-toolbar .instructions{display:none}}@media only screen and (max-width:680px){.media-frame-content .media-toolbar .search,.media-frame-content .media-toolbar .attachment-filters{max-width:85px}}@media only screen and (max-width:600px){.media-modal{width:540px;position:absolute}.media-modal-backdrop{width:600px;position:absolute}}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}.media-frame .spinner{background-image:url(../images/wpspin-2x.gif)}}
\ No newline at end of file
index 46d95b97849ce4cb08f3256f936a9018e3f4d923..c5566f3f9173950ce5d457a590c496d311a30c03 100644 (file)
@@ -1 +1,228 @@
-.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border-style:solid;border-width:1px;border-color:#dfdfdf;border-color:rgba(0,0,0,.125);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.19);-moz-box-shadow:0 2px 4px rgba(0,0,0,.19);box-shadow:0 2px 4px rgba(0,0,0,.19)}.wp-pointer-content h3{position:relative;margin:0 0 5px;padding:15px 18px 14px 60px;line-height:1.4em;font-size:14px;color:#fff;border-radius:3px 3px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#8cc1e9;background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%)}.wp-pointer-content h3:before{position:absolute;top:0;left:15px;content:' ';width:36px;height:100%;background:url('../images/icon-pointer-flag.png') 0 50% no-repeat}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{content:' ';width:10px;height:100%;position:absolute;left:-10px;background:url('../images/xit.gif') 0 50% no-repeat}.wp-pointer-buttons a.close:hover:before{background-position:100% 50%}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{padding-right:13px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px;width:30px;height:14px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px;width:14px;height:30px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;background-position:0 0}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;background-position:0 -46px}.wp-pointer-left .wp-pointer-arrow{left:0;background-position:0 -15px}.wp-pointer-right .wp-pointer-arrow{right:0;background-position:-16px -15px}.rtl .wp-pointer-content h3{padding-right:60px;padding-left:18px}.rtl .wp-pointer-content h3:before{right:15px}.rtl .wp-pointer-buttons a{float:left}.rtl .wp-pointer-buttons a.close{padding-right:3px;padding-left:0}.rtl .wp-pointer-buttons a.close:before{right:-10px}.rtl .wp-pointer-top .wp-pointer-arrow,.rtl .wp-pointer-bottom .wp-pointer-arrow,.rtl .wp-pointer-undefined .wp-pointer-arrow{right:50px}
\ No newline at end of file
+.wp-pointer {
+}
+
+.wp-pointer-content {
+       padding: 0 0 10px;
+       position: relative;
+       font-size: 13px;
+
+       background: #fff;
+       border-style: solid;
+       border-width: 1px;
+       /* Fallback for non-rgba-compliant browsers */
+       border-color: #dfdfdf;
+       /* Use rgba to look better against non-white backgrounds. */
+       border-color: rgba(0,0,0,.125);
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+
+       -webkit-box-shadow: 0 2px 4px rgba(0,0,0,.19);
+       box-shadow: 0 2px 4px rgba(0,0,0,.19);
+}
+
+.wp-pointer-content h3 {
+       position: relative;
+       margin: 0 0 5px;
+       padding: 15px 18px 14px 60px;
+       line-height: 1.4em;
+       font-size: 14px;
+       color: #fff;
+       border-radius: 3px 3px 0 0;
+       text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+       background: #8cc1e9;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#72a7cf), to(#8cc1e9));
+       background-image: -webkit-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image:    -moz-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image:      -o-linear-gradient(bottom, #72a7cf, #8cc1e9);
+       background-image: linear-gradient(to top, #72a7cf, #8cc1e9);
+}
+
+.wp-pointer-content h3:before {
+       position: absolute;
+       top: 0;
+       left: 15px;
+       content: ' ';
+       width: 36px;
+       height: 100%;
+       background: url('../images/icon-pointer-flag.png') 0 50% no-repeat;
+}
+
+.wp-pointer-content p {
+       padding: 0 15px;
+}
+
+.wp-pointer-buttons {
+       margin: 0;
+       padding: 5px 15px;
+       overflow: auto;
+}
+
+.wp-pointer-buttons a {
+       float: right;
+       display: inline-block;
+       text-decoration: none;
+}
+
+.wp-pointer-buttons a.close {
+       padding-left:3px;
+       position: relative;
+}
+
+.wp-pointer-buttons a.close:before {
+       content: ' ';
+       width:10px;
+       height:100%;
+       position:absolute;
+       left:-10px;
+       background:url('../images/xit.gif') 0 50% no-repeat;
+}
+
+.wp-pointer-buttons a.close:hover:before {
+       background-position:100% 50%;
+}
+
+/* The arrow base class must take up no space, even with transparent borders. */
+.wp-pointer-arrow,
+.wp-pointer-arrow-inner {
+       position: absolute;
+       width: 0;
+       height: 0;
+}
+
+.wp-pointer-arrow {
+       z-index: 10;
+       background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat;
+}
+
+.wp-pointer-arrow-inner {
+       z-index: 20;
+}
+
+/* Make Room for the Arrow! */
+.wp-pointer-top,
+.wp-pointer-undefined {
+       padding-top: 13px;
+}
+
+.wp-pointer-bottom {
+       padding-bottom: 13px;
+}
+
+.wp-pointer-left {
+       padding-left: 13px;
+}
+
+.wp-pointer-right {
+       padding-right: 13px;
+}
+
+/* Base Size & Positioning */
+.wp-pointer-top .wp-pointer-arrow,
+.wp-pointer-bottom .wp-pointer-arrow,
+.wp-pointer-undefined .wp-pointer-arrow {
+       left: 50px;
+       width: 30px;
+       height: 14px;
+}
+
+.wp-pointer-left .wp-pointer-arrow,
+.wp-pointer-right .wp-pointer-arrow {
+       top: 50%;
+       margin-top: -15px;
+       width: 14px;
+       height: 30px;
+}
+
+/* Arrow Sprite */
+.wp-pointer-top .wp-pointer-arrow,
+.wp-pointer-undefined .wp-pointer-arrow {
+       top: 0;
+       background-position: 0 0;
+}
+
+.wp-pointer-bottom .wp-pointer-arrow {
+       bottom: 0;
+       background-position: 0 -46px;
+}
+
+.wp-pointer-left .wp-pointer-arrow {
+       left: 0;
+       background-position: 0 -15px;
+}
+
+.wp-pointer-right .wp-pointer-arrow {
+       right:0;
+       background-position:-16px -15px;
+}
+
+/* - RTL
+------------------------------------------------------------------------------*/
+
+.rtl .wp-pointer-content h3 {
+       padding-right: 60px;
+       padding-left: 18px;
+}
+
+.rtl .wp-pointer-content h3:before {
+       right: 15px;
+}
+
+.rtl .wp-pointer-buttons a {
+       float: left;
+}
+
+.rtl .wp-pointer-buttons a.close {
+       padding-right:3px;
+       padding-left: 0;
+}
+
+.rtl .wp-pointer-buttons a.close:before {
+       right:-10px;
+}
+
+.rtl .wp-pointer-top .wp-pointer-arrow,
+.rtl .wp-pointer-bottom .wp-pointer-arrow,
+.rtl .wp-pointer-undefined .wp-pointer-arrow {
+       right: 50px;
+}
+
+/**
+ * HiDPI Displays
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+
+       .wp-pointer-buttons a.close:before {
+               background-image: url('../images/xit-2x.gif');
+               background-size: 20px auto;
+       }
+
+       .wp-pointer-content h3:before {
+               background-image: url('../images/icon-pointer-flag-2x.png');
+               background-size: 36px auto;
+       }
+
+       .wp-pointer-arrow {
+               background: url('../images/arrow-pointer-blue-2x.png') 0 0 no-repeat;
+               background-size: 30px 60px;
+       }
+
+       .wp-pointer-top .wp-pointer-arrow,
+       .wp-pointer-undefined .wp-pointer-arrow {
+               background-position: 0 1px;
+       }
+
+       .wp-pointer-bottom .wp-pointer-arrow {
+               background-position: 0 -47px;
+       }
+
+       .wp-pointer-left .wp-pointer-arrow {
+               background-position: 1px -15px;
+       }
+
+       .wp-pointer-right .wp-pointer-arrow {
+               background-position:-17px -15px;
+       }
+}
diff --git a/wp-includes/css/wp-pointer.dev.css b/wp-includes/css/wp-pointer.dev.css
deleted file mode 100644 (file)
index 381db83..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-.wp-pointer {
-}
-
-.wp-pointer-content {
-       padding: 0 0 10px;
-       position: relative;
-       font-size: 13px;
-
-       background: #fff;
-       border-style: solid;
-       border-width: 1px;
-       /* Fallback for non-rgba-compliant browsers */
-       border-color: #dfdfdf;
-       /* Use rgba to look better against non-white backgrounds. */
-       border-color: rgba(0,0,0,.125);
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-
-       -webkit-box-shadow: 0 2px 4px rgba(0,0,0,.19);
-       -moz-box-shadow: 0 2px 4px rgba(0,0,0,.19);
-       box-shadow: 0 2px 4px rgba(0,0,0,.19);
-}
-
-.wp-pointer-content h3 {
-       position: relative;
-       margin: 0 0 5px;
-       padding: 15px 18px 14px 60px;
-       line-height: 1.4em;
-       font-size: 14px;
-       color: #fff;
-       border-radius: 3px 3px 0 0;
-       text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
-       background-color: #8cc1e9;
-       background-image: -webkit-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(140,193,233) 100%);
-       background-image: -moz-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(140,193,233) 100%);
-       background-image: -ms-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(140,193,233) 100%);
-       background-image: -o-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(140,193,233) 100%);
-       background-image: linear-gradient(bottom, rgb(114,167,207) 0%, rgb(140,193,233) 100%);
-}
-
-.wp-pointer-content h3:before {
-       position: absolute;
-       top: 0;
-       left: 15px;
-       content: ' ';
-       width: 36px;
-       height: 100%;
-       background: url('../images/icon-pointer-flag.png') 0 50% no-repeat;
-}
-
-.wp-pointer-content p {
-       padding: 0 15px;
-}
-
-.wp-pointer-buttons {
-       margin: 0;
-       padding: 5px 15px;
-       overflow: auto;
-}
-
-.wp-pointer-buttons a {
-       float: right;
-       display: inline-block;
-       text-decoration: none;
-}
-
-.wp-pointer-buttons a.close {
-       padding-left:3px;
-       position: relative;
-}
-
-.wp-pointer-buttons a.close:before {
-       content: ' ';
-       width:10px;
-       height:100%;
-       position:absolute;
-       left:-10px;
-       background:url('../images/xit.gif') 0 50% no-repeat;
-}
-
-.wp-pointer-buttons a.close:hover:before {
-       background-position:100% 50%;
-}
-
-/* The arrow base class must take up no space, even with transparent borders. */
-.wp-pointer-arrow,
-.wp-pointer-arrow-inner {
-       position: absolute;
-       width: 0;
-       height: 0;
-}
-
-.wp-pointer-arrow {
-       z-index: 10;
-       background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat;
-}
-
-.wp-pointer-arrow-inner {
-       z-index: 20;
-}
-
-/* Make Room for the Arrow! */
-.wp-pointer-top,
-.wp-pointer-undefined {
-       padding-top: 13px;
-}
-
-.wp-pointer-bottom {
-       padding-bottom: 13px;
-}
-
-.wp-pointer-left {
-       padding-left: 13px;
-}
-
-.wp-pointer-right {
-       padding-right: 13px;
-}
-
-/* Base Size & Positioning */
-.wp-pointer-top .wp-pointer-arrow,
-.wp-pointer-bottom .wp-pointer-arrow,
-.wp-pointer-undefined .wp-pointer-arrow {
-       left: 50px;
-       width: 30px;
-       height: 14px;
-}
-
-.wp-pointer-left .wp-pointer-arrow,
-.wp-pointer-right .wp-pointer-arrow {
-       top: 50%;
-       margin-top: -15px;
-       width: 14px;
-       height: 30px;
-}
-
-/* Arrow Sprite */
-.wp-pointer-top .wp-pointer-arrow,
-.wp-pointer-undefined .wp-pointer-arrow {
-       top: 0;
-       background-position: 0 0;
-}
-
-.wp-pointer-bottom .wp-pointer-arrow {
-       bottom: 0;
-       background-position: 0 -46px;
-}
-
-.wp-pointer-left .wp-pointer-arrow {
-       left: 0;
-       background-position: 0 -15px;
-}
-
-.wp-pointer-right .wp-pointer-arrow {
-       right:0;
-       background-position:-16px -15px;
-}
-
-/* - RTL
-------------------------------------------------------------------------------*/
-
-.rtl .wp-pointer-content h3 {
-       padding-right: 60px;
-       padding-left: 18px;
-}
-
-.rtl .wp-pointer-content h3:before {
-       right: 15px;
-}
-
-.rtl .wp-pointer-buttons a {
-       float: left;
-}
-
-.rtl .wp-pointer-buttons a.close {
-       padding-right:3px;
-       padding-left: 0;
-}
-
-.rtl .wp-pointer-buttons a.close:before {
-       right:-10px;
-}
-
-.rtl .wp-pointer-top .wp-pointer-arrow,
-.rtl .wp-pointer-bottom .wp-pointer-arrow,
-.rtl .wp-pointer-undefined .wp-pointer-arrow {
-       right: 50px;
-}
\ No newline at end of file
diff --git a/wp-includes/css/wp-pointer.min.css b/wp-includes/css/wp-pointer.min.css
new file mode 100644 (file)
index 0000000..48ebbc4
--- /dev/null
@@ -0,0 +1 @@
+.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border-style:solid;border-width:1px;border-color:#dfdfdf;border-color:rgba(0,0,0,.125);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.19);box-shadow:0 2px 4px rgba(0,0,0,.19)}.wp-pointer-content h3{position:relative;margin:0 0 5px;padding:15px 18px 14px 60px;line-height:1.4em;font-size:14px;color:#fff;border-radius:3px 3px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background:#8cc1e9;background-image:-webkit-gradient(linear,left bottom,left top,from(#72a7cf),to(#8cc1e9));background-image:-webkit-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-moz-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-o-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:linear-gradient(to top,#72a7cf,#8cc1e9)}.wp-pointer-content h3:before{position:absolute;top:0;left:15px;content:' ';width:36px;height:100%;background:url('../images/icon-pointer-flag.png') 0 50% no-repeat}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{content:' ';width:10px;height:100%;position:absolute;left:-10px;background:url('../images/xit.gif') 0 50% no-repeat}.wp-pointer-buttons a.close:hover:before{background-position:100% 50%}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{padding-right:13px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px;width:30px;height:14px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px;width:14px;height:30px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;background-position:0 0}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;background-position:0 -46px}.wp-pointer-left .wp-pointer-arrow{left:0;background-position:0 -15px}.wp-pointer-right .wp-pointer-arrow{right:0;background-position:-16px -15px}.rtl .wp-pointer-content h3{padding-right:60px;padding-left:18px}.rtl .wp-pointer-content h3:before{right:15px}.rtl .wp-pointer-buttons a{float:left}.rtl .wp-pointer-buttons a.close{padding-right:3px;padding-left:0}.rtl .wp-pointer-buttons a.close:before{right:-10px}.rtl .wp-pointer-top .wp-pointer-arrow,.rtl .wp-pointer-bottom .wp-pointer-arrow,.rtl .wp-pointer-undefined .wp-pointer-arrow{right:50px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-pointer-buttons a.close:before{background-image:url('../images/xit-2x.gif');background-size:20px auto}.wp-pointer-content h3:before{background-image:url('../images/icon-pointer-flag-2x.png');background-size:36px auto}.wp-pointer-arrow{background:url('../images/arrow-pointer-blue-2x.png') 0 0 no-repeat;background-size:30px 60px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{background-position:0 1px}.wp-pointer-bottom .wp-pointer-arrow{background-position:0 -47px}.wp-pointer-left .wp-pointer-arrow{background-position:1px -15px}.wp-pointer-right .wp-pointer-arrow{background-position:-17px -15px}}
\ No newline at end of file
index 4e5daabd4d2f2f07ed8a98e6d21ba7035b28b4ba..bc537a5e0610a3ec3418988bf6ac4154a913560c 100644 (file)
@@ -20,7 +20,7 @@ function wp_initial_constants( ) {
                if( is_multisite() ) {
                        define('WP_MEMORY_LIMIT', '64M');
                } else {
-                       define('WP_MEMORY_LIMIT', '32M');
+                       define('WP_MEMORY_LIMIT', '40M');
                }
        }
 
@@ -39,8 +39,11 @@ function wp_initial_constants( ) {
                $blog_id = 1;
 
        // set memory limits.
-       if ( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < abs(intval(WP_MEMORY_LIMIT)) ) )
-               @ini_set('memory_limit', WP_MEMORY_LIMIT);
+       if ( function_exists( 'memory_get_usage' ) ) {
+               $current_limit = @ini_get( 'memory_limit' );
+               if ( -1 != $current_limit && ( -1 == WP_MEMORY_LIMIT || ( intval( $current_limit ) < abs( intval( WP_MEMORY_LIMIT ) ) ) ) )
+                       @ini_set( 'memory_limit', WP_MEMORY_LIMIT );
+       }
 
        if ( !defined('WP_CONTENT_DIR') )
                define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
@@ -69,6 +72,14 @@ function wp_initial_constants( ) {
 
        if ( !defined('SHORTINIT') )
                define('SHORTINIT', false);
+
+       // Constants for expressing human-readable intervals
+       // in their respective number of seconds.
+       define( 'MINUTE_IN_SECONDS', 60 );
+       define( 'HOUR_IN_SECONDS',   60 * MINUTE_IN_SECONDS );
+       define( 'DAY_IN_SECONDS',    24 * HOUR_IN_SECONDS   );
+       define( 'WEEK_IN_SECONDS',    7 * DAY_IN_SECONDS    );
+       define( 'YEAR_IN_SECONDS',  365 * DAY_IN_SECONDS    );
 }
 
 /**
@@ -293,6 +304,6 @@ function wp_templating_constants( ) {
         * @since 3.0.0
         */
        if ( !defined('WP_DEFAULT_THEME') )
-               define( 'WP_DEFAULT_THEME', 'twentyeleven' );
+               define( 'WP_DEFAULT_THEME', 'twentytwelve' );
 
 }
index c1a1d9f67de5b3c8928874c4b139601a0d8927b8..19fdd502eca4e6907cd5661ad6ba90dbe32e8e76 100644 (file)
@@ -249,7 +249,6 @@ add_action( 'plugins_loaded',             'wp_maybe_load_embeds',
 add_action( 'shutdown',                   'wp_ob_end_flush_all',                      1    );
 add_action( 'pre_post_update',            'wp_save_post_revision'                          );
 add_action( 'publish_post',               '_publish_post_hook',                       5, 1 );
-add_action( 'save_post',                  '_save_post_hook',                          5, 2 );
 add_action( 'transition_post_status',     '_transition_post_status',                  5, 3 );
 add_action( 'transition_post_status',     '_update_term_count_on_transition_post_status', 10, 3 );
 add_action( 'comment_form',               'wp_comment_form_unfiltered_html_nonce'          );
@@ -258,6 +257,7 @@ add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts'
 add_action( 'admin_init',                 'send_frame_options_header',               10, 0 );
 add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment'                           );
 add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment'                           );
+add_action( 'welcome_panel',              'wp_welcome_panel'                               );
 
 // Navigation menu actions
 add_action( 'delete_post',                '_wp_delete_post_menu_item'         );
@@ -282,4 +282,10 @@ add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' );
 add_action( 'admin_init', 'register_admin_color_schemes', 1);
 add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
 
+// If the upgrade hasn't run yet, assume link manager is used.
+add_filter( 'default_option_link_manager_enabled', '__return_true' );
+
+// This option no longer exists; tell plugins we always support auto-embedding.
+add_filter( 'default_option_embed_autourls', '__return_true' );
+
 unset($filter, $action);
index e4856dac68b790a958e9b4948c1dc2e6861da841..bcbae03dee6d975e729c84fbd1b1976a9bb30790 100644 (file)
@@ -150,8 +150,8 @@ class WP_Widget_Links extends WP_Widget {
                <option value=""><?php _ex('All Links', 'links widget'); ?></option>
                <?php
                foreach ( $link_cats as $link_cat ) {
-                       echo '<option value="' . intval($link_cat->term_id) . '"'
-                               . ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' )
+                       echo '<option value="' . intval( $link_cat->term_id ) . '"'
+                               . selected( $instance['category'], $link_cat->term_id, false )
                                . '>' . $link_cat->name . "</option>\n";
                }
                ?>
@@ -161,7 +161,7 @@ class WP_Widget_Links extends WP_Widget {
                        <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option>
                        <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option>
                        <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option>
-                       <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random' ); ?></option>
+                       <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _ex( 'Random', 'Links widget' ); ?></option>
                </select>
                </p>
                <p>
@@ -355,7 +355,7 @@ class WP_Widget_Calendar extends WP_Widget {
 
        function widget( $args, $instance ) {
                extract($args);
-               $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title'], $instance, $this->id_base);
+               $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
                echo $before_widget;
                if ( $title )
                        echo $before_title . $title . $after_title;
@@ -536,9 +536,9 @@ class WP_Widget_Recent_Posts extends WP_Widget {
                parent::__construct('recent-posts', __('Recent Posts'), $widget_ops);
                $this->alt_option_name = 'widget_recent_entries';
 
-               add_action( 'save_post', array(&$this, 'flush_widget_cache') );
-               add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
-               add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
+               add_action( 'save_post', array($this, 'flush_widget_cache') );
+               add_action( 'deleted_post', array($this, 'flush_widget_cache') );
+               add_action( 'switch_theme', array($this, 'flush_widget_cache') );
        }
 
        function widget($args, $instance) {
@@ -561,6 +561,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
                $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base);
                if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
                        $number = 10;
+               $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
 
                $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) );
                if ($r->have_posts()) :
@@ -568,8 +569,13 @@ class WP_Widget_Recent_Posts extends WP_Widget {
                <?php echo $before_widget; ?>
                <?php if ( $title ) echo $before_title . $title . $after_title; ?>
                <ul>
-               <?php  while ($r->have_posts()) : $r->the_post(); ?>
-               <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>
+               <?php while ( $r->have_posts() ) : $r->the_post(); ?>
+                       <li>
+                               <a href="<?php the_permalink() ?>" title="<?php echo esc_attr( get_the_title() ? get_the_title() : get_the_ID() ); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a>
+                       <?php if ( $show_date ) : ?>
+                               <span class="post-date"><?php echo get_the_date(); ?></span>
+                       <?php endif; ?>
+                       </li>
                <?php endwhile; ?>
                </ul>
                <?php echo $after_widget; ?>
@@ -587,6 +593,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
                $instance = $old_instance;
                $instance['title'] = strip_tags($new_instance['title']);
                $instance['number'] = (int) $new_instance['number'];
+               $instance['show_date'] = (bool) $new_instance['show_date'];
                $this->flush_widget_cache();
 
                $alloptions = wp_cache_get( 'alloptions', 'options' );
@@ -601,14 +608,18 @@ class WP_Widget_Recent_Posts extends WP_Widget {
        }
 
        function form( $instance ) {
-               $title = isset($instance['title']) ? esc_attr($instance['title']) : '';
-               $number = isset($instance['number']) ? absint($instance['number']) : 5;
+               $title     = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
+               $number    = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
+               $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false;
 ?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
+               <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
 
-               <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:'); ?></label>
-               <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
+               <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label>
+               <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
+
+               <p><input class="checkbox" type="checkbox" <?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" />
+               <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label></p>
 <?php
        }
 }
@@ -626,10 +637,10 @@ class WP_Widget_Recent_Comments extends WP_Widget {
                $this->alt_option_name = 'widget_recent_comments';
 
                if ( is_active_widget(false, false, $this->id_base) )
-                       add_action( 'wp_head', array(&$this, 'recent_comments_style') );
+                       add_action( 'wp_head', array($this, 'recent_comments_style') );
 
-               add_action( 'comment_post', array(&$this, 'flush_widget_cache') );
-               add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') );
+               add_action( 'comment_post', array($this, 'flush_widget_cache') );
+               add_action( 'transition_comment_status', array($this, 'flush_widget_cache') );
        }
 
        function recent_comments_style() {
@@ -675,6 +686,10 @@ class WP_Widget_Recent_Comments extends WP_Widget {
 
                $output .= '<ul id="recentcomments">';
                if ( $comments ) {
+                       // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.)
+                       $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) );
+                       _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false );
+
                        foreach ( (array) $comments as $comment) {
                                $output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
                        }
@@ -829,7 +844,7 @@ function wp_widget_rss_output( $rss, $args = array() ) {
        $show_date     = (int) $show_date;
 
        if ( !$rss->get_item_quantity() ) {
-               echo '<ul><li>' . __( 'An error has occurred; the feed is probably down. Try again later.' ) . '</li></ul>';
+               echo '<ul><li>' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</li></ul>';
                $rss->__destruct();
                unset($rss);
                return;
@@ -935,7 +950,7 @@ function wp_widget_rss_form( $args, $inputs = null ) {
        <select id="rss-items-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][items]">
 <?php
                for ( $i = 1; $i <= 20; ++$i )
-                       echo "<option value='$i' " . ( $items == $i ? "selected='selected'" : '' ) . ">$i</option>";
+                       echo "<option value='$i' " . selected( $items, $i, false ) . ">$i</option>";
 ?>
        </select></p>
 <?php endif; if ( $inputs['show_summary'] ) : ?>
@@ -1130,8 +1145,9 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
                        <select id="<?php echo $this->get_field_id('nav_menu'); ?>" name="<?php echo $this->get_field_name('nav_menu'); ?>">
                <?php
                        foreach ( $menus as $menu ) {
-                               $selected = $nav_menu == $menu->term_id ? ' selected="selected"' : '';
-                               echo '<option'. $selected .' value="'. $menu->term_id .'">'. $menu->name .'</option>';
+                               echo '<option value="' . $menu->term_id . '"'
+                                       . selected( $nav_menu, $menu->term_id, false )
+                                       . '>'. $menu->name . '</option>';
                        }
                ?>
                        </select>
@@ -1158,7 +1174,8 @@ function wp_widgets_init() {
 
        register_widget('WP_Widget_Archives');
 
-       register_widget('WP_Widget_Links');
+       if ( get_option( 'link_manager_enabled' ) )
+               register_widget('WP_Widget_Links');
 
        register_widget('WP_Widget_Meta');
 
index 43523ca6980d58a8d8f517fae6157700b8e710d2..c8fdf4ff2f5ff0079fe211545706b07ef587827e 100644 (file)
@@ -26,7 +26,7 @@
 function get_postdata($postid) {
        _deprecated_function( __FUNCTION__, '1.5.1', 'get_post()' );
 
-       $post = &get_post($postid);
+       $post = get_post($postid);
 
        $postdata = array (
                'ID' => $post->ID,
@@ -57,14 +57,14 @@ function get_postdata($postid) {
  * @deprecated Use The Loop - {@link http://codex.wordpress.org/The_Loop Use new WordPress Loop}
  */
 function start_wp() {
-       global $wp_query, $post;
+       global $wp_query;
 
        _deprecated_function( __FUNCTION__, '1.5', __('new WordPress Loop') );
 
        // Since the old style loop is being used, advance the query iterator here.
        $wp_query->next_post();
 
-       setup_postdata($post);
+       setup_postdata( get_post() );
 }
 
 /**
@@ -984,7 +984,7 @@ function get_links($category = -1, $before = '', $after = '<br />', $between = '
 
                if ( $show_updated )
                        if (substr($row->link_updated_f, 0, 2) != '00')
-                               $title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * 3600)) . ')';
+                               $title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * HOUR_IN_SECONDS)) . ')';
 
                if ( '' != $title )
                        $title = ' title="' . $title . '"';
@@ -1215,7 +1215,7 @@ function get_author_rss_link($echo = false, $author_id = 1) {
  */
 function comments_rss() {
        _deprecated_function( __FUNCTION__, '2.2', 'get_post_comments_feed_link()' );
-       return get_post_comments_feed_link();
+       return esc_url( get_post_comments_feed_link() );
 }
 
 /**
@@ -1892,7 +1892,7 @@ function get_alloptions() {
 function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false, $permalink = false) {
        _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_link()' );
        $id = (int) $id;
-       $_post = get_post($id);
+       $_post = get_post($id);
 
        if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) )
                return __('Missing Attachment');
@@ -1921,7 +1921,7 @@ function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false,
 function get_attachment_icon_src( $id = 0, $fullsize = false ) {
        _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image_src()' );
        $id = (int) $id;
-       if ( !$post = get_post($id) )
+       if ( !$post = get_post($id) )
                return false;
 
        $file = get_attached_file( $post->ID );
@@ -1966,7 +1966,7 @@ function get_attachment_icon_src( $id = 0, $fullsize = false ) {
 function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
        _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image()' );
        $id = (int) $id;
-       if ( !$post = get_post($id) )
+       if ( !$post = get_post($id) )
                return false;
 
        if ( !$src = get_attachment_icon_src( $post->ID, $fullsize ) )
@@ -2023,7 +2023,7 @@ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
 function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) {
        _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image()' );
        $id = (int) $id;
-       if ( !$post = get_post($id) )
+       if ( !$post = get_post($id) )
                return false;
 
        if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims))
@@ -2801,7 +2801,7 @@ function get_parent_post_rel_link($title = '%title') {
        _deprecated_function( __FUNCTION__, '3.3' );
 
        if ( ! empty( $GLOBALS['post'] ) && ! empty( $GLOBALS['post']->post_parent ) )
-               $post = get_post($GLOBALS['post']->post_parent);
+               $post = get_post($GLOBALS['post']->post_parent);
 
        if ( empty($post) )
                return;
@@ -3097,7 +3097,7 @@ function remove_custom_background() {
  * @return array Theme data.
  */
 function get_theme_data( $theme_file ) {
-       _deprecated_function( __FUNCTION__, 3.4, 'wp_get_theme()' );
+       _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' );
        $theme = new WP_Theme( basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) );
 
        $theme_data = array(
@@ -3133,7 +3133,7 @@ function get_theme_data( $theme_file ) {
  * @param array $pages list of page objects
  */
 function update_page_cache( &$pages ) {
-       _deprecated_function( __FUNCTION__, 3.4, 'update_post_cache()' );
+       _deprecated_function( __FUNCTION__, '3.4', 'update_post_cache()' );
 
        update_post_cache( $pages );
 }
@@ -3152,7 +3152,215 @@ function update_page_cache( &$pages ) {
  * @param int $id Page ID to clean
  */
 function clean_page_cache( $id ) {
-       _deprecated_function( __FUNCTION__, 3.4, 'clean_post_cache()' );
+       _deprecated_function( __FUNCTION__, '3.4', 'clean_post_cache()' );
 
        clean_post_cache( $id );
 }
+
+/**
+ * Retrieve nonce action "Are you sure" message.
+ *
+ * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3.
+ *
+ * @since 2.0.4
+ * @deprecated 3.4.1
+ * @deprecated Use wp_nonce_ays()
+ * @see wp_nonce_ays()
+ *
+ * @param string $action Nonce action.
+ * @return string Are you sure message.
+ */
+function wp_explain_nonce( $action ) {
+       _deprecated_function( __FUNCTION__, '3.4.1', 'wp_nonce_ays()' );
+       return __( 'Are you sure you want to do this?' );
+}
+
+/**
+ * Display "sticky" CSS class, if a post is sticky.
+ *
+ * @since 2.7.0
+ * @deprecated 3.5.0
+ * @deprecated Use post_class()
+ * @see post_class()
+ *
+ * @param int $post_id An optional post ID.
+ */
+function sticky_class( $post_id = null ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'post_class()' );
+       if ( is_sticky( $post_id ) )
+               echo ' sticky';
+}
+
+/**
+ * Retrieve post ancestors.
+ *
+ * This is no longer needed as WP_Post lazy-loads the ancestors
+ * property with get_post_ancestors().
+ *
+ * @since 2.3.4
+ * @deprecated 3.5.0
+ * @see get_post_ancestors()
+ */
+function _get_post_ancestors( &$post ) {
+       _deprecated_function( __FUNCTION__, '3.5' );
+}
+
+/**
+ * Load an image from a string, if PHP supports it.
+ *
+ * @since 2.1.0
+ * @deprecated 3.5.0
+ * @see wp_get_image_editor()
+ *
+ * @param string $file Filename of the image to load.
+ * @return resource The resulting image resource on success, Error string on failure.
+ */
+function wp_load_image( $file ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'wp_get_image_editor()' );
+
+       if ( is_numeric( $file ) )
+               $file = get_attached_file( $file );
+
+       if ( ! is_file( $file ) )
+               return sprintf(__('File &#8220;%s&#8221; doesn&#8217;t exist?'), $file);
+
+       if ( ! function_exists('imagecreatefromstring') )
+               return __('The GD image library is not installed.');
+
+       // Set artificially high because GD uses uncompressed images in memory
+       @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );
+       $image = imagecreatefromstring( file_get_contents( $file ) );
+
+       if ( !is_resource( $image ) )
+               return sprintf(__('File &#8220;%s&#8221; is not an image.'), $file);
+
+       return $image;
+}
+
+/**
+ * Scale down an image to fit a particular size and save a new copy of the image.
+ *
+ * The PNG transparency will be preserved using the function, as well as the
+ * image type. If the file going in is PNG, then the resized image is going to
+ * be PNG. The only supported image types are PNG, GIF, and JPEG.
+ *
+ * Some functionality requires API to exist, so some PHP version may lose out
+ * support. This is not the fault of WordPress (where functionality is
+ * downgraded, not actual defects), but of your PHP version.
+ *
+ * @since 2.5.0
+ * @deprecated 3.5.0
+ * @see wp_get_image_editor()
+ *
+ * @param string $file Image file path.
+ * @param int $max_w Maximum width to resize to.
+ * @param int $max_h Maximum height to resize to.
+ * @param bool $crop Optional. Whether to crop image or resize.
+ * @param string $suffix Optional. File suffix.
+ * @param string $dest_path Optional. New image file path.
+ * @param int $jpeg_quality Optional, default is 90. Image quality percentage.
+ * @return mixed WP_Error on failure. String with new destination path.
+ */
+function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'wp_get_image_editor()' );
+
+       $editor = wp_get_image_editor( $file );
+       if ( is_wp_error( $editor ) )
+               return $editor;
+       $editor->set_quality( $jpeg_quality );
+
+       $resized = $editor->resize( $max_w, $max_h, $crop );
+       if ( is_wp_error( $resized ) )
+               return $resized;
+
+       $dest_file = $editor->generate_filename( $suffix, $dest_path );
+       $saved = $editor->save( $dest_file );
+
+       if ( is_wp_error( $saved ) )
+               return $saved;
+
+       return $dest_file;
+}
+
+/**
+ * Retrieve a single post, based on post ID.
+ *
+ * Has categories in 'post_category' property or key. Has tags in 'tags_input'
+ * property or key.
+ *
+ * @since 1.0.0
+ * @deprecated 3.5.0
+ * @see get_post()
+ *
+ * @param int $postid Post ID.
+ * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A.
+ * @return object|array Post object or array holding post contents and information
+ */
+function wp_get_single_post( $postid = 0, $mode = OBJECT ) {
+       _deprecated_function( __FUNCTION__, '3.5', 'get_post()' );
+       return get_post( $postid, $mode, 'edit' );
+}
+
+/**
+ * Check that the user login name and password is correct.
+ *
+ * @since 0.71
+ * @deprecated 3.5.0
+ * @deprecated Use wp_authenticate()
+ * @see wp_authenticate()
+ *
+ * @param string $user_login User name.
+ * @param string $user_pass User password.
+ * @return bool False if does not authenticate, true if username and password authenticates.
+ */
+function user_pass_ok($user_login, $user_pass) {
+       _deprecated_function( __FUNCTION__, '3.5', 'wp_authenticate()' );
+       $user = wp_authenticate( $user_login, $user_pass );
+       if ( is_wp_error( $user ) )
+               return false;
+
+       return true;
+}
+
+/**
+ * Callback formerly fired on the save_post hook. No longer needed.
+ *
+ * @since 2.3.0
+ * @deprecated 3.5.0
+ */
+function _save_post_hook() {}
+
+/**
+ * Check if the installed version of GD supports particular image type
+ *
+ * @since 2.9.0
+ * @deprecated 3.5.0
+ * see wp_image_editor_supports()
+ *
+ * @param string $mime_type
+ * @return bool
+ */
+function gd_edit_image_support($mime_type) {
+       _deprecated_function( __FUNCTION__, '3.5', 'wp_image_editor_supports()' );
+
+       if ( function_exists('imagetypes') ) {
+               switch( $mime_type ) {
+                       case 'image/jpeg':
+                               return (imagetypes() & IMG_JPG) != 0;
+                       case 'image/png':
+                               return (imagetypes() & IMG_PNG) != 0;
+                       case 'image/gif':
+                               return (imagetypes() & IMG_GIF) != 0;
+               }
+       } else {
+               switch( $mime_type ) {
+                       case 'image/jpeg':
+                               return function_exists('imagecreatefromjpeg');
+                       case 'image/png':
+                               return function_exists('imagecreatefrompng');
+                       case 'image/gif':
+                               return function_exists('imagecreatefromgif');
+               }
+       }
+       return false;
+}
index 94e89f52c4781fb5de77b5c4c56ea71c44f94642..174670379c7c16d67844cd4452eaf787c86fda5a 100644 (file)
@@ -16,11 +16,11 @@ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>'
 >
        <title type="text"><?php
                if ( is_singular() )
-                       printf(ent2ncr(__('Comments on %s')), get_the_title_rss());
+                       printf( ent2ncr( __( 'Comments on %s' ) ), get_the_title_rss() );
                elseif ( is_search() )
-                       printf(ent2ncr(__('Comments for %1$s searching on %2$s')), get_bloginfo_rss( 'name' ), get_search_query() );
+                       printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() );
                else
-                       printf(ent2ncr(__('Comments for %s')), get_bloginfo_rss( 'name' ) . get_wp_title_rss());
+                       printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() );
        ?></title>
        <subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
 
@@ -28,8 +28,8 @@ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>'
 
 <?php if ( is_singular() ) { ?>
        <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php comments_link_feed(); ?>" />
-       <link rel="self" type="application/atom+xml" href="<?php echo get_post_comments_feed_link('', 'atom'); ?>" />
-       <id><?php echo get_post_comments_feed_link('', 'atom'); ?></id>
+       <link rel="self" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?>" />
+       <id><?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?></id>
 <?php } elseif(is_search()) { ?>
        <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo home_url() . '?s=' . get_search_query(); ?>" />
        <link rel="self" type="application/atom+xml" href="<?php echo get_search_comments_feed_link('', 'atom'); ?>" />
index f8f08c87e7c31e38d6c1b87f775c40a814f68b60..983c8f4a3d7a31edaf693e2b547c26866346e77d 100644 (file)
@@ -21,7 +21,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 
        <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
 
-       <link rel="alternate" type="text/html" href="<?php bloginfo_rss('url') ?>" />
+       <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php bloginfo_rss('url') ?>" />
        <id><?php bloginfo('atom_url'); ?></id>
        <link rel="self" type="application/atom+xml" href="<?php self_link(); ?>" />
 
@@ -36,7 +36,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
                        do_action('atom_author'); ?>
                </author>
                <title type="<?php html_type_rss(); ?>"><![CDATA[<?php the_title_rss() ?>]]></title>
-               <link rel="alternate" type="text/html" href="<?php the_permalink_rss() ?>" />
+               <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php the_permalink_rss() ?>" />
                <id><?php the_guid() ; ?></id>
                <updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
                <published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
@@ -47,8 +47,8 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 <?php endif; ?>
 <?php atom_enclosure(); ?>
 <?php do_action('atom_entry'); ?>
-               <link rel="replies" type="text/html" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
-               <link rel="replies" type="application/atom+xml" href="<?php echo get_post_comments_feed_link(0,'atom') ?>" thr:count="<?php echo get_comments_number()?>"/>
+               <link rel="replies" type="<?php bloginfo_rss('html_type'); ?>" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
+               <link rel="replies" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link(0, 'atom') ); ?>" thr:count="<?php echo get_comments_number()?>"/>
                <thr:total><?php echo get_comments_number()?></thr:total>
        </entry>
        <?php endwhile ; ?>
index 26d3325d574895ae56811d9ed903971adf4c69e7..a6a91016a6af2064b7183e8c83296d2742f7c72f 100644 (file)
@@ -19,11 +19,11 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
 <channel>
        <title><?php
                if ( is_singular() )
-                       printf(ent2ncr(__('Comments on: %s')), get_the_title_rss());
+                       printf( ent2ncr( __( 'Comments on: %s' ) ), get_the_title_rss() );
                elseif ( is_search() )
-                       printf(ent2ncr(__('Comments for %s searching on %s')), get_bloginfo_rss( 'name' ), esc_attr($wp_query->query_vars['s']));
+                       printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() );
                else
-                       printf(ent2ncr(__('Comments for %s')), get_bloginfo_rss( 'name' ) . get_wp_title_rss());
+                       printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() );
        ?></title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php (is_single()) ? the_permalink_rss() : bloginfo_rss("url") ?></link>
@@ -54,7 +54,7 @@ if ( have_comments() ) : while ( have_comments() ) : the_comment();
                <description><?php echo ent2ncr(__('Protected Comments: Please enter your password to view comments.')); ?></description>
                <content:encoded><![CDATA[<?php echo get_the_password_form() ?>]]></content:encoded>
 <?php else : // post pass ?>
-               <description><?php comment_text_rss() ?></description>
+               <description><![CDATA[<?php comment_text_rss() ?>]]></description>
                <content:encoded><![CDATA[<?php comment_text() ?>]]></content:encoded>
 <?php endif; // post pass
        do_action('commentrss2_item', $comment->comment_ID, $comment_post->ID);
index 8fc51d55ac110ada3b534dda6a0bb6bef3d9506b..a20aa1ea34278139b566839b60f4c6e19fbb24a9 100644 (file)
@@ -41,13 +41,14 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 
                <guid isPermaLink="false"><?php the_guid(); ?></guid>
 <?php if (get_option('rss_use_excerpt')) : ?>
-               <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
+               <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
 <?php else : ?>
-               <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
-       <?php if ( strlen( $post->post_content ) > 0 ) : ?>
-               <content:encoded><![CDATA[<?php the_content_feed('rss2') ?>]]></content:encoded>
+               <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
+       <?php $content = get_the_content_feed('rss2'); ?>
+       <?php if ( strlen( $content ) > 0 ) : ?>
+               <content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
        <?php else : ?>
-               <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
+               <content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded>
        <?php endif; ?>
 <?php endif; ?>
                <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
index 988f6b22c6505aa02761653112e7bbb1e69cb010..61825f8958d67a1dc2ab2a6f8d01ddfbf66df12f 100644 (file)
@@ -140,6 +140,7 @@ function the_title_rss() {
  * @see get_the_content()
  *
  * @param string $feed_type The type of feed. rss2 | atom | rss | rdf
+ * @return string The filtered content.
  */
 function get_the_content_feed($feed_type = null) {
        if ( !$feed_type )
@@ -487,12 +488,7 @@ function prep_atom_text_construct($data) {
  */
 function self_link() {
        $host = @parse_url(home_url());
-       $host = $host['host'];
-       echo esc_url(
-               ( is_ssl() ? 'https' : 'http' ) . '://'
-               . $host
-               . stripslashes($_SERVER['REQUEST_URI'])
-               );
+       echo esc_url( set_url_scheme( 'http://' . $host['host'] . stripslashes($_SERVER['REQUEST_URI']) ) );
 }
 
 /**
@@ -531,10 +527,17 @@ function fetch_feed($url) {
        require_once (ABSPATH . WPINC . '/class-feed.php');
 
        $feed = new SimplePie();
+
+       $feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' );
+       // We must manually overwrite $feed->sanitize because SimplePie's
+       // constructor sets it before we have a chance to set the sanitization class
+       $feed->sanitize = new WP_SimplePie_Sanitize_KSES();
+
+       $feed->set_cache_class( 'WP_Feed_Cache' );
+       $feed->set_file_class( 'WP_SimplePie_File' );
+
        $feed->set_feed_url($url);
-       $feed->set_cache_class('WP_Feed_Cache');
-       $feed->set_file_class('WP_SimplePie_File');
-       $feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 43200, $url));
+       $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) );
        do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );
        $feed->init();
        $feed->handle_content_type();
index fcf519c344f0bbb8cdefcbbbd0e5ff4bd0b92abf..05d7227595d08744656f328917c97e9e4eb3238a 100644 (file)
@@ -100,7 +100,7 @@ function wptexturize($text) {
        }
 
        // Transform into regexp sub-expression used in _wptexturize_pushpop_element
-       // Must do this everytime in case plugins use these filters in a context sensitive manner
+       // Must do this every time in case plugins use these filters in a context sensitive manner
        $no_texturize_tags = '(' . implode('|', apply_filters('no_texturize_tags', $default_no_texturize_tags) ) . ')';
        $no_texturize_shortcodes = '(' . implode('|', apply_filters('no_texturize_shortcodes', $default_no_texturize_shortcodes) ) . ')';
 
@@ -141,8 +141,7 @@ function wptexturize($text) {
  * @param array $stack Array used as stack of opened tag elements
  * @param string $disabled_elements Tags to match against formatted as regexp sub-expression
  * @param string $opening Tag opening character, assumed to be 1 character long
- * @param string $opening Tag closing  character
- * @return object
+ * @param string $closing Tag closing character
  */
 function _wptexturize_pushpop_element($text, &$stack, $disabled_elements, $opening = '<', $closing = '>') {
        // Check if it is a closing tag -- otherwise assume opening tag
@@ -221,7 +220,7 @@ function wpautop($pee, $br = true) {
 
        $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
        // Space things out a little
-       $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
+       $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
        $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
        $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
        $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
@@ -264,7 +263,7 @@ function wpautop($pee, $br = true) {
  * @since 3.1.0
  * @access private
  * @param array $matches preg_replace_callback matches array
- * @returns string
+ * @return string
  */
 function _autop_newline_preservation_helper( $matches ) {
        return str_replace("\n", "<WPPreserveNewline />", $matches[0]);
@@ -296,7 +295,7 @@ function shortcode_unautop( $pee ) {
                . '('                                // 1: The shortcode
                .     '\\['                          // Opening bracket
                .     "($tagregexp)"                 // 2: Shortcode name
-               .     '\\b'                          // Word boundary
+               .     '(?![\\w-])'                   // Not followed by word character or hyphen
                                                     // Unroll the loop: Inside the opening shortcode tag
                .     '[^\\]\\/]*'                   // Not a closing bracket or forward slash
                .     '(?:'
@@ -770,6 +769,20 @@ function remove_accents($string) {
                chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
                chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
                chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
+               // Vowels with diacritic (Chinese, Hanyu Pinyin)
+               chr(201).chr(145) => 'a',
+               // macron
+               chr(199).chr(149) => 'U', chr(199).chr(150) => 'u',
+               // acute accent
+               chr(199).chr(151) => 'U', chr(199).chr(152) => 'u',
+               // caron
+               chr(199).chr(141) => 'A', chr(199).chr(142) => 'a',
+               chr(199).chr(143) => 'I', chr(199).chr(144) => 'i',
+               chr(199).chr(145) => 'O', chr(199).chr(146) => 'o',
+               chr(199).chr(147) => 'U', chr(199).chr(148) => 'u',
+               chr(199).chr(153) => 'U', chr(199).chr(154) => 'u',
+               // grave accent
+               chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
                );
 
                $string = strtr($string, $chars);
@@ -986,6 +999,8 @@ function sanitize_title_with_dashes($title, $raw_title = '', $context = 'display
                        '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
                        // copy, reg, deg, hellip and trade
                        '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
+                       // grave accent, acute accent, macron, caron
+                       '%cc%80', '%cc%81', '%cc%84', '%cc%8c',
                ), '', $title );
 
                // Convert times to x
@@ -1009,7 +1024,7 @@ function sanitize_title_with_dashes($title, $raw_title = '', $context = 'display
  * @since 2.5.1
  *
  * @param string $orderby Order by string to be checked.
- * @return string|false Returns the order by clause if it is a match, false otherwise.
+ * @return string|bool Returns the order by clause if it is a match, false otherwise.
  */
 function sanitize_sql_orderby( $orderby ){
        preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
@@ -1156,8 +1171,10 @@ function force_balance_tags( $text ) {
        $stacksize = 0;
        $tagqueue = '';
        $newtext = '';
-       $single_tags = array( 'br', 'hr', 'img', 'input' ); // Known single-entity/self-closing tags
-       $nestable_tags = array( 'blockquote', 'div', 'span', 'q' ); // Tags that can be immediately nested within themselves
+       // Known single-entity/self-closing tags
+       $single_tags = array( 'area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source' );
+       // Tags that can be immediately nested within themselves
+       $nestable_tags = array( 'blockquote', 'div', 'object', 'q', 'span' );
 
        // WP bug fix for comments - in case you REALLY meant to type '< !--'
        $text = str_replace('< !--', '<    !--', $text);
@@ -1204,26 +1221,35 @@ function force_balance_tags( $text ) {
 
                        // Tag Cleaning
 
-                       // If self-closing or '', don't do anything.
-                       if ( substr($regex[2],-1) == '/' || $tag == '' ) {
+                       // If it's an empty tag "< >", do nothing
+                       if ( '' == $tag ) {
                                // do nothing
                        }
+                       // ElseIf it presents itself as a self-closing tag...
+                       elseif ( substr( $regex[2], -1 ) == '/' ) {
+                               // ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and
+                               // immediately close it with a closing tag (the tag will encapsulate no text as a result)
+                               if ( ! in_array( $tag, $single_tags ) )
+                                       $regex[2] = trim( substr( $regex[2], 0, -1 ) ) . "></$tag";
+                       }
                        // ElseIf it's a known single-entity tag but it doesn't close itself, do so
                        elseif ( in_array($tag, $single_tags) ) {
                                $regex[2] .= '/';
-                       } else {        // Push the tag onto the stack
+                       }
+                       // Else it's not a single-entity tag
+                       else {
                                // If the top of the stack is the same as the tag we want to push, close previous tag
                                if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) {
-                                       $tagqueue = '</' . array_pop ($tagstack) . '>';
+                                       $tagqueue = '</' . array_pop( $tagstack ) . '>';
                                        $stacksize--;
                                }
-                               $stacksize = array_push ($tagstack, $tag);
+                               $stacksize = array_push( $tagstack, $tag );
                        }
 
                        // Attributes
                        $attributes = $regex[2];
-                       if( !empty($attributes) )
-                               $attributes = ' '.$attributes;
+                       if( ! empty( $attributes ) && $attributes[0] != '>' )
+                               $attributes = ' ' . $attributes;
 
                        $tag = '<' . $tag . $attributes . '>';
                        //If already queuing a close tag, then put this tag on, too
@@ -1381,8 +1407,8 @@ function addslashes_gpc($gpc) {
  *
  * @since 2.0.0
  *
- * @param array|string $value The array or string to be stripped.
- * @return array|string Stripped array (or string in the callback).
+ * @param mixed $value The value to be stripped.
+ * @return mixed Stripped value.
  */
 function stripslashes_deep($value) {
        if ( is_array($value) ) {
@@ -1392,7 +1418,7 @@ function stripslashes_deep($value) {
                foreach ($vars as $key=>$data) {
                        $value->{$key} = stripslashes_deep( $data );
                }
-       } else {
+       } elseif ( is_string( $value ) ) {
                $value = stripslashes($value);
        }
 
@@ -1623,8 +1649,8 @@ function make_clickable( $text ) {
  * @since 3.4.0
  * @access private
  *
- * @param string $string The string to split
- * @param    int $goal   The desired chunk length.
+ * @param string $string The string to split.
+ * @param int $goal The desired chunk length.
  * @return array Numeric array of chunks.
  */
 function _split_str_by_whitespace( $string, $goal ) {
@@ -1822,7 +1848,6 @@ function is_email( $email, $deprecated = false ) {
  * Convert to ASCII from email subjects.
  *
  * @since 1.2.0
- * @usedby wp_mail() handles charsets in email subjects
  *
  * @param string $string Subject line
  * @return string Converted string to ASCII
@@ -1839,11 +1864,12 @@ function wp_iso_descrambler($string) {
 }
 
 /**
- * Helper function to convert hex encoded chars to ascii
+ * Helper function to convert hex encoded chars to ASCII
  *
  * @since 3.1.0
  * @access private
- * @param array $match the preg_replace_callback matches array
+ * @param array $match The preg_replace_callback matches array
+ * @return array Converted chars
  */
 function _wp_iso_convert( $match ) {
        return chr( hexdec( strtolower( $match[1] ) ) );
@@ -1866,19 +1892,25 @@ function _wp_iso_convert( $match ) {
  */
 function get_gmt_from_date($string, $format = 'Y-m-d H:i:s') {
        preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches);
+       if ( ! $matches )
+               return date( $format, 0 );
+
        $tz = get_option('timezone_string');
        if ( $tz ) {
                date_default_timezone_set( $tz );
-               $datetime = new DateTime( $string );
+               $datetime = date_create( $string );
+               if ( ! $datetime )
+                       return date( $format, 0 );
+
                $datetime->setTimezone( new DateTimeZone('UTC') );
                $offset = $datetime->getOffset();
-               $datetime->modify( '+' . $offset / 3600 . ' hours');
+               $datetime->modify( '+' . $offset / HOUR_IN_SECONDS . ' hours');
                $string_gmt = gmdate($format, $datetime->format('U'));
 
                date_default_timezone_set('UTC');
        } else {
                $string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
-               $string_gmt = gmdate($format, $string_time - get_option('gmt_offset') * 3600);
+               $string_gmt = gmdate($format, $string_time - get_option('gmt_offset') * HOUR_IN_SECONDS);
        }
        return $string_gmt;
 }
@@ -1898,7 +1930,7 @@ function get_gmt_from_date($string, $format = 'Y-m-d H:i:s') {
 function get_date_from_gmt($string, $format = 'Y-m-d H:i:s') {
        preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches);
        $string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
-       $string_localtime = gmdate($format, $string_time + get_option('gmt_offset')*3600);
+       $string_localtime = gmdate($format, $string_time + get_option('gmt_offset') * HOUR_IN_SECONDS);
        return $string_localtime;
 }
 
@@ -1918,7 +1950,7 @@ function iso8601_timezone_to_offset($timezone) {
                $sign    = (substr($timezone, 0, 1) == '+') ? 1 : -1;
                $hours   = intval(substr($timezone, 1, 2));
                $minutes = intval(substr($timezone, 3, 4)) / 60;
-               $offset  = $sign * 3600 * ($hours + $minutes);
+               $offset  = $sign * HOUR_IN_SECONDS * ($hours + $minutes);
        }
        return $offset;
 }
@@ -1942,7 +1974,7 @@ function iso8601_to_datetime($date_string, $timezone = 'user') {
                if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
                        $offset = iso8601_timezone_to_offset($date_bits[7]);
                } else { // we don't have a timezone, so we assume user local timezone (not server's!)
-                       $offset = 3600 * get_option('gmt_offset');
+                       $offset = HOUR_IN_SECONDS * get_option('gmt_offset');
                }
 
                $timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
@@ -2067,28 +2099,28 @@ function sanitize_email( $email ) {
  * @return string Human readable time difference.
  */
 function human_time_diff( $from, $to = '' ) {
-       if ( empty($to) )
+       if ( empty( $to ) )
                $to = time();
-       $diff = (int) abs($to - $from);
-       if ($diff <= 3600) {
-               $mins = round($diff / 60);
-               if ($mins <= 1) {
+       $diff = (int) abs( $to - $from );
+       if ( $diff <= HOUR_IN_SECONDS ) {
+               $mins = round( $diff / MINUTE_IN_SECONDS );
+               if ( $mins <= 1 ) {
                        $mins = 1;
                }
                /* translators: min=minute */
-               $since = sprintf(_n('%s min', '%s mins', $mins), $mins);
-       } else if (($diff <= 86400) && ($diff > 3600)) {
-               $hours = round($diff / 3600);
-               if ($hours <= 1) {
+               $since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
+       } elseif ( ( $diff <= DAY_IN_SECONDS ) && ( $diff > HOUR_IN_SECONDS ) ) {
+               $hours = round( $diff / HOUR_IN_SECONDS );
+               if ( $hours <= 1 ) {
                        $hours = 1;
                }
-               $since = sprintf(_n('%s hour', '%s hours', $hours), $hours);
-       } elseif ($diff >= 86400) {
-               $days = round($diff / 86400);
-               if ($days <= 1) {
+               $since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
+       } elseif ( $diff >= DAY_IN_SECONDS ) {
+               $days = round( $diff / DAY_IN_SECONDS );
+               if ( $days <= 1 ) {
                        $days = 1;
                }
-               $since = sprintf(_n('%s day', '%s days', $days), $days);
+               $since = sprintf( _n( '%s day', '%s days', $days ), $days );
        }
        return $since;
 }
@@ -2738,8 +2770,6 @@ function sanitize_option($option, $value) {
                case 'medium_size_h':
                case 'large_size_w':
                case 'large_size_h':
-               case 'embed_size_h':
-               case 'default_post_edit_rows':
                case 'mailserver_port':
                case 'comment_max_links':
                case 'page_on_front':
@@ -2756,11 +2786,6 @@ function sanitize_option($option, $value) {
                        $value = absint( $value );
                        break;
 
-               case 'embed_size_w':
-                       if ( '' !== $value )
-                               $value = absint( $value );
-                       break;
-
                case 'posts_per_page':
                case 'posts_per_rss':
                        $value = (int) $value;
@@ -2779,9 +2804,7 @@ function sanitize_option($option, $value) {
 
                case 'blogdescription':
                case 'blogname':
-                       $value = addslashes($value);
-                       $value = wp_filter_post_kses( $value ); // calls stripslashes then addslashes
-                       $value = stripslashes($value);
+                       $value = wp_kses_post( $value );
                        $value = esc_html( $value );
                        break;
 
@@ -2789,17 +2812,29 @@ function sanitize_option($option, $value) {
                        $value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value); // strips slashes
                        break;
 
+               case 'blog_public':
+                       // This is the value if the settings checkbox is not checked on POST. Don't rely on this.
+                       if ( null === $value )
+                               $value = 1;
+                       else
+                               $value = intval( $value );
+                       break;
+
                case 'date_format':
                case 'time_format':
                case 'mailserver_url':
                case 'mailserver_login':
                case 'mailserver_pass':
-               case 'ping_sites':
                case 'upload_path':
-                       $value = strip_tags($value);
-                       $value = addslashes($value);
-                       $value = wp_filter_kses($value); // calls stripslashes then addslashes
-                       $value = stripslashes($value);
+                       $value = strip_tags( $value );
+                       $value = wp_kses_data( $value );
+                       break;
+
+               case 'ping_sites':
+                       $value = explode( "\n", $value );
+                       $value = array_filter( array_map( 'trim', $value ) );
+                       $value = array_filter( array_map( 'esc_url_raw', $value ) );
+                       $value = implode( "\n", $value );
                        break;
 
                case 'gmt_offset':
@@ -2832,6 +2867,32 @@ function sanitize_option($option, $value) {
                                $value = get_option( $option );
                        break;
 
+               case 'illegal_names':
+                       if ( ! is_array( $value ) )
+                               $value = explode( "\n", $value );
+
+                       $value = array_values( array_filter( array_map( 'trim', $value ) ) );
+
+                       if ( ! $value )
+                               $value = '';
+                       break;
+
+               case 'limited_email_domains':
+               case 'banned_email_domains':
+                       if ( ! is_array( $value ) )
+                               $value = explode( "\n", $value );
+
+                       $domains = array_values( array_filter( array_map( 'trim', $value ) ) );
+                       $value = array();
+
+                       foreach ( $domains as $domain ) {
+                               if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
+                                       $value[] = $domain;
+                       }
+                       if ( ! $value )
+                               $value = '';
+                       break;
+
                case 'timezone_string':
                        $allowed_zones = timezone_identifiers_list();
                        if ( ! in_array( $value, $allowed_zones ) && ! empty( $value ) ) {
@@ -3189,7 +3250,7 @@ function sanitize_text_field($str) {
  * @return string
  */
 function wp_basename( $path, $suffix = '' ) {
-       return urldecode( basename( str_replace( '%2F', '/', urlencode( $path ) ), $suffix ) );
+       return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
 }
 
 /**
@@ -3206,7 +3267,7 @@ function capital_P_dangit( $text ) {
        // Still here? Use the more judicious replacement
        static $dblq = false;
        if ( false === $dblq )
-               $dblq = _x('&#8220;', 'opening curly quote');
+               $dblq = _x( '&#8220;', 'opening curly double quote' );
        return str_replace(
                array( ' Wordpress', '&#8216;Wordpress', $dblq . 'Wordpress', '>Wordpress', '(Wordpress' ),
                array( ' WordPress', '&#8216;WordPress', $dblq . 'WordPress', '>WordPress', '(WordPress' ),
index a5a6a2d4230db29e322879f5f4a1f269611cec0c..a41d32fe97e193a1e3ff154719be7258641bf7c7 100644 (file)
@@ -59,10 +59,10 @@ function mysql2date( $format, $date, $translate = true ) {
 function current_time( $type, $gmt = 0 ) {
        switch ( $type ) {
                case 'mysql':
-                       return ( $gmt ) ? gmdate( 'Y-m-d H:i:s' ) : gmdate( 'Y-m-d H:i:s', ( time() + ( get_option( 'gmt_offset' ) * 3600 ) ) );
+                       return ( $gmt ) ? gmdate( 'Y-m-d H:i:s' ) : gmdate( 'Y-m-d H:i:s', ( time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) );
                        break;
                case 'timestamp':
-                       return ( $gmt ) ? time() : time() + ( get_option( 'gmt_offset' ) * 3600 );
+                       return ( $gmt ) ? time() : time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
                        break;
        }
 }
@@ -214,8 +214,8 @@ function get_weekstartend( $mysqlstring, $start_of_week = '' ) {
        if ( $weekday < $start_of_week )
                $weekday += 7;
 
-       $start = $day - 86400 * ( $weekday - $start_of_week ); // The most recent week start day on or before $day
-       $end = $start + 604799; // $start + 7 days - 1 second
+       $start = $day - DAY_IN_SECONDS * ( $weekday - $start_of_week ); // The most recent week start day on or before $day
+       $end = $start + 7 * DAY_IN_SECONDS - 1; // $start + 7 days - 1 second
        return compact( 'start', 'end' );
 }
 
@@ -458,7 +458,7 @@ function do_enclose( $content, $post_ID ) {
                                if ( false !== $url_parts ) {
                                        $extension = pathinfo( $url_parts['path'], PATHINFO_EXTENSION );
                                        if ( !empty( $extension ) ) {
-                                               foreach ( get_allowed_mime_types( ) as $exts => $mime ) {
+                                               foreach ( wp_get_mime_types() as $exts => $mime ) {
                                                        if ( preg_match( '!^(' . $exts . ')$!i', $extension ) ) {
                                                                $type = $mime;
                                                                break;
@@ -637,16 +637,17 @@ function _http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=t
  */
 function add_query_arg() {
        $ret = '';
-       if ( is_array( func_get_arg(0) ) ) {
-               if ( @func_num_args() < 2 || false === @func_get_arg( 1 ) )
+       $args = func_get_args();
+       if ( is_array( $args[0] ) ) {
+               if ( count( $args ) < 2 || false === $args[1] )
                        $uri = $_SERVER['REQUEST_URI'];
                else
-                       $uri = @func_get_arg( 1 );
+                       $uri = $args[1];
        } else {
-               if ( @func_num_args() < 3 || false === @func_get_arg( 2 ) )
+               if ( count( $args ) < 3 || false === $args[2] )
                        $uri = $_SERVER['REQUEST_URI'];
                else
-                       $uri = @func_get_arg( 2 );
+                       $uri = $args[2];
        }
 
        if ( $frag = strstr( $uri, '#' ) )
@@ -654,9 +655,12 @@ function add_query_arg() {
        else
                $frag = '';
 
-       if ( preg_match( '|^https?://|i', $uri, $matches ) ) {
-               $protocol = $matches[0];
-               $uri = substr( $uri, strlen( $protocol ) );
+       if ( 0 === stripos( 'http://', $uri ) ) {
+               $protocol = 'http://';
+               $uri = substr( $uri, 7 );
+       } elseif ( 0 === stripos( 'https://', $uri ) ) {
+               $protocol = 'https://';
+               $uri = substr( $uri, 8 );
        } else {
                $protocol = '';
        }
@@ -670,7 +674,7 @@ function add_query_arg() {
                        $base = $parts[0] . '?';
                        $query = $parts[1];
                }
-       } elseif ( !empty( $protocol ) || strpos( $uri, '=' ) === false ) {
+       } elseif ( $protocol || strpos( $uri, '=' ) === false ) {
                $base = $uri . '?';
                $query = '';
        } else {
@@ -680,14 +684,14 @@ function add_query_arg() {
 
        wp_parse_str( $query, $qs );
        $qs = urlencode_deep( $qs ); // this re-URL-encodes things that were already in the query string
-       if ( is_array( func_get_arg( 0 ) ) ) {
-               $kayvees = func_get_arg( 0 );
+       if ( is_array( $args[0] ) ) {
+               $kayvees = $args[0];
                $qs = array_merge( $qs, $kayvees );
        } else {
-               $qs[func_get_arg( 0 )] = func_get_arg( 1 );
+               $qs[ $args[0] ] = $args[1];
        }
 
-       foreach ( (array) $qs as $k => $v ) {
+       foreach ( $qs as $k => $v ) {
                if ( $v === false )
                        unset( $qs[$k] );
        }
@@ -898,7 +902,7 @@ function status_header( $header ) {
 function wp_get_nocache_headers() {
        $headers = array(
                'Expires' => 'Wed, 11 Jan 1984 05:00:00 GMT',
-               'Last-Modified' => gmdate( 'D, d M Y H:i:s' ) . ' GMT',
+               'Last-Modified' => '',
                'Cache-Control' => 'no-cache, must-revalidate, max-age=0',
                'Pragma' => 'no-cache',
        );
@@ -922,6 +926,8 @@ function nocache_headers() {
        $headers = wp_get_nocache_headers();
        foreach( $headers as $name => $field_value )
                @header("{$name}: {$field_value}");
+       if ( empty( $headers['Last-Modified'] ) && function_exists( 'header_remove' ) )
+               @header_remove( 'Last-Modified' );
 }
 
 /**
@@ -930,7 +936,7 @@ function nocache_headers() {
  * @since 2.1.0
  */
 function cache_javascript_headers() {
-       $expiresOffset = 864000; // 10 days
+       $expiresOffset = 10 * DAY_IN_SECONDS;
        header( "Content-Type: text/javascript; charset=" . get_bloginfo( 'charset' ) );
        header( "Vary: Accept-Encoding" ); // Handle proxies
        header( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $expiresOffset ) . " GMT" );
@@ -1291,9 +1297,21 @@ function wp_get_original_referer() {
  * @return bool Whether the path was created. True if path already exists.
  */
 function wp_mkdir_p( $target ) {
+       $wrapper = null;
+
+       // strip the protocol
+       if( wp_is_stream( $target ) ) {
+               list( $wrapper, $target ) = explode( '://', $target, 2 );
+       }
+
        // from php.net/mkdir user contributed notes
        $target = str_replace( '//', '/', $target );
 
+       // put the wrapper back on the target
+       if( $wrapper !== null ) {
+               $target = $wrapper . '://' . $target;
+       }
+
        // safe mode fails with a trailing slash under certain PHP versions.
        $target = rtrim($target, '/'); // Use rtrim() instead of untrailingslashit to avoid formatting.php dependency.
        if ( empty($target) )
@@ -1363,9 +1381,13 @@ function path_join( $base, $path ) {
 
 /**
  * Determines a writable directory for temporary files.
- * Function's preference is to WP_CONTENT_DIR followed by the return value of <code>sys_get_temp_dir()</code>, before finally defaulting to /tmp/
+ * Function's preference is the return value of <code>sys_get_temp_dir()</code>,
+ * followed by your PHP temporary upload directory, followed by WP_CONTENT_DIR,
+ * before finally defaulting to /tmp/
  *
- * In the event that this function does not find a writable location, It may be overridden by the <code>WP_TEMP_DIR</code> constant in your <code>wp-config.php</code> file.
+ * In the event that this function does not find a writable location,
+ * It may be overridden by the <code>WP_TEMP_DIR</code> constant in
+ * your <code>wp-config.php</code> file.
  *
  * @since 2.5.0
  *
@@ -1377,26 +1399,59 @@ function get_temp_dir() {
                return trailingslashit(WP_TEMP_DIR);
 
        if ( $temp )
-               return trailingslashit($temp);
+               return trailingslashit( rtrim( $temp, '\\' ) );
 
-       $temp = WP_CONTENT_DIR . '/';
-       if ( is_dir($temp) && @is_writable($temp) )
-               return $temp;
+       $is_win = ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3 ) ) );
 
-       if  ( function_exists('sys_get_temp_dir') ) {
+       if ( function_exists('sys_get_temp_dir') ) {
                $temp = sys_get_temp_dir();
-               if ( @is_writable($temp) )
-                       return trailingslashit($temp);
+               if ( @is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) ) {
+                       return trailingslashit( rtrim( $temp, '\\' ) );
+               }
        }
 
        $temp = ini_get('upload_tmp_dir');
-       if ( is_dir($temp) && @is_writable($temp) )
-               return trailingslashit($temp);
+       if ( is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) )
+               return trailingslashit( rtrim( $temp, '\\' ) );
+
+       $temp = WP_CONTENT_DIR . '/';
+       if ( is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) )
+               return $temp;
 
        $temp = '/tmp/';
        return $temp;
 }
 
+/**
+ * Workaround for Windows bug in is_writable() function
+ *
+ * @since 2.8.0
+ *
+ * @param string $path
+ * @return bool
+ */
+function win_is_writable( $path ) {
+       /* will work in despite of Windows ACLs bug
+        * NOTE: use a trailing slash for folders!!!
+        * see http://bugs.php.net/bug.php?id=27609
+        * see http://bugs.php.net/bug.php?id=30931
+        */
+
+       if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path
+               return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp');
+       else if ( is_dir( $path ) )
+               return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' );
+       // check tmp file for read/write capabilities
+       $should_delete_tmp_file = !file_exists( $path );
+       $f = @fopen( $path, 'a' );
+       if ( $f === false )
+               return false;
+       fclose( $f );
+       if ( $should_delete_tmp_file )
+               unlink( $path );
+       return true;
+}
+
 /**
  * Get an array containing the current upload directory's path and url.
  *
@@ -1431,21 +1486,16 @@ function get_temp_dir() {
  * @return array See above for description.
  */
 function wp_upload_dir( $time = null ) {
-       global $switched;
        $siteurl = get_option( 'siteurl' );
-       $upload_path = get_option( 'upload_path' );
-       $upload_path = trim($upload_path);
-       $main_override = is_multisite() && defined( 'MULTISITE' ) && is_main_site();
-       if ( empty($upload_path) ) {
+       $upload_path = trim( get_option( 'upload_path' ) );
+
+       if ( empty( $upload_path ) || 'wp-content/uploads' == $upload_path ) {
                $dir = WP_CONTENT_DIR . '/uploads';
+       } elseif ( 0 !== strpos( $upload_path, ABSPATH ) ) {
+               // $dir is absolute, $upload_path is (maybe) relative to ABSPATH
+               $dir = path_join( ABSPATH, $upload_path );
        } else {
                $dir = $upload_path;
-               if ( 'wp-content/uploads' == $upload_path ) {
-                       $dir = WP_CONTENT_DIR . '/uploads';
-               } elseif ( 0 !== strpos($dir, ABSPATH) ) {
-                       // $dir is absolute, $upload_path is (maybe) relative to ABSPATH
-                       $dir = path_join( ABSPATH, $dir );
-               }
        }
 
        if ( !$url = get_option( 'upload_url_path' ) ) {
@@ -1455,19 +1505,54 @@ function wp_upload_dir( $time = null ) {
                        $url = trailingslashit( $siteurl ) . $upload_path;
        }
 
-       if ( defined('UPLOADS') && !$main_override && ( !isset( $switched ) || $switched === false ) ) {
+       // Obey the value of UPLOADS. This happens as long as ms-files rewriting is disabled.
+       // We also sometimes obey UPLOADS when rewriting is enabled -- see the next block.
+       if ( defined( 'UPLOADS' ) && ! ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) ) {
                $dir = ABSPATH . UPLOADS;
                $url = trailingslashit( $siteurl ) . UPLOADS;
        }
 
-       if ( is_multisite() && !$main_override && ( !isset( $switched ) || $switched === false ) ) {
-               if ( defined( 'BLOGUPLOADDIR' ) )
-                       $dir = untrailingslashit(BLOGUPLOADDIR);
-               $url = str_replace( UPLOADS, 'files', $url );
+       // If multisite (and if not the main site in a post-MU network)
+       if ( is_multisite() && ! ( is_main_site() && defined( 'MULTISITE' ) ) ) {
+
+               if ( ! get_site_option( 'ms_files_rewriting' ) ) {
+                       // If ms-files rewriting is disabled (networks created post-3.5), it is fairly straightforward:
+                       // Append sites/%d if we're not on the main site (for post-MU networks). (The extra directory
+                       // prevents a four-digit ID from conflicting with a year-based directory for the main site.
+                       // But if a MU-era network has disabled ms-files rewriting manually, they don't need the extra
+                       // directory, as they never had wp-content/uploads for the main site.)
+
+                       if ( defined( 'MULTISITE' ) )
+                               $ms_dir = '/sites/' . get_current_blog_id();
+                       else
+                               $ms_dir = '/' . get_current_blog_id();
+
+                       $dir .= $ms_dir;
+                       $url .= $ms_dir;
+
+               } elseif ( defined( 'UPLOADS' ) && ! ms_is_switched() ) {
+                       // Handle the old-form ms-files.php rewriting if the network still has that enabled.
+                       // When ms-files rewriting is enabled, then we only listen to UPLOADS when:
+                       //   1) we are not on the main site in a post-MU network,
+                       //      as wp-content/uploads is used there, and
+                       //   2) we are not switched, as ms_upload_constants() hardcodes
+                       //      these constants to reflect the original blog ID.
+                       //
+                       // Rather than UPLOADS, we actually use BLOGUPLOADDIR if it is set, as it is absolute.
+                       // (And it will be set, see ms_upload_constants().) Otherwise, UPLOADS can be used, as
+                       // as it is relative to ABSPATH. For the final piece: when UPLOADS is used with ms-files
+                       // rewriting in multisite, the resulting URL is /files. (#WP22702 for background.)
+
+                       if ( defined( 'BLOGUPLOADDIR' ) )
+                               $dir = untrailingslashit( BLOGUPLOADDIR );
+                       else
+                               $dir = ABSPATH . UPLOADS;
+                       $url = trailingslashit( $siteurl ) . 'files';
+               }
        }
 
-       $bdir = $dir;
-       $burl = $url;
+       $basedir = $dir;
+       $baseurl = $url;
 
        $subdir = '';
        if ( get_option( 'uploads_use_yearmonth_folders' ) ) {
@@ -1482,7 +1567,15 @@ function wp_upload_dir( $time = null ) {
        $dir .= $subdir;
        $url .= $subdir;
 
-       $uploads = apply_filters( 'upload_dir', array( 'path' => $dir, 'url' => $url, 'subdir' => $subdir, 'basedir' => $bdir, 'baseurl' => $burl, 'error' => false ) );
+       $uploads = apply_filters( 'upload_dir',
+               array(
+                       'path'    => $dir,
+                       'url'     => $url,
+                       'subdir'  => $subdir,
+                       'basedir' => $basedir,
+                       'baseurl' => $baseurl,
+                       'error'   => false,
+               ) );
 
        // Make sure we have an uploads dir
        if ( ! wp_mkdir_p( $uploads['path'] ) ) {
@@ -1492,7 +1585,7 @@ function wp_upload_dir( $time = null ) {
                        $error_path = basename( $uploads['basedir'] ) . $uploads['subdir'];
 
                $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), $error_path );
-               return array( 'error' => $message );
+               $uploads['error'] = $message;
        }
 
        return $uploads;
@@ -1591,7 +1684,7 @@ function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
                return array( 'error' => __( 'Empty filename' ) );
 
        $wp_filetype = wp_check_filetype( $name );
-       if ( !$wp_filetype['ext'] )
+       if ( ! $wp_filetype['ext'] && ! current_user_can( 'unfiltered_upload' ) )
                return array( 'error' => __( 'Invalid file type' ) );
 
        $upload = wp_upload_dir( $time );
@@ -1651,13 +1744,13 @@ function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
  */
 function wp_ext2type( $ext ) {
        $ext2type = apply_filters( 'ext2type', array(
-               'audio'       => array( 'aac', 'ac3',  'aif',  'aiff', 'm3a',  'm4a',   'm4b', 'mka', 'mp1', 'mp2',  'mp3', 'ogg', 'oga', 'ram', 'wav', 'wma' ),
-               'video'       => array( 'asf', 'avi',  'divx', 'dv',   'flv',  'm4v',   'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'mpv', 'ogm', 'ogv', 'qt',  'rm', 'vob', 'wmv' ),
-               'document'    => array( 'doc', 'docx', 'docm', 'dotm', 'odt',  'pages', 'pdf', 'rtf', 'wp',  'wpd' ),
-               'spreadsheet' => array( 'numbers',     'ods',  'xls',  'xlsx', 'xlsb',  'xlsm' ),
-               'interactive' => array( 'key', 'ppt',  'pptx', 'pptm', 'odp',  'swf' ),
+               'audio'       => array( 'aac', 'ac3',  'aif',  'aiff', 'm3a',  'm4a',   'm4b',  'mka',  'mp1',  'mp2',  'mp3', 'ogg', 'oga', 'ram', 'wav', 'wma' ),
+               'video'       => array( 'asf', 'avi',  'divx', 'dv',   'flv',  'm4v',   'mkv',  'mov',  'mp4',  'mpeg', 'mpg', 'mpv', 'ogm', 'ogv', 'qt',  'rm', 'vob', 'wmv' ),
+               'document'    => array( 'doc', 'docx', 'docm', 'dotm', 'odt',  'pages', 'pdf',  'rtf',  'wp',   'wpd' ),
+               'spreadsheet' => array( 'numbers',     'ods',  'xls',  'xlsx', 'xlsm',  'xlsb' ),
+               'interactive' => array( 'swf', 'key',  'ppt',  'pptx', 'pptm', 'pps',   'ppsx', 'ppsm', 'sldx', 'sldm', 'odp' ),
                'text'        => array( 'asc', 'csv',  'tsv',  'txt' ),
-               'archive'     => array( 'bz2', 'cab',  'dmg',  'gz',   'rar',  'sea',   'sit', 'sqx', 'tar', 'tgz',  'zip', '7z' ),
+               'archive'     => array( 'bz2', 'cab',  'dmg',  'gz',   'rar',  'sea',   'sit',  'sqx',  'tar',  'tgz',  'zip', '7z' ),
                'code'        => array( 'css', 'htm',  'html', 'php',  'js' ),
        ));
        foreach ( $ext2type as $type => $exts )
@@ -1763,101 +1856,114 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
 }
 
 /**
- * Retrieve list of allowed mime types and file extensions.
+ * Retrieve list of mime types and file extensions.
  *
- * @since 2.8.6
+ * @since 3.5.0
+ *
+ * @uses apply_filters() Calls 'mime_types' on returned array. This filter should
+ * be used to add types, not remove them. To remove types use the upload_mimes filter.
  *
  * @return array Array of mime types keyed by the file extension regex corresponding to those types.
  */
-function get_allowed_mime_types() {
-       static $mimes = false;
-
-       if ( !$mimes ) {
-               // Accepted MIME types are set here as PCRE unless provided.
-               $mimes = apply_filters( 'upload_mimes', array(
-               'jpg|jpeg|jpe' => 'image/jpeg',
-               'gif' => 'image/gif',
-               'png' => 'image/png',
-               'bmp' => 'image/bmp',
-               'tif|tiff' => 'image/tiff',
-               'ico' => 'image/x-icon',
-               'asf|asx|wax|wmv|wmx' => 'video/asf',
-               'avi' => 'video/avi',
-               'divx' => 'video/divx',
-               'flv' => 'video/x-flv',
-               'mov|qt' => 'video/quicktime',
-               'mpeg|mpg|mpe' => 'video/mpeg',
-               'txt|asc|c|cc|h' => 'text/plain',
-               'csv' => 'text/csv',
-               'tsv' => 'text/tab-separated-values',
-               'ics' => 'text/calendar',
-               'rtx' => 'text/richtext',
-               'css' => 'text/css',
-               'htm|html' => 'text/html',
-               'mp3|m4a|m4b' => 'audio/mpeg',
-               'mp4|m4v' => 'video/mp4',
-               'ra|ram' => 'audio/x-realaudio',
-               'wav' => 'audio/wav',
-               'ogg|oga' => 'audio/ogg',
-               'ogv' => 'video/ogg',
-               'mid|midi' => 'audio/midi',
-               'wma' => 'audio/wma',
-               'mka' => 'audio/x-matroska',
-               'mkv' => 'video/x-matroska',
-               'rtf' => 'application/rtf',
-               'js' => 'application/javascript',
-               'pdf' => 'application/pdf',
-               'doc|docx' => 'application/msword',
-               'pot|pps|ppt|pptx|ppam|pptm|sldm|ppsm|potm' => 'application/vnd.ms-powerpoint',
-               'wri' => 'application/vnd.ms-write',
-               'xla|xls|xlsx|xlt|xlw|xlam|xlsb|xlsm|xltm' => 'application/vnd.ms-excel',
-               'mdb' => 'application/vnd.ms-access',
-               'mpp' => 'application/vnd.ms-project',
-               'docm|dotm' => 'application/vnd.ms-word',
-               'pptx|sldx|ppsx|potx' => 'application/vnd.openxmlformats-officedocument.presentationml',
-               'xlsx|xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml',
-               'docx|dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml',
-               'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
-               'swf' => 'application/x-shockwave-flash',
-               'class' => 'application/java',
-               'tar' => 'application/x-tar',
-               'zip' => 'application/zip',
-               'gz|gzip' => 'application/x-gzip',
-               'rar' => 'application/rar',
-               '7z' => 'application/x-7z-compressed',
-               'exe' => 'application/x-msdownload',
-               // openoffice formats
-               'odt' => 'application/vnd.oasis.opendocument.text',
-               'odp' => 'application/vnd.oasis.opendocument.presentation',
-               'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
-               'odg' => 'application/vnd.oasis.opendocument.graphics',
-               'odc' => 'application/vnd.oasis.opendocument.chart',
-               'odb' => 'application/vnd.oasis.opendocument.database',
-               'odf' => 'application/vnd.oasis.opendocument.formula',
-               // wordperfect formats
-               'wp|wpd' => 'application/wordperfect',
-               ) );
-       }
-
-       return $mimes;
+function wp_get_mime_types() {
+       // Accepted MIME types are set here as PCRE unless provided.
+       return apply_filters( 'mime_types', array(
+       // Image formats
+       'jpg|jpeg|jpe' => 'image/jpeg',
+       'gif' => 'image/gif',
+       'png' => 'image/png',
+       'bmp' => 'image/bmp',
+       'tif|tiff' => 'image/tiff',
+       'ico' => 'image/x-icon',
+       // Video formats
+       'asf|asx|wax|wmv|wmx' => 'video/asf',
+       'avi' => 'video/avi',
+       'divx' => 'video/divx',
+       'flv' => 'video/x-flv',
+       'mov|qt' => 'video/quicktime',
+       'mpeg|mpg|mpe' => 'video/mpeg',
+       'mp4|m4v' => 'video/mp4',
+       'ogv' => 'video/ogg',
+       'mkv' => 'video/x-matroska',
+       // Text formats
+       'txt|asc|c|cc|h' => 'text/plain',
+       'csv' => 'text/csv',
+       'tsv' => 'text/tab-separated-values',
+       'ics' => 'text/calendar',
+       'rtx' => 'text/richtext',
+       'css' => 'text/css',
+       'htm|html' => 'text/html',
+       // Audio formats
+       'mp3|m4a|m4b' => 'audio/mpeg',
+       'ra|ram' => 'audio/x-realaudio',
+       'wav' => 'audio/wav',
+       'ogg|oga' => 'audio/ogg',
+       'mid|midi' => 'audio/midi',
+       'wma' => 'audio/wma',
+       'mka' => 'audio/x-matroska',
+       // Misc application formats
+       'rtf' => 'application/rtf',
+       'js' => 'application/javascript',
+       'pdf' => 'application/pdf',
+       'swf' => 'application/x-shockwave-flash',
+       'class' => 'application/java',
+       'tar' => 'application/x-tar',
+       'zip' => 'application/zip',
+       'gz|gzip' => 'application/x-gzip',
+       'rar' => 'application/rar',
+       '7z' => 'application/x-7z-compressed',
+       'exe' => 'application/x-msdownload',
+       // MS Office formats
+       'doc' => 'application/msword',
+       'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
+       'wri' => 'application/vnd.ms-write',
+       'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
+       'mdb' => 'application/vnd.ms-access',
+       'mpp' => 'application/vnd.ms-project',
+       'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+       'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
+       'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+       'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
+       'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+       'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
+       'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
+       'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+       'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
+       'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
+       'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+       'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
+       'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
+       'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
+       'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+       'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
+       'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
+       'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
+       'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
+       'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
+       // OpenOffice formats
+       'odt' => 'application/vnd.oasis.opendocument.text',
+       'odp' => 'application/vnd.oasis.opendocument.presentation',
+       'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+       'odg' => 'application/vnd.oasis.opendocument.graphics',
+       'odc' => 'application/vnd.oasis.opendocument.chart',
+       'odb' => 'application/vnd.oasis.opendocument.database',
+       'odf' => 'application/vnd.oasis.opendocument.formula',
+       // WordPerfect formats
+       'wp|wpd' => 'application/wordperfect',
+       ) );
 }
-
 /**
- * Retrieve nonce action "Are you sure" message.
+ * Retrieve list of allowed mime types and file extensions.
  *
- * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3.
+ * @since 2.8.6
  *
- * @since 2.0.4
- * @deprecated 3.4.1
- * @deprecated Use wp_nonce_ays()
- * @see wp_nonce_ays()
+ * @uses apply_filters() Calls 'upload_mimes' on returned array
+ * @uses wp_get_upload_mime_types() to fetch the list of mime types
  *
- * @param string $action Nonce action.
- * @return string Are you sure message.
+ * @return array Array of mime types keyed by the file extension regex corresponding to those types.
  */
-function wp_explain_nonce( $action ) {
-       _deprecated_function( __FUNCTION__, '3.4.1', 'wp_nonce_ays()' );
-       return __( 'Are you sure you want to do this?' );
+function get_allowed_mime_types() {
+       return apply_filters( 'upload_mimes', wp_get_mime_types() );
 }
 
 /**
@@ -1906,8 +2012,6 @@ function wp_die( $message = '', $title = '', $args = array() ) {
                $function = apply_filters( 'wp_die_ajax_handler', '_ajax_wp_die_handler' );
        elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
                $function = apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' );
-       elseif ( defined( 'APP_REQUEST' ) && APP_REQUEST )
-               $function = apply_filters( 'wp_die_app_handler', '_scalar_wp_die_handler' );
        else
                $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler' );
 
@@ -2029,42 +2133,72 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
                a:hover {
                        color: #D54E21;
                }
-
                .button {
-                       font-family: sans-serif;
+                       display: inline-block;
                        text-decoration: none;
-                       font-size: 14px !important;
-                       line-height: 16px;
-                       padding: 6px 12px;
+                       font-size: 14px;
+                       line-height: 23px;
+                       height: 24px;
+                       margin: 0;
+                       padding: 0 10px 1px;
                        cursor: pointer;
-                       border: 1px solid #bbb;
-                       color: #464646;
-                       -webkit-border-radius: 15px;
-                       border-radius: 15px;
-                       -moz-box-sizing: content-box;
-                       -webkit-box-sizing: content-box;
-                       box-sizing: content-box;
-                       background-color: #f5f5f5;
-                       background-image: -ms-linear-gradient(top, #ffffff, #f2f2f2);
-                       background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-                       background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-                       background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f2f2f2));
-                       background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-                       background-image: linear-gradient(top, #ffffff, #f2f2f2);
+                       border-width: 1px;
+                       border-style: solid;
+                       -webkit-border-radius: 3px;
+                       border-radius: 3px;
+                       white-space: nowrap;
+                       -webkit-box-sizing: border-box;
+                       -moz-box-sizing:    border-box;
+                       box-sizing:         border-box;
+                       background: #f3f3f3;
+                       background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#f4f4f4));
+                       background-image: -webkit-linear-gradient(top, #fefefe, #f4f4f4);
+                       background-image:    -moz-linear-gradient(top, #fefefe, #f4f4f4);
+                       background-image:      -o-linear-gradient(top, #fefefe, #f4f4f4);
+                       background-image:   linear-gradient(to bottom, #fefefe, #f4f4f4);
+                       border-color: #bbb;
+                       color: #333;
+                       text-shadow: 0 1px 0 #fff;
                }
 
-               .button:hover {
-                       color: #000;
-                       border-color: #666;
+               .button.button-large {
+                       height: 29px;
+                       line-height: 28px;
+                       padding: 0 12px;
+               }
+
+               .button:hover,
+               .button:focus {
+                       background: #f3f3f3;
+                       background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));
+                       background-image: -webkit-linear-gradient(top, #fff, #f3f3f3);
+                       background-image:    -moz-linear-gradient(top, #fff, #f3f3f3);
+                       background-image:     -ms-linear-gradient(top, #fff, #f3f3f3);
+                       background-image:      -o-linear-gradient(top, #fff, #f3f3f3);
+                       background-image:   linear-gradient(to bottom, #fff, #f3f3f3);
+                       border-color: #999;
+                       color: #222;
+               }
+
+               .button:focus  {
+                       -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
+                       box-shadow: 1px 1px 1px rgba(0,0,0,.2);
                }
 
                .button:active {
-                       background-image: -ms-linear-gradient(top, #f2f2f2, #ffffff);
-                       background-image: -moz-linear-gradient(top, #f2f2f2, #ffffff);
-                       background-image: -o-linear-gradient(top, #f2f2f2, #ffffff);
-                       background-image: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#ffffff));
-                       background-image: -webkit-linear-gradient(top, #f2f2f2, #ffffff);
-                       background-image: linear-gradient(top, #f2f2f2, #ffffff);
+                       outline: none;
+                       background: #eee;
+                       background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#fefefe));
+                       background-image: -webkit-linear-gradient(top, #f4f4f4, #fefefe);
+                       background-image:    -moz-linear-gradient(top, #f4f4f4, #fefefe);
+                       background-image:     -ms-linear-gradient(top, #f4f4f4, #fefefe);
+                       background-image:      -o-linear-gradient(top, #f4f4f4, #fefefe);
+                       background-image:   linear-gradient(to bottom, #f4f4f4, #fefefe);
+                       border-color: #999;
+                       color: #333;
+                       text-shadow: 0 -1px 0 #fff;
+                       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+                       box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
                }
 
                <?php if ( 'rtl' == $text_direction ) : ?>
@@ -2138,6 +2272,54 @@ function _scalar_wp_die_handler( $message = '' ) {
        die();
 }
 
+/**
+ * Send a JSON response back to an Ajax request.
+ *
+ * @since 3.5.0
+ *
+ * @param mixed $response Variable (usually an array or object) to encode as JSON, then print and die.
+ */
+function wp_send_json( $response ) {
+       @header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
+       echo json_encode( $response );
+       if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
+               wp_die();
+       else
+               die;
+}
+
+/**
+ * Send a JSON response back to an Ajax request, indicating success.
+ *
+ * @since 3.5.0
+ *
+ * @param mixed $data Data to encode as JSON, then print and die.
+ */
+function wp_send_json_success( $data = null ) {
+       $response = array( 'success' => true );
+
+       if ( isset( $data ) )
+               $response['data'] = $data;
+
+       wp_send_json( $response );
+}
+
+/**
+ * Send a JSON response back to an Ajax request, indicating failure.
+ *
+ * @since 3.5.0
+ *
+ * @param mixed $data Data to encode as JSON, then print and die.
+ */
+function wp_send_json_error( $data = null ) {
+       $response = array( 'success' => false );
+
+       if ( isset( $data ) )
+               $response['data'] = $data;
+
+       wp_send_json( $response );
+}
+
 /**
  * Retrieve the WordPress home page URL.
  *
@@ -2429,7 +2611,7 @@ function wp_list_filter( $list, $args = array(), $operator = 'AND' ) {
 
                $matched = 0;
                foreach ( $args as $m_key => $m_value ) {
-                       if ( $m_value == $to_match[ $m_key ] )
+                       if ( array_key_exists( $m_key, $to_match ) && $m_value == $to_match[ $m_key ] )
                                $matched++;
                }
 
@@ -2487,6 +2669,10 @@ function wp_maybe_load_widgets() {
  */
 function wp_widgets_add_menu() {
        global $submenu;
+
+       if ( ! current_theme_supports( 'widgets' ) )
+               return;
+
        $submenu['themes.php'][7] = array( __( 'Widgets' ), 'edit_theme_options', 'widgets.php' );
        ksort( $submenu['themes.php'], SORT_NUMERIC );
 }
@@ -2581,8 +2767,8 @@ function absint( $maybeint ) {
  */
 function url_is_accessable_via_ssl($url)
 {
-       if (in_array('curl', get_loaded_extensions())) {
-               $ssl = preg_replace( '/^http:\/\//', 'https://',  $url );
+       if ( in_array( 'curl', get_loaded_extensions() ) ) {
+               $ssl = set_url_scheme( $url, 'https' );
 
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $ssl);
@@ -2932,9 +3118,10 @@ function wp_guess_url() {
        if ( defined('WP_SITEURL') && '' != WP_SITEURL ) {
                $url = WP_SITEURL;
        } else {
-               $schema = is_ssl() ? 'https://' : 'http://';
-               $url = preg_replace('#/(wp-admin/.*|wp-login.php)#i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+               $schema = is_ssl() ? 'https://' : 'http://'; // set_url_scheme() is not defined yet
+               $url = preg_replace( '#/(wp-admin/.*|wp-login.php)#i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
        }
+
        return rtrim($url, '/');
 }
 
@@ -2993,13 +3180,13 @@ function wp_suspend_cache_invalidation($suspend = true) {
  * @return bool True if not multisite or $blog_id is main site
  */
 function is_main_site( $blog_id = '' ) {
-       global $current_site, $current_blog;
+       global $current_site;
 
-       if ( !is_multisite() )
+       if ( ! is_multisite() )
                return true;
 
-       if ( !$blog_id )
-               $blog_id = $current_blog->blog_id;
+       if ( ! $blog_id )
+               $blog_id = get_current_blog_id();
 
        return $blog_id == $current_site->blog_id;
 }
@@ -3047,7 +3234,7 @@ function wp_timezone_override_offset() {
        if ( false === $timezone_object || false === $datetime_object ) {
                return false;
        }
-       return round( timezone_offset_get( $timezone_object, $datetime_object ) / 3600, 2 );
+       return round( timezone_offset_get( $timezone_object, $datetime_object ) / HOUR_IN_SECONDS, 2 );
 }
 
 /**
@@ -3247,7 +3434,7 @@ function _cleanup_header_comment($str) {
 function wp_scheduled_delete() {
        global $wpdb;
 
-       $delete_timestamp = time() - (60*60*24*EMPTY_TRASH_DAYS);
+       $delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS );
 
        $posts_to_delete = $wpdb->get_results($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_trash_meta_time' AND meta_value < '%d'", $delete_timestamp), ARRAY_A);
 
@@ -3536,7 +3723,7 @@ function wp_allowed_protocols() {
        static $protocols;
 
        if ( empty( $protocols ) ) {
-               $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn' );
+               $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp' );
                $protocols = apply_filters( 'kses_allowed_protocols', $protocols );
        }
 
@@ -3628,8 +3815,31 @@ function _device_can_upload() {
                || strpos($ua, 'iPad') !== false
                || strpos($ua, 'iPod') !== false ) {
                        return preg_match( '#OS ([\d_]+) like Mac OS X#', $ua, $version ) && version_compare( $version[1], '6', '>=' );
-       } else {
-               return true;
        }
+
+       return true;
 }
 
+/**
+ * Test if a given path is a stream URL
+ *
+ * @param string $path The resource path or URL
+ * @return bool True if the path is a stream URL
+ */
+function wp_is_stream( $path ) {
+       $wrappers = stream_get_wrappers();
+       $wrappers_re = '(' . join('|', $wrappers) . ')';
+
+       return preg_match( "!^$wrappers_re://!", $path ) === 1;
+}
+
+/**
+ * Test if the supplied date is valid for the Gregorian calendar
+ *
+ * @since 3.5.0
+ *
+ * @return bool true|false
+ */
+function wp_checkdate( $month, $day, $year, $source_date ) {
+       return apply_filters( 'wp_checkdate', checkdate( $month, $day, $year ), $source_date );
+}
index a8dac35c257b88344ee1ceddbfbe24b597d30f80..49b760f04ae80b3cc8155fb65b63cee753fc8bca 100644 (file)
@@ -161,16 +161,18 @@ function wp_dequeue_script( $handle ) {
 /**
  * Check whether script has been added to WordPress Scripts.
  *
- * The values for list defaults to 'queue', which is the same as enqueue for
- * scripts.
+ * By default, checks if the script has been enqueued. You can also
+ * pass 'registered' to $list, to see if the script is registered,
+ * and you can check processing statuses with 'to_do' and 'done'.
  *
  * @since WP unknown; BP unknown
  *
- * @param string $handle Handle used to add script.
- * @param string $list Optional, defaults to 'queue'. Others values are 'registered', 'queue', 'done', 'to_do'
- * @return bool
+ * @param string $handle Name of the script.
+ * @param string $list Optional. Defaults to 'enqueued'. Values are
+ *     'registered', 'enqueued' (or 'queue'), 'to_do', and 'done'.
+ * @return bool Whether script is in the list.
  */
-function wp_script_is( $handle, $list = 'queue' ) {
+function wp_script_is( $handle, $list = 'enqueued' ) {
        global $wp_scripts;
        if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
                if ( ! did_action( 'init' ) )
@@ -179,10 +181,5 @@ function wp_script_is( $handle, $list = 'queue' ) {
                $wp_scripts = new WP_Scripts();
        }
 
-       $query = $wp_scripts->query( $handle, $list );
-
-       if ( is_object( $query ) )
-               return true;
-
-       return $query;
+       return (bool) $wp_scripts->query( $handle, $list );
 }
index 8896615438fd1e5e058e5920f2a0091b7b387e71..49095f3b7ae16a90f22f80678789e01a63e757c6 100644 (file)
@@ -167,16 +167,19 @@ function wp_dequeue_style( $handle ) {
 /**
  * Check whether style has been added to WordPress Styles.
  *
- * The values for list defaults to 'queue', which is the same as wp_enqueue_style().
+ * By default, checks if the style has been enqueued. You can also
+ * pass 'registered' to $list, to see if the style is registered,
+ * and you can check processing statuses with 'to_do' and 'done'.
  *
  * @since WP unknown; BP unknown
  * @global object $wp_styles The WP_Styles object for printing styles.
  *
  * @param string $handle Name of the stylesheet.
- * @param string $list Values are 'registered', 'done', 'queue' and 'to_do'.
- * @return bool True on success, false on failure.
+ * @param string $list Optional. Defaults to 'enqueued'. Values are
+ *     'registered', 'enqueued' (or 'queue'), 'to_do', and 'done'.
+ * @return bool Whether style is in the list.
  */
-function wp_style_is( $handle, $list = 'queue' ) {
+function wp_style_is( $handle, $list = 'enqueued' ) {
        global $wp_styles;
        if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
                if ( ! did_action( 'init' ) )
@@ -185,10 +188,5 @@ function wp_style_is( $handle, $list = 'queue' ) {
                $wp_styles = new WP_Styles();
        }
 
-       $query = $wp_styles->query( $handle, $list );
-
-       if ( is_object( $query ) )
-               return true;
-
-       return $query;
+       return (bool) $wp_styles->query( $handle, $list );
 }
index 19726961e7b6f6a7cdfb1e02f20e7fc4a38ebcc1..af3d572e5916d9867a6b52b16fd04634145caa11 100644 (file)
@@ -147,6 +147,7 @@ function get_template_part( $slug, $name = null ) {
  *
  * @since 2.7.0
  * @param boolean $echo Default to echo and not return the form.
+ * @return string|null String when retrieving, null when displaying or if searchform.php exists.
  */
 function get_search_form($echo = true) {
        do_action( 'get_search_form' );
@@ -181,6 +182,7 @@ function get_search_form($echo = true) {
  *
  * @param string $redirect Optional path to redirect to on login/logout.
  * @param boolean $echo Default to echo and not return the link.
+ * @return string|null String when retrieving, null when displaying.
  */
 function wp_loginout($redirect = '', $echo = true) {
        if ( ! is_user_logged_in() )
@@ -205,6 +207,7 @@ function wp_loginout($redirect = '', $echo = true) {
  * @uses apply_filters() calls 'logout_url' hook on final logout url
  *
  * @param string $redirect Path to redirect to on logout.
+ * @return string A log out URL.
  */
 function wp_logout_url($redirect = '') {
        $args = array( 'action' => 'logout' );
@@ -229,7 +232,7 @@ function wp_logout_url($redirect = '') {
  *
  * @param string $redirect Path to redirect to on login.
  * @param bool $force_reauth Whether to force reauthorization, even if a cookie is present. Default is false.
- * @return string A log in url
+ * @return string A log in URL.
  */
 function wp_login_url($redirect = '', $force_reauth = false) {
        $login_url = site_url('wp-login.php', 'login');
@@ -248,8 +251,8 @@ function wp_login_url($redirect = '', $force_reauth = false) {
  * the HTML immediately. Pass array('echo'=>false) to return the string instead.
  *
  * @since 3.0.0
- * @param array $args Configuration options to modify the form output
- * @return Void, or string containing the form
+ * @param array $args Configuration options to modify the form output.
+ * @return string|null String when retrieving, null when displaying.
  */
 function wp_login_form( $args = array() ) {
        $defaults = array( 'echo' => true,
@@ -274,16 +277,16 @@ function wp_login_form( $args = array() ) {
                        ' . apply_filters( 'login_form_top', '', $args ) . '
                        <p class="login-username">
                                <label for="' . esc_attr( $args['id_username'] ) . '">' . esc_html( $args['label_username'] ) . '</label>
-                               <input type="text" name="log" id="' . esc_attr( $args['id_username'] ) . '" class="input" value="' . esc_attr( $args['value_username'] ) . '" size="20" tabindex="10" />
+                               <input type="text" name="log" id="' . esc_attr( $args['id_username'] ) . '" class="input" value="' . esc_attr( $args['value_username'] ) . '" size="20" />
                        </p>
                        <p class="login-password">
                                <label for="' . esc_attr( $args['id_password'] ) . '">' . esc_html( $args['label_password'] ) . '</label>
-                               <input type="password" name="pwd" id="' . esc_attr( $args['id_password'] ) . '" class="input" value="" size="20" tabindex="20" />
+                               <input type="password" name="pwd" id="' . esc_attr( $args['id_password'] ) . '" class="input" value="" size="20" />
                        </p>
                        ' . apply_filters( 'login_form_middle', '', $args ) . '
-                       ' . ( $args['remember'] ? '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="' . esc_attr( $args['id_remember'] ) . '" value="forever" tabindex="90"' . ( $args['value_remember'] ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $args['label_remember'] ) . '</label></p>' : '' ) . '
+                       ' . ( $args['remember'] ? '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="' . esc_attr( $args['id_remember'] ) . '" value="forever"' . ( $args['value_remember'] ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $args['label_remember'] ) . '</label></p>' : '' ) . '
                        <p class="login-submit">
-                               <input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" tabindex="100" />
+                               <input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" />
                                <input type="hidden" name="redirect_to" value="' . esc_url( $args['redirect'] ) . '" />
                        </p>
                        ' . apply_filters( 'login_form_bottom', '', $args ) . '
@@ -305,6 +308,7 @@ function wp_login_form( $args = array() ) {
  * @uses apply_filters() calls 'lostpassword_url' hook on the lostpassword url
  *
  * @param string $redirect Path to redirect to on login.
+ * @return string Lost password URL.
  */
 function wp_lostpassword_url( $redirect = '' ) {
        $args = array( 'action' => 'lostpassword' );
@@ -328,6 +332,7 @@ function wp_lostpassword_url( $redirect = '' ) {
  * @param string $before Text to output before the link (defaults to <li>).
  * @param string $after Text to output after the link (defaults to </li>).
  * @param boolean $echo Default to echo and not return the link.
+ * @return string|null String when retrieving, null when displaying.
  */
 function wp_register( $before = '<li>', $after = '</li>', $echo = true ) {
 
@@ -491,18 +496,6 @@ function get_bloginfo( $show = '', $filter = 'raw' ) {
        return $output;
 }
 
-/**
- * Retrieve the current blog id
- *
- * @since 3.1.0
- *
- * @return int Blog id
- */
-function get_current_blog_id() {
-       global $blog_id;
-       return absint($blog_id);
-}
-
 /**
  * Display or retrieve page title for all areas of blog.
  *
@@ -873,6 +866,7 @@ function get_archives_link($url, $text, $format = 'html', $before = '', $after =
  * @since 1.2.0
  *
  * @param string|array $args Optional. Override defaults.
+ * @return string|null String when retrieving, null when displaying.
  */
 function wp_get_archives($args = '') {
        global $wpdb, $wp_locale;
@@ -881,7 +875,7 @@ function wp_get_archives($args = '') {
                'type' => 'monthly', 'limit' => '',
                'format' => 'html', 'before' => '',
                'after' => '', 'show_post_count' => false,
-               'echo' => 1
+               'echo' => 1, 'order' => 'DESC',
        );
 
        $r = wp_parse_args( $args, $defaults );
@@ -895,6 +889,10 @@ function wp_get_archives($args = '') {
                $limit = ' LIMIT '.$limit;
        }
 
+       $order = strtoupper( $order );
+       if ( $order !== 'ASC' )
+               $order = 'DESC';
+
        // this is what will separate dates on weekly archive links
        $archive_week_separator = '&#8211;';
 
@@ -921,7 +919,7 @@ function wp_get_archives($args = '') {
        $output = '';
 
        if ( 'monthly' == $type ) {
-               $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit";
+               $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date $order $limit";
                $key = md5($query);
                $cache = wp_cache_get( 'wp_get_archives' , 'general');
                if ( !isset( $cache[ $key ] ) ) {
@@ -943,7 +941,7 @@ function wp_get_archives($args = '') {
                        }
                }
        } elseif ('yearly' == $type) {
-               $query = "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date) ORDER BY post_date DESC $limit";
+               $query = "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date) ORDER BY post_date $order $limit";
                $key = md5($query);
                $cache = wp_cache_get( 'wp_get_archives' , 'general');
                if ( !isset( $cache[ $key ] ) ) {
@@ -964,7 +962,7 @@ function wp_get_archives($args = '') {
                        }
                }
        } elseif ( 'daily' == $type ) {
-               $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) ORDER BY post_date DESC $limit";
+               $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) ORDER BY post_date $order $limit";
                $key = md5($query);
                $cache = wp_cache_get( 'wp_get_archives' , 'general');
                if ( !isset( $cache[ $key ] ) ) {
@@ -987,7 +985,7 @@ function wp_get_archives($args = '') {
                }
        } elseif ( 'weekly' == $type ) {
                $week = _wp_mysql_week( '`post_date`' );
-               $query = "SELECT DISTINCT $week AS `week`, YEAR( `post_date` ) AS `yr`, DATE_FORMAT( `post_date`, '%Y-%m-%d' ) AS `yyyymmdd`, count( `ID` ) AS `posts` FROM `$wpdb->posts` $join $where GROUP BY $week, YEAR( `post_date` ) ORDER BY `post_date` DESC $limit";
+               $query = "SELECT DISTINCT $week AS `week`, YEAR( `post_date` ) AS `yr`, DATE_FORMAT( `post_date`, '%Y-%m-%d' ) AS `yyyymmdd`, count( `ID` ) AS `posts` FROM `$wpdb->posts` $join $where GROUP BY $week, YEAR( `post_date` ) ORDER BY `post_date` $order $limit";
                $key = md5($query);
                $cache = wp_cache_get( 'wp_get_archives' , 'general');
                if ( !isset( $cache[ $key ] ) ) {
@@ -1050,7 +1048,6 @@ function wp_get_archives($args = '') {
  * Get number of days since the start of the week.
  *
  * @since 1.5.0
- * @usedby get_calendar()
  *
  * @param int $num Number of day.
  * @return int Days since the start of the week.
@@ -1067,9 +1064,11 @@ function calendar_week_mod($num) {
  * no posts for the month, then it will not be displayed.
  *
  * @since 1.0.0
+ * @uses calendar_week_mod()
  *
  * @param bool $initial Optional, default is true. Use initial calendar names.
  * @param bool $echo Optional, default is true. Set to false for return.
+ * @return string|null String when retrieving, null when displaying.
  */
 function get_calendar($initial = true, $echo = true) {
        global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;
@@ -1319,8 +1318,7 @@ function allowed_tags() {
  * @since 1.0.0
  */
 function the_date_xml() {
-       global $post;
-       echo mysql2date('Y-m-d', $post->post_date, false);
+       echo mysql2date( 'Y-m-d', get_post()->post_date, false );
 }
 
 /**
@@ -1375,7 +1373,7 @@ function the_date( $d = '', $before = '', $after = '', $echo = true ) {
  * @return string|null Null if displaying, string if retrieving.
  */
 function get_the_date( $d = '' ) {
-       global $post;
+       $post = get_post();
        $the_date = '';
 
        if ( '' == $d )
@@ -1536,8 +1534,8 @@ function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translat
  * @uses $post
  */
 function the_weekday() {
-       global $wp_locale, $post;
-       $the_weekday = $wp_locale->get_weekday(mysql2date('w', $post->post_date, false));
+       global $wp_locale;
+       $the_weekday = $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) );
        $the_weekday = apply_filters('the_weekday', $the_weekday);
        echo $the_weekday;
 }
@@ -1554,11 +1552,11 @@ function the_weekday() {
  * @param string $after Optional Output after the date.
  */
 function the_weekday_date($before='',$after='') {
-       global $wp_locale, $post, $day, $previousweekday;
+       global $wp_locale, $day, $previousweekday;
        $the_weekday_date = '';
        if ( $currentday != $previousweekday ) {
                $the_weekday_date .= $before;
-               $the_weekday_date .= $wp_locale->get_weekday(mysql2date('w', $post->post_date, false));
+               $the_weekday_date .= $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) );
                $the_weekday_date .= $after;
                $previousweekday = $currentday;
        }
@@ -1633,13 +1631,15 @@ function feed_links_extra( $args = array() ) {
                'authortitle' => __('%1$s %2$s Posts by %3$s Feed'),
                /* translators: 1: blog name, 2: separator(raquo), 3: search phrase */
                'searchtitle' => __('%1$s %2$s Search Results for &#8220;%3$s&#8221; Feed'),
+               /* translators: 1: blog name, 2: separator(raquo), 3: post type name */
+               'posttypetitle' => __('%1$s %2$s %3$s Feed'),
        );
 
        $args = wp_parse_args( $args, $defaults );
 
        if ( is_single() || is_page() ) {
                $id = 0;
-               $post = &get_post( $id );
+               $post = get_post( $id );
 
                if ( comments_open() || pings_open() || $post->comment_count > 0 ) {
                        $title = sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], esc_html( get_the_title() ) );
@@ -1663,6 +1663,9 @@ function feed_links_extra( $args = array() ) {
        } elseif ( is_search() ) {
                $title = sprintf( $args['searchtitle'], get_bloginfo('name'), $args['separator'], get_search_query( false ) );
                $href = get_search_feed_link();
+       } elseif ( is_post_type_archive() ) {
+               $title = sprintf( $args['posttypetitle'], get_bloginfo('name'), $args['separator'], post_type_archive_title( '', false ) );
+               $href = get_post_type_archive_feed_link( get_queried_object()->name );
        }
 
        if ( isset($title) && isset($href) )
@@ -1754,7 +1757,7 @@ function user_can_richedit() {
                if ( get_user_option( 'rich_editing' ) == 'true' || ! is_user_logged_in() ) { // default to 'true' for logged out users
                        if ( $is_safari ) {
                                $wp_rich_edit = ! wp_is_mobile() || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval( $match[1] ) >= 534 );
-                       } elseif ( $is_gecko || $is_opera || $is_chrome || $is_IE ) {
+                       } elseif ( $is_gecko || $is_chrome || $is_IE || ( $is_opera && !wp_is_mobile() ) ) {
                                $wp_rich_edit = true;
                        }
                }
@@ -1767,7 +1770,7 @@ function user_can_richedit() {
  * Find out which editor should be displayed by default.
  *
  * Works out which of the two editors to display as the current editor for a
- * user.
+ * user. The 'html' setting is for the "Text" editor tab.
  *
  * @since 2.5.0
  *
@@ -1855,8 +1858,8 @@ function language_attributes($doctype = 'html') {
        $attributes = array();
        $output = '';
 
-       if ( function_exists( 'is_rtl' ) )
-               $attributes[] = 'dir="' . ( is_rtl() ? 'rtl' : 'ltr' ) . '"';
+       if ( function_exists( 'is_rtl' ) && is_rtl() )
+               $attributes[] = 'dir="rtl"';
 
        if ( $lang = get_bloginfo('language') ) {
                if ( get_option('html_type') == 'text/html' || $doctype == 'html' )
@@ -2032,9 +2035,9 @@ function wp_admin_css_color($key, $name, $url, $colors = array()) {
  * @since 3.0.0
  */
 function register_admin_color_schemes() {
-       wp_admin_css_color( 'classic', _x( 'Blue', 'admin color scheme' ), admin_url( 'css/colors-classic.css' ),
+       wp_admin_css_color( 'classic', _x( 'Blue', 'admin color scheme' ), admin_url( 'css/colors-classic.min.css' ),
                array( '#5589aa', '#cfdfe9', '#d1e5ee', '#eff8ff' ) );
-       wp_admin_css_color( 'fresh', _x( 'Gray', 'admin color scheme' ), admin_url( 'css/colors-fresh.css' ),
+       wp_admin_css_color( 'fresh', _x( 'Gray', 'admin color scheme' ), admin_url( 'css/colors-fresh.min.css' ),
                array( '#555', '#a0a0a0', '#ccc', '#f1f1f1' ) );
 }
 
@@ -2264,8 +2267,8 @@ function disabled( $disabled, $current = true, $echo = true ) {
  * @since 2.8.0
  * @access private
  *
- * @param any $helper One of the values to compare
- * @param any $current (true) The other value to compare if not just true
+ * @param mixed $helper One of the values to compare
+ * @param mixed $current (true) The other value to compare if not just true
  * @param bool $echo Whether to echo or just return the string
  * @param string $type The type of checked|selected|disabled we are doing
  * @return string html attribute or empty string
index dd9df6e73f69480b688ac6bd950411412722d637..56e4f9ff20a7725c2fc6600da028ca14497011a4 100644 (file)
@@ -19,7 +19,7 @@
  *
  * @return WP_Http HTTP Transport object.
  */
-function &_wp_http_get_object() {
+function _wp_http_get_object() {
        static $http;
 
        if ( is_null($http) )
@@ -284,6 +284,10 @@ function is_allowed_http_origin( $origin = null ) {
  * Send Access-Control-Allow-Origin and related headers if the current request
  * is from an allowed origin.
  *
+ * If the request is an OPTIONS request, the script exits with either access
+ * control headers sent, or a 403 response if the origin is not allowed. For
+ * other request methods, you will receive a return value.
+ *
  * @since 3.4.0
  *
  * @return bool|string Returns the origin URL if headers are sent. Returns false
@@ -291,11 +295,19 @@ function is_allowed_http_origin( $origin = null ) {
  */
 function send_origin_headers() {
        $origin = get_http_origin();
-       if ( ! is_allowed_http_origin( $origin ) )
-               return false;
 
-       @header( 'Access-Control-Allow-Origin: ' .  $origin );
-       @header( 'Access-Control-Allow-Credentials: true' );
+       if ( is_allowed_http_origin( $origin ) ) {
+               @header( 'Access-Control-Allow-Origin: ' .  $origin );
+               @header( 'Access-Control-Allow-Credentials: true' );
+               if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] )
+                       exit;
+               return $origin;
+       }
 
-       return $origin;
-}
\ No newline at end of file
+       if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
+               status_header( 403 );
+               exit;
+       }
+
+       return false;
+}
index f329c86e52698262b18839923fca9165049c139e..9accbee7d315d1325e9157190e370c58f7700a72 100644 (file)
Binary files a/wp-includes/images/admin-bar-sprite-2x.png and b/wp-includes/images/admin-bar-sprite-2x.png differ
index 56f3be286198b228b58f7ee4f1d200896aa55162..744c65a441d918c69b3157584147e38ab6f653fb 100644 (file)
Binary files a/wp-includes/images/admin-bar-sprite.png and b/wp-includes/images/admin-bar-sprite.png differ
diff --git a/wp-includes/images/arrow-pointer-blue-2x.png b/wp-includes/images/arrow-pointer-blue-2x.png
new file mode 100644 (file)
index 0000000..ec1f777
Binary files /dev/null and b/wp-includes/images/arrow-pointer-blue-2x.png differ
index 0380a95a61d5573fd8a0eecfbb63b4998e52cce1..65b42feb4332af04bfc8f91b73c77756c6a924b6 100644 (file)
Binary files a/wp-includes/images/arrow-pointer-blue.png and b/wp-includes/images/arrow-pointer-blue.png differ
index 670648a2c38d5585eeb47f527001cfc61e4b7a67..2fe9fec5a3232649b9b27f1f19a020eebf042b0b 100644 (file)
Binary files a/wp-includes/images/crystal/archive.png and b/wp-includes/images/crystal/archive.png differ
index 5a3d4d3afb2a58a5b3833e0568b1d3ab75631934..1d347bc2f6c4f42169500483f80c74850c507a30 100644 (file)
Binary files a/wp-includes/images/crystal/audio.png and b/wp-includes/images/crystal/audio.png differ
index b67c600572ce284700e365e00a132e38110af02e..2fa960856a0d8a1c5ea2f5f0d264a709f89142b1 100644 (file)
Binary files a/wp-includes/images/crystal/code.png and b/wp-includes/images/crystal/code.png differ
index b1bbbc7b55dd11e7b932af649ace43b918ddd3fe..83d80ee7fdd4d8259c35ce75f3caa4d1be15ca19 100644 (file)
Binary files a/wp-includes/images/crystal/default.png and b/wp-includes/images/crystal/default.png differ
index 3295ccd388867461930044c0aa5ce9b7d8ad542d..a6342cfb3701cdfe6a05fb86159682c88b836d7f 100644 (file)
Binary files a/wp-includes/images/crystal/document.png and b/wp-includes/images/crystal/document.png differ
index fd6de7d7a7ab67f5e528a9d4478e0adb9270c3a2..687248b042b69e68a42126b410920bb067387c85 100644 (file)
Binary files a/wp-includes/images/crystal/interactive.png and b/wp-includes/images/crystal/interactive.png differ
index f2c4d3093aeae2da0c158b006a38c6d43cea22a2..402b2596ad839bbea68d4abeeed696a5d5c588a9 100644 (file)
Binary files a/wp-includes/images/crystal/spreadsheet.png and b/wp-includes/images/crystal/spreadsheet.png differ
index feaed5b47246586c51ffcea8a4be6b58c28ec246..3ef6672bf3510a6523fc8b5652e844116bea28d7 100644 (file)
Binary files a/wp-includes/images/crystal/text.png and b/wp-includes/images/crystal/text.png differ
index e1b879d6ccccbfc1949d71acd5eb5a32e6a2efa5..bd58b9b043ae4d48c7a49afed6f88b2b7d708dd5 100644 (file)
Binary files a/wp-includes/images/crystal/video.png and b/wp-includes/images/crystal/video.png differ
diff --git a/wp-includes/images/down_arrow-2x.gif b/wp-includes/images/down_arrow-2x.gif
new file mode 100644 (file)
index 0000000..2408bd5
Binary files /dev/null and b/wp-includes/images/down_arrow-2x.gif differ
diff --git a/wp-includes/images/icon-pointer-flag-2x.png b/wp-includes/images/icon-pointer-flag-2x.png
new file mode 100644 (file)
index 0000000..99a2c2a
Binary files /dev/null and b/wp-includes/images/icon-pointer-flag-2x.png differ
diff --git a/wp-includes/images/rss-2x.png b/wp-includes/images/rss-2x.png
new file mode 100644 (file)
index 0000000..7b525cf
Binary files /dev/null and b/wp-includes/images/rss-2x.png differ
index 6e7b676b345588a734dce002843a442520931170..9707305e354c8ab98211af984d806ec41041fc99 100644 (file)
Binary files a/wp-includes/images/rss.png and b/wp-includes/images/rss.png differ
diff --git a/wp-includes/images/toggle-arrow-2x.png b/wp-includes/images/toggle-arrow-2x.png
new file mode 100644 (file)
index 0000000..a282075
Binary files /dev/null and b/wp-includes/images/toggle-arrow-2x.png differ
index 5d4a6d34ed9f1d615469d94822f56201333aa009..bfb6494262ae0f3eb0d654e37e43aa5fe1631a26 100644 (file)
Binary files a/wp-includes/images/toggle-arrow.png and b/wp-includes/images/toggle-arrow.png differ
diff --git a/wp-includes/images/upload.png b/wp-includes/images/upload.png
deleted file mode 100644 (file)
index 8ca02d7..0000000
Binary files a/wp-includes/images/upload.png and /dev/null differ
diff --git a/wp-includes/images/uploader-icons-2x.png b/wp-includes/images/uploader-icons-2x.png
new file mode 100644 (file)
index 0000000..d40389c
Binary files /dev/null and b/wp-includes/images/uploader-icons-2x.png differ
diff --git a/wp-includes/images/uploader-icons.png b/wp-includes/images/uploader-icons.png
new file mode 100644 (file)
index 0000000..b72a074
Binary files /dev/null and b/wp-includes/images/uploader-icons.png differ
index 981b1af593600b94c253616ff94efff2ebbe931b..6bc3d523f420e9cd3bf7daabb492a919dff33a69 100644 (file)
Binary files a/wp-includes/images/wlw/wp-comments.png and b/wp-includes/images/wlw/wp-comments.png differ
index cd94ee3b25986d92f50ac81ac1e8ab5281807ce5..c3523833aa9b28be58701f84fe080eb21bb7d0e8 100644 (file)
Binary files a/wp-includes/images/wlw/wp-icon.png and b/wp-includes/images/wlw/wp-icon.png differ
index c312a72562c7452f45439fe5f53227a2c55ea9ce..c9741fa02fa697b78b6a7f25ef1f4f547dc5a0d4 100644 (file)
Binary files a/wp-includes/images/wlw/wp-watermark.png and b/wp-includes/images/wlw/wp-watermark.png differ
diff --git a/wp-includes/images/wpicons-2x.png b/wp-includes/images/wpicons-2x.png
new file mode 100644 (file)
index 0000000..07390dc
Binary files /dev/null and b/wp-includes/images/wpicons-2x.png differ
index 17c2eee3165e8fb13ecb9078a95a5454a5a9aa18..8eef01eed85624e002ce3d2f6213d5319029afcb 100644 (file)
Binary files a/wp-includes/images/wpicons.png and b/wp-includes/images/wpicons.png differ
diff --git a/wp-includes/images/wpmini-blue-2x.png b/wp-includes/images/wpmini-blue-2x.png
new file mode 100644 (file)
index 0000000..3bfb20a
Binary files /dev/null and b/wp-includes/images/wpmini-blue-2x.png differ
index 13f3fa64dd7aee3835861516bd4a5e51de297ac7..a6197620504050e8f8b8f3d8e48f401194085cee 100644 (file)
Binary files a/wp-includes/images/wpmini-blue.png and b/wp-includes/images/wpmini-blue.png differ
diff --git a/wp-includes/images/wpspin-2x.gif b/wp-includes/images/wpspin-2x.gif
new file mode 100644 (file)
index 0000000..fe2d5c0
Binary files /dev/null and b/wp-includes/images/wpspin-2x.gif differ
diff --git a/wp-includes/images/wpspin.gif b/wp-includes/images/wpspin.gif
new file mode 100644 (file)
index 0000000..e10b97f
Binary files /dev/null and b/wp-includes/images/wpspin.gif differ
diff --git a/wp-includes/images/xit-2x.gif b/wp-includes/images/xit-2x.gif
new file mode 100644 (file)
index 0000000..64ab2ce
Binary files /dev/null and b/wp-includes/images/xit-2x.gif differ
diff --git a/wp-includes/js/admin-bar.dev.js b/wp-includes/js/admin-bar.dev.js
deleted file mode 100644 (file)
index 0479c56..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-// use jQuery and hoverIntent if loaded
-if ( typeof(jQuery) != 'undefined' ) {
-       if ( typeof(jQuery.fn.hoverIntent) == 'undefined' )
-               (function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
-
-       jQuery(document).ready(function($){
-               var refresh = function(i, el){ // force the browser to refresh the tabbing index
-                       var node = $(el), tab = node.attr('tabindex');
-                       if ( tab )
-                               node.attr('tabindex', '0').attr('tabindex', tab);
-               };
-
-               $('#wpadminbar').removeClass('nojq').removeClass('nojs').find('li.menupop').hoverIntent({
-                       over: function(e){
-                               $(this).addClass('hover');
-                       },
-                       out: function(e){
-                               $(this).removeClass('hover');
-                       },
-                       timeout: 180,
-                       sensitivity: 7,
-                       interval: 100
-               });
-
-               $('#wp-admin-bar-get-shortlink').click(function(e){
-                       e.preventDefault();
-                       $(this).addClass('selected').children('.shortlink-input').blur(function(){
-                               $(this).parents('#wp-admin-bar-get-shortlink').removeClass('selected');
-                       }).focus().select();
-               });
-
-               $('#wpadminbar li.menupop > .ab-item').bind('keydown.adminbar', function(e){
-                       if ( e.which != 13 )
-                               return;
-
-                       var target = $(e.target), wrap = target.closest('ab-sub-wrapper');
-
-                       e.stopPropagation();
-                       e.preventDefault();
-
-                       if ( !wrap.length )
-                               wrap = $('#wpadminbar .quicklinks');
-
-                       wrap.find('.menupop').removeClass('hover');
-                       target.parent().toggleClass('hover');
-                       target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
-               }).each(refresh);
-
-               $('#wpadminbar .ab-item').bind('keydown.adminbar', function(e){
-                       if ( e.which != 27 )
-                               return;
-
-                       var target = $(e.target);
-
-                       e.stopPropagation();
-                       e.preventDefault();
-
-                       target.closest('.hover').removeClass('hover').children('.ab-item').focus();
-                       target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
-               });
-
-               $('#wpadminbar').click( function(e) {
-                       if ( e.target.id != 'wpadminbar' && e.target.id != 'wp-admin-bar-top-secondary' )
-                               return;
-
-                       e.preventDefault();
-                       $('html, body').animate({ scrollTop: 0 }, 'fast');
-               });
-
-       });
-} else {
-       (function(d, w) {
-               var addEvent = function( obj, type, fn ) {
-                       if (obj.addEventListener)
-                               obj.addEventListener(type, fn, false);
-                       else if (obj.attachEvent)
-                               obj.attachEvent('on' + type, function() { return fn.call(obj, window.event);});
-               },
-
-               aB, hc = new RegExp('\\bhover\\b', 'g'), q = [],
-               rselected = new RegExp('\\bselected\\b', 'g'),
-
-               /**
-                * Get the timeout ID of the given element
-                */
-               getTOID = function(el) {
-                       var i = q.length;
-                       while( i-- )
-                               if ( q[i] && el == q[i][1] )
-                                       return q[i][0];
-                       return false;
-               },
-
-               addHoverClass = function(t) {
-                       var i, id, inA, hovering, ul, li,
-                               ancestors = [],
-                               ancestorLength = 0;
-
-                       while ( t && t != aB && t != d ) {
-                               if( 'LI' == t.nodeName.toUpperCase() ) {
-                                       ancestors[ ancestors.length ] = t;
-                                       id = getTOID(t);
-                                       if ( id )
-                                               clearTimeout( id );
-                                       t.className = t.className ? ( t.className.replace(hc, '') + ' hover' ) : 'hover';
-                                       hovering = t;
-                               }
-                               t = t.parentNode;
-                       }
-
-                       // Remove any selected classes.
-                       if ( hovering && hovering.parentNode ) {
-                               ul = hovering.parentNode;
-                               if ( ul && 'UL' == ul.nodeName.toUpperCase() ) {
-                                       i = ul.childNodes.length;
-                                       while ( i-- ) {
-                                               li = ul.childNodes[i];
-                                               if ( li != hovering )
-                                                       li.className = li.className ? li.className.replace( rselected, '' ) : '';
-                                       }
-                               }
-                       }
-
-                       /* remove the hover class for any objects not in the immediate element's ancestry */
-                       i = q.length;
-                       while ( i-- ) {
-                               inA = false;
-                               ancestorLength = ancestors.length;
-                               while( ancestorLength-- ) {
-                                       if ( ancestors[ ancestorLength ] == q[i][1] )
-                                               inA = true;
-                               }
-
-                               if ( ! inA )
-                                       q[i][1].className = q[i][1].className ? q[i][1].className.replace(hc, '') : '';
-                       }
-               },
-
-               removeHoverClass = function(t) {
-                       while ( t && t != aB && t != d ) {
-                               if( 'LI' == t.nodeName.toUpperCase() ) {
-                                       (function(t) {
-                                               var to = setTimeout(function() {
-                                                       t.className = t.className ? t.className.replace(hc, '') : '';
-                                               }, 500);
-                                               q[q.length] = [to, t];
-                                       })(t);
-                               }
-                               t = t.parentNode;
-                       }
-               },
-
-               clickShortlink = function(e) {
-                       var i, l, node,
-                               t = e.target || e.srcElement;
-
-                       // Make t the shortlink menu item, or return.
-                       while ( true ) {
-                               // Check if we've gone past the shortlink node,
-                               // or if the user is clicking on the input.
-                               if ( ! t || t == d || t == aB )
-                                       return;
-                               // Check if we've found the shortlink node.
-                               if ( t.id && t.id == 'wp-admin-bar-get-shortlink' )
-                                       break;
-                               t = t.parentNode;
-                       }
-
-                       // IE doesn't support preventDefault, and does support returnValue
-                       if ( e.preventDefault )
-                               e.preventDefault();
-                       e.returnValue = false;
-
-                       if ( -1 == t.className.indexOf('selected') )
-                               t.className += ' selected';
-
-                       for ( i = 0, l = t.childNodes.length; i < l; i++ ) {
-                               node = t.childNodes[i];
-                               if ( node.className && -1 != node.className.indexOf('shortlink-input') ) {
-                                       node.focus();
-                                       node.select();
-                                       node.onblur = function() {
-                                               t.className = t.className ? t.className.replace( rselected, '' ) : '';
-                                       };
-                                       break;
-                               }
-                       }
-                       return false;
-               },
-
-               scrollToTop = function(t) {
-                       var distance, speed, step, steps, timer, speed_step;
-
-                       // Ensure that the #wpadminbar was the target of the click.
-                       if ( t.id != 'wpadminbar' && t.id != 'wp-admin-bar-top-secondary' )
-                               return;
-
-                       distance    = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
-
-                       if ( distance < 1 )
-                               return;
-
-                       speed_step = distance > 800 ? 130 : 100;
-                       speed     = Math.min( 12, Math.round( distance / speed_step ) );
-                       step      = distance > 800 ? Math.round( distance / 30  ) : Math.round( distance / 20  );
-                       steps     = [];
-                       timer     = 0;
-
-                       // Animate scrolling to the top of the page by generating steps to
-                       // the top of the page and shifting to each step at a set interval.
-                       while ( distance ) {
-                               distance -= step;
-                               if ( distance < 0 )
-                                       distance = 0;
-                               steps.push( distance );
-
-                               setTimeout( function() {
-                                       window.scrollTo( 0, steps.shift() );
-                               }, timer * speed );
-
-                               timer++;
-                       }
-               };
-
-               addEvent(w, 'load', function() {
-                       aB = d.getElementById('wpadminbar');
-
-                       if ( d.body && aB ) {
-                               d.body.appendChild( aB );
-
-                               if ( aB.className )
-                                       aB.className = aB.className.replace(/nojs/, '');
-
-                               addEvent(aB, 'mouseover', function(e) {
-                                       addHoverClass( e.target || e.srcElement );
-                               });
-
-                               addEvent(aB, 'mouseout', function(e) {
-                                       removeHoverClass( e.target || e.srcElement );
-                               });
-
-                               addEvent(aB, 'click', clickShortlink );
-
-                               addEvent(aB, 'click', function(e) {
-                                       scrollToTop( e.target || e.srcElement );
-                               });
-                       }
-
-                       if ( w.location.hash )
-                               w.scrollBy(0,-32);
-               });
-       })(document, window);
-
-}
index b9600f22e7c1b361c76b510a2cb808020c991643..cb4e1184918136d8ffda237ccf9cf86a249db440 100644 (file)
@@ -1 +1,318 @@
-if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(p,r){var g={sensitivity:7,interval:100,timeout:0};g=b.extend(g,r?{over:p,out:r}:p);var a,f,t,v;var u=function(c){a=c.pageX;f=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(t-a)+Math.abs(v-f))<g.sensitivity){b(d).unbind("mousemove",u);d.hoverIntent_s=1;return g.over.apply(d,[c])}else{t=a;v=f;d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}};var s=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return g.out.apply(d,[c])};var x=function(e){var d=this;var c=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(c&&c!=this){try{c=c.parentNode}catch(e){c=this}}if(c==this){if(b.browser.mozilla){if(e.type=="mouseout"){d.mtout=setTimeout(function(){q(e,d)},30)}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}}}return}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}q(e,d)}};var q=function(e,d){var c=jQuery.extend({},e);if(d.hoverIntent_t){d.hoverIntent_t=clearTimeout(d.hoverIntent_t)}if(e.type=="mouseover"){t=c.pageX;v=c.pageY;b(d).bind("mousemove",u);if(d.hoverIntent_s!=1){d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}}else{b(d).unbind("mousemove",u);if(d.hoverIntent_s==1){d.hoverIntent_t=setTimeout(function(){s(c,d)},g.timeout)}}};return this.mouseover(x).mouseout(x)}})(jQuery)}jQuery(document).ready(function(b){var a=function(c,e){var f=b(e),d=f.attr("tabindex");if(d){f.attr("tabindex","0").attr("tabindex",d)}};b("#wpadminbar").removeClass("nojq").removeClass("nojs").find("li.menupop").hoverIntent({over:function(c){b(this).addClass("hover")},out:function(c){b(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});b("#wp-admin-bar-get-shortlink").click(function(c){c.preventDefault();b(this).addClass("selected").children(".shortlink-input").blur(function(){b(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});b("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(f){if(f.which!=13){return}var d=b(f.target),c=d.closest("ab-sub-wrapper");f.stopPropagation();f.preventDefault();if(!c.length){c=b("#wpadminbar .quicklinks")}c.find(".menupop").removeClass("hover");d.parent().toggleClass("hover");d.siblings(".ab-sub-wrapper").find(".ab-item").each(a)}).each(a);b("#wpadminbar .ab-item").bind("keydown.adminbar",function(d){if(d.which!=27){return}var c=b(d.target);d.stopPropagation();d.preventDefault();c.closest(".hover").removeClass("hover").children(".ab-item").focus();c.siblings(".ab-sub-wrapper").find(".ab-item").each(a)});b("#wpadminbar").click(function(c){if(c.target.id!="wpadminbar"&&c.target.id!="wp-admin-bar-top-secondary"){return}c.preventDefault();b("html, body").animate({scrollTop:0},"fast")})})}else{(function(j,l){var e=function(o,n,d){if(o.addEventListener){o.addEventListener(n,d,false)}else{if(o.attachEvent){o.attachEvent("on"+n,function(){return d.call(o,window.event)})}}},f,g=new RegExp("\\bhover\\b","g"),b=[],k=new RegExp("\\bselected\\b","g"),h=function(n){var d=b.length;while(d--){if(b[d]&&n==b[d][1]){return b[d][0]}}return false},i=function(u){var o,d,r,n,q,s,v=[],p=0;while(u&&u!=f&&u!=j){if("LI"==u.nodeName.toUpperCase()){v[v.length]=u;d=h(u);if(d){clearTimeout(d)}u.className=u.className?(u.className.replace(g,"")+" hover"):"hover";n=u}u=u.parentNode}if(n&&n.parentNode){q=n.parentNode;if(q&&"UL"==q.nodeName.toUpperCase()){o=q.childNodes.length;while(o--){s=q.childNodes[o];if(s!=n){s.className=s.className?s.className.replace(k,""):""}}}}o=b.length;while(o--){r=false;p=v.length;while(p--){if(v[p]==b[o][1]){r=true}}if(!r){b[o][1].className=b[o][1].className?b[o][1].className.replace(g,""):""}}},m=function(d){while(d&&d!=f&&d!=j){if("LI"==d.nodeName.toUpperCase()){(function(n){var o=setTimeout(function(){n.className=n.className?n.className.replace(g,""):""},500);b[b.length]=[o,n]})(d)}d=d.parentNode}},c=function(q){var o,d,p,n=q.target||q.srcElement;while(true){if(!n||n==j||n==f){return}if(n.id&&n.id=="wp-admin-bar-get-shortlink"){break}n=n.parentNode}if(q.preventDefault){q.preventDefault()}q.returnValue=false;if(-1==n.className.indexOf("selected")){n.className+=" selected"}for(o=0,d=n.childNodes.length;o<d;o++){p=n.childNodes[o];if(p.className&&-1!=p.className.indexOf("shortlink-input")){p.focus();p.select();p.onblur=function(){n.className=n.className?n.className.replace(k,""):""};break}}return false},a=function(n){var s,q,p,d,r,o;if(n.id!="wpadminbar"&&n.id!="wp-admin-bar-top-secondary"){return}s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(s<1){return}o=s>800?130:100;q=Math.min(12,Math.round(s/o));p=s>800?Math.round(s/30):Math.round(s/20);d=[];r=0;while(s){s-=p;if(s<0){s=0}d.push(s);setTimeout(function(){window.scrollTo(0,d.shift())},r*q);r++}};e(l,"load",function(){f=j.getElementById("wpadminbar");if(j.body&&f){j.body.appendChild(f);if(f.className){f.className=f.className.replace(/nojs/,"")}e(f,"mouseover",function(d){i(d.target||d.srcElement)});e(f,"mouseout",function(d){m(d.target||d.srcElement)});e(f,"click",c);e(f,"click",function(d){a(d.target||d.srcElement)})}if(l.location.hash){l.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
+// use jQuery and hoverIntent if loaded
+if ( typeof(jQuery) != 'undefined' ) {
+       if ( typeof(jQuery.fn.hoverIntent) == 'undefined' )
+               (function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
+
+       jQuery(document).ready(function($){
+               var adminbar = $('#wpadminbar'), refresh, touchOpen, touchClose, disableHoverIntent = false;
+
+               refresh = function(i, el){ // force the browser to refresh the tabbing index
+                       var node = $(el), tab = node.attr('tabindex');
+                       if ( tab )
+                               node.attr('tabindex', '0').attr('tabindex', tab);
+               };
+
+               touchOpen = function(unbind) {
+                       adminbar.find('li.menupop').on('click.wp-mobile-hover', function(e) {
+                               var el = $(this);
+
+                               if ( !el.hasClass('hover') ) {
+                                       e.preventDefault();
+                                       adminbar.find('li.menupop.hover').removeClass('hover');
+                                       el.addClass('hover');
+                               }
+
+                               if ( unbind ) {
+                                       $('li.menupop').off('click.wp-mobile-hover');
+                                       disableHoverIntent = false;
+                               }
+                       });
+               };
+
+               touchClose = function() {
+                       var mobileEvent = /Mobile\/.+Safari/.test(navigator.userAgent) ? 'touchstart' : 'click';
+                       // close any open drop-downs when the click/touch is not on the toolbar
+                       $(document.body).on( mobileEvent+'.wp-mobile-hover', function(e) {
+                               if ( !$(e.target).closest('#wpadminbar').length )
+                                       adminbar.find('li.menupop.hover').removeClass('hover');
+                       });
+               };
+
+               adminbar.removeClass('nojq').removeClass('nojs');
+
+               if ( 'ontouchstart' in window ) {
+                       adminbar.on('touchstart', function(){
+                               touchOpen(true);
+                               disableHoverIntent = true;
+                       });
+                       touchClose();
+               } else if ( /IEMobile\/[1-9]/.test(navigator.userAgent) ) {
+                       touchOpen();
+                       touchClose();
+               }
+
+               adminbar.find('li.menupop').hoverIntent({
+                       over: function(e){
+                               if ( disableHoverIntent )
+                                       return;
+
+                               $(this).addClass('hover');
+                       },
+                       out: function(e){
+                               if ( disableHoverIntent )
+                                       return;
+
+                               $(this).removeClass('hover');
+                       },
+                       timeout: 180,
+                       sensitivity: 7,
+                       interval: 100
+               });
+
+               if ( window.location.hash )
+                       window.scrollBy( 0, -32 );
+
+               $('#wp-admin-bar-get-shortlink').click(function(e){
+                       e.preventDefault();
+                       $(this).addClass('selected').children('.shortlink-input').blur(function(){
+                               $(this).parents('#wp-admin-bar-get-shortlink').removeClass('selected');
+                       }).focus().select();
+               });
+
+               $('#wpadminbar li.menupop > .ab-item').bind('keydown.adminbar', function(e){
+                       if ( e.which != 13 )
+                               return;
+
+                       var target = $(e.target), wrap = target.closest('ab-sub-wrapper');
+
+                       e.stopPropagation();
+                       e.preventDefault();
+
+                       if ( !wrap.length )
+                               wrap = $('#wpadminbar .quicklinks');
+
+                       wrap.find('.menupop').removeClass('hover');
+                       target.parent().toggleClass('hover');
+                       target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
+               }).each(refresh);
+
+               $('#wpadminbar .ab-item').bind('keydown.adminbar', function(e){
+                       if ( e.which != 27 )
+                               return;
+
+                       var target = $(e.target);
+
+                       e.stopPropagation();
+                       e.preventDefault();
+
+                       target.closest('.hover').removeClass('hover').children('.ab-item').focus();
+                       target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
+               });
+
+               $('#wpadminbar').click( function(e) {
+                       if ( e.target.id != 'wpadminbar' && e.target.id != 'wp-admin-bar-top-secondary' )
+                               return;
+
+                       e.preventDefault();
+                       $('html, body').animate({ scrollTop: 0 }, 'fast');
+               });
+
+               // fix focus bug in WebKit
+               $('.screen-reader-shortcut').keydown( function(e) {
+                       if ( 13 != e.which )
+                               return;
+
+                       var id = $(this).attr('href');
+
+                       if ( $.browser.webkit && id && id.charAt(0) == '#' ) {
+                               setTimeout(function () {
+                                       $(id).focus();
+                               }, 100);
+                       }
+               });
+       });
+} else {
+       (function(d, w) {
+               var addEvent = function( obj, type, fn ) {
+                       if ( obj.addEventListener )
+                               obj.addEventListener(type, fn, false);
+                       else if ( obj.attachEvent )
+                               obj.attachEvent('on' + type, function() { return fn.call(obj, window.event);});
+               },
+
+               aB, hc = new RegExp('\\bhover\\b', 'g'), q = [],
+               rselected = new RegExp('\\bselected\\b', 'g'),
+
+               /**
+                * Get the timeout ID of the given element
+                */
+               getTOID = function(el) {
+                       var i = q.length;
+                       while ( i-- ) {
+                               if ( q[i] && el == q[i][1] )
+                                       return q[i][0];
+                       }
+                       return false;
+               },
+
+               addHoverClass = function(t) {
+                       var i, id, inA, hovering, ul, li,
+                               ancestors = [],
+                               ancestorLength = 0;
+
+                       while ( t && t != aB && t != d ) {
+                               if ( 'LI' == t.nodeName.toUpperCase() ) {
+                                       ancestors[ ancestors.length ] = t;
+                                       id = getTOID(t);
+                                       if ( id )
+                                               clearTimeout( id );
+                                       t.className = t.className ? ( t.className.replace(hc, '') + ' hover' ) : 'hover';
+                                       hovering = t;
+                               }
+                               t = t.parentNode;
+                       }
+
+                       // Remove any selected classes.
+                       if ( hovering && hovering.parentNode ) {
+                               ul = hovering.parentNode;
+                               if ( ul && 'UL' == ul.nodeName.toUpperCase() ) {
+                                       i = ul.childNodes.length;
+                                       while ( i-- ) {
+                                               li = ul.childNodes[i];
+                                               if ( li != hovering )
+                                                       li.className = li.className ? li.className.replace( rselected, '' ) : '';
+                                       }
+                               }
+                       }
+
+                       /* remove the hover class for any objects not in the immediate element's ancestry */
+                       i = q.length;
+                       while ( i-- ) {
+                               inA = false;
+                               ancestorLength = ancestors.length;
+                               while( ancestorLength-- ) {
+                                       if ( ancestors[ ancestorLength ] == q[i][1] )
+                                               inA = true;
+                               }
+
+                               if ( ! inA )
+                                       q[i][1].className = q[i][1].className ? q[i][1].className.replace(hc, '') : '';
+                       }
+               },
+
+               removeHoverClass = function(t) {
+                       while ( t && t != aB && t != d ) {
+                               if ( 'LI' == t.nodeName.toUpperCase() ) {
+                                       (function(t) {
+                                               var to = setTimeout(function() {
+                                                       t.className = t.className ? t.className.replace(hc, '') : '';
+                                               }, 500);
+                                               q[q.length] = [to, t];
+                                       })(t);
+                               }
+                               t = t.parentNode;
+                       }
+               },
+
+               clickShortlink = function(e) {
+                       var i, l, node,
+                               t = e.target || e.srcElement;
+
+                       // Make t the shortlink menu item, or return.
+                       while ( true ) {
+                               // Check if we've gone past the shortlink node,
+                               // or if the user is clicking on the input.
+                               if ( ! t || t == d || t == aB )
+                                       return;
+                               // Check if we've found the shortlink node.
+                               if ( t.id && t.id == 'wp-admin-bar-get-shortlink' )
+                                       break;
+                               t = t.parentNode;
+                       }
+
+                       // IE doesn't support preventDefault, and does support returnValue
+                       if ( e.preventDefault )
+                               e.preventDefault();
+                       e.returnValue = false;
+
+                       if ( -1 == t.className.indexOf('selected') )
+                               t.className += ' selected';
+
+                       for ( i = 0, l = t.childNodes.length; i < l; i++ ) {
+                               node = t.childNodes[i];
+                               if ( node.className && -1 != node.className.indexOf('shortlink-input') ) {
+                                       node.focus();
+                                       node.select();
+                                       node.onblur = function() {
+                                               t.className = t.className ? t.className.replace( rselected, '' ) : '';
+                                       };
+                                       break;
+                               }
+                       }
+                       return false;
+               },
+
+               scrollToTop = function(t) {
+                       var distance, speed, step, steps, timer, speed_step;
+
+                       // Ensure that the #wpadminbar was the target of the click.
+                       if ( t.id != 'wpadminbar' && t.id != 'wp-admin-bar-top-secondary' )
+                               return;
+
+                       distance    = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
+
+                       if ( distance < 1 )
+                               return;
+
+                       speed_step = distance > 800 ? 130 : 100;
+                       speed     = Math.min( 12, Math.round( distance / speed_step ) );
+                       step      = distance > 800 ? Math.round( distance / 30  ) : Math.round( distance / 20  );
+                       steps     = [];
+                       timer     = 0;
+
+                       // Animate scrolling to the top of the page by generating steps to
+                       // the top of the page and shifting to each step at a set interval.
+                       while ( distance ) {
+                               distance -= step;
+                               if ( distance < 0 )
+                                       distance = 0;
+                               steps.push( distance );
+
+                               setTimeout( function() {
+                                       window.scrollTo( 0, steps.shift() );
+                               }, timer * speed );
+
+                               timer++;
+                       }
+               };
+
+               addEvent(w, 'load', function() {
+                       aB = d.getElementById('wpadminbar');
+
+                       if ( d.body && aB ) {
+                               d.body.appendChild( aB );
+
+                               if ( aB.className )
+                                       aB.className = aB.className.replace(/nojs/, '');
+
+                               addEvent(aB, 'mouseover', function(e) {
+                                       addHoverClass( e.target || e.srcElement );
+                               });
+
+                               addEvent(aB, 'mouseout', function(e) {
+                                       removeHoverClass( e.target || e.srcElement );
+                               });
+
+                               addEvent(aB, 'click', clickShortlink );
+
+                               addEvent(aB, 'click', function(e) {
+                                       scrollToTop( e.target || e.srcElement );
+                               });
+                       }
+
+                       if ( w.location.hash )
+                               w.scrollBy(0,-32);
+               });
+       })(document, window);
+
+}
diff --git a/wp-includes/js/admin-bar.min.js b/wp-includes/js/admin-bar.min.js
new file mode 100644 (file)
index 0000000..b876704
--- /dev/null
@@ -0,0 +1 @@
+if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(p,r){var g={sensitivity:7,interval:100,timeout:0};g=b.extend(g,r?{over:p,out:r}:p);var a,f,t,v;var u=function(c){a=c.pageX;f=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(t-a)+Math.abs(v-f))<g.sensitivity){b(d).unbind("mousemove",u);d.hoverIntent_s=1;return g.over.apply(d,[c])}else{t=a;v=f;d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}};var s=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return g.out.apply(d,[c])};var x=function(e){var d=this;var c=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(c&&c!=this){try{c=c.parentNode}catch(e){c=this}}if(c==this){if(b.browser.mozilla){if(e.type=="mouseout"){d.mtout=setTimeout(function(){q(e,d)},30)}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}}}return}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}q(e,d)}};var q=function(e,d){var c=jQuery.extend({},e);if(d.hoverIntent_t){d.hoverIntent_t=clearTimeout(d.hoverIntent_t)}if(e.type=="mouseover"){t=c.pageX;v=c.pageY;b(d).bind("mousemove",u);if(d.hoverIntent_s!=1){d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}}else{b(d).unbind("mousemove",u);if(d.hoverIntent_s==1){d.hoverIntent_t=setTimeout(function(){s(c,d)},g.timeout)}}};return this.mouseover(x).mouseout(x)}})(jQuery)}jQuery(document).ready(function(e){var d=e("#wpadminbar"),c,a,b,f=false;c=function(g,j){var k=e(j),h=k.attr("tabindex");if(h){k.attr("tabindex","0").attr("tabindex",h)}};a=function(g){d.find("li.menupop").on("click.wp-mobile-hover",function(i){var h=e(this);if(!h.hasClass("hover")){i.preventDefault();d.find("li.menupop.hover").removeClass("hover");h.addClass("hover")}if(g){e("li.menupop").off("click.wp-mobile-hover");f=false}})};b=function(){var g=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";e(document.body).on(g+".wp-mobile-hover",function(h){if(!e(h.target).closest("#wpadminbar").length){d.find("li.menupop.hover").removeClass("hover")}})};d.removeClass("nojq").removeClass("nojs");if("ontouchstart" in window){d.on("touchstart",function(){a(true);f=true});b()}else{if(/IEMobile\/[1-9]/.test(navigator.userAgent)){a();b()}}d.find("li.menupop").hoverIntent({over:function(g){if(f){return}e(this).addClass("hover")},out:function(g){if(f){return}e(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});if(window.location.hash){window.scrollBy(0,-32)}e("#wp-admin-bar-get-shortlink").click(function(g){g.preventDefault();e(this).addClass("selected").children(".shortlink-input").blur(function(){e(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});e("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(i){if(i.which!=13){return}var h=e(i.target),g=h.closest("ab-sub-wrapper");i.stopPropagation();i.preventDefault();if(!g.length){g=e("#wpadminbar .quicklinks")}g.find(".menupop").removeClass("hover");h.parent().toggleClass("hover");h.siblings(".ab-sub-wrapper").find(".ab-item").each(c)}).each(c);e("#wpadminbar .ab-item").bind("keydown.adminbar",function(h){if(h.which!=27){return}var g=e(h.target);h.stopPropagation();h.preventDefault();g.closest(".hover").removeClass("hover").children(".ab-item").focus();g.siblings(".ab-sub-wrapper").find(".ab-item").each(c)});e("#wpadminbar").click(function(g){if(g.target.id!="wpadminbar"&&g.target.id!="wp-admin-bar-top-secondary"){return}g.preventDefault();e("html, body").animate({scrollTop:0},"fast")});e(".screen-reader-shortcut").keydown(function(g){if(13!=g.which){return}var h=e(this).attr("href");if(e.browser.webkit&&h&&h.charAt(0)=="#"){setTimeout(function(){e(h).focus()},100)}})})}else{(function(j,l){var e=function(o,n,d){if(o.addEventListener){o.addEventListener(n,d,false)}else{if(o.attachEvent){o.attachEvent("on"+n,function(){return d.call(o,window.event)})}}},f,g=new RegExp("\\bhover\\b","g"),b=[],k=new RegExp("\\bselected\\b","g"),h=function(n){var d=b.length;while(d--){if(b[d]&&n==b[d][1]){return b[d][0]}}return false},i=function(u){var o,d,r,n,q,s,v=[],p=0;while(u&&u!=f&&u!=j){if("LI"==u.nodeName.toUpperCase()){v[v.length]=u;d=h(u);if(d){clearTimeout(d)}u.className=u.className?(u.className.replace(g,"")+" hover"):"hover";n=u}u=u.parentNode}if(n&&n.parentNode){q=n.parentNode;if(q&&"UL"==q.nodeName.toUpperCase()){o=q.childNodes.length;while(o--){s=q.childNodes[o];if(s!=n){s.className=s.className?s.className.replace(k,""):""}}}}o=b.length;while(o--){r=false;p=v.length;while(p--){if(v[p]==b[o][1]){r=true}}if(!r){b[o][1].className=b[o][1].className?b[o][1].className.replace(g,""):""}}},m=function(d){while(d&&d!=f&&d!=j){if("LI"==d.nodeName.toUpperCase()){(function(n){var o=setTimeout(function(){n.className=n.className?n.className.replace(g,""):""},500);b[b.length]=[o,n]})(d)}d=d.parentNode}},c=function(q){var o,d,p,n=q.target||q.srcElement;while(true){if(!n||n==j||n==f){return}if(n.id&&n.id=="wp-admin-bar-get-shortlink"){break}n=n.parentNode}if(q.preventDefault){q.preventDefault()}q.returnValue=false;if(-1==n.className.indexOf("selected")){n.className+=" selected"}for(o=0,d=n.childNodes.length;o<d;o++){p=n.childNodes[o];if(p.className&&-1!=p.className.indexOf("shortlink-input")){p.focus();p.select();p.onblur=function(){n.className=n.className?n.className.replace(k,""):""};break}}return false},a=function(n){var s,q,p,d,r,o;if(n.id!="wpadminbar"&&n.id!="wp-admin-bar-top-secondary"){return}s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(s<1){return}o=s>800?130:100;q=Math.min(12,Math.round(s/o));p=s>800?Math.round(s/30):Math.round(s/20);d=[];r=0;while(s){s-=p;if(s<0){s=0}d.push(s);setTimeout(function(){window.scrollTo(0,d.shift())},r*q);r++}};e(l,"load",function(){f=j.getElementById("wpadminbar");if(j.body&&f){j.body.appendChild(f);if(f.className){f.className=f.className.replace(/nojs/,"")}e(f,"mouseover",function(d){i(d.target||d.srcElement)});e(f,"mouseout",function(d){m(d.target||d.srcElement)});e(f,"click",c);e(f,"click",function(d){a(d.target||d.srcElement)})}if(l.location.hash){l.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
diff --git a/wp-includes/js/autosave.dev.js b/wp-includes/js/autosave.dev.js
deleted file mode 100644 (file)
index 66e3bbc..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-var autosave, autosaveLast = '', autosavePeriodical, autosaveOldMessage = '', autosaveDelayPreview = false, notSaved = true, blockSave = false, fullscreen, autosaveLockRelease = true;
-
-jQuery(document).ready( function($) {
-       var dotabkey = true;
-
-       autosaveLast = $('#post #title').val() + $('#post #content').val();
-       autosavePeriodical = $.schedule({time: autosaveL10n.autosaveInterval * 1000, func: function() { autosave(); }, repeat: true, protect: true});
-
-       //Disable autosave after the form has been submitted
-       $("#post").submit(function() {
-               $.cancel(autosavePeriodical);
-               autosaveLockRelease = false;
-       });
-
-       $('input[type="submit"], a.submitdelete', '#submitpost').click(function(){
-               blockSave = true;
-               window.onbeforeunload = null;
-               $(':button, :submit', '#submitpost').each(function(){
-                       var t = $(this);
-                       if ( t.hasClass('button-primary') )
-                               t.addClass('button-primary-disabled');
-                       else
-                               t.addClass('button-disabled');
-               });
-               if ( $(this).attr('id') == 'publish' )
-                       $('#ajax-loading').css('visibility', 'visible');
-               else
-                       $('#draft-ajax-loading').css('visibility', 'visible');
-       });
-
-       window.onbeforeunload = function(){
-               var mce = typeof(tinyMCE) != 'undefined' ? tinyMCE.activeEditor : false, title, content;
-
-               if ( mce && !mce.isHidden() ) {
-                       if ( mce.isDirty() )
-                               return autosaveL10n.saveAlert;
-               } else {
-                       if ( fullscreen && fullscreen.settings.visible ) {
-                               title = $('#wp-fullscreen-title').val();
-                               content = $("#wp_mce_fullscreen").val();
-                       } else {
-                               title = $('#post #title').val();
-                               content = $('#post #content').val();
-                       }
-
-                       if ( ( title || content ) && title + content != autosaveLast )
-                               return autosaveL10n.saveAlert;
-               }
-       };
-
-       $(window).unload( function(e) {
-               if ( ! autosaveLockRelease )
-                       return;
-
-               // unload fires (twice) on removing the Thickbox iframe. Make sure we process only the main document unload.
-               if ( e.target && e.target.nodeName != '#document' )
-                       return;
-
-               $.ajax({
-                       type: 'POST',
-                       url: ajaxurl,
-                       async: false,
-                       data: {
-                               action: 'wp-remove-post-lock',
-                               _wpnonce: $('#_wpnonce').val(),
-                               post_ID: $('#post_ID').val(),
-                               active_post_lock: $('#active_post_lock').val()
-                       }
-               });
-       } );
-
-       // preview
-       $('#post-preview').click(function(){
-               if ( $('#auto_draft').val() == '1' && notSaved ) {
-                       autosaveDelayPreview = true;
-                       autosave();
-                       return false;
-               }
-               doPreview();
-               return false;
-       });
-
-       doPreview = function() {
-               $('input#wp-preview').val('dopreview');
-               $('form#post').attr('target', 'wp-preview').submit().attr('target', '');
-
-               /*
-                * Workaround for WebKit bug preventing a form submitting twice to the same action.
-                * https://bugs.webkit.org/show_bug.cgi?id=28633
-                */
-               if ( $.browser.safari ) {
-                       $('form#post').attr('action', function(index, value) {
-                               return value + '?t=' + new Date().getTime();
-                       });
-               }
-
-               $('input#wp-preview').val('');
-       }
-
-       //  This code is meant to allow tabbing from Title to Post if tinyMCE is defined.
-       if ( typeof tinyMCE != 'undefined' ) {
-               $('#title')[$.browser.opera ? 'keypress' : 'keydown'](function (e) {
-                       if ( e.which == 9 && !e.shiftKey && !e.controlKey && !e.altKey ) {
-                               if ( ($('#auto_draft').val() == '1') && ($("#title").val().length > 0) ) { autosave(); }
-                               if ( tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden() && dotabkey ) {
-                                       e.preventDefault();
-                                       dotabkey = false;
-                                       tinyMCE.activeEditor.focus();
-                                       return false;
-                               }
-                       }
-               });
-       }
-
-       // autosave new posts after a title is typed but not if Publish or Save Draft is clicked
-       if ( '1' == $('#auto_draft').val() ) {
-               $('#title').blur( function() {
-                       if ( !this.value || $('#auto_draft').val() != '1' )
-                               return;
-                       delayed_autosave();
-               });
-       }
-});
-
-function autosave_parse_response(response) {
-       var res = wpAjax.parseAjaxResponse(response, 'autosave'), message = '', postID, sup;
-
-       if ( res && res.responses && res.responses.length ) {
-               message = res.responses[0].data; // The saved message or error.
-               // someone else is editing: disable autosave, set errors
-               if ( res.responses[0].supplemental ) {
-                       sup = res.responses[0].supplemental;
-                       if ( 'disable' == sup['disable_autosave'] ) {
-                               autosave = function() {};
-                               autosaveLockRelease = false;
-                               res = { errors: true };
-                       }
-
-                       if ( sup['active-post-lock'] ) {
-                               jQuery('#active_post_lock').val( sup['active-post-lock'] );
-                       }
-
-                       if ( sup['alert'] ) {
-                               jQuery('#autosave-alert').remove();
-                               jQuery('#titlediv').after('<div id="autosave-alert" class="error below-h2"><p>' + sup['alert'] + '</p></div>');
-                       }
-
-                       jQuery.each(sup, function(selector, value) {
-                               if ( selector.match(/^replace-/) ) {
-                                       jQuery('#'+selector.replace('replace-', '')).val(value);
-                               }
-                       });
-               }
-
-               // if no errors: add slug UI
-               if ( !res.errors ) {
-                       postID = parseInt( res.responses[0].id, 10 );
-                       if ( !isNaN(postID) && postID > 0 ) {
-                               autosave_update_slug(postID);
-                       }
-               }
-       }
-       if ( message ) { // update autosave message
-               jQuery('.autosave-message').html(message);
-       } else if ( autosaveOldMessage && res ) {
-               jQuery('.autosave-message').html( autosaveOldMessage );
-       }
-       return res;
-}
-
-// called when autosaving pre-existing post
-function autosave_saved(response) {
-       blockSave = false;
-       autosave_parse_response(response); // parse the ajax response
-       autosave_enable_buttons(); // re-enable disabled form buttons
-}
-
-// called when autosaving new post
-function autosave_saved_new(response) {
-       blockSave = false;
-       var res = autosave_parse_response(response), postID;
-       if ( res && res.responses.length && !res.errors ) {
-               // An ID is sent only for real auto-saves, not for autosave=0 "keepalive" saves
-               postID = parseInt( res.responses[0].id, 10 );
-               if ( !isNaN(postID) && postID > 0 ) {
-                       notSaved = false;
-                       jQuery('#auto_draft').val('0'); // No longer an auto-draft
-               }
-               autosave_enable_buttons();
-               if ( autosaveDelayPreview ) {
-                       autosaveDelayPreview = false;
-                       doPreview();
-               }
-       } else {
-               autosave_enable_buttons(); // re-enable disabled form buttons
-       }
-}
-
-function autosave_update_slug(post_id) {
-       // create slug area only if not already there
-       if ( 'undefined' != makeSlugeditClickable && jQuery.isFunction(makeSlugeditClickable) && !jQuery('#edit-slug-box > *').size() ) {
-               jQuery.post( ajaxurl, {
-                               action: 'sample-permalink',
-                               post_id: post_id,
-                               new_title: fullscreen && fullscreen.settings.visible ? jQuery('#wp-fullscreen-title').val() : jQuery('#title').val(),
-                               samplepermalinknonce: jQuery('#samplepermalinknonce').val()
-                       },
-                       function(data) {
-                               if ( data !== '-1' ) {
-                                       jQuery('#edit-slug-box').html(data);
-                                       makeSlugeditClickable();
-                               }
-                       }
-               );
-       }
-}
-
-function autosave_loading() {
-       jQuery('.autosave-message').html(autosaveL10n.savingText);
-}
-
-function autosave_enable_buttons() {
-       // delay that a bit to avoid some rare collisions while the DOM is being updated.
-       setTimeout(function(){
-               jQuery(':button, :submit', '#submitpost').removeAttr('disabled');
-               jQuery('.ajax-loading').css('visibility', 'hidden');
-       }, 500);
-}
-
-function autosave_disable_buttons() {
-       jQuery(':button, :submit', '#submitpost').prop('disabled', true);
-       // Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
-       setTimeout(autosave_enable_buttons, 5000);
-}
-
-function delayed_autosave() {
-       setTimeout(function(){
-               if ( blockSave )
-                       return;
-               autosave();
-       }, 200);
-}
-
-autosave = function() {
-       // (bool) is rich editor enabled and active
-       blockSave = true;
-       var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(),
-               post_data, doAutoSave, ed, origStatus, successCallback;
-
-       autosave_disable_buttons();
-
-       post_data = {
-               action: "autosave",
-               post_ID:  jQuery("#post_ID").val() || 0,
-               autosavenonce: jQuery('#autosavenonce').val(),
-               post_type: jQuery('#post_type').val() || "",
-               autosave: 1
-       };
-
-       jQuery('.tags-input').each( function() {
-               post_data[this.name] = this.value;
-       } );
-
-       // We always send the ajax request in order to keep the post lock fresh.
-       // This (bool) tells whether or not to write the post to the DB during the ajax request.
-       doAutoSave = true;
-
-       // No autosave while thickbox is open (media buttons)
-       if ( jQuery("#TB_window").css('display') == 'block' )
-               doAutoSave = false;
-
-       /* Gotta do this up here so we can check the length when tinyMCE is in use */
-       if ( rich && doAutoSave ) {
-               ed = tinyMCE.activeEditor;
-               // Don't run while the TinyMCE spellcheck is on. It resets all found words.
-               if ( ed.plugins.spellchecker && ed.plugins.spellchecker.active ) {
-                       doAutoSave = false;
-               } else {
-                       if ( 'mce_fullscreen' == ed.id || 'wp_mce_fullscreen' == ed.id )
-                               tinyMCE.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
-                       tinyMCE.triggerSave();
-               }
-       }
-
-       if ( fullscreen && fullscreen.settings.visible ) {
-               post_data["post_title"] = jQuery('#wp-fullscreen-title').val() || '';
-               post_data["content"] = jQuery("#wp_mce_fullscreen").val() || '';
-       } else {
-               post_data["post_title"] = jQuery("#title").val() || '';
-               post_data["content"] = jQuery("#content").val() || '';
-       }
-
-       if ( jQuery('#post_name').val() )
-               post_data["post_name"] = jQuery('#post_name').val();
-
-       // Nothing to save or no change.
-       if ( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast ) {
-               doAutoSave = false;
-       }
-
-       origStatus = jQuery('#original_post_status').val();
-
-       goodcats = ([]);
-       jQuery("[name='post_category[]']:checked").each( function(i) {
-               goodcats.push(this.value);
-       } );
-       post_data["catslist"] = goodcats.join(",");
-
-       if ( jQuery("#comment_status").prop("checked") )
-               post_data["comment_status"] = 'open';
-       if ( jQuery("#ping_status").prop("checked") )
-               post_data["ping_status"] = 'open';
-       if ( jQuery("#excerpt").size() )
-               post_data["excerpt"] = jQuery("#excerpt").val();
-       if ( jQuery("#post_author").size() )
-               post_data["post_author"] = jQuery("#post_author").val();
-       if ( jQuery("#parent_id").val() )
-               post_data["parent_id"] = jQuery("#parent_id").val();
-       post_data["user_ID"] = jQuery("#user-id").val();
-       if ( jQuery('#auto_draft').val() == '1' )
-               post_data["auto_draft"] = '1';
-
-       if ( doAutoSave ) {
-               autosaveLast = post_data["post_title"] + post_data["content"];
-               jQuery(document).triggerHandler('wpcountwords', [ post_data["content"] ]);
-       } else {
-               post_data['autosave'] = 0;
-       }
-
-       if ( post_data["auto_draft"] == '1' ) {
-               successCallback = autosave_saved_new; // new post
-       } else {
-               successCallback = autosave_saved; // pre-existing post
-       }
-
-       autosaveOldMessage = jQuery('#autosave').html();
-       jQuery.ajax({
-               data: post_data,
-               beforeSend: doAutoSave ? autosave_loading : null,
-               type: "POST",
-               url: ajaxurl,
-               success: successCallback
-       });
-}
index a5a29822bc6d2abcbda3bf4e70a78e0d0377b3f7..3920d36061c733fe92eee655c397474224f7f7c6 100644 (file)
@@ -1 +1,351 @@
-var autosave,autosaveLast="",autosavePeriodical,autosaveOldMessage="",autosaveDelayPreview=false,notSaved=true,blockSave=false,fullscreen,autosaveLockRelease=true;jQuery(document).ready(function(b){var a=true;autosaveLast=b("#post #title").val()+b("#post #content").val();autosavePeriodical=b.schedule({time:autosaveL10n.autosaveInterval*1000,func:function(){autosave()},repeat:true,protect:true});b("#post").submit(function(){b.cancel(autosavePeriodical);autosaveLockRelease=false});b('input[type="submit"], a.submitdelete',"#submitpost").click(function(){blockSave=true;window.onbeforeunload=null;b(":button, :submit","#submitpost").each(function(){var c=b(this);if(c.hasClass("button-primary")){c.addClass("button-primary-disabled")}else{c.addClass("button-disabled")}});if(b(this).attr("id")=="publish"){b("#ajax-loading").css("visibility","visible")}else{b("#draft-ajax-loading").css("visibility","visible")}});window.onbeforeunload=function(){var c=typeof(tinyMCE)!="undefined"?tinyMCE.activeEditor:false,e,d;if(c&&!c.isHidden()){if(c.isDirty()){return autosaveL10n.saveAlert}}else{if(fullscreen&&fullscreen.settings.visible){e=b("#wp-fullscreen-title").val();d=b("#wp_mce_fullscreen").val()}else{e=b("#post #title").val();d=b("#post #content").val()}if((e||d)&&e+d!=autosaveLast){return autosaveL10n.saveAlert}}};b(window).unload(function(c){if(!autosaveLockRelease){return}if(c.target&&c.target.nodeName!="#document"){return}b.ajax({type:"POST",url:ajaxurl,async:false,data:{action:"wp-remove-post-lock",_wpnonce:b("#_wpnonce").val(),post_ID:b("#post_ID").val(),active_post_lock:b("#active_post_lock").val()}})});b("#post-preview").click(function(){if(b("#auto_draft").val()=="1"&&notSaved){autosaveDelayPreview=true;autosave();return false}doPreview();return false});doPreview=function(){b("input#wp-preview").val("dopreview");b("form#post").attr("target","wp-preview").submit().attr("target","");if(b.browser.safari){b("form#post").attr("action",function(c,d){return d+"?t="+new Date().getTime()})}b("input#wp-preview").val("")};if(typeof tinyMCE!="undefined"){b("#title")[b.browser.opera?"keypress":"keydown"](function(c){if(c.which==9&&!c.shiftKey&&!c.controlKey&&!c.altKey){if((b("#auto_draft").val()=="1")&&(b("#title").val().length>0)){autosave()}if(tinyMCE.activeEditor&&!tinyMCE.activeEditor.isHidden()&&a){c.preventDefault();a=false;tinyMCE.activeEditor.focus();return false}}})}if("1"==b("#auto_draft").val()){b("#title").blur(function(){if(!this.value||b("#auto_draft").val()!="1"){return}delayed_autosave()})}});function autosave_parse_response(c){var d=wpAjax.parseAjaxResponse(c,"autosave"),e="",a,b;if(d&&d.responses&&d.responses.length){e=d.responses[0].data;if(d.responses[0].supplemental){b=d.responses[0].supplemental;if("disable"==b.disable_autosave){autosave=function(){};autosaveLockRelease=false;d={errors:true}}if(b["active-post-lock"]){jQuery("#active_post_lock").val(b["active-post-lock"])}if(b.alert){jQuery("#autosave-alert").remove();jQuery("#titlediv").after('<div id="autosave-alert" class="error below-h2"><p>'+b.alert+"</p></div>")}jQuery.each(b,function(f,g){if(f.match(/^replace-/)){jQuery("#"+f.replace("replace-","")).val(g)}})}if(!d.errors){a=parseInt(d.responses[0].id,10);if(!isNaN(a)&&a>0){autosave_update_slug(a)}}}if(e){jQuery(".autosave-message").html(e)}else{if(autosaveOldMessage&&d){jQuery(".autosave-message").html(autosaveOldMessage)}}return d}function autosave_saved(a){blockSave=false;autosave_parse_response(a);autosave_enable_buttons()}function autosave_saved_new(b){blockSave=false;var c=autosave_parse_response(b),a;if(c&&c.responses.length&&!c.errors){a=parseInt(c.responses[0].id,10);if(!isNaN(a)&&a>0){notSaved=false;jQuery("#auto_draft").val("0")}autosave_enable_buttons();if(autosaveDelayPreview){autosaveDelayPreview=false;doPreview()}}else{autosave_enable_buttons()}}function autosave_update_slug(a){if("undefined"!=makeSlugeditClickable&&jQuery.isFunction(makeSlugeditClickable)&&!jQuery("#edit-slug-box > *").size()){jQuery.post(ajaxurl,{action:"sample-permalink",post_id:a,new_title:fullscreen&&fullscreen.settings.visible?jQuery("#wp-fullscreen-title").val():jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(b){if(b!=="-1"){jQuery("#edit-slug-box").html(b);makeSlugeditClickable()}})}}function autosave_loading(){jQuery(".autosave-message").html(autosaveL10n.savingText)}function autosave_enable_buttons(){setTimeout(function(){jQuery(":button, :submit","#submitpost").removeAttr("disabled");jQuery(".ajax-loading").css("visibility","hidden")},500)}function autosave_disable_buttons(){jQuery(":button, :submit","#submitpost").prop("disabled",true);setTimeout(autosave_enable_buttons,5000)}function delayed_autosave(){setTimeout(function(){if(blockSave){return}autosave()},200)}autosave=function(){blockSave=true;var c=(typeof tinyMCE!="undefined")&&tinyMCE.activeEditor&&!tinyMCE.activeEditor.isHidden(),d,f,b,e,a;autosave_disable_buttons();d={action:"autosave",post_ID:jQuery("#post_ID").val()||0,autosavenonce:jQuery("#autosavenonce").val(),post_type:jQuery("#post_type").val()||"",autosave:1};jQuery(".tags-input").each(function(){d[this.name]=this.value});f=true;if(jQuery("#TB_window").css("display")=="block"){f=false}if(c&&f){b=tinyMCE.activeEditor;if(b.plugins.spellchecker&&b.plugins.spellchecker.active){f=false}else{if("mce_fullscreen"==b.id||"wp_mce_fullscreen"==b.id){tinyMCE.get("content").setContent(b.getContent({format:"raw"}),{format:"raw"})}tinyMCE.triggerSave()}}if(fullscreen&&fullscreen.settings.visible){d.post_title=jQuery("#wp-fullscreen-title").val()||"";d.content=jQuery("#wp_mce_fullscreen").val()||""}else{d.post_title=jQuery("#title").val()||"";d.content=jQuery("#content").val()||""}if(jQuery("#post_name").val()){d.post_name=jQuery("#post_name").val()}if((d.post_title.length==0&&d.content.length==0)||d.post_title+d.content==autosaveLast){f=false}e=jQuery("#original_post_status").val();goodcats=([]);jQuery("[name='post_category[]']:checked").each(function(g){goodcats.push(this.value)});d.catslist=goodcats.join(",");if(jQuery("#comment_status").prop("checked")){d.comment_status="open"}if(jQuery("#ping_status").prop("checked")){d.ping_status="open"}if(jQuery("#excerpt").size()){d.excerpt=jQuery("#excerpt").val()}if(jQuery("#post_author").size()){d.post_author=jQuery("#post_author").val()}if(jQuery("#parent_id").val()){d.parent_id=jQuery("#parent_id").val()}d.user_ID=jQuery("#user-id").val();if(jQuery("#auto_draft").val()=="1"){d.auto_draft="1"}if(f){autosaveLast=d.post_title+d.content;jQuery(document).triggerHandler("wpcountwords",[d.content])}else{d.autosave=0}if(d.auto_draft=="1"){a=autosave_saved_new}else{a=autosave_saved}autosaveOldMessage=jQuery("#autosave").html();jQuery.ajax({data:d,beforeSend:f?autosave_loading:null,type:"POST",url:ajaxurl,success:a})};
\ No newline at end of file
+var autosave, autosaveLast = '', autosavePeriodical, autosaveOldMessage = '', autosaveDelayPreview = false, notSaved = true, blockSave = false, fullscreen, autosaveLockRelease = true;
+
+jQuery(document).ready( function($) {
+
+       autosaveLast = ( $('#post #title').val() || '' ) + ( $('#post #content').val() || '' );
+       autosavePeriodical = $.schedule({time: autosaveL10n.autosaveInterval * 1000, func: function() { autosave(); }, repeat: true, protect: true});
+
+       //Disable autosave after the form has been submitted
+       $("#post").submit(function() {
+               $.cancel(autosavePeriodical);
+               autosaveLockRelease = false;
+       });
+
+       $('input[type="submit"], a.submitdelete', '#submitpost').click(function(){
+               blockSave = true;
+               window.onbeforeunload = null;
+               $(':button, :submit', '#submitpost').each(function(){
+                       var t = $(this);
+                       if ( t.hasClass('button-primary') )
+                               t.addClass('button-primary-disabled');
+                       else
+                               t.addClass('button-disabled');
+               });
+               if ( $(this).attr('id') == 'publish' )
+                       $('#major-publishing-actions .spinner').show();
+               else
+                       $('#minor-publishing .spinner').show();
+       });
+
+       window.onbeforeunload = function(){
+               var mce = typeof(tinymce) != 'undefined' ? tinymce.activeEditor : false, title, content;
+
+               if ( mce && !mce.isHidden() ) {
+                       if ( mce.isDirty() )
+                               return autosaveL10n.saveAlert;
+               } else {
+                       if ( fullscreen && fullscreen.settings.visible ) {
+                               title = $('#wp-fullscreen-title').val() || '';
+                               content = $("#wp_mce_fullscreen").val() || '';
+                       } else {
+                               title = $('#post #title').val() || '';
+                               content = $('#post #content').val() || '';
+                       }
+
+                       if ( ( title || content ) && title + content != autosaveLast )
+                               return autosaveL10n.saveAlert;
+               }
+       };
+
+       $(window).unload( function(e) {
+               if ( ! autosaveLockRelease )
+                       return;
+
+               // unload fires (twice) on removing the Thickbox iframe. Make sure we process only the main document unload.
+               if ( e.target && e.target.nodeName != '#document' )
+                       return;
+
+               $.ajax({
+                       type: 'POST',
+                       url: ajaxurl,
+                       async: false,
+                       data: {
+                               action: 'wp-remove-post-lock',
+                               _wpnonce: $('#_wpnonce').val(),
+                               post_ID: $('#post_ID').val(),
+                               active_post_lock: $('#active_post_lock').val()
+                       }
+               });
+       } );
+
+       // preview
+       $('#post-preview').click(function(){
+               if ( $('#auto_draft').val() == '1' && notSaved ) {
+                       autosaveDelayPreview = true;
+                       autosave();
+                       return false;
+               }
+               doPreview();
+               return false;
+       });
+
+       doPreview = function() {
+               $('input#wp-preview').val('dopreview');
+               $('form#post').attr('target', 'wp-preview').submit().attr('target', '');
+
+               /*
+                * Workaround for WebKit bug preventing a form submitting twice to the same action.
+                * https://bugs.webkit.org/show_bug.cgi?id=28633
+                */
+               if ( $.browser.safari ) {
+                       $('form#post').attr('action', function(index, value) {
+                               return value + '?t=' + new Date().getTime();
+                       });
+               }
+
+               $('input#wp-preview').val('');
+       }
+
+       // This code is meant to allow tabbing from Title to Post content.
+       $('#title').on('keydown.editor-focus', function(e) {
+               var ed;
+
+               if ( e.which != 9 )
+                       return;
+
+               if ( !e.ctrlKey && !e.altKey && !e.shiftKey ) {
+                       if ( typeof(tinymce) != 'undefined' )
+                               ed = tinymce.get('content');
+
+                       if ( ed && !ed.isHidden() ) {
+                               $(this).one('keyup', function(e){
+                                       $('#content_tbl td.mceToolbar > a').focus();
+                               });
+                       } else {
+                               $('#content').focus();
+                       }
+
+                       e.preventDefault();
+               }
+       });
+
+       // autosave new posts after a title is typed but not if Publish or Save Draft is clicked
+       if ( '1' == $('#auto_draft').val() ) {
+               $('#title').blur( function() {
+                       if ( !this.value || $('#auto_draft').val() != '1' )
+                               return;
+                       delayed_autosave();
+               });
+       }
+});
+
+function autosave_parse_response(response) {
+       var res = wpAjax.parseAjaxResponse(response, 'autosave'), message = '', postID, sup;
+
+       if ( res && res.responses && res.responses.length ) {
+               message = res.responses[0].data; // The saved message or error.
+               // someone else is editing: disable autosave, set errors
+               if ( res.responses[0].supplemental ) {
+                       sup = res.responses[0].supplemental;
+                       if ( 'disable' == sup['disable_autosave'] ) {
+                               autosave = function() {};
+                               autosaveLockRelease = false;
+                               res = { errors: true };
+                       }
+
+                       if ( sup['active-post-lock'] ) {
+                               jQuery('#active_post_lock').val( sup['active-post-lock'] );
+                       }
+
+                       if ( sup['alert'] ) {
+                               jQuery('#autosave-alert').remove();
+                               jQuery('#titlediv').after('<div id="autosave-alert" class="error below-h2"><p>' + sup['alert'] + '</p></div>');
+                       }
+
+                       jQuery.each(sup, function(selector, value) {
+                               if ( selector.match(/^replace-/) ) {
+                                       jQuery('#'+selector.replace('replace-', '')).val(value);
+                               }
+                       });
+               }
+
+               // if no errors: add slug UI
+               if ( !res.errors ) {
+                       postID = parseInt( res.responses[0].id, 10 );
+                       if ( !isNaN(postID) && postID > 0 ) {
+                               autosave_update_slug(postID);
+                       }
+               }
+       }
+       if ( message ) { // update autosave message
+               jQuery('.autosave-message').html(message);
+       } else if ( autosaveOldMessage && res ) {
+               jQuery('.autosave-message').html( autosaveOldMessage );
+       }
+       return res;
+}
+
+// called when autosaving pre-existing post
+function autosave_saved(response) {
+       blockSave = false;
+       autosave_parse_response(response); // parse the ajax response
+       autosave_enable_buttons(); // re-enable disabled form buttons
+}
+
+// called when autosaving new post
+function autosave_saved_new(response) {
+       blockSave = false;
+       var res = autosave_parse_response(response), postID;
+       if ( res && res.responses.length && !res.errors ) {
+               // An ID is sent only for real auto-saves, not for autosave=0 "keepalive" saves
+               postID = parseInt( res.responses[0].id, 10 );
+               if ( !isNaN(postID) && postID > 0 ) {
+                       notSaved = false;
+                       jQuery('#auto_draft').val('0'); // No longer an auto-draft
+               }
+               autosave_enable_buttons();
+               if ( autosaveDelayPreview ) {
+                       autosaveDelayPreview = false;
+                       doPreview();
+               }
+       } else {
+               autosave_enable_buttons(); // re-enable disabled form buttons
+       }
+}
+
+function autosave_update_slug(post_id) {
+       // create slug area only if not already there
+       if ( 'undefined' != makeSlugeditClickable && jQuery.isFunction(makeSlugeditClickable) && !jQuery('#edit-slug-box > *').size() ) {
+               jQuery.post( ajaxurl, {
+                               action: 'sample-permalink',
+                               post_id: post_id,
+                               new_title: fullscreen && fullscreen.settings.visible ? jQuery('#wp-fullscreen-title').val() : jQuery('#title').val(),
+                               samplepermalinknonce: jQuery('#samplepermalinknonce').val()
+                       },
+                       function(data) {
+                               if ( data !== '-1' ) {
+                                       jQuery('#edit-slug-box').html(data);
+                                       makeSlugeditClickable();
+                               }
+                       }
+               );
+       }
+}
+
+function autosave_loading() {
+       jQuery('.autosave-message').html(autosaveL10n.savingText);
+}
+
+function autosave_enable_buttons() {
+       // delay that a bit to avoid some rare collisions while the DOM is being updated.
+       setTimeout(function(){
+               jQuery(':button, :submit', '#submitpost').removeAttr('disabled');
+               jQuery('.spinner', '#submitpost').hide();
+       }, 500);
+}
+
+function autosave_disable_buttons() {
+       jQuery(':button, :submit', '#submitpost').prop('disabled', true);
+       // Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
+       setTimeout(autosave_enable_buttons, 5000);
+}
+
+function delayed_autosave() {
+       setTimeout(function(){
+               if ( blockSave )
+                       return;
+               autosave();
+       }, 200);
+}
+
+autosave = function() {
+       // (bool) is rich editor enabled and active
+       blockSave = true;
+       var rich = (typeof tinymce != "undefined") && tinymce.activeEditor && !tinymce.activeEditor.isHidden(),
+               post_data, doAutoSave, ed, origStatus, successCallback;
+
+       autosave_disable_buttons();
+
+       post_data = {
+               action: "autosave",
+               post_ID:  jQuery("#post_ID").val() || 0,
+               autosavenonce: jQuery('#autosavenonce').val(),
+               post_type: jQuery('#post_type').val() || "",
+               autosave: 1
+       };
+
+       jQuery('.tags-input').each( function() {
+               post_data[this.name] = this.value;
+       } );
+
+       // We always send the ajax request in order to keep the post lock fresh.
+       // This (bool) tells whether or not to write the post to the DB during the ajax request.
+       doAutoSave = true;
+
+       // No autosave while thickbox is open (media buttons)
+       if ( jQuery("#TB_window").css('display') == 'block' )
+               doAutoSave = false;
+
+       /* Gotta do this up here so we can check the length when tinymce is in use */
+       if ( rich && doAutoSave ) {
+               ed = tinymce.activeEditor;
+               // Don't run while the tinymce spellcheck is on. It resets all found words.
+               if ( ed.plugins.spellchecker && ed.plugins.spellchecker.active ) {
+                       doAutoSave = false;
+               } else {
+                       if ( 'mce_fullscreen' == ed.id || 'wp_mce_fullscreen' == ed.id )
+                               tinymce.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+                       tinymce.triggerSave();
+               }
+       }
+
+       if ( fullscreen && fullscreen.settings.visible ) {
+               post_data["post_title"] = jQuery('#wp-fullscreen-title').val() || '';
+               post_data["content"] = jQuery("#wp_mce_fullscreen").val() || '';
+       } else {
+               post_data["post_title"] = jQuery("#title").val() || '';
+               post_data["content"] = jQuery("#content").val() || '';
+       }
+
+       if ( jQuery('#post_name').val() )
+               post_data["post_name"] = jQuery('#post_name').val();
+
+       // Nothing to save or no change.
+       if ( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast ) {
+               doAutoSave = false;
+       }
+
+       origStatus = jQuery('#original_post_status').val();
+
+       goodcats = ([]);
+       jQuery("[name='post_category[]']:checked").each( function(i) {
+               goodcats.push(this.value);
+       } );
+       post_data["catslist"] = goodcats.join(",");
+
+       if ( jQuery("#comment_status").prop("checked") )
+               post_data["comment_status"] = 'open';
+       if ( jQuery("#ping_status").prop("checked") )
+               post_data["ping_status"] = 'open';
+       if ( jQuery("#excerpt").size() )
+               post_data["excerpt"] = jQuery("#excerpt").val();
+       if ( jQuery("#post_author").size() )
+               post_data["post_author"] = jQuery("#post_author").val();
+       if ( jQuery("#parent_id").val() )
+               post_data["parent_id"] = jQuery("#parent_id").val();
+       post_data["user_ID"] = jQuery("#user-id").val();
+       if ( jQuery('#auto_draft').val() == '1' )
+               post_data["auto_draft"] = '1';
+
+       if ( doAutoSave ) {
+               autosaveLast = post_data["post_title"] + post_data["content"];
+               jQuery(document).triggerHandler('wpcountwords', [ post_data["content"] ]);
+       } else {
+               post_data['autosave'] = 0;
+       }
+
+       if ( post_data["auto_draft"] == '1' ) {
+               successCallback = autosave_saved_new; // new post
+       } else {
+               successCallback = autosave_saved; // pre-existing post
+       }
+
+       autosaveOldMessage = jQuery('#autosave').html();
+       jQuery.ajax({
+               data: post_data,
+               beforeSend: doAutoSave ? autosave_loading : null,
+               type: "POST",
+               url: ajaxurl,
+               success: successCallback
+       });
+}
diff --git a/wp-includes/js/autosave.min.js b/wp-includes/js/autosave.min.js
new file mode 100644 (file)
index 0000000..864401f
--- /dev/null
@@ -0,0 +1 @@
+var autosave,autosaveLast="",autosavePeriodical,autosaveOldMessage="",autosaveDelayPreview=false,notSaved=true,blockSave=false,fullscreen,autosaveLockRelease=true;jQuery(document).ready(function(a){autosaveLast=(a("#post #title").val()||"")+(a("#post #content").val()||"");autosavePeriodical=a.schedule({time:autosaveL10n.autosaveInterval*1000,func:function(){autosave()},repeat:true,protect:true});a("#post").submit(function(){a.cancel(autosavePeriodical);autosaveLockRelease=false});a('input[type="submit"], a.submitdelete',"#submitpost").click(function(){blockSave=true;window.onbeforeunload=null;a(":button, :submit","#submitpost").each(function(){var b=a(this);if(b.hasClass("button-primary")){b.addClass("button-primary-disabled")}else{b.addClass("button-disabled")}});if(a(this).attr("id")=="publish"){a("#major-publishing-actions .spinner").show()}else{a("#minor-publishing .spinner").show()}});window.onbeforeunload=function(){var b=typeof(tinymce)!="undefined"?tinymce.activeEditor:false,d,c;if(b&&!b.isHidden()){if(b.isDirty()){return autosaveL10n.saveAlert}}else{if(fullscreen&&fullscreen.settings.visible){d=a("#wp-fullscreen-title").val()||"";c=a("#wp_mce_fullscreen").val()||""}else{d=a("#post #title").val()||"";c=a("#post #content").val()||""}if((d||c)&&d+c!=autosaveLast){return autosaveL10n.saveAlert}}};a(window).unload(function(b){if(!autosaveLockRelease){return}if(b.target&&b.target.nodeName!="#document"){return}a.ajax({type:"POST",url:ajaxurl,async:false,data:{action:"wp-remove-post-lock",_wpnonce:a("#_wpnonce").val(),post_ID:a("#post_ID").val(),active_post_lock:a("#active_post_lock").val()}})});a("#post-preview").click(function(){if(a("#auto_draft").val()=="1"&&notSaved){autosaveDelayPreview=true;autosave();return false}doPreview();return false});doPreview=function(){a("input#wp-preview").val("dopreview");a("form#post").attr("target","wp-preview").submit().attr("target","");if(a.browser.safari){a("form#post").attr("action",function(b,c){return c+"?t="+new Date().getTime()})}a("input#wp-preview").val("")};a("#title").on("keydown.editor-focus",function(c){var b;if(c.which!=9){return}if(!c.ctrlKey&&!c.altKey&&!c.shiftKey){if(typeof(tinymce)!="undefined"){b=tinymce.get("content")}if(b&&!b.isHidden()){a(this).one("keyup",function(d){a("#content_tbl td.mceToolbar > a").focus()})}else{a("#content").focus()}c.preventDefault()}});if("1"==a("#auto_draft").val()){a("#title").blur(function(){if(!this.value||a("#auto_draft").val()!="1"){return}delayed_autosave()})}});function autosave_parse_response(c){var d=wpAjax.parseAjaxResponse(c,"autosave"),e="",a,b;if(d&&d.responses&&d.responses.length){e=d.responses[0].data;if(d.responses[0].supplemental){b=d.responses[0].supplemental;if("disable"==b.disable_autosave){autosave=function(){};autosaveLockRelease=false;d={errors:true}}if(b["active-post-lock"]){jQuery("#active_post_lock").val(b["active-post-lock"])}if(b.alert){jQuery("#autosave-alert").remove();jQuery("#titlediv").after('<div id="autosave-alert" class="error below-h2"><p>'+b.alert+"</p></div>")}jQuery.each(b,function(f,g){if(f.match(/^replace-/)){jQuery("#"+f.replace("replace-","")).val(g)}})}if(!d.errors){a=parseInt(d.responses[0].id,10);if(!isNaN(a)&&a>0){autosave_update_slug(a)}}}if(e){jQuery(".autosave-message").html(e)}else{if(autosaveOldMessage&&d){jQuery(".autosave-message").html(autosaveOldMessage)}}return d}function autosave_saved(a){blockSave=false;autosave_parse_response(a);autosave_enable_buttons()}function autosave_saved_new(b){blockSave=false;var c=autosave_parse_response(b),a;if(c&&c.responses.length&&!c.errors){a=parseInt(c.responses[0].id,10);if(!isNaN(a)&&a>0){notSaved=false;jQuery("#auto_draft").val("0")}autosave_enable_buttons();if(autosaveDelayPreview){autosaveDelayPreview=false;doPreview()}}else{autosave_enable_buttons()}}function autosave_update_slug(a){if("undefined"!=makeSlugeditClickable&&jQuery.isFunction(makeSlugeditClickable)&&!jQuery("#edit-slug-box > *").size()){jQuery.post(ajaxurl,{action:"sample-permalink",post_id:a,new_title:fullscreen&&fullscreen.settings.visible?jQuery("#wp-fullscreen-title").val():jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(b){if(b!=="-1"){jQuery("#edit-slug-box").html(b);makeSlugeditClickable()}})}}function autosave_loading(){jQuery(".autosave-message").html(autosaveL10n.savingText)}function autosave_enable_buttons(){setTimeout(function(){jQuery(":button, :submit","#submitpost").removeAttr("disabled");jQuery(".spinner","#submitpost").hide()},500)}function autosave_disable_buttons(){jQuery(":button, :submit","#submitpost").prop("disabled",true);setTimeout(autosave_enable_buttons,5000)}function delayed_autosave(){setTimeout(function(){if(blockSave){return}autosave()},200)}autosave=function(){blockSave=true;var c=(typeof tinymce!="undefined")&&tinymce.activeEditor&&!tinymce.activeEditor.isHidden(),d,f,b,e,a;autosave_disable_buttons();d={action:"autosave",post_ID:jQuery("#post_ID").val()||0,autosavenonce:jQuery("#autosavenonce").val(),post_type:jQuery("#post_type").val()||"",autosave:1};jQuery(".tags-input").each(function(){d[this.name]=this.value});f=true;if(jQuery("#TB_window").css("display")=="block"){f=false}if(c&&f){b=tinymce.activeEditor;if(b.plugins.spellchecker&&b.plugins.spellchecker.active){f=false}else{if("mce_fullscreen"==b.id||"wp_mce_fullscreen"==b.id){tinymce.get("content").setContent(b.getContent({format:"raw"}),{format:"raw"})}tinymce.triggerSave()}}if(fullscreen&&fullscreen.settings.visible){d.post_title=jQuery("#wp-fullscreen-title").val()||"";d.content=jQuery("#wp_mce_fullscreen").val()||""}else{d.post_title=jQuery("#title").val()||"";d.content=jQuery("#content").val()||""}if(jQuery("#post_name").val()){d.post_name=jQuery("#post_name").val()}if((d.post_title.length==0&&d.content.length==0)||d.post_title+d.content==autosaveLast){f=false}e=jQuery("#original_post_status").val();goodcats=([]);jQuery("[name='post_category[]']:checked").each(function(g){goodcats.push(this.value)});d.catslist=goodcats.join(",");if(jQuery("#comment_status").prop("checked")){d.comment_status="open"}if(jQuery("#ping_status").prop("checked")){d.ping_status="open"}if(jQuery("#excerpt").size()){d.excerpt=jQuery("#excerpt").val()}if(jQuery("#post_author").size()){d.post_author=jQuery("#post_author").val()}if(jQuery("#parent_id").val()){d.parent_id=jQuery("#parent_id").val()}d.user_ID=jQuery("#user-id").val();if(jQuery("#auto_draft").val()=="1"){d.auto_draft="1"}if(f){autosaveLast=d.post_title+d.content;jQuery(document).triggerHandler("wpcountwords",[d.content])}else{d.autosave=0}if(d.auto_draft=="1"){a=autosave_saved_new}else{a=autosave_saved}autosaveOldMessage=jQuery("#autosave").html();jQuery.ajax({data:d,beforeSend:f?autosave_loading:null,type:"POST",url:ajaxurl,success:a})};
\ No newline at end of file
diff --git a/wp-includes/js/backbone.min.js b/wp-includes/js/backbone.min.js
new file mode 100644 (file)
index 0000000..c1c0d4f
--- /dev/null
@@ -0,0 +1,38 @@
+// Backbone.js 0.9.2
+
+// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Backbone may be freely distributed under the MIT license.
+// For all details and documentation:
+// http://backbonejs.org
+(function(){var l=this,y=l.Backbone,z=Array.prototype.slice,A=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:l.Backbone={};g.VERSION="0.9.2";var f=l._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var i=l.jQuery||l.Zepto||l.ender;g.setDomLibrary=function(a){i=a};g.noConflict=function(){l.Backbone=y;return this};g.emulateHTTP=!1;g.emulateJSON=!1;var p=/\s+/,k=g.Events={on:function(a,b,c){var d,e,f,g,j;if(!b)return this;a=a.split(p);for(d=this._callbacks||(this._callbacks=
+{});e=a.shift();)f=(j=d[e])?j.tail:{},f.next=g={},f.context=c,f.callback=b,d[e]={tail:g,next:j?j.next:f};return this},off:function(a,b,c){var d,e,h,g,j,q;if(e=this._callbacks){if(!a&&!b&&!c)return delete this._callbacks,this;for(a=a?a.split(p):f.keys(e);d=a.shift();)if(h=e[d],delete e[d],h&&(b||c))for(g=h.tail;(h=h.next)!==g;)if(j=h.callback,q=h.context,b&&j!==b||c&&q!==c)this.on(d,j,q);return this}},trigger:function(a){var b,c,d,e,f,g;if(!(d=this._callbacks))return this;f=d.all;a=a.split(p);for(g=
+z.call(arguments,1);b=a.shift();){if(c=d[b])for(e=c.tail;(c=c.next)!==e;)c.callback.apply(c.context||this,g);if(c=f){e=c.tail;for(b=[b].concat(g);(c=c.next)!==e;)c.callback.apply(c.context||this,b)}}return this}};k.bind=k.on;k.unbind=k.off;var o=g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=n(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");this.changed={};this._silent=
+{};this._pending={};this.set(a,{silent:!0});this.changed={};this._silent={};this._pending={};this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(o.prototype,k,{changed:null,_silent:null,_pending:null,idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.get(a);return this._escapedAttributes[a]=f.escape(null==
+b?"":""+b)},has:function(a){return null!=this.get(a)},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof o&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=c.changes={},h=this.attributes,g=this._escapedAttributes,j=this._previousAttributes||{};for(e in d){a=d[e];if(!f.isEqual(h[e],a)||c.unset&&f.has(h,e))delete g[e],(c.silent?this._silent:
+b)[e]=!0;c.unset?delete h[e]:h[e]=a;!f.isEqual(j[e],a)||f.has(h,e)!=f.has(j,e)?(this.changed[e]=a,c.silent||(this._pending[e]=!0)):(delete this.changed[e],delete this._pending[e])}c.silent||this.change(c);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)};
+a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};if(c.wait){if(!this._validate(d,c))return!1;e=f.clone(this.attributes)}a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var h=this,i=c.success;c.success=function(a,b,e){b=h.parse(a,e);if(c.wait){delete c.wait;b=f.extend(d||{},b)}if(!h.set(b,c))return false;i?i(h,a):h.trigger("sync",h,a,c)};c.error=g.wrapError(c.error,
+h,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d(),!1;a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=n(this,"urlRoot")||n(this.collection,"url")||t();
+return this.isNew()?a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){a||(a={});var b=this._changing;this._changing=!0;for(var c in this._silent)this._pending[c]=!0;var d=f.extend({},a.changes,this._silent);this._silent={};for(c in d)this.trigger("change:"+c,this,this.get(c),a);if(b)return this;for(;!f.isEmpty(this._pending);){this._pending=
+{};this.trigger("change",this,a);for(c in this.changed)!this._pending[c]&&!this._silent[c]&&delete this.changed[c];this._previousAttributes=f.clone(this.attributes)}this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this.changed):f.has(this.changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this.changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length||
+!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});var r=g.Collection=function(a,b){b||(b={});b.model&&(this.model=b.model);b.comparator&&(this.comparator=b.comparator);
+this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(r.prototype,k,{model:o,initialize:function(){},toJSON:function(a){return this.map(function(b){return b.toJSON(a)})},add:function(a,b){var c,d,e,g,i,j={},k={},l=[];b||(b={});a=f.isArray(a)?a.slice():[a];c=0;for(d=a.length;c<d;c++){if(!(e=a[c]=this._prepareModel(a[c],b)))throw Error("Can't add an invalid model to a collection");g=e.cid;i=e.id;j[g]||this._byCid[g]||null!=i&&(k[i]||this._byId[i])?
+l.push(c):j[g]=k[i]=e}for(c=l.length;c--;)a.splice(l[c],1);c=0;for(d=a.length;c<d;c++)(e=a[c]).on("all",this._onModelEvent,this),this._byCid[e.cid]=e,null!=e.id&&(this._byId[e.id]=e);this.length+=d;A.apply(this.models,[null!=b.at?b.at:this.models.length,0].concat(a));this.comparator&&this.sort({silent:!0});if(b.silent)return this;c=0;for(d=this.models.length;c<d;c++)if(j[(e=this.models[c]).cid])b.index=c,e.trigger("add",e,this,b);return this},remove:function(a,b){var c,d,e,g;b||(b={});a=f.isArray(a)?
+a.slice():[a];c=0;for(d=a.length;c<d;c++)if(g=this.getByCid(a[c])||this.get(a[c]))delete this._byId[g.id],delete this._byCid[g.cid],e=this.indexOf(g),this.models.splice(e,1),this.length--,b.silent||(b.index=e,g.trigger("remove",g,this,b)),this._removeReference(g);return this},push:function(a,b){a=this._prepareModel(a,b);this.add(a,b);return a},pop:function(a){var b=this.at(this.length-1);this.remove(b,a);return b},unshift:function(a,b){a=this._prepareModel(a,b);this.add(a,f.extend({at:0},b));return a},
+shift:function(a){var b=this.at(0);this.remove(b,a);return b},get:function(a){return null==a?void 0:this._byId[null!=a.id?a.id:a]},getByCid:function(a){return a&&this._byCid[a.cid||a]},at:function(a){return this.models[a]},where:function(a){return f.isEmpty(a)?[]:this.filter(function(b){for(var c in a)if(a[c]!==b.get(c))return!1;return!0})},sort:function(a){a||(a={});if(!this.comparator)throw Error("Cannot sort a set without a comparator");var b=f.bind(this.comparator,this);1==this.comparator.length?
+this.models=this.sortBy(b):this.models.sort(b);a.silent||this.trigger("reset",this,a);return this},pluck:function(a){return f.map(this.models,function(b){return b.get(a)})},reset:function(a,b){a||(a=[]);b||(b={});for(var c=0,d=this.models.length;c<d;c++)this._removeReference(this.models[c]);this._reset();this.add(a,f.extend({silent:!0},b));b.silent||this.trigger("reset",this,b);return this},fetch:function(a){a=a?f.clone(a):{};void 0===a.parse&&(a.parse=!0);var b=this,c=a.success;a.success=function(d,
+e,f){b[a.add?"add":"reset"](b.parse(d,f),a);c&&c(b,d)};a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},create:function(a,b){var c=this,b=b?f.clone(b):{},a=this._prepareModel(a,b);if(!a)return!1;b.wait||c.add(a,b);var d=b.success;b.success=function(e,f){b.wait&&c.add(e,b);d?d(e,f):e.trigger("sync",a,f,b)};a.save(null,b);return a},parse:function(a){return a},chain:function(){return f(this.models).chain()},_reset:function(){this.length=0;this.models=[];this._byId=
+{};this._byCid={}},_prepareModel:function(a,b){b||(b={});a instanceof o?a.collection||(a.collection=this):(b.collection=this,a=new this.model(a,b),a._validate(a.attributes,b)||(a=!1));return a},_removeReference:function(a){this==a.collection&&delete a.collection;a.off("all",this._onModelEvent,this)},_onModelEvent:function(a,b,c,d){("add"==a||"remove"==a)&&c!=this||("destroy"==a&&this.remove(b,d),b&&a==="change:"+b.idAttribute&&(delete this._byId[b.previous(b.idAttribute)],this._byId[b.id]=b),this.trigger.apply(this,
+arguments))}});f.each("forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy".split(","),function(a){r.prototype[a]=function(){return f[a].apply(f,[this.models].concat(f.toArray(arguments)))}});var u=g.Router=function(a){a||(a={});a.routes&&(this.routes=a.routes);this._bindRoutes();this.initialize.apply(this,arguments)},B=/:\w+/g,
+C=/\*\w+/g,D=/[-[\]{}()+?.,\\^$|#\s]/g;f.extend(u.prototype,k,{initialize:function(){},route:function(a,b,c){g.history||(g.history=new m);f.isRegExp(a)||(a=this._routeToRegExp(a));c||(c=this[b]);g.history.route(a,f.bind(function(d){d=this._extractParameters(a,d);c&&c.apply(this,d);this.trigger.apply(this,["route:"+b].concat(d));g.history.trigger("route",this,b,d)},this));return this},navigate:function(a,b){g.history.navigate(a,b)},_bindRoutes:function(){if(this.routes){var a=[],b;for(b in this.routes)a.unshift([b,
+this.routes[b]]);b=0;for(var c=a.length;b<c;b++)this.route(a[b][0],a[b][1],this[a[b][1]])}},_routeToRegExp:function(a){a=a.replace(D,"\\$&").replace(B,"([^/]+)").replace(C,"(.*?)");return RegExp("^"+a+"$")},_extractParameters:function(a,b){return a.exec(b).slice(1)}});var m=g.History=function(){this.handlers=[];f.bindAll(this,"checkUrl")},s=/^[#\/]/,E=/msie [\w.]+/;m.started=!1;f.extend(m.prototype,k,{interval:50,getHash:function(a){return(a=(a?a.location:window.location).href.match(/#(.*)$/))?a[1]:
+""},getFragment:function(a,b){if(null==a)if(this._hasPushState||b){var a=window.location.pathname,c=window.location.search;c&&(a+=c)}else a=this.getHash();a.indexOf(this.options.root)||(a=a.substr(this.options.root.length));return a.replace(s,"")},start:function(a){if(m.started)throw Error("Backbone.history has already been started");m.started=!0;this.options=f.extend({},{root:"/"},this.options,a);this._wantsHashChange=!1!==this.options.hashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=
+!(!this.options.pushState||!window.history||!window.history.pushState);var a=this.getFragment(),b=document.documentMode;if(b=E.exec(navigator.userAgent.toLowerCase())&&(!b||7>=b))this.iframe=i('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(a);this._hasPushState?i(window).bind("popstate",this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!b?i(window).bind("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,
+this.interval));this.fragment=a;a=window.location;b=a.pathname==this.options.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!b)return this.fragment=this.getFragment(null,!0),window.location.replace(this.options.root+"#"+this.fragment),!0;this._wantsPushState&&this._hasPushState&&b&&a.hash&&(this.fragment=this.getHash().replace(s,""),window.history.replaceState({},document.title,a.protocol+"//"+a.host+this.options.root+this.fragment));if(!this.options.silent)return this.loadUrl()},
+stop:function(){i(window).unbind("popstate",this.checkUrl).unbind("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);m.started=!1},route:function(a,b){this.handlers.unshift({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();a==this.fragment&&this.iframe&&(a=this.getFragment(this.getHash(this.iframe)));if(a==this.fragment)return!1;this.iframe&&this.navigate(a);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(a){var b=this.fragment=this.getFragment(a);return f.any(this.handlers,
+function(a){if(a.route.test(b))return a.callback(b),!0})},navigate:function(a,b){if(!m.started)return!1;if(!b||!0===b)b={trigger:b};var c=(a||"").replace(s,"");this.fragment!=c&&(this._hasPushState?(0!=c.indexOf(this.options.root)&&(c=this.options.root+c),this.fragment=c,window.history[b.replace?"replaceState":"pushState"]({},document.title,c)):this._wantsHashChange?(this.fragment=c,this._updateHash(window.location,c,b.replace),this.iframe&&c!=this.getFragment(this.getHash(this.iframe))&&(b.replace||
+this.iframe.document.open().close(),this._updateHash(this.iframe.location,c,b.replace))):window.location.assign(this.options.root+a),b.trigger&&this.loadUrl(a))},_updateHash:function(a,b,c){c?a.replace(a.toString().replace(/(javascript:|#).*$/,"")+"#"+b):a.hash=b}});var v=g.View=function(a){this.cid=f.uniqueId("view");this._configure(a||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},F=/^(\S+)\s*(.*)$/,w="model,collection,el,id,attributes,className,tagName".split(",");
+f.extend(v.prototype,k,{tagName:"div",$:function(a){return this.$el.find(a)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();return this},make:function(a,b,c){a=document.createElement(a);b&&i(a).attr(b);c&&i(a).html(c);return a},setElement:function(a,b){this.$el&&this.undelegateEvents();this.$el=a instanceof i?a:i(a);this.el=this.$el[0];!1!==b&&this.delegateEvents();return this},delegateEvents:function(a){if(a||(a=n(this,"events"))){this.undelegateEvents();
+for(var b in a){var c=a[b];f.isFunction(c)||(c=this[a[b]]);if(!c)throw Error('Method "'+a[b]+'" does not exist');var d=b.match(F),e=d[1],d=d[2],c=f.bind(c,this),e=e+(".delegateEvents"+this.cid);""===d?this.$el.bind(e,c):this.$el.delegate(d,e,c)}}},undelegateEvents:function(){this.$el.unbind(".delegateEvents"+this.cid)},_configure:function(a){this.options&&(a=f.extend({},this.options,a));for(var b=0,c=w.length;b<c;b++){var d=w[b];a[d]&&(this[d]=a[d])}this.options=a},_ensureElement:function(){if(this.el)this.setElement(this.el,
+!1);else{var a=n(this,"attributes")||{};this.id&&(a.id=this.id);this.className&&(a["class"]=this.className);this.setElement(this.make(this.tagName,a),!1)}}});o.extend=r.extend=u.extend=v.extend=function(a,b){var c=G(this,a,b);c.extend=this.extend;return c};var H={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};g.sync=function(a,b,c){var d=H[a];c||(c={});var e={type:d,dataType:"json"};c.url||(e.url=n(b,"url")||t());if(!c.data&&b&&("create"==a||"update"==a))e.contentType="application/json",
+e.data=JSON.stringify(b.toJSON());g.emulateJSON&&(e.contentType="application/x-www-form-urlencoded",e.data=e.data?{model:e.data}:{});if(g.emulateHTTP&&("PUT"===d||"DELETE"===d))g.emulateJSON&&(e.data._method=d),e.type="POST",e.beforeSend=function(a){a.setRequestHeader("X-HTTP-Method-Override",d)};"GET"!==e.type&&!g.emulateJSON&&(e.processData=!1);return i.ajax(f.extend(e,c))};g.wrapError=function(a,b,c){return function(d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}};var x=function(){},G=function(a,
+b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};f.extend(d,a);x.prototype=a.prototype;d.prototype=new x;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},n=function(a,b){return!a||!a[b]?null:f.isFunction(a[b])?a[b]():a[b]},t=function(){throw Error('A "url" property or function must be specified');}}).call(this);
diff --git a/wp-includes/js/colorpicker.dev.js b/wp-includes/js/colorpicker.dev.js
deleted file mode 100644 (file)
index 1fc32cf..0000000
+++ /dev/null
@@ -1,707 +0,0 @@
-// ===================================================================
-// Author: Matt Kruse <matt@mattkruse.com>
-// WWW: http://www.mattkruse.com/
-//
-// NOTICE: You may use this code for any purpose, commercial or
-// private, without any further permission from the author. You may
-// remove this notice from your final code if you wish, however it is
-// appreciated by the author if at least my web site address is kept.
-//
-// You may *NOT* re-distribute this code in any way except through its
-// use. That means, you can include it in your product, or your web
-// site, or any other form where the code is actually being used. You
-// may not put the plain javascript up on your site for download or
-// include it in your javascript libraries for download. 
-// If you wish to share this code with others, please just point them
-// to the URL instead.
-// Please DO NOT link directly to my .js files from your site. Copy
-// the files to your server and use them there. Thank you.
-// ===================================================================
-
-
-/* SOURCE FILE: AnchorPosition.js */
-
-/* 
-AnchorPosition.js
-Author: Matt Kruse
-Last modified: 10/11/02
-
-DESCRIPTION: These functions find the position of an <A> tag in a document,
-so other elements can be positioned relative to it.
-
-COMPATABILITY: Netscape 4.x,6.x,Mozilla, IE 5.x,6.x on Windows. Some small
-positioning errors - usually with Window positioning - occur on the 
-Macintosh platform.
-
-FUNCTIONS:
-getAnchorPosition(anchorname)
-  Returns an Object() having .x and .y properties of the pixel coordinates
-  of the upper-left corner of the anchor. Position is relative to the PAGE.
-
-getAnchorWindowPosition(anchorname)
-  Returns an Object() having .x and .y properties of the pixel coordinates
-  of the upper-left corner of the anchor, relative to the WHOLE SCREEN.
-
-NOTES:
-
-1) For popping up separate browser windows, use getAnchorWindowPosition. 
-   Otherwise, use getAnchorPosition
-
-2) Your anchor tag MUST contain both NAME and ID attributes which are the 
-   same. For example:
-   <A NAME="test" ID="test"> </A>
-
-3) There must be at least a space between <A> </A> for IE5.5 to see the 
-   anchor tag correctly. Do not do <A></A> with no space.
-*/ 
-
-// getAnchorPosition(anchorname)
-//   This function returns an object having .x and .y properties which are the coordinates
-//   of the named anchor, relative to the page.
-function getAnchorPosition(anchorname) {
-       // This function will return an Object with x and y properties
-       var useWindow=false;
-       var coordinates=new Object();
-       var x=0,y=0;
-       // Browser capability sniffing
-       var use_gebi=false, use_css=false, use_layers=false;
-       if (document.getElementById) { use_gebi=true; }
-       else if (document.all) { use_css=true; }
-       else if (document.layers) { use_layers=true; }
-       // Logic to find position
-       if (use_gebi && document.all) {
-               x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
-               y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
-               }
-       else if (use_gebi) {
-               var o=document.getElementById(anchorname);
-               x=AnchorPosition_getPageOffsetLeft(o);
-               y=AnchorPosition_getPageOffsetTop(o);
-               }
-       else if (use_css) {
-               x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
-               y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
-               }
-       else if (use_layers) {
-               var found=0;
-               for (var i=0; i<document.anchors.length; i++) {
-                       if (document.anchors[i].name==anchorname) { found=1; break; }
-                       }
-               if (found==0) {
-                       coordinates.x=0; coordinates.y=0; return coordinates;
-                       }
-               x=document.anchors[i].x;
-               y=document.anchors[i].y;
-               }
-       else {
-               coordinates.x=0; coordinates.y=0; return coordinates;
-               }
-       coordinates.x=x;
-       coordinates.y=y;
-       return coordinates;
-       }
-
-// getAnchorWindowPosition(anchorname)
-//   This function returns an object having .x and .y properties which are the coordinates
-//   of the named anchor, relative to the window
-function getAnchorWindowPosition(anchorname) {
-       var coordinates=getAnchorPosition(anchorname);
-       var x=0;
-       var y=0;
-       if (document.getElementById) {
-               if (isNaN(window.screenX)) {
-                       x=coordinates.x-document.body.scrollLeft+window.screenLeft;
-                       y=coordinates.y-document.body.scrollTop+window.screenTop;
-                       }
-               else {
-                       x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
-                       y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
-                       }
-               }
-       else if (document.all) {
-               x=coordinates.x-document.body.scrollLeft+window.screenLeft;
-               y=coordinates.y-document.body.scrollTop+window.screenTop;
-               }
-       else if (document.layers) {
-               x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
-               y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
-               }
-       coordinates.x=x;
-       coordinates.y=y;
-       return coordinates;
-       }
-
-// Functions for IE to get position of an object
-function AnchorPosition_getPageOffsetLeft (el) {
-       var ol=el.offsetLeft;
-       while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
-       return ol;
-       }
-function AnchorPosition_getWindowOffsetLeft (el) {
-       return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
-       }
-function AnchorPosition_getPageOffsetTop (el) {
-       var ot=el.offsetTop;
-       while((el=el.offsetParent) != null) { ot += el.offsetTop; }
-       return ot;
-       }
-function AnchorPosition_getWindowOffsetTop (el) {
-       return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
-       }
-
-/* SOURCE FILE: PopupWindow.js */
-
-/* 
-PopupWindow.js
-Author: Matt Kruse
-Last modified: 02/16/04
-
-DESCRIPTION: This object allows you to easily and quickly popup a window
-in a certain place. The window can either be a DIV or a separate browser
-window.
-
-COMPATABILITY: Works with Netscape 4.x, 6.x, IE 5.x on Windows. Some small
-positioning errors - usually with Window positioning - occur on the 
-Macintosh platform. Due to bugs in Netscape 4.x, populating the popup 
-window with <STYLE> tags may cause errors.
-
-USAGE:
-// Create an object for a WINDOW popup
-var win = new PopupWindow(); 
-
-// Create an object for a DIV window using the DIV named 'mydiv'
-var win = new PopupWindow('mydiv'); 
-
-// Set the window to automatically hide itself when the user clicks 
-// anywhere else on the page except the popup
-win.autoHide(); 
-
-// Show the window relative to the anchor name passed in
-win.showPopup(anchorname);
-
-// Hide the popup
-win.hidePopup();
-
-// Set the size of the popup window (only applies to WINDOW popups
-win.setSize(width,height);
-
-// Populate the contents of the popup window that will be shown. If you 
-// change the contents while it is displayed, you will need to refresh()
-win.populate(string);
-
-// set the URL of the window, rather than populating its contents
-// manually
-win.setUrl("http://www.site.com/");
-
-// Refresh the contents of the popup
-win.refresh();
-
-// Specify how many pixels to the right of the anchor the popup will appear
-win.offsetX = 50;
-
-// Specify how many pixels below the anchor the popup will appear
-win.offsetY = 100;
-
-NOTES:
-1) Requires the functions in AnchorPosition.js
-
-2) Your anchor tag MUST contain both NAME and ID attributes which are the 
-   same. For example:
-   <A NAME="test" ID="test"> </A>
-
-3) There must be at least a space between <A> </A> for IE5.5 to see the 
-   anchor tag correctly. Do not do <A></A> with no space.
-
-4) When a PopupWindow object is created, a handler for 'onmouseup' is
-   attached to any event handler you may have already defined. Do NOT define
-   an event handler for 'onmouseup' after you define a PopupWindow object or
-   the autoHide() will not work correctly.
-*/ 
-
-// Set the position of the popup window based on the anchor
-function PopupWindow_getXYPosition(anchorname) {
-       var coordinates;
-       if (this.type == "WINDOW") {
-               coordinates = getAnchorWindowPosition(anchorname);
-               }
-       else {
-               coordinates = getAnchorPosition(anchorname);
-               }
-       this.x = coordinates.x;
-       this.y = coordinates.y;
-       }
-// Set width/height of DIV/popup window
-function PopupWindow_setSize(width,height) {
-       this.width = width;
-       this.height = height;
-       }
-// Fill the window with contents
-function PopupWindow_populate(contents) {
-       this.contents = contents;
-       this.populated = false;
-       }
-// Set the URL to go to
-function PopupWindow_setUrl(url) {
-       this.url = url;
-       }
-// Set the window popup properties
-function PopupWindow_setWindowProperties(props) {
-       this.windowProperties = props;
-       }
-// Refresh the displayed contents of the popup
-function PopupWindow_refresh() {
-       if (this.divName != null) {
-               // refresh the DIV object
-               if (this.use_gebi) {
-                       document.getElementById(this.divName).innerHTML = this.contents;
-                       }
-               else if (this.use_css) { 
-                       document.all[this.divName].innerHTML = this.contents;
-                       }
-               else if (this.use_layers) { 
-                       var d = document.layers[this.divName]; 
-                       d.document.open();
-                       d.document.writeln(this.contents);
-                       d.document.close();
-                       }
-               }
-       else {
-               if (this.popupWindow != null && !this.popupWindow.closed) {
-                       if (this.url!="") {
-                               this.popupWindow.location.href=this.url;
-                               }
-                       else {
-                               this.popupWindow.document.open();
-                               this.popupWindow.document.writeln(this.contents);
-                               this.popupWindow.document.close();
-                       }
-                       this.popupWindow.focus();
-                       }
-               }
-       }
-// Position and show the popup, relative to an anchor object
-function PopupWindow_showPopup(anchorname) {
-       this.getXYPosition(anchorname);
-       this.x += this.offsetX;
-       this.y += this.offsetY;
-       if (!this.populated && (this.contents != "")) {
-               this.populated = true;
-               this.refresh();
-               }
-       if (this.divName != null) {
-               // Show the DIV object
-               if (this.use_gebi) {
-                       document.getElementById(this.divName).style.left = this.x + "px";
-                       document.getElementById(this.divName).style.top = this.y;
-                       document.getElementById(this.divName).style.visibility = "visible";
-                       }
-               else if (this.use_css) {
-                       document.all[this.divName].style.left = this.x;
-                       document.all[this.divName].style.top = this.y;
-                       document.all[this.divName].style.visibility = "visible";
-                       }
-               else if (this.use_layers) {
-                       document.layers[this.divName].left = this.x;
-                       document.layers[this.divName].top = this.y;
-                       document.layers[this.divName].visibility = "visible";
-                       }
-               }
-       else {
-               if (this.popupWindow == null || this.popupWindow.closed) {
-                       // If the popup window will go off-screen, move it so it doesn't
-                       if (this.x<0) { this.x=0; }
-                       if (this.y<0) { this.y=0; }
-                       if (screen && screen.availHeight) {
-                               if ((this.y + this.height) > screen.availHeight) {
-                                       this.y = screen.availHeight - this.height;
-                                       }
-                               }
-                       if (screen && screen.availWidth) {
-                               if ((this.x + this.width) > screen.availWidth) {
-                                       this.x = screen.availWidth - this.width;
-                                       }
-                               }
-                       var avoidAboutBlank = window.opera || ( document.layers && !navigator.mimeTypes['*'] ) || navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled );
-                       this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");
-                       }
-               this.refresh();
-               }
-       }
-// Hide the popup
-function PopupWindow_hidePopup() {
-       if (this.divName != null) {
-               if (this.use_gebi) {
-                       document.getElementById(this.divName).style.visibility = "hidden";
-                       }
-               else if (this.use_css) {
-                       document.all[this.divName].style.visibility = "hidden";
-                       }
-               else if (this.use_layers) {
-                       document.layers[this.divName].visibility = "hidden";
-                       }
-               }
-       else {
-               if (this.popupWindow && !this.popupWindow.closed) {
-                       this.popupWindow.close();
-                       this.popupWindow = null;
-                       }
-               }
-       }
-// Pass an event and return whether or not it was the popup DIV that was clicked
-function PopupWindow_isClicked(e) {
-       if (this.divName != null) {
-               if (this.use_layers) {
-                       var clickX = e.pageX;
-                       var clickY = e.pageY;
-                       var t = document.layers[this.divName];
-                       if ((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)) {
-                               return true;
-                               }
-                       else { return false; }
-                       }
-               else if (document.all) { // Need to hard-code this to trap IE for error-handling
-                       var t = window.event.srcElement;
-                       while (t.parentElement != null) {
-                               if (t.id==this.divName) {
-                                       return true;
-                                       }
-                               t = t.parentElement;
-                               }
-                       return false;
-                       }
-               else if (this.use_gebi && e) {
-                       var t = e.originalTarget;
-                       while (t.parentNode != null) {
-                               if (t.id==this.divName) {
-                                       return true;
-                                       }
-                               t = t.parentNode;
-                               }
-                       return false;
-                       }
-               return false;
-               }
-       return false;
-       }
-
-// Check an onMouseDown event to see if we should hide
-function PopupWindow_hideIfNotClicked(e) {
-       if (this.autoHideEnabled && !this.isClicked(e)) {
-               this.hidePopup();
-               }
-       }
-// Call this to make the DIV disable automatically when mouse is clicked outside it
-function PopupWindow_autoHide() {
-       this.autoHideEnabled = true;
-       }
-// This global function checks all PopupWindow objects onmouseup to see if they should be hidden
-function PopupWindow_hidePopupWindows(e) {
-       for (var i=0; i<popupWindowObjects.length; i++) {
-               if (popupWindowObjects[i] != null) {
-                       var p = popupWindowObjects[i];
-                       p.hideIfNotClicked(e);
-                       }
-               }
-       }
-// Run this immediately to attach the event listener
-function PopupWindow_attachListener() {
-       if (document.layers) {
-               document.captureEvents(Event.MOUSEUP);
-               }
-       window.popupWindowOldEventListener = document.onmouseup;
-       if (window.popupWindowOldEventListener != null) {
-               document.onmouseup = new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");
-               }
-       else {
-               document.onmouseup = PopupWindow_hidePopupWindows;
-               }
-       }
-// CONSTRUCTOR for the PopupWindow object
-// Pass it a DIV name to use a DHTML popup, otherwise will default to window popup
-function PopupWindow() {
-       if (!window.popupWindowIndex) { window.popupWindowIndex = 0; }
-       if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); }
-       if (!window.listenerAttached) {
-               window.listenerAttached = true;
-               PopupWindow_attachListener();
-               }
-       this.index = popupWindowIndex++;
-       popupWindowObjects[this.index] = this;
-       this.divName = null;
-       this.popupWindow = null;
-       this.width=0;
-       this.height=0;
-       this.populated = false;
-       this.visible = false;
-       this.autoHideEnabled = false;
-
-       this.contents = "";
-       this.url="";
-       this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";
-       if (arguments.length>0) {
-               this.type="DIV";
-               this.divName = arguments[0];
-               }
-       else {
-               this.type="WINDOW";
-               }
-       this.use_gebi = false;
-       this.use_css = false;
-       this.use_layers = false;
-       if (document.getElementById) { this.use_gebi = true; }
-       else if (document.all) { this.use_css = true; }
-       else if (document.layers) { this.use_layers = true; }
-       else { this.type = "WINDOW"; }
-       this.offsetX = 0;
-       this.offsetY = 0;
-       // Method mappings
-       this.getXYPosition = PopupWindow_getXYPosition;
-       this.populate = PopupWindow_populate;
-       this.setUrl = PopupWindow_setUrl;
-       this.setWindowProperties = PopupWindow_setWindowProperties;
-       this.refresh = PopupWindow_refresh;
-       this.showPopup = PopupWindow_showPopup;
-       this.hidePopup = PopupWindow_hidePopup;
-       this.setSize = PopupWindow_setSize;
-       this.isClicked = PopupWindow_isClicked;
-       this.autoHide = PopupWindow_autoHide;
-       this.hideIfNotClicked = PopupWindow_hideIfNotClicked;
-       }
-
-/* SOURCE FILE: ColorPicker2.js */
-
-/* 
-Last modified: 02/24/2003
-
-DESCRIPTION: This widget is used to select a color, in hexadecimal #RRGGBB 
-form. It uses a color "swatch" to display the standard 216-color web-safe 
-palette. The user can then click on a color to select it.
-
-COMPATABILITY: See notes in AnchorPosition.js and PopupWindow.js.
-Only the latest DHTML-capable browsers will show the color and hex values
-at the bottom as your mouse goes over them.
-
-USAGE:
-// Create a new ColorPicker object using DHTML popup
-var cp = new ColorPicker();
-
-// Create a new ColorPicker object using Window Popup
-var cp = new ColorPicker('window');
-
-// Add a link in your page to trigger the popup. For example:
-<A HREF="#" onClick="cp.show('pick');return false;" NAME="pick" ID="pick">Pick</A>
-
-// Or use the built-in "select" function to do the dirty work for you:
-<A HREF="#" onClick="cp.select(document.forms[0].color,'pick');return false;" NAME="pick" ID="pick">Pick</A>
-
-// If using DHTML popup, write out the required DIV tag near the bottom
-// of your page.
-<SCRIPT LANGUAGE="JavaScript">cp.writeDiv()</SCRIPT>
-
-// Write the 'pickColor' function that will be called when the user clicks
-// a color and do something with the value. This is only required if you
-// want to do something other than simply populate a form field, which is 
-// what the 'select' function will give you.
-function pickColor(color) {
-       field.value = color;
-       }
-
-NOTES:
-1) Requires the functions in AnchorPosition.js and PopupWindow.js
-
-2) Your anchor tag MUST contain both NAME and ID attributes which are the 
-   same. For example:
-   <A NAME="test" ID="test"> </A>
-
-3) There must be at least a space between <A> </A> for IE5.5 to see the 
-   anchor tag correctly. Do not do <A></A> with no space.
-
-4) When a ColorPicker object is created, a handler for 'onmouseup' is
-   attached to any event handler you may have already defined. Do NOT define
-   an event handler for 'onmouseup' after you define a ColorPicker object or
-   the color picker will not hide itself correctly.
-*/ 
-ColorPicker_targetInput = null;
-function ColorPicker_writeDiv() {
-       document.writeln("<DIV ID=\"colorPickerDiv\" STYLE=\"position:absolute;visibility:hidden;\"> </DIV>");
-       }
-
-function ColorPicker_show(anchorname) {
-       this.showPopup(anchorname);
-       }
-
-function ColorPicker_pickColor(color,obj) {
-       obj.hidePopup();
-       pickColor(color);
-       }
-
-// A Default "pickColor" function to accept the color passed back from popup.
-// User can over-ride this with their own function.
-function pickColor(color) {
-       if (ColorPicker_targetInput==null) {
-               alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");
-               return;
-               }
-       ColorPicker_targetInput.value = color;
-       }
-
-// This function is the easiest way to popup the window, select a color, and
-// have the value populate a form field, which is what most people want to do.
-function ColorPicker_select(inputobj,linkname) {
-       if (inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea") { 
-               alert("colorpicker.select: Input object passed is not a valid form input object"); 
-               window.ColorPicker_targetInput=null;
-               return;
-               }
-       window.ColorPicker_targetInput = inputobj;
-       this.show(linkname);
-       }
-
-// This function runs when you move your mouse over a color block, if you have a newer browser
-function ColorPicker_highlightColor(c) {
-       var thedoc = (arguments.length>1)?arguments[1]:window.document;
-       var d = thedoc.getElementById("colorPickerSelectedColor");
-       d.style.backgroundColor = c;
-       d = thedoc.getElementById("colorPickerSelectedColorValue");
-       d.innerHTML = c;
-       }
-
-function ColorPicker() {
-       var windowMode = false;
-       // Create a new PopupWindow object
-       if (arguments.length==0) {
-               var divname = "colorPickerDiv";
-               }
-       else if (arguments[0] == "window") {
-               var divname = '';
-               windowMode = true;
-               }
-       else {
-               var divname = arguments[0];
-               }
-
-       if (divname != "") {
-               var cp = new PopupWindow(divname);
-               }
-       else {
-               var cp = new PopupWindow();
-               cp.setSize(225,250);
-               }
-
-       // Object variables
-       cp.currentValue = "#FFFFFF";
-
-       // Method Mappings
-       cp.writeDiv = ColorPicker_writeDiv;
-       cp.highlightColor = ColorPicker_highlightColor;
-       cp.show = ColorPicker_show;
-       cp.select = ColorPicker_select;
-
-       // Code to populate color picker window
-       var colors = new Array( "#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099",
-                                                       "#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
-                                                       "#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099",
-                                                       "#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF",
-                                                       "#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F",
-                                                       "#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000",
-
-                                                       "#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399",
-                                                       "#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399",
-                                                       "#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399",
-                                                       "#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF",
-                                                       "#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F",
-                                                       "#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00",
-
-                                                       "#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699",
-                                                       "#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699",
-                                                       "#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699",
-                                                       "#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F",
-                                                       "#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F",
-                                                       "#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F",
-
-                                                       "#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999",
-                                                       "#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999",
-                                                       "#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999",
-                                                       "#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF",
-                                                       "#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F",
-                                                       "#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000",
-
-                                                       "#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
-                                                       "#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99",
-                                                       "#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99",
-                                                       "#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF",
-                                                       "#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F",
-                                                       "#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00",
-
-                                                       "#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99",
-                                                       "#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99",
-                                                       "#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99",
-                                                       "#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F",
-                                                       "#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F",
-                                                       "#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F",
-
-                                                       "#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666",
-                                                       "#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000",
-                                                       "#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000",
-                                                       "#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999",
-                                                       "#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF",
-                                                       "#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF",
-
-                                                       "#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66",
-                                                       "#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00",
-                                                       "#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000",
-                                                       "#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099",
-                                                       "#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF",
-                                                       "#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF",
-
-                                                       "#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF",
-                                                       "#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC",
-                                                       "#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000",
-                                                       "#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900",
-                                                       "#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33",
-                                                       "#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF",
-
-                                                       "#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF",
-                                                       "#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF",
-                                                       "#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F",
-                                                       "#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F",
-                                                       "#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F",
-                                                       "#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");
-       var total = colors.length;
-       var width = 72;
-       var cp_contents = "";
-       var windowRef = (windowMode)?"window.opener.":"";
-       if (windowMode) {
-               cp_contents += "<html><head><title>Select Color</title></head>";
-               cp_contents += "<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>";
-               }
-       cp_contents += "<table style='border: none;' cellspacing=0 cellpadding=0>";
-       var use_highlight = (document.getElementById || document.all)?true:false;
-       for (var i=0; i<total; i++) {
-               if ((i % width) == 0) { cp_contents += "<tr>"; }
-               if (use_highlight) { var mo = 'onMouseOver="'+windowRef+'ColorPicker_highlightColor(\''+colors[i]+'\',window.document)"'; }
-               else { mo = ""; }
-               cp_contents += '<td style="background-color: '+colors[i]+';"><a href="javascript:void()" onclick="'+windowRef+'ColorPicker_pickColor(\''+colors[i]+'\','+windowRef+'window.popupWindowObjects['+cp.index+']);return false;" '+mo+'>&nbsp;</a></td>';
-               if ( ((i+1)>=total) || (((i+1) % width) == 0)) { 
-                       cp_contents += "</tr>";
-                       }
-               }
-       // If the browser supports dynamically changing TD cells, add the fancy stuff
-       if (document.getElementById) {
-               var width1 = Math.floor(width/2);
-               var width2 = width = width1;
-               cp_contents += "<tr><td colspan='"+width1+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+width2+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>";
-               }
-       cp_contents += "</table>";
-       if (windowMode) {
-               cp_contents += "</span></body></html>";
-               }
-       // end populate code
-
-       // Write the contents to the popup object
-       cp.populate(cp_contents+"\n");
-       // Move the table down a bit so you can see it
-       cp.offsetY = 25;
-       cp.autoHide();
-       return cp;
-       }
index acd88a3397649fe013b2db9c75799019c2a86bb5..61c94bb9b3194099fa777b3e2e80ce6b9e43043e 100644 (file)
@@ -1 +1,707 @@
-function getAnchorPosition(b){var e=false;var k=new Object();var j=0,g=0;var d=false,f=false,h=false;if(document.getElementById){d=true}else{if(document.all){f=true}else{if(document.layers){h=true}}}if(d&&document.all){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(d){var a=document.getElementById(b);j=AnchorPosition_getPageOffsetLeft(a);g=AnchorPosition_getPageOffsetTop(a)}else{if(f){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(h){var l=0;for(var c=0;c<document.anchors.length;c++){if(document.anchors[c].name==b){l=1;break}}if(l==0){k.x=0;k.y=0;return k}j=document.anchors[c].x;g=document.anchors[c].y}else{k.x=0;k.y=0;return k}}}}k.x=j;k.y=g;return k}function getAnchorWindowPosition(b){var c=getAnchorPosition(b);var a=0;var d=0;if(document.getElementById){if(isNaN(window.screenX)){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}else{if(document.all){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{if(document.layers){a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}}c.x=a;c.y=d;return c}function AnchorPosition_getPageOffsetLeft(b){var a=b.offsetLeft;while((b=b.offsetParent)!=null){a+=b.offsetLeft}return a}function AnchorPosition_getWindowOffsetLeft(a){return AnchorPosition_getPageOffsetLeft(a)-document.body.scrollLeft}function AnchorPosition_getPageOffsetTop(a){var b=a.offsetTop;while((a=a.offsetParent)!=null){b+=a.offsetTop}return b}function AnchorPosition_getWindowOffsetTop(a){return AnchorPosition_getPageOffsetTop(a)-document.body.scrollTop}function PopupWindow_getXYPosition(a){var b;if(this.type=="WINDOW"){b=getAnchorWindowPosition(a)}else{b=getAnchorPosition(a)}this.x=b.x;this.y=b.y}function PopupWindow_setSize(b,a){this.width=b;this.height=a}function PopupWindow_populate(a){this.contents=a;this.populated=false}function PopupWindow_setUrl(a){this.url=a}function PopupWindow_setWindowProperties(a){this.windowProperties=a}function PopupWindow_refresh(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).innerHTML=this.contents}else{if(this.use_css){document.all[this.divName].innerHTML=this.contents}else{if(this.use_layers){var a=document.layers[this.divName];a.document.open();a.document.writeln(this.contents);a.document.close()}}}}else{if(this.popupWindow!=null&&!this.popupWindow.closed){if(this.url!=""){this.popupWindow.location.href=this.url}else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close()}this.popupWindow.focus()}}}function PopupWindow_showPopup(a){this.getXYPosition(a);this.x+=this.offsetX;this.y+=this.offsetY;if(!this.populated&&(this.contents!="")){this.populated=true;this.refresh()}if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.left=this.x+"px";document.getElementById(this.divName).style.top=this.y;document.getElementById(this.divName).style.visibility="visible"}else{if(this.use_css){document.all[this.divName].style.left=this.x;document.all[this.divName].style.top=this.y;document.all[this.divName].style.visibility="visible"}else{if(this.use_layers){document.layers[this.divName].left=this.x;document.layers[this.divName].top=this.y;document.layers[this.divName].visibility="visible"}}}}else{if(this.popupWindow==null||this.popupWindow.closed){if(this.x<0){this.x=0}if(this.y<0){this.y=0}if(screen&&screen.availHeight){if((this.y+this.height)>screen.availHeight){this.y=screen.availHeight-this.height}}if(screen&&screen.availWidth){if((this.x+this.width)>screen.availWidth){this.x=screen.availWidth-this.width}}var b=window.opera||(document.layers&&!navigator.mimeTypes["*"])||navigator.vendor=="KDE"||(document.childNodes&&!document.all&&!navigator.taintEnabled);this.popupWindow=window.open(b?"":"about:blank","window_"+a,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"")}this.refresh()}}function PopupWindow_hidePopup(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.visibility="hidden"}else{if(this.use_css){document.all[this.divName].style.visibility="hidden"}else{if(this.use_layers){document.layers[this.divName].visibility="hidden"}}}}else{if(this.popupWindow&&!this.popupWindow.closed){this.popupWindow.close();this.popupWindow=null}}}function PopupWindow_isClicked(c){if(this.divName!=null){if(this.use_layers){var d=c.pageX;var b=c.pageY;var a=document.layers[this.divName];if((d>a.left)&&(d<a.left+a.clip.width)&&(b>a.top)&&(b<a.top+a.clip.height)){return true}else{return false}}else{if(document.all){var a=window.event.srcElement;while(a.parentElement!=null){if(a.id==this.divName){return true}a=a.parentElement}return false}else{if(this.use_gebi&&c){var a=c.originalTarget;while(a.parentNode!=null){if(a.id==this.divName){return true}a=a.parentNode}return false}}}return false}return false}function PopupWindow_hideIfNotClicked(a){if(this.autoHideEnabled&&!this.isClicked(a)){this.hidePopup()}}function PopupWindow_autoHide(){this.autoHideEnabled=true}function PopupWindow_hidePopupWindows(c){for(var a=0;a<popupWindowObjects.length;a++){if(popupWindowObjects[a]!=null){var b=popupWindowObjects[a];b.hideIfNotClicked(c)}}}function PopupWindow_attachListener(){if(document.layers){document.captureEvents(Event.MOUSEUP)}window.popupWindowOldEventListener=document.onmouseup;if(window.popupWindowOldEventListener!=null){document.onmouseup=new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();")}else{document.onmouseup=PopupWindow_hidePopupWindows}}function PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex=0}if(!window.popupWindowObjects){window.popupWindowObjects=new Array()}if(!window.listenerAttached){window.listenerAttached=true;PopupWindow_attachListener()}this.index=popupWindowIndex++;popupWindowObjects[this.index]=this;this.divName=null;this.popupWindow=null;this.width=0;this.height=0;this.populated=false;this.visible=false;this.autoHideEnabled=false;this.contents="";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";if(arguments.length>0){this.type="DIV";this.divName=arguments[0]}else{this.type="WINDOW"}this.use_gebi=false;this.use_css=false;this.use_layers=false;if(document.getElementById){this.use_gebi=true}else{if(document.all){this.use_css=true}else{if(document.layers){this.use_layers=true}else{this.type="WINDOW"}}}this.offsetX=0;this.offsetY=0;this.getXYPosition=PopupWindow_getXYPosition;this.populate=PopupWindow_populate;this.setUrl=PopupWindow_setUrl;this.setWindowProperties=PopupWindow_setWindowProperties;this.refresh=PopupWindow_refresh;this.showPopup=PopupWindow_showPopup;this.hidePopup=PopupWindow_hidePopup;this.setSize=PopupWindow_setSize;this.isClicked=PopupWindow_isClicked;this.autoHide=PopupWindow_autoHide;this.hideIfNotClicked=PopupWindow_hideIfNotClicked}ColorPicker_targetInput=null;function ColorPicker_writeDiv(){document.writeln('<DIV ID="colorPickerDiv" STYLE="position:absolute;visibility:hidden;"> </DIV>')}function ColorPicker_show(a){this.showPopup(a)}function ColorPicker_pickColor(a,b){b.hidePopup();pickColor(a)}function pickColor(a){if(ColorPicker_targetInput==null){alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");return}ColorPicker_targetInput.value=a}function ColorPicker_select(b,a){if(b.type!="text"&&b.type!="hidden"&&b.type!="textarea"){alert("colorpicker.select: Input object passed is not a valid form input object");window.ColorPicker_targetInput=null;return}window.ColorPicker_targetInput=b;this.show(a)}function ColorPicker_highlightColor(e){var a=(arguments.length>1)?arguments[1]:window.document;var b=a.getElementById("colorPickerSelectedColor");b.style.backgroundColor=e;b=a.getElementById("colorPickerSelectedColorValue");b.innerHTML=e}function ColorPicker(){var g=false;if(arguments.length==0){var e="colorPickerDiv"}else{if(arguments[0]=="window"){var e="";g=true}else{var e=arguments[0]}}if(e!=""){var m=new PopupWindow(e)}else{var m=new PopupWindow();m.setSize(225,250)}m.currentValue="#FFFFFF";m.writeDiv=ColorPicker_writeDiv;m.highlightColor=ColorPicker_highlightColor;m.show=ColorPicker_show;m.select=ColorPicker_select;var a=new Array("#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099","#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099","#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF","#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F","#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000","#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399","#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399","#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF","#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F","#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00","#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699","#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699","#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699","#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F","#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F","#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F","#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999","#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999","#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999","#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF","#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F","#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000","#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99","#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99","#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF","#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F","#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00","#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99","#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99","#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99","#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F","#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F","#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F","#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666","#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000","#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000","#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999","#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF","#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66","#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00","#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000","#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099","#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF","#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF","#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC","#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000","#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900","#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33","#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF","#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF","#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F","#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F","#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F","#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");var n=a.length;var c=72;var k="";var j=(g)?"window.opener.":"";if(g){k+="<html><head><title>Select Color</title></head>";k+="<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>"}k+="<table style='border: none;' cellspacing=0 cellpadding=0>";var l=(document.getElementById||document.all)?true:false;for(var h=0;h<n;h++){if((h%c)==0){k+="<tr>"}if(l){var f='onMouseOver="'+j+"ColorPicker_highlightColor('"+a[h]+"',window.document)\""}else{f=""}k+='<td style="background-color: '+a[h]+';"><a href="javascript:void()" onclick="'+j+"ColorPicker_pickColor('"+a[h]+"',"+j+"window.popupWindowObjects["+m.index+']);return false;" '+f+">&nbsp;</a></td>";if(((h+1)>=n)||(((h+1)%c)==0)){k+="</tr>"}}if(document.getElementById){var d=Math.floor(c/2);var b=c=d;k+="<tr><td colspan='"+d+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+b+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>"}k+="</table>";if(g){k+="</span></body></html>"}m.populate(k+"\n");m.offsetY=25;m.autoHide();return m};
\ No newline at end of file
+// ===================================================================
+// Author: Matt Kruse <matt@mattkruse.com>
+// WWW: http://www.mattkruse.com/
+//
+// NOTICE: You may use this code for any purpose, commercial or
+// private, without any further permission from the author. You may
+// remove this notice from your final code if you wish, however it is
+// appreciated by the author if at least my web site address is kept.
+//
+// You may *NOT* re-distribute this code in any way except through its
+// use. That means, you can include it in your product, or your web
+// site, or any other form where the code is actually being used. You
+// may not put the plain javascript up on your site for download or
+// include it in your javascript libraries for download.
+// If you wish to share this code with others, please just point them
+// to the URL instead.
+// Please DO NOT link directly to my .js files from your site. Copy
+// the files to your server and use them there. Thank you.
+// ===================================================================
+
+
+/* SOURCE FILE: AnchorPosition.js */
+
+/*
+AnchorPosition.js
+Author: Matt Kruse
+Last modified: 10/11/02
+
+DESCRIPTION: These functions find the position of an <A> tag in a document,
+so other elements can be positioned relative to it.
+
+COMPATABILITY: Netscape 4.x,6.x,Mozilla, IE 5.x,6.x on Windows. Some small
+positioning errors - usually with Window positioning - occur on the
+Macintosh platform.
+
+FUNCTIONS:
+getAnchorPosition(anchorname)
+  Returns an Object() having .x and .y properties of the pixel coordinates
+  of the upper-left corner of the anchor. Position is relative to the PAGE.
+
+getAnchorWindowPosition(anchorname)
+  Returns an Object() having .x and .y properties of the pixel coordinates
+  of the upper-left corner of the anchor, relative to the WHOLE SCREEN.
+
+NOTES:
+
+1) For popping up separate browser windows, use getAnchorWindowPosition.
+   Otherwise, use getAnchorPosition
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the
+   anchor tag correctly. Do not do <A></A> with no space.
+*/
+
+// getAnchorPosition(anchorname)
+//   This function returns an object having .x and .y properties which are the coordinates
+//   of the named anchor, relative to the page.
+function getAnchorPosition(anchorname) {
+       // This function will return an Object with x and y properties
+       var useWindow=false;
+       var coordinates=new Object();
+       var x=0,y=0;
+       // Browser capability sniffing
+       var use_gebi=false, use_css=false, use_layers=false;
+       if (document.getElementById) { use_gebi=true; }
+       else if (document.all) { use_css=true; }
+       else if (document.layers) { use_layers=true; }
+       // Logic to find position
+       if (use_gebi && document.all) {
+               x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
+               y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
+               }
+       else if (use_gebi) {
+               var o=document.getElementById(anchorname);
+               x=AnchorPosition_getPageOffsetLeft(o);
+               y=AnchorPosition_getPageOffsetTop(o);
+               }
+       else if (use_css) {
+               x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
+               y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
+               }
+       else if (use_layers) {
+               var found=0;
+               for (var i=0; i<document.anchors.length; i++) {
+                       if (document.anchors[i].name==anchorname) { found=1; break; }
+                       }
+               if (found==0) {
+                       coordinates.x=0; coordinates.y=0; return coordinates;
+                       }
+               x=document.anchors[i].x;
+               y=document.anchors[i].y;
+               }
+       else {
+               coordinates.x=0; coordinates.y=0; return coordinates;
+               }
+       coordinates.x=x;
+       coordinates.y=y;
+       return coordinates;
+       }
+
+// getAnchorWindowPosition(anchorname)
+//   This function returns an object having .x and .y properties which are the coordinates
+//   of the named anchor, relative to the window
+function getAnchorWindowPosition(anchorname) {
+       var coordinates=getAnchorPosition(anchorname);
+       var x=0;
+       var y=0;
+       if (document.getElementById) {
+               if (isNaN(window.screenX)) {
+                       x=coordinates.x-document.body.scrollLeft+window.screenLeft;
+                       y=coordinates.y-document.body.scrollTop+window.screenTop;
+                       }
+               else {
+                       x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
+                       y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
+                       }
+               }
+       else if (document.all) {
+               x=coordinates.x-document.body.scrollLeft+window.screenLeft;
+               y=coordinates.y-document.body.scrollTop+window.screenTop;
+               }
+       else if (document.layers) {
+               x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
+               y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
+               }
+       coordinates.x=x;
+       coordinates.y=y;
+       return coordinates;
+       }
+
+// Functions for IE to get position of an object
+function AnchorPosition_getPageOffsetLeft (el) {
+       var ol=el.offsetLeft;
+       while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
+       return ol;
+       }
+function AnchorPosition_getWindowOffsetLeft (el) {
+       return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
+       }
+function AnchorPosition_getPageOffsetTop (el) {
+       var ot=el.offsetTop;
+       while((el=el.offsetParent) != null) { ot += el.offsetTop; }
+       return ot;
+       }
+function AnchorPosition_getWindowOffsetTop (el) {
+       return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
+       }
+
+/* SOURCE FILE: PopupWindow.js */
+
+/*
+PopupWindow.js
+Author: Matt Kruse
+Last modified: 02/16/04
+
+DESCRIPTION: This object allows you to easily and quickly popup a window
+in a certain place. The window can either be a DIV or a separate browser
+window.
+
+COMPATABILITY: Works with Netscape 4.x, 6.x, IE 5.x on Windows. Some small
+positioning errors - usually with Window positioning - occur on the
+Macintosh platform. Due to bugs in Netscape 4.x, populating the popup
+window with <STYLE> tags may cause errors.
+
+USAGE:
+// Create an object for a WINDOW popup
+var win = new PopupWindow();
+
+// Create an object for a DIV window using the DIV named 'mydiv'
+var win = new PopupWindow('mydiv');
+
+// Set the window to automatically hide itself when the user clicks
+// anywhere else on the page except the popup
+win.autoHide();
+
+// Show the window relative to the anchor name passed in
+win.showPopup(anchorname);
+
+// Hide the popup
+win.hidePopup();
+
+// Set the size of the popup window (only applies to WINDOW popups
+win.setSize(width,height);
+
+// Populate the contents of the popup window that will be shown. If you
+// change the contents while it is displayed, you will need to refresh()
+win.populate(string);
+
+// set the URL of the window, rather than populating its contents
+// manually
+win.setUrl("http://www.site.com/");
+
+// Refresh the contents of the popup
+win.refresh();
+
+// Specify how many pixels to the right of the anchor the popup will appear
+win.offsetX = 50;
+
+// Specify how many pixels below the anchor the popup will appear
+win.offsetY = 100;
+
+NOTES:
+1) Requires the functions in AnchorPosition.js
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the
+   anchor tag correctly. Do not do <A></A> with no space.
+
+4) When a PopupWindow object is created, a handler for 'onmouseup' is
+   attached to any event handler you may have already defined. Do NOT define
+   an event handler for 'onmouseup' after you define a PopupWindow object or
+   the autoHide() will not work correctly.
+*/
+
+// Set the position of the popup window based on the anchor
+function PopupWindow_getXYPosition(anchorname) {
+       var coordinates;
+       if (this.type == "WINDOW") {
+               coordinates = getAnchorWindowPosition(anchorname);
+               }
+       else {
+               coordinates = getAnchorPosition(anchorname);
+               }
+       this.x = coordinates.x;
+       this.y = coordinates.y;
+       }
+// Set width/height of DIV/popup window
+function PopupWindow_setSize(width,height) {
+       this.width = width;
+       this.height = height;
+       }
+// Fill the window with contents
+function PopupWindow_populate(contents) {
+       this.contents = contents;
+       this.populated = false;
+       }
+// Set the URL to go to
+function PopupWindow_setUrl(url) {
+       this.url = url;
+       }
+// Set the window popup properties
+function PopupWindow_setWindowProperties(props) {
+       this.windowProperties = props;
+       }
+// Refresh the displayed contents of the popup
+function PopupWindow_refresh() {
+       if (this.divName != null) {
+               // refresh the DIV object
+               if (this.use_gebi) {
+                       document.getElementById(this.divName).innerHTML = this.contents;
+                       }
+               else if (this.use_css) {
+                       document.all[this.divName].innerHTML = this.contents;
+                       }
+               else if (this.use_layers) {
+                       var d = document.layers[this.divName];
+                       d.document.open();
+                       d.document.writeln(this.contents);
+                       d.document.close();
+                       }
+               }
+       else {
+               if (this.popupWindow != null && !this.popupWindow.closed) {
+                       if (this.url!="") {
+                               this.popupWindow.location.href=this.url;
+                               }
+                       else {
+                               this.popupWindow.document.open();
+                               this.popupWindow.document.writeln(this.contents);
+                               this.popupWindow.document.close();
+                       }
+                       this.popupWindow.focus();
+                       }
+               }
+       }
+// Position and show the popup, relative to an anchor object
+function PopupWindow_showPopup(anchorname) {
+       this.getXYPosition(anchorname);
+       this.x += this.offsetX;
+       this.y += this.offsetY;
+       if (!this.populated && (this.contents != "")) {
+               this.populated = true;
+               this.refresh();
+               }
+       if (this.divName != null) {
+               // Show the DIV object
+               if (this.use_gebi) {
+                       document.getElementById(this.divName).style.left = this.x + "px";
+                       document.getElementById(this.divName).style.top = this.y;
+                       document.getElementById(this.divName).style.visibility = "visible";
+                       }
+               else if (this.use_css) {
+                       document.all[this.divName].style.left = this.x;
+                       document.all[this.divName].style.top = this.y;
+                       document.all[this.divName].style.visibility = "visible";
+                       }
+               else if (this.use_layers) {
+                       document.layers[this.divName].left = this.x;
+                       document.layers[this.divName].top = this.y;
+                       document.layers[this.divName].visibility = "visible";
+                       }
+               }
+       else {
+               if (this.popupWindow == null || this.popupWindow.closed) {
+                       // If the popup window will go off-screen, move it so it doesn't
+                       if (this.x<0) { this.x=0; }
+                       if (this.y<0) { this.y=0; }
+                       if (screen && screen.availHeight) {
+                               if ((this.y + this.height) > screen.availHeight) {
+                                       this.y = screen.availHeight - this.height;
+                                       }
+                               }
+                       if (screen && screen.availWidth) {
+                               if ((this.x + this.width) > screen.availWidth) {
+                                       this.x = screen.availWidth - this.width;
+                                       }
+                               }
+                       var avoidAboutBlank = window.opera || ( document.layers && !navigator.mimeTypes['*'] ) || navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled );
+                       this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");
+                       }
+               this.refresh();
+               }
+       }
+// Hide the popup
+function PopupWindow_hidePopup() {
+       if (this.divName != null) {
+               if (this.use_gebi) {
+                       document.getElementById(this.divName).style.visibility = "hidden";
+                       }
+               else if (this.use_css) {
+                       document.all[this.divName].style.visibility = "hidden";
+                       }
+               else if (this.use_layers) {
+                       document.layers[this.divName].visibility = "hidden";
+                       }
+               }
+       else {
+               if (this.popupWindow && !this.popupWindow.closed) {
+                       this.popupWindow.close();
+                       this.popupWindow = null;
+                       }
+               }
+       }
+// Pass an event and return whether or not it was the popup DIV that was clicked
+function PopupWindow_isClicked(e) {
+       if (this.divName != null) {
+               if (this.use_layers) {
+                       var clickX = e.pageX;
+                       var clickY = e.pageY;
+                       var t = document.layers[this.divName];
+                       if ((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)) {
+                               return true;
+                               }
+                       else { return false; }
+                       }
+               else if (document.all) { // Need to hard-code this to trap IE for error-handling
+                       var t = window.event.srcElement;
+                       while (t.parentElement != null) {
+                               if (t.id==this.divName) {
+                                       return true;
+                                       }
+                               t = t.parentElement;
+                               }
+                       return false;
+                       }
+               else if (this.use_gebi && e) {
+                       var t = e.originalTarget;
+                       while (t.parentNode != null) {
+                               if (t.id==this.divName) {
+                                       return true;
+                                       }
+                               t = t.parentNode;
+                               }
+                       return false;
+                       }
+               return false;
+               }
+       return false;
+       }
+
+// Check an onMouseDown event to see if we should hide
+function PopupWindow_hideIfNotClicked(e) {
+       if (this.autoHideEnabled && !this.isClicked(e)) {
+               this.hidePopup();
+               }
+       }
+// Call this to make the DIV disable automatically when mouse is clicked outside it
+function PopupWindow_autoHide() {
+       this.autoHideEnabled = true;
+       }
+// This global function checks all PopupWindow objects onmouseup to see if they should be hidden
+function PopupWindow_hidePopupWindows(e) {
+       for (var i=0; i<popupWindowObjects.length; i++) {
+               if (popupWindowObjects[i] != null) {
+                       var p = popupWindowObjects[i];
+                       p.hideIfNotClicked(e);
+                       }
+               }
+       }
+// Run this immediately to attach the event listener
+function PopupWindow_attachListener() {
+       if (document.layers) {
+               document.captureEvents(Event.MOUSEUP);
+               }
+       window.popupWindowOldEventListener = document.onmouseup;
+       if (window.popupWindowOldEventListener != null) {
+               document.onmouseup = new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");
+               }
+       else {
+               document.onmouseup = PopupWindow_hidePopupWindows;
+               }
+       }
+// CONSTRUCTOR for the PopupWindow object
+// Pass it a DIV name to use a DHTML popup, otherwise will default to window popup
+function PopupWindow() {
+       if (!window.popupWindowIndex) { window.popupWindowIndex = 0; }
+       if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); }
+       if (!window.listenerAttached) {
+               window.listenerAttached = true;
+               PopupWindow_attachListener();
+               }
+       this.index = popupWindowIndex++;
+       popupWindowObjects[this.index] = this;
+       this.divName = null;
+       this.popupWindow = null;
+       this.width=0;
+       this.height=0;
+       this.populated = false;
+       this.visible = false;
+       this.autoHideEnabled = false;
+
+       this.contents = "";
+       this.url="";
+       this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";
+       if (arguments.length>0) {
+               this.type="DIV";
+               this.divName = arguments[0];
+               }
+       else {
+               this.type="WINDOW";
+               }
+       this.use_gebi = false;
+       this.use_css = false;
+       this.use_layers = false;
+       if (document.getElementById) { this.use_gebi = true; }
+       else if (document.all) { this.use_css = true; }
+       else if (document.layers) { this.use_layers = true; }
+       else { this.type = "WINDOW"; }
+       this.offsetX = 0;
+       this.offsetY = 0;
+       // Method mappings
+       this.getXYPosition = PopupWindow_getXYPosition;
+       this.populate = PopupWindow_populate;
+       this.setUrl = PopupWindow_setUrl;
+       this.setWindowProperties = PopupWindow_setWindowProperties;
+       this.refresh = PopupWindow_refresh;
+       this.showPopup = PopupWindow_showPopup;
+       this.hidePopup = PopupWindow_hidePopup;
+       this.setSize = PopupWindow_setSize;
+       this.isClicked = PopupWindow_isClicked;
+       this.autoHide = PopupWindow_autoHide;
+       this.hideIfNotClicked = PopupWindow_hideIfNotClicked;
+       }
+
+/* SOURCE FILE: ColorPicker2.js */
+
+/*
+Last modified: 02/24/2003
+
+DESCRIPTION: This widget is used to select a color, in hexadecimal #RRGGBB
+form. It uses a color "swatch" to display the standard 216-color web-safe
+palette. The user can then click on a color to select it.
+
+COMPATABILITY: See notes in AnchorPosition.js and PopupWindow.js.
+Only the latest DHTML-capable browsers will show the color and hex values
+at the bottom as your mouse goes over them.
+
+USAGE:
+// Create a new ColorPicker object using DHTML popup
+var cp = new ColorPicker();
+
+// Create a new ColorPicker object using Window Popup
+var cp = new ColorPicker('window');
+
+// Add a link in your page to trigger the popup. For example:
+<A HREF="#" onClick="cp.show('pick');return false;" NAME="pick" ID="pick">Pick</A>
+
+// Or use the built-in "select" function to do the dirty work for you:
+<A HREF="#" onClick="cp.select(document.forms[0].color,'pick');return false;" NAME="pick" ID="pick">Pick</A>
+
+// If using DHTML popup, write out the required DIV tag near the bottom
+// of your page.
+<SCRIPT LANGUAGE="JavaScript">cp.writeDiv()</SCRIPT>
+
+// Write the 'pickColor' function that will be called when the user clicks
+// a color and do something with the value. This is only required if you
+// want to do something other than simply populate a form field, which is
+// what the 'select' function will give you.
+function pickColor(color) {
+       field.value = color;
+       }
+
+NOTES:
+1) Requires the functions in AnchorPosition.js and PopupWindow.js
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the
+   anchor tag correctly. Do not do <A></A> with no space.
+
+4) When a ColorPicker object is created, a handler for 'onmouseup' is
+   attached to any event handler you may have already defined. Do NOT define
+   an event handler for 'onmouseup' after you define a ColorPicker object or
+   the color picker will not hide itself correctly.
+*/
+ColorPicker_targetInput = null;
+function ColorPicker_writeDiv() {
+       document.writeln("<DIV ID=\"colorPickerDiv\" STYLE=\"position:absolute;visibility:hidden;\"> </DIV>");
+       }
+
+function ColorPicker_show(anchorname) {
+       this.showPopup(anchorname);
+       }
+
+function ColorPicker_pickColor(color,obj) {
+       obj.hidePopup();
+       pickColor(color);
+       }
+
+// A Default "pickColor" function to accept the color passed back from popup.
+// User can over-ride this with their own function.
+function pickColor(color) {
+       if (ColorPicker_targetInput==null) {
+               alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");
+               return;
+               }
+       ColorPicker_targetInput.value = color;
+       }
+
+// This function is the easiest way to popup the window, select a color, and
+// have the value populate a form field, which is what most people want to do.
+function ColorPicker_select(inputobj,linkname) {
+       if (inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea") {
+               alert("colorpicker.select: Input object passed is not a valid form input object");
+               window.ColorPicker_targetInput=null;
+               return;
+               }
+       window.ColorPicker_targetInput = inputobj;
+       this.show(linkname);
+       }
+
+// This function runs when you move your mouse over a color block, if you have a newer browser
+function ColorPicker_highlightColor(c) {
+       var thedoc = (arguments.length>1)?arguments[1]:window.document;
+       var d = thedoc.getElementById("colorPickerSelectedColor");
+       d.style.backgroundColor = c;
+       d = thedoc.getElementById("colorPickerSelectedColorValue");
+       d.innerHTML = c;
+       }
+
+function ColorPicker() {
+       var windowMode = false;
+       // Create a new PopupWindow object
+       if (arguments.length==0) {
+               var divname = "colorPickerDiv";
+               }
+       else if (arguments[0] == "window") {
+               var divname = '';
+               windowMode = true;
+               }
+       else {
+               var divname = arguments[0];
+               }
+
+       if (divname != "") {
+               var cp = new PopupWindow(divname);
+               }
+       else {
+               var cp = new PopupWindow();
+               cp.setSize(225,250);
+               }
+
+       // Object variables
+       cp.currentValue = "#FFFFFF";
+
+       // Method Mappings
+       cp.writeDiv = ColorPicker_writeDiv;
+       cp.highlightColor = ColorPicker_highlightColor;
+       cp.show = ColorPicker_show;
+       cp.select = ColorPicker_select;
+
+       // Code to populate color picker window
+       var colors = new Array( "#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099",
+                                                       "#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
+                                                       "#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099",
+                                                       "#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF",
+                                                       "#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F",
+                                                       "#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000",
+
+                                                       "#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399",
+                                                       "#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399",
+                                                       "#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399",
+                                                       "#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF",
+                                                       "#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F",
+                                                       "#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00",
+
+                                                       "#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699",
+                                                       "#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699",
+                                                       "#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699",
+                                                       "#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F",
+                                                       "#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F",
+                                                       "#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F",
+
+                                                       "#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999",
+                                                       "#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999",
+                                                       "#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999",
+                                                       "#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF",
+                                                       "#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F",
+                                                       "#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000",
+
+                                                       "#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
+                                                       "#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99",
+                                                       "#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99",
+                                                       "#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF",
+                                                       "#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F",
+                                                       "#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00",
+
+                                                       "#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99",
+                                                       "#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99",
+                                                       "#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99",
+                                                       "#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F",
+                                                       "#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F",
+                                                       "#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F",
+
+                                                       "#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666",
+                                                       "#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000",
+                                                       "#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000",
+                                                       "#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999",
+                                                       "#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF",
+                                                       "#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF",
+
+                                                       "#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66",
+                                                       "#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00",
+                                                       "#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000",
+                                                       "#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099",
+                                                       "#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF",
+                                                       "#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF",
+
+                                                       "#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF",
+                                                       "#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC",
+                                                       "#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000",
+                                                       "#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900",
+                                                       "#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33",
+                                                       "#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF",
+
+                                                       "#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF",
+                                                       "#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF",
+                                                       "#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F",
+                                                       "#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F",
+                                                       "#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F",
+                                                       "#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");
+       var total = colors.length;
+       var width = 72;
+       var cp_contents = "";
+       var windowRef = (windowMode)?"window.opener.":"";
+       if (windowMode) {
+               cp_contents += "<html><head><title>Select Color</title></head>";
+               cp_contents += "<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>";
+               }
+       cp_contents += "<table style='border: none;' cellspacing=0 cellpadding=0>";
+       var use_highlight = (document.getElementById || document.all)?true:false;
+       for (var i=0; i<total; i++) {
+               if ((i % width) == 0) { cp_contents += "<tr>"; }
+               if (use_highlight) { var mo = 'onMouseOver="'+windowRef+'ColorPicker_highlightColor(\''+colors[i]+'\',window.document)"'; }
+               else { mo = ""; }
+               cp_contents += '<td style="background-color: '+colors[i]+';"><a href="javascript:void()" onclick="'+windowRef+'ColorPicker_pickColor(\''+colors[i]+'\','+windowRef+'window.popupWindowObjects['+cp.index+']);return false;" '+mo+'>&nbsp;</a></td>';
+               if ( ((i+1)>=total) || (((i+1) % width) == 0)) {
+                       cp_contents += "</tr>";
+                       }
+               }
+       // If the browser supports dynamically changing TD cells, add the fancy stuff
+       if (document.getElementById) {
+               var width1 = Math.floor(width/2);
+               var width2 = width = width1;
+               cp_contents += "<tr><td colspan='"+width1+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+width2+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>";
+               }
+       cp_contents += "</table>";
+       if (windowMode) {
+               cp_contents += "</span></body></html>";
+               }
+       // end populate code
+
+       // Write the contents to the popup object
+       cp.populate(cp_contents+"\n");
+       // Move the table down a bit so you can see it
+       cp.offsetY = 25;
+       cp.autoHide();
+       return cp;
+       }
diff --git a/wp-includes/js/colorpicker.min.js b/wp-includes/js/colorpicker.min.js
new file mode 100644 (file)
index 0000000..acd88a3
--- /dev/null
@@ -0,0 +1 @@
+function getAnchorPosition(b){var e=false;var k=new Object();var j=0,g=0;var d=false,f=false,h=false;if(document.getElementById){d=true}else{if(document.all){f=true}else{if(document.layers){h=true}}}if(d&&document.all){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(d){var a=document.getElementById(b);j=AnchorPosition_getPageOffsetLeft(a);g=AnchorPosition_getPageOffsetTop(a)}else{if(f){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(h){var l=0;for(var c=0;c<document.anchors.length;c++){if(document.anchors[c].name==b){l=1;break}}if(l==0){k.x=0;k.y=0;return k}j=document.anchors[c].x;g=document.anchors[c].y}else{k.x=0;k.y=0;return k}}}}k.x=j;k.y=g;return k}function getAnchorWindowPosition(b){var c=getAnchorPosition(b);var a=0;var d=0;if(document.getElementById){if(isNaN(window.screenX)){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}else{if(document.all){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{if(document.layers){a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}}c.x=a;c.y=d;return c}function AnchorPosition_getPageOffsetLeft(b){var a=b.offsetLeft;while((b=b.offsetParent)!=null){a+=b.offsetLeft}return a}function AnchorPosition_getWindowOffsetLeft(a){return AnchorPosition_getPageOffsetLeft(a)-document.body.scrollLeft}function AnchorPosition_getPageOffsetTop(a){var b=a.offsetTop;while((a=a.offsetParent)!=null){b+=a.offsetTop}return b}function AnchorPosition_getWindowOffsetTop(a){return AnchorPosition_getPageOffsetTop(a)-document.body.scrollTop}function PopupWindow_getXYPosition(a){var b;if(this.type=="WINDOW"){b=getAnchorWindowPosition(a)}else{b=getAnchorPosition(a)}this.x=b.x;this.y=b.y}function PopupWindow_setSize(b,a){this.width=b;this.height=a}function PopupWindow_populate(a){this.contents=a;this.populated=false}function PopupWindow_setUrl(a){this.url=a}function PopupWindow_setWindowProperties(a){this.windowProperties=a}function PopupWindow_refresh(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).innerHTML=this.contents}else{if(this.use_css){document.all[this.divName].innerHTML=this.contents}else{if(this.use_layers){var a=document.layers[this.divName];a.document.open();a.document.writeln(this.contents);a.document.close()}}}}else{if(this.popupWindow!=null&&!this.popupWindow.closed){if(this.url!=""){this.popupWindow.location.href=this.url}else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close()}this.popupWindow.focus()}}}function PopupWindow_showPopup(a){this.getXYPosition(a);this.x+=this.offsetX;this.y+=this.offsetY;if(!this.populated&&(this.contents!="")){this.populated=true;this.refresh()}if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.left=this.x+"px";document.getElementById(this.divName).style.top=this.y;document.getElementById(this.divName).style.visibility="visible"}else{if(this.use_css){document.all[this.divName].style.left=this.x;document.all[this.divName].style.top=this.y;document.all[this.divName].style.visibility="visible"}else{if(this.use_layers){document.layers[this.divName].left=this.x;document.layers[this.divName].top=this.y;document.layers[this.divName].visibility="visible"}}}}else{if(this.popupWindow==null||this.popupWindow.closed){if(this.x<0){this.x=0}if(this.y<0){this.y=0}if(screen&&screen.availHeight){if((this.y+this.height)>screen.availHeight){this.y=screen.availHeight-this.height}}if(screen&&screen.availWidth){if((this.x+this.width)>screen.availWidth){this.x=screen.availWidth-this.width}}var b=window.opera||(document.layers&&!navigator.mimeTypes["*"])||navigator.vendor=="KDE"||(document.childNodes&&!document.all&&!navigator.taintEnabled);this.popupWindow=window.open(b?"":"about:blank","window_"+a,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"")}this.refresh()}}function PopupWindow_hidePopup(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.visibility="hidden"}else{if(this.use_css){document.all[this.divName].style.visibility="hidden"}else{if(this.use_layers){document.layers[this.divName].visibility="hidden"}}}}else{if(this.popupWindow&&!this.popupWindow.closed){this.popupWindow.close();this.popupWindow=null}}}function PopupWindow_isClicked(c){if(this.divName!=null){if(this.use_layers){var d=c.pageX;var b=c.pageY;var a=document.layers[this.divName];if((d>a.left)&&(d<a.left+a.clip.width)&&(b>a.top)&&(b<a.top+a.clip.height)){return true}else{return false}}else{if(document.all){var a=window.event.srcElement;while(a.parentElement!=null){if(a.id==this.divName){return true}a=a.parentElement}return false}else{if(this.use_gebi&&c){var a=c.originalTarget;while(a.parentNode!=null){if(a.id==this.divName){return true}a=a.parentNode}return false}}}return false}return false}function PopupWindow_hideIfNotClicked(a){if(this.autoHideEnabled&&!this.isClicked(a)){this.hidePopup()}}function PopupWindow_autoHide(){this.autoHideEnabled=true}function PopupWindow_hidePopupWindows(c){for(var a=0;a<popupWindowObjects.length;a++){if(popupWindowObjects[a]!=null){var b=popupWindowObjects[a];b.hideIfNotClicked(c)}}}function PopupWindow_attachListener(){if(document.layers){document.captureEvents(Event.MOUSEUP)}window.popupWindowOldEventListener=document.onmouseup;if(window.popupWindowOldEventListener!=null){document.onmouseup=new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();")}else{document.onmouseup=PopupWindow_hidePopupWindows}}function PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex=0}if(!window.popupWindowObjects){window.popupWindowObjects=new Array()}if(!window.listenerAttached){window.listenerAttached=true;PopupWindow_attachListener()}this.index=popupWindowIndex++;popupWindowObjects[this.index]=this;this.divName=null;this.popupWindow=null;this.width=0;this.height=0;this.populated=false;this.visible=false;this.autoHideEnabled=false;this.contents="";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";if(arguments.length>0){this.type="DIV";this.divName=arguments[0]}else{this.type="WINDOW"}this.use_gebi=false;this.use_css=false;this.use_layers=false;if(document.getElementById){this.use_gebi=true}else{if(document.all){this.use_css=true}else{if(document.layers){this.use_layers=true}else{this.type="WINDOW"}}}this.offsetX=0;this.offsetY=0;this.getXYPosition=PopupWindow_getXYPosition;this.populate=PopupWindow_populate;this.setUrl=PopupWindow_setUrl;this.setWindowProperties=PopupWindow_setWindowProperties;this.refresh=PopupWindow_refresh;this.showPopup=PopupWindow_showPopup;this.hidePopup=PopupWindow_hidePopup;this.setSize=PopupWindow_setSize;this.isClicked=PopupWindow_isClicked;this.autoHide=PopupWindow_autoHide;this.hideIfNotClicked=PopupWindow_hideIfNotClicked}ColorPicker_targetInput=null;function ColorPicker_writeDiv(){document.writeln('<DIV ID="colorPickerDiv" STYLE="position:absolute;visibility:hidden;"> </DIV>')}function ColorPicker_show(a){this.showPopup(a)}function ColorPicker_pickColor(a,b){b.hidePopup();pickColor(a)}function pickColor(a){if(ColorPicker_targetInput==null){alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");return}ColorPicker_targetInput.value=a}function ColorPicker_select(b,a){if(b.type!="text"&&b.type!="hidden"&&b.type!="textarea"){alert("colorpicker.select: Input object passed is not a valid form input object");window.ColorPicker_targetInput=null;return}window.ColorPicker_targetInput=b;this.show(a)}function ColorPicker_highlightColor(e){var a=(arguments.length>1)?arguments[1]:window.document;var b=a.getElementById("colorPickerSelectedColor");b.style.backgroundColor=e;b=a.getElementById("colorPickerSelectedColorValue");b.innerHTML=e}function ColorPicker(){var g=false;if(arguments.length==0){var e="colorPickerDiv"}else{if(arguments[0]=="window"){var e="";g=true}else{var e=arguments[0]}}if(e!=""){var m=new PopupWindow(e)}else{var m=new PopupWindow();m.setSize(225,250)}m.currentValue="#FFFFFF";m.writeDiv=ColorPicker_writeDiv;m.highlightColor=ColorPicker_highlightColor;m.show=ColorPicker_show;m.select=ColorPicker_select;var a=new Array("#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099","#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099","#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF","#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F","#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000","#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399","#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399","#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF","#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F","#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00","#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699","#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699","#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699","#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F","#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F","#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F","#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999","#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999","#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999","#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF","#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F","#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000","#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99","#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99","#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF","#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F","#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00","#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99","#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99","#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99","#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F","#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F","#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F","#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666","#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000","#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000","#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999","#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF","#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66","#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00","#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000","#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099","#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF","#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF","#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC","#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000","#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900","#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33","#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF","#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF","#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F","#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F","#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F","#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");var n=a.length;var c=72;var k="";var j=(g)?"window.opener.":"";if(g){k+="<html><head><title>Select Color</title></head>";k+="<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>"}k+="<table style='border: none;' cellspacing=0 cellpadding=0>";var l=(document.getElementById||document.all)?true:false;for(var h=0;h<n;h++){if((h%c)==0){k+="<tr>"}if(l){var f='onMouseOver="'+j+"ColorPicker_highlightColor('"+a[h]+"',window.document)\""}else{f=""}k+='<td style="background-color: '+a[h]+';"><a href="javascript:void()" onclick="'+j+"ColorPicker_pickColor('"+a[h]+"',"+j+"window.popupWindowObjects["+m.index+']);return false;" '+f+">&nbsp;</a></td>";if(((h+1)>=n)||(((h+1)%c)==0)){k+="</tr>"}}if(document.getElementById){var d=Math.floor(c/2);var b=c=d;k+="<tr><td colspan='"+d+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+b+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>"}k+="</table>";if(g){k+="</span></body></html>"}m.populate(k+"\n");m.offsetY=25;m.autoHide();return m};
\ No newline at end of file
diff --git a/wp-includes/js/comment-reply.dev.js b/wp-includes/js/comment-reply.dev.js
deleted file mode 100644 (file)
index 2015425..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-
-addComment = {
-       moveForm : function(commId, parentId, respondId, postId) {
-               var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID');
-
-               if ( ! comm || ! respond || ! cancel || ! parent )
-                       return;
-
-               t.respondId = respondId;
-               postId = postId || false;
-
-               if ( ! t.I('wp-temp-form-div') ) {
-                       div = document.createElement('div');
-                       div.id = 'wp-temp-form-div';
-                       div.style.display = 'none';
-                       respond.parentNode.insertBefore(div, respond);
-               }
-
-               comm.parentNode.insertBefore(respond, comm.nextSibling);
-               if ( post && postId )
-                       post.value = postId;
-               parent.value = parentId;
-               cancel.style.display = '';
-
-               cancel.onclick = function() {
-                       var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId);
-
-                       if ( ! temp || ! respond )
-                               return;
-
-                       t.I('comment_parent').value = '0';
-                       temp.parentNode.insertBefore(respond, temp);
-                       temp.parentNode.removeChild(temp);
-                       this.style.display = 'none';
-                       this.onclick = null;
-                       return false;
-               }
-
-               try { t.I('comment').focus(); }
-               catch(e) {}
-
-               return false;
-       },
-
-       I : function(e) {
-               return document.getElementById(e);
-       }
-}
index 524f2ede923ac814d65ea9641dee4c334a5379d6..20154253a4f3fed7ff7fd3ec90f64bc3a001116e 100644 (file)
@@ -1 +1,48 @@
-addComment={moveForm:function(d,f,i,c){var m=this,a,h=m.I(d),b=m.I(i),l=m.I("cancel-comment-reply-link"),j=m.I("comment_parent"),k=m.I("comment_post_ID");if(!h||!b||!l||!j){return}m.respondId=i;c=c||false;if(!m.I("wp-temp-form-div")){a=document.createElement("div");a.id="wp-temp-form-div";a.style.display="none";b.parentNode.insertBefore(a,b)}h.parentNode.insertBefore(b,h.nextSibling);if(k&&c){k.value=c}j.value=f;l.style.display="";l.onclick=function(){var n=addComment,e=n.I("wp-temp-form-div"),o=n.I(n.respondId);if(!e||!o){return}n.I("comment_parent").value="0";e.parentNode.insertBefore(o,e);e.parentNode.removeChild(e);this.style.display="none";this.onclick=null;return false};try{m.I("comment").focus()}catch(g){}return false},I:function(a){return document.getElementById(a)}};
\ No newline at end of file
+
+addComment = {
+       moveForm : function(commId, parentId, respondId, postId) {
+               var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID');
+
+               if ( ! comm || ! respond || ! cancel || ! parent )
+                       return;
+
+               t.respondId = respondId;
+               postId = postId || false;
+
+               if ( ! t.I('wp-temp-form-div') ) {
+                       div = document.createElement('div');
+                       div.id = 'wp-temp-form-div';
+                       div.style.display = 'none';
+                       respond.parentNode.insertBefore(div, respond);
+               }
+
+               comm.parentNode.insertBefore(respond, comm.nextSibling);
+               if ( post && postId )
+                       post.value = postId;
+               parent.value = parentId;
+               cancel.style.display = '';
+
+               cancel.onclick = function() {
+                       var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId);
+
+                       if ( ! temp || ! respond )
+                               return;
+
+                       t.I('comment_parent').value = '0';
+                       temp.parentNode.insertBefore(respond, temp);
+                       temp.parentNode.removeChild(temp);
+                       this.style.display = 'none';
+                       this.onclick = null;
+                       return false;
+               }
+
+               try { t.I('comment').focus(); }
+               catch(e) {}
+
+               return false;
+       },
+
+       I : function(e) {
+               return document.getElementById(e);
+       }
+}
diff --git a/wp-includes/js/comment-reply.min.js b/wp-includes/js/comment-reply.min.js
new file mode 100644 (file)
index 0000000..524f2ed
--- /dev/null
@@ -0,0 +1 @@
+addComment={moveForm:function(d,f,i,c){var m=this,a,h=m.I(d),b=m.I(i),l=m.I("cancel-comment-reply-link"),j=m.I("comment_parent"),k=m.I("comment_post_ID");if(!h||!b||!l||!j){return}m.respondId=i;c=c||false;if(!m.I("wp-temp-form-div")){a=document.createElement("div");a.id="wp-temp-form-div";a.style.display="none";b.parentNode.insertBefore(a,b)}h.parentNode.insertBefore(b,h.nextSibling);if(k&&c){k.value=c}j.value=f;l.style.display="";l.onclick=function(){var n=addComment,e=n.I("wp-temp-form-div"),o=n.I(n.respondId);if(!e||!o){return}n.I("comment_parent").value="0";e.parentNode.insertBefore(o,e);e.parentNode.removeChild(e);this.style.display="none";this.onclick=null;return false};try{m.I("comment").focus()}catch(g){}return false},I:function(a){return document.getElementById(a)}};
\ No newline at end of file
index 25317e5738bfcce43707ec0a0640533f69eb8fff..685950394c068fc8c14fcb16d07208465b0c63f9 100644 (file)
Binary files a/wp-includes/js/crop/marqueeHoriz.gif and b/wp-includes/js/crop/marqueeHoriz.gif differ
index 354070bb457b3786368a51b065ae75cf27297b09..ee55e203f8c7106b8d919eb4053ef0f23faf2bdc 100644 (file)
Binary files a/wp-includes/js/crop/marqueeVert.gif and b/wp-includes/js/crop/marqueeVert.gif differ
diff --git a/wp-includes/js/customize-base.dev.js b/wp-includes/js/customize-base.dev.js
deleted file mode 100644 (file)
index d25ec31..0000000
+++ /dev/null
@@ -1,586 +0,0 @@
-if ( typeof wp === 'undefined' )
-       var wp = {};
-
-(function( exports, $ ){
-       var api, extend, ctor, inherits,
-               slice = Array.prototype.slice;
-
-       /* =====================================================================
-        * Micro-inheritance - thank you, backbone.js.
-        * ===================================================================== */
-
-       extend = function( protoProps, classProps ) {
-               var child = inherits( this, protoProps, classProps );
-               child.extend = this.extend;
-               return child;
-       };
-
-       // Shared empty constructor function to aid in prototype-chain creation.
-       ctor = function() {};
-
-       // Helper function to correctly set up the prototype chain, for subclasses.
-       // Similar to `goog.inherits`, but uses a hash of prototype properties and
-       // class properties to be extended.
-       inherits = function( parent, protoProps, staticProps ) {
-               var child;
-
-               // The constructor function for the new subclass is either defined by you
-               // (the "constructor" property in your `extend` definition), or defaulted
-               // by us to simply call `super()`.
-               if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) {
-                       child = protoProps.constructor;
-               } else {
-                       child = function() {
-                               // Storing the result `super()` before returning the value
-                               // prevents a bug in Opera where, if the constructor returns
-                               // a function, Opera will reject the return value in favor of
-                               // the original object. This causes all sorts of trouble.
-                               var result = parent.apply( this, arguments );
-                               return result;
-                       };
-               }
-
-               // Inherit class (static) properties from parent.
-               $.extend( child, parent );
-
-               // Set the prototype chain to inherit from `parent`, without calling
-               // `parent`'s constructor function.
-               ctor.prototype  = parent.prototype;
-               child.prototype = new ctor();
-
-               // Add prototype properties (instance properties) to the subclass,
-               // if supplied.
-               if ( protoProps )
-                       $.extend( child.prototype, protoProps );
-
-               // Add static properties to the constructor function, if supplied.
-               if ( staticProps )
-                       $.extend( child, staticProps );
-
-               // Correctly set child's `prototype.constructor`.
-               child.prototype.constructor = child;
-
-               // Set a convenience property in case the parent's prototype is needed later.
-               child.__super__ = parent.prototype;
-
-               return child;
-       };
-
-       api = {};
-
-       /* =====================================================================
-        * Base class.
-        * ===================================================================== */
-
-       api.Class = function( applicator, argsArray, options ) {
-               var magic, args = arguments;
-
-               if ( applicator && argsArray && api.Class.applicator === applicator ) {
-                       args = argsArray;
-                       $.extend( this, options || {} );
-               }
-
-               magic = this;
-               if ( this.instance ) {
-                       magic = function() {
-                               return magic.instance.apply( magic, arguments );
-                       };
-
-                       $.extend( magic, this );
-               }
-
-               magic.initialize.apply( magic, args );
-               return magic;
-       };
-
-       api.Class.applicator = {};
-
-       api.Class.prototype.initialize = function() {};
-
-       /*
-        * Checks whether a given instance extended a constructor.
-        *
-        * The magic surrounding the instance parameter causes the instanceof
-        * keyword to return inaccurate results; it defaults to the function's
-        * prototype instead of the constructor chain. Hence this function.
-        */
-       api.Class.prototype.extended = function( constructor ) {
-               var proto = this;
-
-               while ( typeof proto.constructor !== 'undefined' ) {
-                       if ( proto.constructor === constructor )
-                               return true;
-                       if ( typeof proto.constructor.__super__ === 'undefined' )
-                               return false;
-                       proto = proto.constructor.__super__;
-               }
-               return false;
-       };
-
-       api.Class.extend = extend;
-
-       /* =====================================================================
-        * Events mixin.
-        * ===================================================================== */
-
-       api.Events = {
-               trigger: function( id ) {
-                       if ( this.topics && this.topics[ id ] )
-                               this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) );
-                       return this;
-               },
-
-               bind: function( id, callback ) {
-                       this.topics = this.topics || {};
-                       this.topics[ id ] = this.topics[ id ] || $.Callbacks();
-                       this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) );
-                       return this;
-               },
-
-               unbind: function( id, callback ) {
-                       if ( this.topics && this.topics[ id ] )
-                               this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) );
-                       return this;
-               }
-       };
-
-       /* =====================================================================
-        * Observable values that support two-way binding.
-        * ===================================================================== */
-
-       api.Value = api.Class.extend({
-               initialize: function( initial, options ) {
-                       this._value = initial; // @todo: potentially change this to a this.set() call.
-                       this.callbacks = $.Callbacks();
-
-                       $.extend( this, options || {} );
-
-                       this.set = $.proxy( this.set, this );
-               },
-
-               /*
-                * Magic. Returns a function that will become the instance.
-                * Set to null to prevent the instance from extending a function.
-                */
-               instance: function() {
-                       return arguments.length ? this.set.apply( this, arguments ) : this.get();
-               },
-
-               get: function() {
-                       return this._value;
-               },
-
-               set: function( to ) {
-                       var from = this._value;
-
-                       to = this._setter.apply( this, arguments );
-                       to = this.validate( to );
-
-                       // Bail if the sanitized value is null or unchanged.
-                       if ( null === to || this._value === to )
-                               return this;
-
-                       this._value = to;
-
-                       this.callbacks.fireWith( this, [ to, from ] );
-
-                       return this;
-               },
-
-               _setter: function( to ) {
-                       return to;
-               },
-
-               setter: function( callback ) {
-                       var from = this.get();
-                       this._setter = callback;
-                       // Temporarily clear value so setter can decide if it's valid.
-                       this._value = null;
-                       this.set( from );
-                       return this;
-               },
-
-               resetSetter: function() {
-                       this._setter = this.constructor.prototype._setter;
-                       this.set( this.get() );
-                       return this;
-               },
-
-               validate: function( value ) {
-                       return value;
-               },
-
-               bind: function( callback ) {
-                       this.callbacks.add.apply( this.callbacks, arguments );
-                       return this;
-               },
-
-               unbind: function( callback ) {
-                       this.callbacks.remove.apply( this.callbacks, arguments );
-                       return this;
-               },
-
-               link: function() { // values*
-                       var set = this.set;
-                       $.each( arguments, function() {
-                               this.bind( set );
-                       });
-                       return this;
-               },
-
-               unlink: function() { // values*
-                       var set = this.set;
-                       $.each( arguments, function() {
-                               this.unbind( set );
-                       });
-                       return this;
-               },
-
-               sync: function() { // values*
-                       var that = this;
-                       $.each( arguments, function() {
-                               that.link( this );
-                               this.link( that );
-                       });
-                       return this;
-               },
-
-               unsync: function() { // values*
-                       var that = this;
-                       $.each( arguments, function() {
-                               that.unlink( this );
-                               this.unlink( that );
-                       });
-                       return this;
-               }
-       });
-
-       /* =====================================================================
-        * A collection of observable values.
-        * ===================================================================== */
-
-       api.Values = api.Class.extend({
-               defaultConstructor: api.Value,
-
-               initialize: function( options ) {
-                       $.extend( this, options || {} );
-
-                       this._value = {};
-                       this._deferreds = {};
-               },
-
-               instance: function( id ) {
-                       if ( arguments.length === 1 )
-                               return this.value( id );
-
-                       return this.when.apply( this, arguments );
-               },
-
-               value: function( id ) {
-                       return this._value[ id ];
-               },
-
-               has: function( id ) {
-                       return typeof this._value[ id ] !== 'undefined';
-               },
-
-               add: function( id, value ) {
-                       if ( this.has( id ) )
-                               return this.value( id );
-
-                       this._value[ id ] = value;
-                       value.parent = this;
-                       if ( value.extended( api.Value ) )
-                               value.bind( this._change );
-
-                       this.trigger( 'add', value );
-
-                       if ( this._deferreds[ id ] )
-                               this._deferreds[ id ].resolve();
-
-                       return this._value[ id ];
-               },
-
-               create: function( id ) {
-                       return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) );
-               },
-
-               each: function( callback, context ) {
-                       context = typeof context === 'undefined' ? this : context;
-
-                       $.each( this._value, function( key, obj ) {
-                               callback.call( context, obj, key );
-                       });
-               },
-
-               remove: function( id ) {
-                       var value;
-
-                       if ( this.has( id ) ) {
-                               value = this.value( id );
-                               this.trigger( 'remove', value );
-                               if ( value.extended( api.Value ) )
-                                       value.unbind( this._change );
-                               delete value.parent;
-                       }
-
-                       delete this._value[ id ];
-                       delete this._deferreds[ id ];
-               },
-
-               /**
-                * Runs a callback once all requested values exist.
-                *
-                * when( ids*, [callback] );
-                *
-                * For example:
-                *     when( id1, id2, id3, function( value1, value2, value3 ) {} );
-                *
-                * @returns $.Deferred.promise();
-                */
-               when: function() {
-                       var self = this,
-                               ids  = slice.call( arguments ),
-                               dfd  = $.Deferred();
-
-                       // If the last argument is a callback, bind it to .done()
-                       if ( $.isFunction( ids[ ids.length - 1 ] ) )
-                               dfd.done( ids.pop() );
-
-                       $.when.apply( $, $.map( ids, function( id ) {
-                               if ( self.has( id ) )
-                                       return;
-
-                               return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred();
-                       })).done( function() {
-                               var values = $.map( ids, function( id ) {
-                                               return self( id );
-                                       });
-
-                               // If a value is missing, we've used at least one expired deferred.
-                               // Call Values.when again to generate a new deferred.
-                               if ( values.length !== ids.length ) {
-                                       // ids.push( callback );
-                                       self.when.apply( self, ids ).done( function() {
-                                               dfd.resolveWith( self, values );
-                                       });
-                                       return;
-                               }
-
-                               dfd.resolveWith( self, values );
-                       });
-
-                       return dfd.promise();
-               },
-
-               _change: function() {
-                       this.parent.trigger( 'change', this );
-               }
-       });
-
-       $.extend( api.Values.prototype, api.Events );
-
-       /* =====================================================================
-        * An observable value that syncs with an element.
-        *
-        * Handles inputs, selects, and textareas by default.
-        * ===================================================================== */
-
-       api.ensure = function( element ) {
-               return typeof element == 'string' ? $( element ) : element;
-       };
-
-       api.Element = api.Value.extend({
-               initialize: function( element, options ) {
-                       var self = this,
-                               synchronizer = api.Element.synchronizer.html,
-                               type, update, refresh;
-
-                       this.element = api.ensure( element );
-                       this.events = '';
-
-                       if ( this.element.is('input, select, textarea') ) {
-                               this.events += 'change';
-                               synchronizer = api.Element.synchronizer.val;
-
-                               if ( this.element.is('input') ) {
-                                       type = this.element.prop('type');
-                                       if ( api.Element.synchronizer[ type ] )
-                                               synchronizer = api.Element.synchronizer[ type ];
-                                       if ( 'text' === type || 'password' === type )
-                                               this.events += ' keyup';
-                               } else if ( this.element.is('textarea') ) {
-                                       this.events += ' keyup';
-                               }
-                       }
-
-                       api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) );
-                       this._value = this.get();
-
-                       update  = this.update;
-                       refresh = this.refresh;
-
-                       this.update = function( to ) {
-                               if ( to !== refresh.call( self ) )
-                                       update.apply( this, arguments );
-                       };
-                       this.refresh = function() {
-                               self.set( refresh.call( self ) );
-                       };
-
-                       this.bind( this.update );
-                       this.element.bind( this.events, this.refresh );
-               },
-
-               find: function( selector ) {
-                       return $( selector, this.element );
-               },
-
-               refresh: function() {},
-
-               update: function() {}
-       });
-
-       api.Element.synchronizer = {};
-
-       $.each( [ 'html', 'val' ], function( i, method ) {
-               api.Element.synchronizer[ method ] = {
-                       update: function( to ) {
-                               this.element[ method ]( to );
-                       },
-                       refresh: function() {
-                               return this.element[ method ]();
-                       }
-               };
-       });
-
-       api.Element.synchronizer.checkbox = {
-               update: function( to ) {
-                       this.element.prop( 'checked', to );
-               },
-               refresh: function() {
-                       return this.element.prop( 'checked' );
-               }
-       };
-
-       api.Element.synchronizer.radio = {
-               update: function( to ) {
-                       this.element.filter( function() {
-                               return this.value === to;
-                       }).prop( 'checked', true );
-               },
-               refresh: function() {
-                       return this.element.filter( ':checked' ).val();
-               }
-       };
-
-       /* =====================================================================
-        * Messenger for postMessage.
-        * ===================================================================== */
-
-       $.support.postMessage = !! window.postMessage;
-
-       api.Messenger = api.Class.extend({
-               add: function( key, initial, options ) {
-                       return this[ key ] = new api.Value( initial, options );
-               },
-
-               /**
-                * Initialize Messenger.
-                *
-                * @param  {object} params        Parameters to configure the messenger.
-                *         {string} .url          The URL to communicate with.
-                *         {window} .targetWindow The window instance to communicate with. Default window.parent.
-                *         {string} .channel      If provided, will send the channel with each message and only accept messages a matching channel.
-                * @param  {object} options       Extend any instance parameter or method with this object.
-                */
-               initialize: function( params, options ) {
-                       // Target the parent frame by default, but only if a parent frame exists.
-                       var defaultTarget = window.parent == window ? null : window.parent;
-
-                       $.extend( this, options || {} );
-
-                       this.add( 'channel', params.channel );
-                       this.add( 'url', params.url || '' );
-                       this.add( 'targetWindow', params.targetWindow || defaultTarget );
-                       this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) {
-                               return to.replace( /([^:]+:\/\/[^\/]+).*/, '$1' );
-                       });
-
-                       // Since we want jQuery to treat the receive function as unique
-                       // to this instance, we give the function a new guid.
-                       //
-                       // This will prevent every Messenger's receive function from being
-                       // unbound when calling $.off( 'message', this.receive );
-                       this.receive = $.proxy( this.receive, this );
-                       this.receive.guid = $.guid++;
-
-                       $( window ).on( 'message', this.receive );
-               },
-
-               destroy: function() {
-                       $( window ).off( 'message', this.receive );
-               },
-
-               receive: function( event ) {
-                       var message;
-
-                       event = event.originalEvent;
-
-                       if ( ! this.targetWindow() )
-                               return;
-
-                       // Check to make sure the origin is valid.
-                       if ( this.origin() && event.origin !== this.origin() )
-                               return;
-
-                       message = JSON.parse( event.data );
-
-                       // Check required message properties.
-                       if ( ! message || ! message.id || typeof message.data === 'undefined' )
-                               return;
-
-                       // Check if channel names match.
-                       if ( ( message.channel || this.channel() ) && this.channel() !== message.channel )
-                               return;
-
-                       this.trigger( message.id, message.data );
-               },
-
-               send: function( id, data ) {
-                       var message;
-
-                       data = typeof data === 'undefined' ? null : data;
-
-                       if ( ! this.url() || ! this.targetWindow() )
-                               return;
-
-                       message = { id: id, data: data };
-                       if ( this.channel() )
-                               message.channel = this.channel();
-
-                       this.targetWindow().postMessage( JSON.stringify( message ), this.origin() );
-               }
-       });
-
-       // Add the Events mixin to api.Messenger.
-       $.extend( api.Messenger.prototype, api.Events );
-
-       /* =====================================================================
-        * Core customize object.
-        * ===================================================================== */
-
-       api = $.extend( new api.Values(), api );
-       api.get = function() {
-               var result = {};
-
-               this.each( function( obj, key ) {
-                       result[ key ] = obj.get();
-               });
-
-               return result;
-       };
-
-       // Expose the API to the world.
-       exports.customize = api;
-})( wp, jQuery );
index 951494999e7a15a029a56071145c708dffac7c14..81d37716e64c6ba921ed1a5ad71e89841749f625 100644 (file)
@@ -1 +1,585 @@
-if(typeof wp==="undefined"){var wp={}}(function(a,d){var b,g,c,f,e=Array.prototype.slice;g=function(h,i){var j=f(this,h,i);j.extend=this.extend;return j};c=function(){};f=function(i,h,j){var k;if(h&&h.hasOwnProperty("constructor")){k=h.constructor}else{k=function(){var l=i.apply(this,arguments);return l}}d.extend(k,i);c.prototype=i.prototype;k.prototype=new c();if(h){d.extend(k.prototype,h)}if(j){d.extend(k,j)}k.prototype.constructor=k;k.__super__=i.prototype;return k};b={};b.Class=function(l,k,i){var j,h=arguments;if(l&&k&&b.Class.applicator===l){h=k;d.extend(this,i||{})}j=this;if(this.instance){j=function(){return j.instance.apply(j,arguments)};d.extend(j,this)}j.initialize.apply(j,h);return j};b.Class.applicator={};b.Class.prototype.initialize=function(){};b.Class.prototype.extended=function(h){var i=this;while(typeof i.constructor!=="undefined"){if(i.constructor===h){return true}if(typeof i.constructor.__super__==="undefined"){return false}i=i.constructor.__super__}return false};b.Class.extend=g;b.Events={trigger:function(h){if(this.topics&&this.topics[h]){this.topics[h].fireWith(this,e.call(arguments,1))}return this},bind:function(i,h){this.topics=this.topics||{};this.topics[i]=this.topics[i]||d.Callbacks();this.topics[i].add.apply(this.topics[i],e.call(arguments,1));return this},unbind:function(i,h){if(this.topics&&this.topics[i]){this.topics[i].remove.apply(this.topics[i],e.call(arguments,1))}return this}};b.Value=b.Class.extend({initialize:function(i,h){this._value=i;this.callbacks=d.Callbacks();d.extend(this,h||{});this.set=d.proxy(this.set,this)},instance:function(){return arguments.length?this.set.apply(this,arguments):this.get()},get:function(){return this._value},set:function(i){var h=this._value;i=this._setter.apply(this,arguments);i=this.validate(i);if(null===i||this._value===i){return this}this._value=i;this.callbacks.fireWith(this,[i,h]);return this},_setter:function(h){return h},setter:function(i){var h=this.get();this._setter=i;this._value=null;this.set(h);return this},resetSetter:function(){this._setter=this.constructor.prototype._setter;this.set(this.get());return this},validate:function(h){return h},bind:function(h){this.callbacks.add.apply(this.callbacks,arguments);return this},unbind:function(h){this.callbacks.remove.apply(this.callbacks,arguments);return this},link:function(){var h=this.set;d.each(arguments,function(){this.bind(h)});return this},unlink:function(){var h=this.set;d.each(arguments,function(){this.unbind(h)});return this},sync:function(){var h=this;d.each(arguments,function(){h.link(this);this.link(h)});return this},unsync:function(){var h=this;d.each(arguments,function(){h.unlink(this);this.unlink(h)});return this}});b.Values=b.Class.extend({defaultConstructor:b.Value,initialize:function(h){d.extend(this,h||{});this._value={};this._deferreds={}},instance:function(h){if(arguments.length===1){return this.value(h)}return this.when.apply(this,arguments)},value:function(h){return this._value[h]},has:function(h){return typeof this._value[h]!=="undefined"},add:function(i,h){if(this.has(i)){return this.value(i)}this._value[i]=h;h.parent=this;if(h.extended(b.Value)){h.bind(this._change)}this.trigger("add",h);if(this._deferreds[i]){this._deferreds[i].resolve()}return this._value[i]},create:function(h){return this.add(h,new this.defaultConstructor(b.Class.applicator,e.call(arguments,1)))},each:function(i,h){h=typeof h==="undefined"?this:h;d.each(this._value,function(j,k){i.call(h,k,j)})},remove:function(i){var h;if(this.has(i)){h=this.value(i);this.trigger("remove",h);if(h.extended(b.Value)){h.unbind(this._change)}delete h.parent}delete this._value[i];delete this._deferreds[i]},when:function(){var i=this,j=e.call(arguments),h=d.Deferred();if(d.isFunction(j[j.length-1])){h.done(j.pop())}d.when.apply(d,d.map(j,function(k){if(i.has(k)){return}return i._deferreds[k]=i._deferreds[k]||d.Deferred()})).done(function(){var k=d.map(j,function(l){return i(l)});if(k.length!==j.length){i.when.apply(i,j).done(function(){h.resolveWith(i,k)});return}h.resolveWith(i,k)});return h.promise()},_change:function(){this.parent.trigger("change",this)}});d.extend(b.Values.prototype,b.Events);b.ensure=function(h){return typeof h=="string"?d(h):h};b.Element=b.Value.extend({initialize:function(j,i){var h=this,m=b.Element.synchronizer.html,l,n,k;this.element=b.ensure(j);this.events="";if(this.element.is("input, select, textarea")){this.events+="change";m=b.Element.synchronizer.val;if(this.element.is("input")){l=this.element.prop("type");if(b.Element.synchronizer[l]){m=b.Element.synchronizer[l]}if("text"===l||"password"===l){this.events+=" keyup"}}else{if(this.element.is("textarea")){this.events+=" keyup"}}}b.Value.prototype.initialize.call(this,null,d.extend(i||{},m));this._value=this.get();n=this.update;k=this.refresh;this.update=function(o){if(o!==k.call(h)){n.apply(this,arguments)}};this.refresh=function(){h.set(k.call(h))};this.bind(this.update);this.element.bind(this.events,this.refresh)},find:function(h){return d(h,this.element)},refresh:function(){},update:function(){}});b.Element.synchronizer={};d.each(["html","val"],function(h,j){b.Element.synchronizer[j]={update:function(i){this.element[j](i)},refresh:function(){return this.element[j]()}}});b.Element.synchronizer.checkbox={update:function(h){this.element.prop("checked",h)},refresh:function(){return this.element.prop("checked")}};b.Element.synchronizer.radio={update:function(h){this.element.filter(function(){return this.value===h}).prop("checked",true)},refresh:function(){return this.element.filter(":checked").val()}};d.support.postMessage=!!window.postMessage;b.Messenger=b.Class.extend({add:function(j,i,h){return this[j]=new b.Value(i,h)},initialize:function(j,h){var i=window.parent==window?null:window.parent;d.extend(this,h||{});this.add("channel",j.channel);this.add("url",j.url||"");this.add("targetWindow",j.targetWindow||i);this.add("origin",this.url()).link(this.url).setter(function(k){return k.replace(/([^:]+:\/\/[^\/]+).*/,"$1")});this.receive=d.proxy(this.receive,this);this.receive.guid=d.guid++;d(window).on("message",this.receive)},destroy:function(){d(window).off("message",this.receive)},receive:function(i){var h;i=i.originalEvent;if(!this.targetWindow()){return}if(this.origin()&&i.origin!==this.origin()){return}h=JSON.parse(i.data);if(!h||!h.id||typeof h.data==="undefined"){return}if((h.channel||this.channel())&&this.channel()!==h.channel){return}this.trigger(h.id,h.data)},send:function(j,i){var h;i=typeof i==="undefined"?null:i;if(!this.url()||!this.targetWindow()){return}h={id:j,data:i};if(this.channel()){h.channel=this.channel()}this.targetWindow().postMessage(JSON.stringify(h),this.origin())}});d.extend(b.Messenger.prototype,b.Events);b=d.extend(new b.Values(),b);b.get=function(){var h={};this.each(function(j,i){h[i]=j.get()});return h};a.customize=b})(wp,jQuery);
\ No newline at end of file
+window.wp = window.wp || {};
+
+(function( exports, $ ){
+       var api, extend, ctor, inherits,
+               slice = Array.prototype.slice;
+
+       /* =====================================================================
+        * Micro-inheritance - thank you, backbone.js.
+        * ===================================================================== */
+
+       extend = function( protoProps, classProps ) {
+               var child = inherits( this, protoProps, classProps );
+               child.extend = this.extend;
+               return child;
+       };
+
+       // Shared empty constructor function to aid in prototype-chain creation.
+       ctor = function() {};
+
+       // Helper function to correctly set up the prototype chain, for subclasses.
+       // Similar to `goog.inherits`, but uses a hash of prototype properties and
+       // class properties to be extended.
+       inherits = function( parent, protoProps, staticProps ) {
+               var child;
+
+               // The constructor function for the new subclass is either defined by you
+               // (the "constructor" property in your `extend` definition), or defaulted
+               // by us to simply call `super()`.
+               if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) {
+                       child = protoProps.constructor;
+               } else {
+                       child = function() {
+                               // Storing the result `super()` before returning the value
+                               // prevents a bug in Opera where, if the constructor returns
+                               // a function, Opera will reject the return value in favor of
+                               // the original object. This causes all sorts of trouble.
+                               var result = parent.apply( this, arguments );
+                               return result;
+                       };
+               }
+
+               // Inherit class (static) properties from parent.
+               $.extend( child, parent );
+
+               // Set the prototype chain to inherit from `parent`, without calling
+               // `parent`'s constructor function.
+               ctor.prototype  = parent.prototype;
+               child.prototype = new ctor();
+
+               // Add prototype properties (instance properties) to the subclass,
+               // if supplied.
+               if ( protoProps )
+                       $.extend( child.prototype, protoProps );
+
+               // Add static properties to the constructor function, if supplied.
+               if ( staticProps )
+                       $.extend( child, staticProps );
+
+               // Correctly set child's `prototype.constructor`.
+               child.prototype.constructor = child;
+
+               // Set a convenience property in case the parent's prototype is needed later.
+               child.__super__ = parent.prototype;
+
+               return child;
+       };
+
+       api = {};
+
+       /* =====================================================================
+        * Base class.
+        * ===================================================================== */
+
+       api.Class = function( applicator, argsArray, options ) {
+               var magic, args = arguments;
+
+               if ( applicator && argsArray && api.Class.applicator === applicator ) {
+                       args = argsArray;
+                       $.extend( this, options || {} );
+               }
+
+               magic = this;
+               if ( this.instance ) {
+                       magic = function() {
+                               return magic.instance.apply( magic, arguments );
+                       };
+
+                       $.extend( magic, this );
+               }
+
+               magic.initialize.apply( magic, args );
+               return magic;
+       };
+
+       api.Class.applicator = {};
+
+       api.Class.prototype.initialize = function() {};
+
+       /*
+        * Checks whether a given instance extended a constructor.
+        *
+        * The magic surrounding the instance parameter causes the instanceof
+        * keyword to return inaccurate results; it defaults to the function's
+        * prototype instead of the constructor chain. Hence this function.
+        */
+       api.Class.prototype.extended = function( constructor ) {
+               var proto = this;
+
+               while ( typeof proto.constructor !== 'undefined' ) {
+                       if ( proto.constructor === constructor )
+                               return true;
+                       if ( typeof proto.constructor.__super__ === 'undefined' )
+                               return false;
+                       proto = proto.constructor.__super__;
+               }
+               return false;
+       };
+
+       api.Class.extend = extend;
+
+       /* =====================================================================
+        * Events mixin.
+        * ===================================================================== */
+
+       api.Events = {
+               trigger: function( id ) {
+                       if ( this.topics && this.topics[ id ] )
+                               this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) );
+                       return this;
+               },
+
+               bind: function( id, callback ) {
+                       this.topics = this.topics || {};
+                       this.topics[ id ] = this.topics[ id ] || $.Callbacks();
+                       this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) );
+                       return this;
+               },
+
+               unbind: function( id, callback ) {
+                       if ( this.topics && this.topics[ id ] )
+                               this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) );
+                       return this;
+               }
+       };
+
+       /* =====================================================================
+        * Observable values that support two-way binding.
+        * ===================================================================== */
+
+       api.Value = api.Class.extend({
+               initialize: function( initial, options ) {
+                       this._value = initial; // @todo: potentially change this to a this.set() call.
+                       this.callbacks = $.Callbacks();
+
+                       $.extend( this, options || {} );
+
+                       this.set = $.proxy( this.set, this );
+               },
+
+               /*
+                * Magic. Returns a function that will become the instance.
+                * Set to null to prevent the instance from extending a function.
+                */
+               instance: function() {
+                       return arguments.length ? this.set.apply( this, arguments ) : this.get();
+               },
+
+               get: function() {
+                       return this._value;
+               },
+
+               set: function( to ) {
+                       var from = this._value;
+
+                       to = this._setter.apply( this, arguments );
+                       to = this.validate( to );
+
+                       // Bail if the sanitized value is null or unchanged.
+                       if ( null === to || this._value === to )
+                               return this;
+
+                       this._value = to;
+
+                       this.callbacks.fireWith( this, [ to, from ] );
+
+                       return this;
+               },
+
+               _setter: function( to ) {
+                       return to;
+               },
+
+               setter: function( callback ) {
+                       var from = this.get();
+                       this._setter = callback;
+                       // Temporarily clear value so setter can decide if it's valid.
+                       this._value = null;
+                       this.set( from );
+                       return this;
+               },
+
+               resetSetter: function() {
+                       this._setter = this.constructor.prototype._setter;
+                       this.set( this.get() );
+                       return this;
+               },
+
+               validate: function( value ) {
+                       return value;
+               },
+
+               bind: function( callback ) {
+                       this.callbacks.add.apply( this.callbacks, arguments );
+                       return this;
+               },
+
+               unbind: function( callback ) {
+                       this.callbacks.remove.apply( this.callbacks, arguments );
+                       return this;
+               },
+
+               link: function() { // values*
+                       var set = this.set;
+                       $.each( arguments, function() {
+                               this.bind( set );
+                       });
+                       return this;
+               },
+
+               unlink: function() { // values*
+                       var set = this.set;
+                       $.each( arguments, function() {
+                               this.unbind( set );
+                       });
+                       return this;
+               },
+
+               sync: function() { // values*
+                       var that = this;
+                       $.each( arguments, function() {
+                               that.link( this );
+                               this.link( that );
+                       });
+                       return this;
+               },
+
+               unsync: function() { // values*
+                       var that = this;
+                       $.each( arguments, function() {
+                               that.unlink( this );
+                               this.unlink( that );
+                       });
+                       return this;
+               }
+       });
+
+       /* =====================================================================
+        * A collection of observable values.
+        * ===================================================================== */
+
+       api.Values = api.Class.extend({
+               defaultConstructor: api.Value,
+
+               initialize: function( options ) {
+                       $.extend( this, options || {} );
+
+                       this._value = {};
+                       this._deferreds = {};
+               },
+
+               instance: function( id ) {
+                       if ( arguments.length === 1 )
+                               return this.value( id );
+
+                       return this.when.apply( this, arguments );
+               },
+
+               value: function( id ) {
+                       return this._value[ id ];
+               },
+
+               has: function( id ) {
+                       return typeof this._value[ id ] !== 'undefined';
+               },
+
+               add: function( id, value ) {
+                       if ( this.has( id ) )
+                               return this.value( id );
+
+                       this._value[ id ] = value;
+                       value.parent = this;
+                       if ( value.extended( api.Value ) )
+                               value.bind( this._change );
+
+                       this.trigger( 'add', value );
+
+                       if ( this._deferreds[ id ] )
+                               this._deferreds[ id ].resolve();
+
+                       return this._value[ id ];
+               },
+
+               create: function( id ) {
+                       return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) );
+               },
+
+               each: function( callback, context ) {
+                       context = typeof context === 'undefined' ? this : context;
+
+                       $.each( this._value, function( key, obj ) {
+                               callback.call( context, obj, key );
+                       });
+               },
+
+               remove: function( id ) {
+                       var value;
+
+                       if ( this.has( id ) ) {
+                               value = this.value( id );
+                               this.trigger( 'remove', value );
+                               if ( value.extended( api.Value ) )
+                                       value.unbind( this._change );
+                               delete value.parent;
+                       }
+
+                       delete this._value[ id ];
+                       delete this._deferreds[ id ];
+               },
+
+               /**
+                * Runs a callback once all requested values exist.
+                *
+                * when( ids*, [callback] );
+                *
+                * For example:
+                *     when( id1, id2, id3, function( value1, value2, value3 ) {} );
+                *
+                * @returns $.Deferred.promise();
+                */
+               when: function() {
+                       var self = this,
+                               ids  = slice.call( arguments ),
+                               dfd  = $.Deferred();
+
+                       // If the last argument is a callback, bind it to .done()
+                       if ( $.isFunction( ids[ ids.length - 1 ] ) )
+                               dfd.done( ids.pop() );
+
+                       $.when.apply( $, $.map( ids, function( id ) {
+                               if ( self.has( id ) )
+                                       return;
+
+                               return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred();
+                       })).done( function() {
+                               var values = $.map( ids, function( id ) {
+                                               return self( id );
+                                       });
+
+                               // If a value is missing, we've used at least one expired deferred.
+                               // Call Values.when again to generate a new deferred.
+                               if ( values.length !== ids.length ) {
+                                       // ids.push( callback );
+                                       self.when.apply( self, ids ).done( function() {
+                                               dfd.resolveWith( self, values );
+                                       });
+                                       return;
+                               }
+
+                               dfd.resolveWith( self, values );
+                       });
+
+                       return dfd.promise();
+               },
+
+               _change: function() {
+                       this.parent.trigger( 'change', this );
+               }
+       });
+
+       $.extend( api.Values.prototype, api.Events );
+
+       /* =====================================================================
+        * An observable value that syncs with an element.
+        *
+        * Handles inputs, selects, and textareas by default.
+        * ===================================================================== */
+
+       api.ensure = function( element ) {
+               return typeof element == 'string' ? $( element ) : element;
+       };
+
+       api.Element = api.Value.extend({
+               initialize: function( element, options ) {
+                       var self = this,
+                               synchronizer = api.Element.synchronizer.html,
+                               type, update, refresh;
+
+                       this.element = api.ensure( element );
+                       this.events = '';
+
+                       if ( this.element.is('input, select, textarea') ) {
+                               this.events += 'change';
+                               synchronizer = api.Element.synchronizer.val;
+
+                               if ( this.element.is('input') ) {
+                                       type = this.element.prop('type');
+                                       if ( api.Element.synchronizer[ type ] )
+                                               synchronizer = api.Element.synchronizer[ type ];
+                                       if ( 'text' === type || 'password' === type )
+                                               this.events += ' keyup';
+                               } else if ( this.element.is('textarea') ) {
+                                       this.events += ' keyup';
+                               }
+                       }
+
+                       api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) );
+                       this._value = this.get();
+
+                       update  = this.update;
+                       refresh = this.refresh;
+
+                       this.update = function( to ) {
+                               if ( to !== refresh.call( self ) )
+                                       update.apply( this, arguments );
+                       };
+                       this.refresh = function() {
+                               self.set( refresh.call( self ) );
+                       };
+
+                       this.bind( this.update );
+                       this.element.bind( this.events, this.refresh );
+               },
+
+               find: function( selector ) {
+                       return $( selector, this.element );
+               },
+
+               refresh: function() {},
+
+               update: function() {}
+       });
+
+       api.Element.synchronizer = {};
+
+       $.each( [ 'html', 'val' ], function( i, method ) {
+               api.Element.synchronizer[ method ] = {
+                       update: function( to ) {
+                               this.element[ method ]( to );
+                       },
+                       refresh: function() {
+                               return this.element[ method ]();
+                       }
+               };
+       });
+
+       api.Element.synchronizer.checkbox = {
+               update: function( to ) {
+                       this.element.prop( 'checked', to );
+               },
+               refresh: function() {
+                       return this.element.prop( 'checked' );
+               }
+       };
+
+       api.Element.synchronizer.radio = {
+               update: function( to ) {
+                       this.element.filter( function() {
+                               return this.value === to;
+                       }).prop( 'checked', true );
+               },
+               refresh: function() {
+                       return this.element.filter( ':checked' ).val();
+               }
+       };
+
+       /* =====================================================================
+        * Messenger for postMessage.
+        * ===================================================================== */
+
+       $.support.postMessage = !! window.postMessage;
+
+       api.Messenger = api.Class.extend({
+               add: function( key, initial, options ) {
+                       return this[ key ] = new api.Value( initial, options );
+               },
+
+               /**
+                * Initialize Messenger.
+                *
+                * @param  {object} params        Parameters to configure the messenger.
+                *         {string} .url          The URL to communicate with.
+                *         {window} .targetWindow The window instance to communicate with. Default window.parent.
+                *         {string} .channel      If provided, will send the channel with each message and only accept messages a matching channel.
+                * @param  {object} options       Extend any instance parameter or method with this object.
+                */
+               initialize: function( params, options ) {
+                       // Target the parent frame by default, but only if a parent frame exists.
+                       var defaultTarget = window.parent == window ? null : window.parent;
+
+                       $.extend( this, options || {} );
+
+                       this.add( 'channel', params.channel );
+                       this.add( 'url', params.url || '' );
+                       this.add( 'targetWindow', params.targetWindow || defaultTarget );
+                       this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) {
+                               return to.replace( /([^:]+:\/\/[^\/]+).*/, '$1' );
+                       });
+
+                       // Since we want jQuery to treat the receive function as unique
+                       // to this instance, we give the function a new guid.
+                       //
+                       // This will prevent every Messenger's receive function from being
+                       // unbound when calling $.off( 'message', this.receive );
+                       this.receive = $.proxy( this.receive, this );
+                       this.receive.guid = $.guid++;
+
+                       $( window ).on( 'message', this.receive );
+               },
+
+               destroy: function() {
+                       $( window ).off( 'message', this.receive );
+               },
+
+               receive: function( event ) {
+                       var message;
+
+                       event = event.originalEvent;
+
+                       if ( ! this.targetWindow() )
+                               return;
+
+                       // Check to make sure the origin is valid.
+                       if ( this.origin() && event.origin !== this.origin() )
+                               return;
+
+                       message = JSON.parse( event.data );
+
+                       // Check required message properties.
+                       if ( ! message || ! message.id || typeof message.data === 'undefined' )
+                               return;
+
+                       // Check if channel names match.
+                       if ( ( message.channel || this.channel() ) && this.channel() !== message.channel )
+                               return;
+
+                       this.trigger( message.id, message.data );
+               },
+
+               send: function( id, data ) {
+                       var message;
+
+                       data = typeof data === 'undefined' ? null : data;
+
+                       if ( ! this.url() || ! this.targetWindow() )
+                               return;
+
+                       message = { id: id, data: data };
+                       if ( this.channel() )
+                               message.channel = this.channel();
+
+                       this.targetWindow().postMessage( JSON.stringify( message ), this.origin() );
+               }
+       });
+
+       // Add the Events mixin to api.Messenger.
+       $.extend( api.Messenger.prototype, api.Events );
+
+       /* =====================================================================
+        * Core customize object.
+        * ===================================================================== */
+
+       api = $.extend( new api.Values(), api );
+       api.get = function() {
+               var result = {};
+
+               this.each( function( obj, key ) {
+                       result[ key ] = obj.get();
+               });
+
+               return result;
+       };
+
+       // Expose the API to the world.
+       exports.customize = api;
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-base.min.js b/wp-includes/js/customize-base.min.js
new file mode 100644 (file)
index 0000000..445d72c
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(a,d){var b,g,c,f,e=Array.prototype.slice;g=function(h,i){var j=f(this,h,i);j.extend=this.extend;return j};c=function(){};f=function(i,h,j){var k;if(h&&h.hasOwnProperty("constructor")){k=h.constructor}else{k=function(){var l=i.apply(this,arguments);return l}}d.extend(k,i);c.prototype=i.prototype;k.prototype=new c();if(h){d.extend(k.prototype,h)}if(j){d.extend(k,j)}k.prototype.constructor=k;k.__super__=i.prototype;return k};b={};b.Class=function(l,k,i){var j,h=arguments;if(l&&k&&b.Class.applicator===l){h=k;d.extend(this,i||{})}j=this;if(this.instance){j=function(){return j.instance.apply(j,arguments)};d.extend(j,this)}j.initialize.apply(j,h);return j};b.Class.applicator={};b.Class.prototype.initialize=function(){};b.Class.prototype.extended=function(h){var i=this;while(typeof i.constructor!=="undefined"){if(i.constructor===h){return true}if(typeof i.constructor.__super__==="undefined"){return false}i=i.constructor.__super__}return false};b.Class.extend=g;b.Events={trigger:function(h){if(this.topics&&this.topics[h]){this.topics[h].fireWith(this,e.call(arguments,1))}return this},bind:function(i,h){this.topics=this.topics||{};this.topics[i]=this.topics[i]||d.Callbacks();this.topics[i].add.apply(this.topics[i],e.call(arguments,1));return this},unbind:function(i,h){if(this.topics&&this.topics[i]){this.topics[i].remove.apply(this.topics[i],e.call(arguments,1))}return this}};b.Value=b.Class.extend({initialize:function(i,h){this._value=i;this.callbacks=d.Callbacks();d.extend(this,h||{});this.set=d.proxy(this.set,this)},instance:function(){return arguments.length?this.set.apply(this,arguments):this.get()},get:function(){return this._value},set:function(i){var h=this._value;i=this._setter.apply(this,arguments);i=this.validate(i);if(null===i||this._value===i){return this}this._value=i;this.callbacks.fireWith(this,[i,h]);return this},_setter:function(h){return h},setter:function(i){var h=this.get();this._setter=i;this._value=null;this.set(h);return this},resetSetter:function(){this._setter=this.constructor.prototype._setter;this.set(this.get());return this},validate:function(h){return h},bind:function(h){this.callbacks.add.apply(this.callbacks,arguments);return this},unbind:function(h){this.callbacks.remove.apply(this.callbacks,arguments);return this},link:function(){var h=this.set;d.each(arguments,function(){this.bind(h)});return this},unlink:function(){var h=this.set;d.each(arguments,function(){this.unbind(h)});return this},sync:function(){var h=this;d.each(arguments,function(){h.link(this);this.link(h)});return this},unsync:function(){var h=this;d.each(arguments,function(){h.unlink(this);this.unlink(h)});return this}});b.Values=b.Class.extend({defaultConstructor:b.Value,initialize:function(h){d.extend(this,h||{});this._value={};this._deferreds={}},instance:function(h){if(arguments.length===1){return this.value(h)}return this.when.apply(this,arguments)},value:function(h){return this._value[h]},has:function(h){return typeof this._value[h]!=="undefined"},add:function(i,h){if(this.has(i)){return this.value(i)}this._value[i]=h;h.parent=this;if(h.extended(b.Value)){h.bind(this._change)}this.trigger("add",h);if(this._deferreds[i]){this._deferreds[i].resolve()}return this._value[i]},create:function(h){return this.add(h,new this.defaultConstructor(b.Class.applicator,e.call(arguments,1)))},each:function(i,h){h=typeof h==="undefined"?this:h;d.each(this._value,function(j,k){i.call(h,k,j)})},remove:function(i){var h;if(this.has(i)){h=this.value(i);this.trigger("remove",h);if(h.extended(b.Value)){h.unbind(this._change)}delete h.parent}delete this._value[i];delete this._deferreds[i]},when:function(){var i=this,j=e.call(arguments),h=d.Deferred();if(d.isFunction(j[j.length-1])){h.done(j.pop())}d.when.apply(d,d.map(j,function(k){if(i.has(k)){return}return i._deferreds[k]=i._deferreds[k]||d.Deferred()})).done(function(){var k=d.map(j,function(l){return i(l)});if(k.length!==j.length){i.when.apply(i,j).done(function(){h.resolveWith(i,k)});return}h.resolveWith(i,k)});return h.promise()},_change:function(){this.parent.trigger("change",this)}});d.extend(b.Values.prototype,b.Events);b.ensure=function(h){return typeof h=="string"?d(h):h};b.Element=b.Value.extend({initialize:function(j,i){var h=this,m=b.Element.synchronizer.html,l,n,k;this.element=b.ensure(j);this.events="";if(this.element.is("input, select, textarea")){this.events+="change";m=b.Element.synchronizer.val;if(this.element.is("input")){l=this.element.prop("type");if(b.Element.synchronizer[l]){m=b.Element.synchronizer[l]}if("text"===l||"password"===l){this.events+=" keyup"}}else{if(this.element.is("textarea")){this.events+=" keyup"}}}b.Value.prototype.initialize.call(this,null,d.extend(i||{},m));this._value=this.get();n=this.update;k=this.refresh;this.update=function(o){if(o!==k.call(h)){n.apply(this,arguments)}};this.refresh=function(){h.set(k.call(h))};this.bind(this.update);this.element.bind(this.events,this.refresh)},find:function(h){return d(h,this.element)},refresh:function(){},update:function(){}});b.Element.synchronizer={};d.each(["html","val"],function(h,j){b.Element.synchronizer[j]={update:function(i){this.element[j](i)},refresh:function(){return this.element[j]()}}});b.Element.synchronizer.checkbox={update:function(h){this.element.prop("checked",h)},refresh:function(){return this.element.prop("checked")}};b.Element.synchronizer.radio={update:function(h){this.element.filter(function(){return this.value===h}).prop("checked",true)},refresh:function(){return this.element.filter(":checked").val()}};d.support.postMessage=!!window.postMessage;b.Messenger=b.Class.extend({add:function(j,i,h){return this[j]=new b.Value(i,h)},initialize:function(j,h){var i=window.parent==window?null:window.parent;d.extend(this,h||{});this.add("channel",j.channel);this.add("url",j.url||"");this.add("targetWindow",j.targetWindow||i);this.add("origin",this.url()).link(this.url).setter(function(k){return k.replace(/([^:]+:\/\/[^\/]+).*/,"$1")});this.receive=d.proxy(this.receive,this);this.receive.guid=d.guid++;d(window).on("message",this.receive)},destroy:function(){d(window).off("message",this.receive)},receive:function(i){var h;i=i.originalEvent;if(!this.targetWindow()){return}if(this.origin()&&i.origin!==this.origin()){return}h=JSON.parse(i.data);if(!h||!h.id||typeof h.data==="undefined"){return}if((h.channel||this.channel())&&this.channel()!==h.channel){return}this.trigger(h.id,h.data)},send:function(j,i){var h;i=typeof i==="undefined"?null:i;if(!this.url()||!this.targetWindow()){return}h={id:j,data:i};if(this.channel()){h.channel=this.channel()}this.targetWindow().postMessage(JSON.stringify(h),this.origin())}});d.extend(b.Messenger.prototype,b.Events);b=d.extend(new b.Values(),b);b.get=function(){var h={};this.each(function(j,i){h[i]=j.get()});return h};a.customize=b})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/customize-loader.dev.js b/wp-includes/js/customize-loader.dev.js
deleted file mode 100644 (file)
index 01cec6a..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-if ( typeof wp === 'undefined' )
-       var wp = {};
-
-(function( exports, $ ){
-       var api = wp.customize,
-               Loader;
-
-       $.extend( $.support, {
-               history: !! ( window.history && history.pushState ),
-               hashchange: ('onhashchange' in window) && (document.documentMode === undefined || document.documentMode > 7)
-       });
-
-       Loader = $.extend( {}, api.Events, {
-               initialize: function() {
-                       this.body = $( document.body );
-
-                       // Ensure the loader is supported.
-                       // Check for settings, postMessage support, and whether we require CORS support.
-                       if ( ! Loader.settings || ! $.support.postMessage || ( ! $.support.cors && Loader.settings.isCrossDomain ) ) {
-                               return;
-                       }
-
-                       this.window  = $( window );
-                       this.element = $( '<div id="customize-container" />' ).appendTo( this.body );
-
-                       this.bind( 'open', this.overlay.show );
-                       this.bind( 'close', this.overlay.hide );
-
-                       $('#wpbody').on( 'click', '.load-customize', function( event ) {
-                               event.preventDefault();
-
-                               // Load the theme.
-                               Loader.open( $(this).attr('href') );
-                       });
-
-                       // Add navigation listeners.
-                       if ( $.support.history )
-                               this.window.on( 'popstate', Loader.popstate );
-
-                       if ( $.support.hashchange ) {
-                               this.window.on( 'hashchange', Loader.hashchange );
-                               this.window.triggerHandler( 'hashchange' );
-                       }
-               },
-
-               popstate: function( e ) {
-                       var state = e.originalEvent.state;
-                       if ( state && state.customize )
-                               Loader.open( state.customize );
-                       else if ( Loader.active )
-                               Loader.close();
-               },
-
-               hashchange: function( e ) {
-                       var hash = window.location.toString().split('#')[1];
-
-                       if ( hash && 0 === hash.indexOf( 'wp_customize=on' ) )
-                               Loader.open( Loader.settings.url + '?' + hash );
-
-                       if ( ! hash && ! $.support.history )
-                               Loader.close();
-               },
-
-               open: function( src ) {
-                       var hash;
-
-                       if ( this.active )
-                               return;
-
-                       // Load the full page on mobile devices.
-                       if ( Loader.settings.browser.mobile )
-                               return window.location = src;
-
-                       this.active = true;
-                       this.body.addClass('customize-loading');
-
-                       this.iframe = $( '<iframe />', { src: src }).appendTo( this.element );
-                       this.iframe.one( 'load', this.loaded );
-
-                       // Create a postMessage connection with the iframe.
-                       this.messenger = new api.Messenger({
-                               url: src,
-                               channel: 'loader',
-                               targetWindow: this.iframe[0].contentWindow
-                       });
-
-                       // Wait for the connection from the iframe before sending any postMessage events.
-                       this.messenger.bind( 'ready', function() {
-                               Loader.messenger.send( 'back' );
-                       });
-
-                       this.messenger.bind( 'close', function() {
-                               if ( $.support.history )
-                                       history.back();
-                               else if ( $.support.hashchange )
-                                       window.location.hash = '';
-                               else
-                                       Loader.close();
-                       });
-
-                       this.messenger.bind( 'activated', function( location ) {
-                               if ( location )
-                                       window.location = location;
-                       });
-
-                       hash = src.split('?')[1];
-
-                       // Ensure we don't call pushState if the user hit the forward button.
-                       if ( $.support.history && window.location.href !== src )
-                               history.pushState( { customize: src }, '', src );
-                       else if ( ! $.support.history && $.support.hashchange && hash )
-                               window.location.hash = 'wp_customize=on&' + hash;
-
-                       this.trigger( 'open' );
-               },
-
-               opened: function() {
-                       Loader.body.addClass( 'customize-active full-overlay-active' );
-               },
-
-               close: function() {
-                       if ( ! this.active )
-                               return;
-                       this.active = false;
-
-                       this.trigger( 'close' );
-               },
-
-               closed: function() {
-                       Loader.iframe.remove();
-                       Loader.messenger.destroy();
-                       Loader.iframe    = null;
-                       Loader.messenger = null;
-                       Loader.body.removeClass( 'customize-active full-overlay-active' ).removeClass( 'customize-loading' );
-               },
-
-               loaded: function() {
-                       Loader.body.removeClass('customize-loading');
-               },
-
-               overlay: {
-                       show: function() {
-                               this.element.fadeIn( 200, Loader.opened );
-                       },
-
-                       hide: function() {
-                               this.element.fadeOut( 200, Loader.closed );
-                       }
-               }
-       });
-
-       $( function() {
-               Loader.settings = _wpCustomizeLoaderSettings;
-               Loader.initialize();
-       });
-
-       // Expose the API to the world.
-       api.Loader = Loader;
-})( wp, jQuery );
index 4c7e0853b5d95022837b754c3fbf87668170cd66..2ecbbe0fbf9e18ec4d93d20f313ffb27e38d0bfc 100644 (file)
@@ -1 +1,164 @@
-if(typeof wp==="undefined"){var wp={}}(function(a,c){var b=wp.customize,d;c.extend(c.support,{history:!!(window.history&&history.pushState),hashchange:("onhashchange" in window)&&(document.documentMode===undefined||document.documentMode>7)});d=c.extend({},b.Events,{initialize:function(){this.body=c(document.body);if(!d.settings||!c.support.postMessage||(!c.support.cors&&d.settings.isCrossDomain)){return}this.window=c(window);this.element=c('<div id="customize-container" />').appendTo(this.body);this.bind("open",this.overlay.show);this.bind("close",this.overlay.hide);c("#wpbody").on("click",".load-customize",function(e){e.preventDefault();d.open(c(this).attr("href"))});if(c.support.history){this.window.on("popstate",d.popstate)}if(c.support.hashchange){this.window.on("hashchange",d.hashchange);this.window.triggerHandler("hashchange")}},popstate:function(g){var f=g.originalEvent.state;if(f&&f.customize){d.open(f.customize)}else{if(d.active){d.close()}}},hashchange:function(g){var f=window.location.toString().split("#")[1];if(f&&0===f.indexOf("wp_customize=on")){d.open(d.settings.url+"?"+f)}if(!f&&!c.support.history){d.close()}},open:function(f){var e;if(this.active){return}if(d.settings.browser.mobile){return window.location=f}this.active=true;this.body.addClass("customize-loading");this.iframe=c("<iframe />",{src:f}).appendTo(this.element);this.iframe.one("load",this.loaded);this.messenger=new b.Messenger({url:f,channel:"loader",targetWindow:this.iframe[0].contentWindow});this.messenger.bind("ready",function(){d.messenger.send("back")});this.messenger.bind("close",function(){if(c.support.history){history.back()}else{if(c.support.hashchange){window.location.hash=""}else{d.close()}}});this.messenger.bind("activated",function(g){if(g){window.location=g}});e=f.split("?")[1];if(c.support.history&&window.location.href!==f){history.pushState({customize:f},"",f)}else{if(!c.support.history&&c.support.hashchange&&e){window.location.hash="wp_customize=on&"+e}}this.trigger("open")},opened:function(){d.body.addClass("customize-active full-overlay-active")},close:function(){if(!this.active){return}this.active=false;this.trigger("close")},closed:function(){d.iframe.remove();d.messenger.destroy();d.iframe=null;d.messenger=null;d.body.removeClass("customize-active full-overlay-active").removeClass("customize-loading")},loaded:function(){d.body.removeClass("customize-loading")},overlay:{show:function(){this.element.fadeIn(200,d.opened)},hide:function(){this.element.fadeOut(200,d.closed)}}});c(function(){d.settings=_wpCustomizeLoaderSettings;d.initialize()});b.Loader=d})(wp,jQuery);
\ No newline at end of file
+window.wp = window.wp || {};
+
+(function( exports, $ ){
+       var api = wp.customize,
+               Loader;
+
+       $.extend( $.support, {
+               history: !! ( window.history && history.pushState ),
+               hashchange: ('onhashchange' in window) && (document.documentMode === undefined || document.documentMode > 7)
+       });
+
+       Loader = $.extend( {}, api.Events, {
+               initialize: function() {
+                       this.body = $( document.body );
+
+                       // Ensure the loader is supported.
+                       // Check for settings, postMessage support, and whether we require CORS support.
+                       if ( ! Loader.settings || ! $.support.postMessage || ( ! $.support.cors && Loader.settings.isCrossDomain ) ) {
+                               return;
+                       }
+
+                       this.window  = $( window );
+                       this.element = $( '<div id="customize-container" />' ).appendTo( this.body );
+
+                       this.bind( 'open', this.overlay.show );
+                       this.bind( 'close', this.overlay.hide );
+
+                       $('#wpbody').on( 'click', '.load-customize', function( event ) {
+                               event.preventDefault();
+
+                               // Store a reference to the link that opened the customizer.
+                               Loader.link = $(this);
+                               // Load the theme.
+                               Loader.open( Loader.link.attr('href') );
+                       });
+
+                       // Add navigation listeners.
+                       if ( $.support.history )
+                               this.window.on( 'popstate', Loader.popstate );
+
+                       if ( $.support.hashchange ) {
+                               this.window.on( 'hashchange', Loader.hashchange );
+                               this.window.triggerHandler( 'hashchange' );
+                       }
+               },
+
+               popstate: function( e ) {
+                       var state = e.originalEvent.state;
+                       if ( state && state.customize )
+                               Loader.open( state.customize );
+                       else if ( Loader.active )
+                               Loader.close();
+               },
+
+               hashchange: function( e ) {
+                       var hash = window.location.toString().split('#')[1];
+
+                       if ( hash && 0 === hash.indexOf( 'wp_customize=on' ) )
+                               Loader.open( Loader.settings.url + '?' + hash );
+
+                       if ( ! hash && ! $.support.history )
+                               Loader.close();
+               },
+
+               open: function( src ) {
+                       var hash;
+
+                       if ( this.active )
+                               return;
+
+                       // Load the full page on mobile devices.
+                       if ( Loader.settings.browser.mobile )
+                               return window.location = src;
+
+                       this.active = true;
+                       this.body.addClass('customize-loading');
+
+                       this.iframe = $( '<iframe />', { src: src }).appendTo( this.element );
+                       this.iframe.one( 'load', this.loaded );
+
+                       // Create a postMessage connection with the iframe.
+                       this.messenger = new api.Messenger({
+                               url: src,
+                               channel: 'loader',
+                               targetWindow: this.iframe[0].contentWindow
+                       });
+
+                       // Wait for the connection from the iframe before sending any postMessage events.
+                       this.messenger.bind( 'ready', function() {
+                               Loader.messenger.send( 'back' );
+                       });
+
+                       this.messenger.bind( 'close', function() {
+                               if ( $.support.history )
+                                       history.back();
+                               else if ( $.support.hashchange )
+                                       window.location.hash = '';
+                               else
+                                       Loader.close();
+                       });
+
+                       this.messenger.bind( 'activated', function( location ) {
+                               if ( location )
+                                       window.location = location;
+                       });
+
+                       hash = src.split('?')[1];
+
+                       // Ensure we don't call pushState if the user hit the forward button.
+                       if ( $.support.history && window.location.href !== src )
+                               history.pushState( { customize: src }, '', src );
+                       else if ( ! $.support.history && $.support.hashchange && hash )
+                               window.location.hash = 'wp_customize=on&' + hash;
+
+                       this.trigger( 'open' );
+               },
+
+               opened: function() {
+                       Loader.body.addClass( 'customize-active full-overlay-active' );
+               },
+
+               close: function() {
+                       if ( ! this.active )
+                               return;
+                       this.active = false;
+
+                       this.trigger( 'close' );
+
+                       // Return focus to link that was originally clicked.
+                       if ( this.link )
+                               this.link.focus();
+               },
+
+               closed: function() {
+                       Loader.iframe.remove();
+                       Loader.messenger.destroy();
+                       Loader.iframe    = null;
+                       Loader.messenger = null;
+                       Loader.body.removeClass( 'customize-active full-overlay-active' ).removeClass( 'customize-loading' );
+               },
+
+               loaded: function() {
+                       Loader.body.removeClass('customize-loading');
+               },
+
+               overlay: {
+                       show: function() {
+                               this.element.fadeIn( 200, Loader.opened );
+                       },
+
+                       hide: function() {
+                               this.element.fadeOut( 200, Loader.closed );
+                       }
+               }
+       });
+
+       $( function() {
+               Loader.settings = _wpCustomizeLoaderSettings;
+               Loader.initialize();
+       });
+
+       // Expose the API to the world.
+       api.Loader = Loader;
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-loader.min.js b/wp-includes/js/customize-loader.min.js
new file mode 100644 (file)
index 0000000..af55afc
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(a,c){var b=wp.customize,d;c.extend(c.support,{history:!!(window.history&&history.pushState),hashchange:("onhashchange" in window)&&(document.documentMode===undefined||document.documentMode>7)});d=c.extend({},b.Events,{initialize:function(){this.body=c(document.body);if(!d.settings||!c.support.postMessage||(!c.support.cors&&d.settings.isCrossDomain)){return}this.window=c(window);this.element=c('<div id="customize-container" />').appendTo(this.body);this.bind("open",this.overlay.show);this.bind("close",this.overlay.hide);c("#wpbody").on("click",".load-customize",function(e){e.preventDefault();d.link=c(this);d.open(d.link.attr("href"))});if(c.support.history){this.window.on("popstate",d.popstate)}if(c.support.hashchange){this.window.on("hashchange",d.hashchange);this.window.triggerHandler("hashchange")}},popstate:function(g){var f=g.originalEvent.state;if(f&&f.customize){d.open(f.customize)}else{if(d.active){d.close()}}},hashchange:function(g){var f=window.location.toString().split("#")[1];if(f&&0===f.indexOf("wp_customize=on")){d.open(d.settings.url+"?"+f)}if(!f&&!c.support.history){d.close()}},open:function(f){var e;if(this.active){return}if(d.settings.browser.mobile){return window.location=f}this.active=true;this.body.addClass("customize-loading");this.iframe=c("<iframe />",{src:f}).appendTo(this.element);this.iframe.one("load",this.loaded);this.messenger=new b.Messenger({url:f,channel:"loader",targetWindow:this.iframe[0].contentWindow});this.messenger.bind("ready",function(){d.messenger.send("back")});this.messenger.bind("close",function(){if(c.support.history){history.back()}else{if(c.support.hashchange){window.location.hash=""}else{d.close()}}});this.messenger.bind("activated",function(g){if(g){window.location=g}});e=f.split("?")[1];if(c.support.history&&window.location.href!==f){history.pushState({customize:f},"",f)}else{if(!c.support.history&&c.support.hashchange&&e){window.location.hash="wp_customize=on&"+e}}this.trigger("open")},opened:function(){d.body.addClass("customize-active full-overlay-active")},close:function(){if(!this.active){return}this.active=false;this.trigger("close");if(this.link){this.link.focus()}},closed:function(){d.iframe.remove();d.messenger.destroy();d.iframe=null;d.messenger=null;d.body.removeClass("customize-active full-overlay-active").removeClass("customize-loading")},loaded:function(){d.body.removeClass("customize-loading")},overlay:{show:function(){this.element.fadeIn(200,d.opened)},hide:function(){this.element.fadeOut(200,d.closed)}}});c(function(){d.settings=_wpCustomizeLoaderSettings;d.initialize()});b.Loader=d})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/customize-preview.dev.js b/wp-includes/js/customize-preview.dev.js
deleted file mode 100644 (file)
index 9caa6b6..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-(function( exports, $ ){
-       var api = wp.customize,
-               debounce;
-
-       debounce = function( fn, delay, context ) {
-               var timeout;
-               return function() {
-                       var args = arguments;
-
-                       context = context || this;
-
-                       clearTimeout( timeout );
-                       timeout = setTimeout( function() {
-                               timeout = null;
-                               fn.apply( context, args );
-                       }, delay );
-               };
-       };
-
-       api.Preview = api.Messenger.extend({
-               /**
-                * Requires params:
-                *  - url    - the URL of preview frame
-                */
-               initialize: function( params, options ) {
-                       var self = this;
-
-                       api.Messenger.prototype.initialize.call( this, params, options );
-
-                       this.body = $( document.body );
-                       this.body.on( 'click.preview', 'a', function( event ) {
-                               event.preventDefault();
-                               self.send( 'scroll', 0 );
-                               self.send( 'url', $(this).prop('href') );
-                       });
-
-                       // You cannot submit forms.
-                       // @todo: Allow form submissions by mixing $_POST data with the customize setting $_POST data.
-                       this.body.on( 'submit.preview', 'form', function( event ) {
-                               event.preventDefault();
-                       });
-
-                       this.window = $( window );
-                       this.window.on( 'scroll.preview', debounce( function() {
-                               self.send( 'scroll', self.window.scrollTop() );
-                       }, 200 ));
-
-                       this.bind( 'scroll', function( distance ) {
-                               self.window.scrollTop( distance );
-                       });
-               }
-       });
-
-       $( function() {
-               api.settings = window._wpCustomizeSettings;
-               if ( ! api.settings )
-                       return;
-
-               var preview, bg;
-
-               preview = new api.Preview({
-                       url: window.location.href,
-                       channel: api.settings.channel
-               });
-
-               preview.bind( 'settings', function( values ) {
-                       $.each( values, function( id, value ) {
-                               if ( api.has( id ) )
-                                       api( id ).set( value );
-                               else
-                                       api.create( id, value );
-                       });
-               });
-
-               preview.trigger( 'settings', api.settings.values );
-
-               preview.bind( 'setting', function( args ) {
-                       var value;
-
-                       args = args.slice();
-
-                       if ( value = api( args.shift() ) )
-                               value.set.apply( value, args );
-               });
-
-               preview.bind( 'sync', function( events ) {
-                       $.each( events, function( event, args ) {
-                               preview.trigger( event, args );
-                       });
-                       preview.send( 'synced' );
-               });
-
-               preview.bind( 'active', function() {
-                       if ( api.settings.nonce )
-                               preview.send( 'nonce', api.settings.nonce );
-               });
-
-               preview.send( 'ready' );
-
-               /* Custom Backgrounds */
-               bg = $.map(['color', 'image', 'position_x', 'repeat', 'attachment'], function( prop ) {
-                       return 'background_' + prop;
-               });
-
-               api.when.apply( api, bg ).done( function( color, image, position_x, repeat, attachment ) {
-                       var body = $(document.body),
-                               head = $('head'),
-                               style = $('#custom-background-css'),
-                               update;
-
-                       // If custom backgrounds are active and we can't find the
-                       // default output, bail.
-                       if ( body.hasClass('custom-background') && ! style.length )
-                               return;
-
-                       update = function() {
-                               var css = '';
-
-                               // The body will support custom backgrounds if either
-                               // the color or image are set.
-                               //
-                               // See get_body_class() in /wp-includes/post-template.php
-                               body.toggleClass( 'custom-background', !! ( color() || image() ) );
-
-                               if ( color() )
-                                       css += 'background-color: ' + color() + ';';
-
-                               if ( image() ) {
-                                       css += 'background-image: url("' + image() + '");';
-                                       css += 'background-position: top ' + position_x() + ';';
-                                       css += 'background-repeat: ' + repeat() + ';';
-                                       css += 'background-position: top ' + attachment() + ';';
-                               }
-
-                               // Refresh the stylesheet by removing and recreating it.
-                               style.remove();
-                               style = $('<style type="text/css" id="custom-background-css">body.custom-background { ' + css + ' }</style>').appendTo( head );
-                       };
-
-                       $.each( arguments, function() {
-                               this.bind( update );
-                       });
-               });
-       });
-
-})( wp, jQuery );
index 1efd80bbd3dfcd9ec7ba1e7322ba1c5f7210939f..caefe653a9f4bd04e8581f5e79ec5acc8c7ca684 100644 (file)
@@ -1 +1,146 @@
-(function(b,d){var c=wp.customize,a;a=function(g,e,f){var h;return function(){var i=arguments;f=f||this;clearTimeout(h);h=setTimeout(function(){h=null;g.apply(f,i)},e)}};c.Preview=c.Messenger.extend({initialize:function(g,f){var e=this;c.Messenger.prototype.initialize.call(this,g,f);this.body=d(document.body);this.body.on("click.preview","a",function(h){h.preventDefault();e.send("scroll",0);e.send("url",d(this).prop("href"))});this.body.on("submit.preview","form",function(h){h.preventDefault()});this.window=d(window);this.window.on("scroll.preview",a(function(){e.send("scroll",e.window.scrollTop())},200));this.bind("scroll",function(h){e.window.scrollTop(h)})}});d(function(){c.settings=window._wpCustomizeSettings;if(!c.settings){return}var f,e;f=new c.Preview({url:window.location.href,channel:c.settings.channel});f.bind("settings",function(g){d.each(g,function(i,h){if(c.has(i)){c(i).set(h)}else{c.create(i,h)}})});f.trigger("settings",c.settings.values);f.bind("setting",function(g){var h;g=g.slice();if(h=c(g.shift())){h.set.apply(h,g)}});f.bind("sync",function(g){d.each(g,function(i,h){f.trigger(i,h)});f.send("synced")});f.bind("active",function(){if(c.settings.nonce){f.send("nonce",c.settings.nonce)}});f.send("ready");e=d.map(["color","image","position_x","repeat","attachment"],function(g){return"background_"+g});c.when.apply(c,e).done(function(j,i,m,h,l){var n=d(document.body),o=d("head"),g=d("#custom-background-css"),k;if(n.hasClass("custom-background")&&!g.length){return}k=function(){var p="";n.toggleClass("custom-background",!!(j()||i()));if(j()){p+="background-color: "+j()+";"}if(i()){p+='background-image: url("'+i()+'");';p+="background-position: top "+m()+";";p+="background-repeat: "+h()+";";p+="background-position: top "+l()+";"}g.remove();g=d('<style type="text/css" id="custom-background-css">body.custom-background { '+p+" }</style>").appendTo(o)};d.each(arguments,function(){this.bind(k)})})})})(wp,jQuery);
\ No newline at end of file
+(function( exports, $ ){
+       var api = wp.customize,
+               debounce;
+
+       debounce = function( fn, delay, context ) {
+               var timeout;
+               return function() {
+                       var args = arguments;
+
+                       context = context || this;
+
+                       clearTimeout( timeout );
+                       timeout = setTimeout( function() {
+                               timeout = null;
+                               fn.apply( context, args );
+                       }, delay );
+               };
+       };
+
+       api.Preview = api.Messenger.extend({
+               /**
+                * Requires params:
+                *  - url    - the URL of preview frame
+                */
+               initialize: function( params, options ) {
+                       var self = this;
+
+                       api.Messenger.prototype.initialize.call( this, params, options );
+
+                       this.body = $( document.body );
+                       this.body.on( 'click.preview', 'a', function( event ) {
+                               event.preventDefault();
+                               self.send( 'scroll', 0 );
+                               self.send( 'url', $(this).prop('href') );
+                       });
+
+                       // You cannot submit forms.
+                       // @todo: Allow form submissions by mixing $_POST data with the customize setting $_POST data.
+                       this.body.on( 'submit.preview', 'form', function( event ) {
+                               event.preventDefault();
+                       });
+
+                       this.window = $( window );
+                       this.window.on( 'scroll.preview', debounce( function() {
+                               self.send( 'scroll', self.window.scrollTop() );
+                       }, 200 ));
+
+                       this.bind( 'scroll', function( distance ) {
+                               self.window.scrollTop( distance );
+                       });
+               }
+       });
+
+       $( function() {
+               api.settings = window._wpCustomizeSettings;
+               if ( ! api.settings )
+                       return;
+
+               var preview, bg;
+
+               preview = new api.Preview({
+                       url: window.location.href,
+                       channel: api.settings.channel
+               });
+
+               preview.bind( 'settings', function( values ) {
+                       $.each( values, function( id, value ) {
+                               if ( api.has( id ) )
+                                       api( id ).set( value );
+                               else
+                                       api.create( id, value );
+                       });
+               });
+
+               preview.trigger( 'settings', api.settings.values );
+
+               preview.bind( 'setting', function( args ) {
+                       var value;
+
+                       args = args.slice();
+
+                       if ( value = api( args.shift() ) )
+                               value.set.apply( value, args );
+               });
+
+               preview.bind( 'sync', function( events ) {
+                       $.each( events, function( event, args ) {
+                               preview.trigger( event, args );
+                       });
+                       preview.send( 'synced' );
+               });
+
+               preview.bind( 'active', function() {
+                       if ( api.settings.nonce )
+                               preview.send( 'nonce', api.settings.nonce );
+               });
+
+               preview.send( 'ready' );
+
+               /* Custom Backgrounds */
+               bg = $.map(['color', 'image', 'position_x', 'repeat', 'attachment'], function( prop ) {
+                       return 'background_' + prop;
+               });
+
+               api.when.apply( api, bg ).done( function( color, image, position_x, repeat, attachment ) {
+                       var body = $(document.body),
+                               head = $('head'),
+                               style = $('#custom-background-css'),
+                               update;
+
+                       // If custom backgrounds are active and we can't find the
+                       // default output, bail.
+                       if ( body.hasClass('custom-background') && ! style.length )
+                               return;
+
+                       update = function() {
+                               var css = '';
+
+                               // The body will support custom backgrounds if either
+                               // the color or image are set.
+                               //
+                               // See get_body_class() in /wp-includes/post-template.php
+                               body.toggleClass( 'custom-background', !! ( color() || image() ) );
+
+                               if ( color() )
+                                       css += 'background-color: ' + color() + ';';
+
+                               if ( image() ) {
+                                       css += 'background-image: url("' + image() + '");';
+                                       css += 'background-position: top ' + position_x() + ';';
+                                       css += 'background-repeat: ' + repeat() + ';';
+                                       css += 'background-attachment: ' + attachment() + ';';
+                               }
+
+                               // Refresh the stylesheet by removing and recreating it.
+                               style.remove();
+                               style = $('<style type="text/css" id="custom-background-css">body.custom-background { ' + css + ' }</style>').appendTo( head );
+                       };
+
+                       $.each( arguments, function() {
+                               this.bind( update );
+                       });
+               });
+       });
+
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-preview.min.js b/wp-includes/js/customize-preview.min.js
new file mode 100644 (file)
index 0000000..a466cbf
--- /dev/null
@@ -0,0 +1 @@
+(function(b,d){var c=wp.customize,a;a=function(g,e,f){var h;return function(){var i=arguments;f=f||this;clearTimeout(h);h=setTimeout(function(){h=null;g.apply(f,i)},e)}};c.Preview=c.Messenger.extend({initialize:function(g,f){var e=this;c.Messenger.prototype.initialize.call(this,g,f);this.body=d(document.body);this.body.on("click.preview","a",function(h){h.preventDefault();e.send("scroll",0);e.send("url",d(this).prop("href"))});this.body.on("submit.preview","form",function(h){h.preventDefault()});this.window=d(window);this.window.on("scroll.preview",a(function(){e.send("scroll",e.window.scrollTop())},200));this.bind("scroll",function(h){e.window.scrollTop(h)})}});d(function(){c.settings=window._wpCustomizeSettings;if(!c.settings){return}var f,e;f=new c.Preview({url:window.location.href,channel:c.settings.channel});f.bind("settings",function(g){d.each(g,function(i,h){if(c.has(i)){c(i).set(h)}else{c.create(i,h)}})});f.trigger("settings",c.settings.values);f.bind("setting",function(g){var h;g=g.slice();if(h=c(g.shift())){h.set.apply(h,g)}});f.bind("sync",function(g){d.each(g,function(i,h){f.trigger(i,h)});f.send("synced")});f.bind("active",function(){if(c.settings.nonce){f.send("nonce",c.settings.nonce)}});f.send("ready");e=d.map(["color","image","position_x","repeat","attachment"],function(g){return"background_"+g});c.when.apply(c,e).done(function(j,i,m,h,l){var n=d(document.body),o=d("head"),g=d("#custom-background-css"),k;if(n.hasClass("custom-background")&&!g.length){return}k=function(){var p="";n.toggleClass("custom-background",!!(j()||i()));if(j()){p+="background-color: "+j()+";"}if(i()){p+='background-image: url("'+i()+'");';p+="background-position: top "+m()+";";p+="background-repeat: "+h()+";";p+="background-attachment: "+l()+";"}g.remove();g=d('<style type="text/css" id="custom-background-css">body.custom-background { '+p+" }</style>").appendTo(o)};d.each(arguments,function(){this.bind(k)})})})})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/hoverIntent.dev.js b/wp-includes/js/hoverIntent.dev.js
deleted file mode 100644 (file)
index 3dcff26..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
-* hoverIntent is similar to jQuery's built-in "hover" function except that
-* instead of firing the onMouseOver event immediately, hoverIntent checks
-* to see if the user's mouse has slowed down (beneath the sensitivity
-* threshold) before firing the onMouseOver event.
-* 
-* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
-* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
-* 
-* hoverIntent is currently available for use in all personal or commercial 
-* projects under both MIT and GPL licenses. This means that you can choose 
-* the license that best suits your project, and use it accordingly.
-* 
-* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions
-* $("ul li").hoverIntent( showNav , hideNav );
-* 
-* // advanced usage receives configuration object only
-* $("ul li").hoverIntent({
-*      sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
-*      interval: 100,   // number = milliseconds of polling interval
-*      over: showNav,  // function = onMouseOver callback (required)
-*      timeout: 0,   // number = milliseconds delay before onMouseOut function call
-*      out: hideNav    // function = onMouseOut callback (required)
-* });
-* 
-* @param  f  onMouseOver function || An object with configuration options
-* @param  g  onMouseOut function  || Nothing (use configuration options object)
-* @author    Brian Cherne brian(at)cherne(dot)net
-*/
-(function($) {
-       $.fn.hoverIntent = function(f,g) {
-               // default configuration options
-               var cfg = {
-                       sensitivity: 7,
-                       interval: 100,
-                       timeout: 0
-               };
-               // override configuration options with user supplied object
-               cfg = $.extend(cfg, g ? { over: f, out: g } : f );
-
-               // instantiate variables
-               // cX, cY = current X and Y position of mouse, updated by mousemove event
-               // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
-               var cX, cY, pX, pY;
-
-               // A private function for getting mouse position
-               var track = function(ev) {
-                       cX = ev.pageX;
-                       cY = ev.pageY;
-               };
-
-               // A private function for comparing current and previous mouse position
-               var compare = function(ev,ob) {
-                       ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
-                       // compare mouse positions to see if they've crossed the threshold
-                       if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
-                               $(ob).unbind("mousemove",track);
-                               // set hoverIntent state to true (so mouseOut can be called)
-                               ob.hoverIntent_s = 1;
-                               return cfg.over.apply(ob,[ev]);
-                       } else {
-                               // set previous coordinates for next time
-                               pX = cX; pY = cY;
-                               // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
-                               ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
-                       }
-               };
-
-               // A private function for delaying the mouseOut function
-               var delay = function(ev,ob) {
-                       ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
-                       ob.hoverIntent_s = 0;
-                       return cfg.out.apply(ob,[ev]);
-               };
-
-               // A private function for handling mouse 'hovering'
-               var handleHover = function(e) {
-                       // copy objects to be passed into t (required for event object to be passed in IE)
-                       var ev = jQuery.extend({},e);
-                       var ob = this;
-
-                       // cancel hoverIntent timer if it exists
-                       if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
-
-                       // if e.type == "mouseenter"
-                       if (e.type == "mouseenter") {
-                               // set "previous" X and Y position based on initial entry point
-                               pX = ev.pageX; pY = ev.pageY;
-                               // update "current" X and Y position based on mousemove
-                               $(ob).bind("mousemove",track);
-                               // start polling interval (self-calling timeout) to compare mouse coordinates over time
-                               if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
-
-                       // else e.type == "mouseleave"
-                       } else {
-                               // unbind expensive mousemove event
-                               $(ob).unbind("mousemove",track);
-                               // if hoverIntent state is true, then call the mouseOut function after the specified delay
-                               if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
-                       }
-               };
-
-               // bind the function to the two event listeners
-               return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
-       };
-})(jQuery);
\ No newline at end of file
index 1576592de003088fff484b95c30c906c062fa1a5..3dcff261f60ef642177abd6fa806a1a5a1ec9ed1 100644 (file)
@@ -1 +1,106 @@
-(function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(o){var g=jQuery.extend({},o);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(o.type=="mouseenter"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.bind("mouseenter",b).bind("mouseleave",b)}})(jQuery);
\ No newline at end of file
+/**
+* hoverIntent is similar to jQuery's built-in "hover" function except that
+* instead of firing the onMouseOver event immediately, hoverIntent checks
+* to see if the user's mouse has slowed down (beneath the sensitivity
+* threshold) before firing the onMouseOver event.
+* 
+* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
+* 
+* hoverIntent is currently available for use in all personal or commercial 
+* projects under both MIT and GPL licenses. This means that you can choose 
+* the license that best suits your project, and use it accordingly.
+* 
+* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions
+* $("ul li").hoverIntent( showNav , hideNav );
+* 
+* // advanced usage receives configuration object only
+* $("ul li").hoverIntent({
+*      sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
+*      interval: 100,   // number = milliseconds of polling interval
+*      over: showNav,  // function = onMouseOver callback (required)
+*      timeout: 0,   // number = milliseconds delay before onMouseOut function call
+*      out: hideNav    // function = onMouseOut callback (required)
+* });
+* 
+* @param  f  onMouseOver function || An object with configuration options
+* @param  g  onMouseOut function  || Nothing (use configuration options object)
+* @author    Brian Cherne brian(at)cherne(dot)net
+*/
+(function($) {
+       $.fn.hoverIntent = function(f,g) {
+               // default configuration options
+               var cfg = {
+                       sensitivity: 7,
+                       interval: 100,
+                       timeout: 0
+               };
+               // override configuration options with user supplied object
+               cfg = $.extend(cfg, g ? { over: f, out: g } : f );
+
+               // instantiate variables
+               // cX, cY = current X and Y position of mouse, updated by mousemove event
+               // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+               var cX, cY, pX, pY;
+
+               // A private function for getting mouse position
+               var track = function(ev) {
+                       cX = ev.pageX;
+                       cY = ev.pageY;
+               };
+
+               // A private function for comparing current and previous mouse position
+               var compare = function(ev,ob) {
+                       ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+                       // compare mouse positions to see if they've crossed the threshold
+                       if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+                               $(ob).unbind("mousemove",track);
+                               // set hoverIntent state to true (so mouseOut can be called)
+                               ob.hoverIntent_s = 1;
+                               return cfg.over.apply(ob,[ev]);
+                       } else {
+                               // set previous coordinates for next time
+                               pX = cX; pY = cY;
+                               // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+                               ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+                       }
+               };
+
+               // A private function for delaying the mouseOut function
+               var delay = function(ev,ob) {
+                       ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+                       ob.hoverIntent_s = 0;
+                       return cfg.out.apply(ob,[ev]);
+               };
+
+               // A private function for handling mouse 'hovering'
+               var handleHover = function(e) {
+                       // copy objects to be passed into t (required for event object to be passed in IE)
+                       var ev = jQuery.extend({},e);
+                       var ob = this;
+
+                       // cancel hoverIntent timer if it exists
+                       if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+
+                       // if e.type == "mouseenter"
+                       if (e.type == "mouseenter") {
+                               // set "previous" X and Y position based on initial entry point
+                               pX = ev.pageX; pY = ev.pageY;
+                               // update "current" X and Y position based on mousemove
+                               $(ob).bind("mousemove",track);
+                               // start polling interval (self-calling timeout) to compare mouse coordinates over time
+                               if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+
+                       // else e.type == "mouseleave"
+                       } else {
+                               // unbind expensive mousemove event
+                               $(ob).unbind("mousemove",track);
+                               // if hoverIntent state is true, then call the mouseOut function after the specified delay
+                               if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+                       }
+               };
+
+               // bind the function to the two event listeners
+               return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
+       };
+})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/hoverIntent.min.js b/wp-includes/js/hoverIntent.min.js
new file mode 100644 (file)
index 0000000..1576592
--- /dev/null
@@ -0,0 +1 @@
+(function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(o){var g=jQuery.extend({},o);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(o.type=="mouseenter"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.bind("mouseenter",b).bind("mouseleave",b)}})(jQuery);
\ No newline at end of file
index ec9f5da73bc898de604c0c1b34f57a81440f896b..a964ebd717a3525d1fc2d74451e3be9e41bebbfb 100644 (file)
Binary files a/wp-includes/js/imgareaselect/border-anim-h.gif and b/wp-includes/js/imgareaselect/border-anim-h.gif differ
index 331cc90b0e4e4d0c1e01ead2f9bab6aed61d2e06..aa319935e4cb1491013d3c4f8e6cab54d414794e 100644 (file)
Binary files a/wp-includes/js/imgareaselect/border-anim-v.gif and b/wp-includes/js/imgareaselect/border-anim-v.gif differ
diff --git a/wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js b/wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js
deleted file mode 100644 (file)
index 2886046..0000000
+++ /dev/null
@@ -1,1198 +0,0 @@
-/*
- * imgAreaSelect jQuery plugin
- * version 0.9.9
- *
- * Copyright (c) 2008-2011 Michal Wojciechowski (odyniec.net)
- *
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://odyniec.net/projects/imgareaselect/
- *
- */
-
-(function($) {
-
-/*
- * Math functions will be used extensively, so it's convenient to make a few
- * shortcuts
- */
-var abs = Math.abs,
-    max = Math.max,
-    min = Math.min,
-    round = Math.round;
-
-/**
- * Create a new HTML div element
- *
- * @return A jQuery object representing the new element
- */
-function div() {
-    return $('<div/>');
-}
-
-/**
- * imgAreaSelect initialization
- *
- * @param img
- *            A HTML image element to attach the plugin to
- * @param options
- *            An options object
- */
-$.imgAreaSelect = function (img, options) {
-    var
-        /* jQuery object representing the image */
-        $img = $(img),
-
-        /* Has the image finished loading? */
-        imgLoaded,
-
-        /* Plugin elements */
-
-        /* Container box */
-        $box = div(),
-        /* Selection area */
-        $area = div(),
-        /* Border (four divs) */
-        $border = div().add(div()).add(div()).add(div()),
-        /* Outer area (four divs) */
-        $outer = div().add(div()).add(div()).add(div()),
-        /* Handles (empty by default, initialized in setOptions()) */
-        $handles = $([]),
-
-        /*
-         * Additional element to work around a cursor problem in Opera
-         * (explained later)
-         */
-        $areaOpera,
-
-        /* Image position (relative to viewport) */
-        left, top,
-
-        /* Image offset (as returned by .offset()) */
-        imgOfs = { left: 0, top: 0 },
-
-        /* Image dimensions (as returned by .width() and .height()) */
-        imgWidth, imgHeight,
-
-        /*
-         * jQuery object representing the parent element that the plugin
-         * elements are appended to
-         */
-        $parent,
-
-        /* Parent element offset (as returned by .offset()) */
-        parOfs = { left: 0, top: 0 },
-
-        /* Base z-index for plugin elements */
-        zIndex = 0,
-
-        /* Plugin elements position */
-        position = 'absolute',
-
-        /* X/Y coordinates of the starting point for move/resize operations */
-        startX, startY,
-
-        /* Horizontal and vertical scaling factors */
-        scaleX, scaleY,
-
-        /* Current resize mode ("nw", "se", etc.) */
-        resize,
-
-        /* Selection area constraints */
-        minWidth, minHeight, maxWidth, maxHeight,
-
-        /* Aspect ratio to maintain (floating point number) */
-        aspectRatio,
-
-        /* Are the plugin elements currently displayed? */
-        shown,
-
-        /* Current selection (relative to parent element) */
-        x1, y1, x2, y2,
-
-        /* Current selection (relative to scaled image) */
-        selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
-
-        /* Document element */
-        docElem = document.documentElement,
-
-        /* Various helper variables used throughout the code */
-        $p, d, i, o, w, h, adjusted;
-
-    /*
-     * Translate selection coordinates (relative to scaled image) to viewport
-     * coordinates (relative to parent element)
-     */
-
-    /**
-     * Translate selection X to viewport X
-     *
-     * @param x
-     *            Selection X
-     * @return Viewport X
-     */
-    function viewX(x) {
-        return x + imgOfs.left - parOfs.left;
-    }
-
-    /**
-     * Translate selection Y to viewport Y
-     *
-     * @param y
-     *            Selection Y
-     * @return Viewport Y
-     */
-    function viewY(y) {
-        return y + imgOfs.top - parOfs.top;
-    }
-
-    /*
-     * Translate viewport coordinates to selection coordinates
-     */
-
-    /**
-     * Translate viewport X to selection X
-     *
-     * @param x
-     *            Viewport X
-     * @return Selection X
-     */
-    function selX(x) {
-        return x - imgOfs.left + parOfs.left;
-    }
-
-    /**
-     * Translate viewport Y to selection Y
-     *
-     * @param y
-     *            Viewport Y
-     * @return Selection Y
-     */
-    function selY(y) {
-        return y - imgOfs.top + parOfs.top;
-    }
-
-    /*
-     * Translate event coordinates (relative to document) to viewport
-     * coordinates
-     */
-
-    /**
-     * Get event X and translate it to viewport X
-     *
-     * @param event
-     *            The event object
-     * @return Viewport X
-     */
-    function evX(event) {
-        return event.pageX - parOfs.left;
-    }
-
-    /**
-     * Get event Y and translate it to viewport Y
-     *
-     * @param event
-     *            The event object
-     * @return Viewport Y
-     */
-    function evY(event) {
-        return event.pageY - parOfs.top;
-    }
-
-    /**
-     * Get the current selection
-     *
-     * @param noScale
-     *            If set to <code>true</code>, scaling is not applied to the
-     *            returned selection
-     * @return Selection object
-     */
-    function getSelection(noScale) {
-        var sx = noScale || scaleX, sy = noScale || scaleY;
-
-        return { x1: round(selection.x1 * sx),
-            y1: round(selection.y1 * sy),
-            x2: round(selection.x2 * sx),
-            y2: round(selection.y2 * sy),
-            width: round(selection.x2 * sx) - round(selection.x1 * sx),
-            height: round(selection.y2 * sy) - round(selection.y1 * sy) };
-    }
-
-    /**
-     * Set the current selection
-     *
-     * @param x1
-     *            X coordinate of the upper left corner of the selection area
-     * @param y1
-     *            Y coordinate of the upper left corner of the selection area
-     * @param x2
-     *            X coordinate of the lower right corner of the selection area
-     * @param y2
-     *            Y coordinate of the lower right corner of the selection area
-     * @param noScale
-     *            If set to <code>true</code>, scaling is not applied to the
-     *            new selection
-     */
-    function setSelection(x1, y1, x2, y2, noScale) {
-        var sx = noScale || scaleX, sy = noScale || scaleY;
-
-        selection = {
-            x1: round(x1 / sx || 0),
-            y1: round(y1 / sy || 0),
-            x2: round(x2 / sx || 0),
-            y2: round(y2 / sy || 0)
-        };
-
-        selection.width = selection.x2 - selection.x1;
-        selection.height = selection.y2 - selection.y1;
-    }
-
-    /**
-     * Recalculate image and parent offsets
-     */
-    function adjust() {
-        /*
-         * Do not adjust if image width is not a positive number. This might
-         * happen when imgAreaSelect is put on a parent element which is then
-         * hidden.
-         */
-        if (!$img.width())
-            return;
-
-        /*
-         * Get image offset. The .offset() method returns float values, so they
-         * need to be rounded.
-         */
-        imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
-
-        /* Get image dimensions */
-        imgWidth = $img.innerWidth();
-        imgHeight = $img.innerHeight();
-
-        imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
-        imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
-
-        /* Set minimum and maximum selection area dimensions */
-        minWidth = round(options.minWidth / scaleX) || 0;
-        minHeight = round(options.minHeight / scaleY) || 0;
-        maxWidth = round(min(options.maxWidth / scaleX || 1<<24, imgWidth));
-        maxHeight = round(min(options.maxHeight / scaleY || 1<<24, imgHeight));
-
-        /*
-         * Workaround for jQuery 1.3.2 incorrect offset calculation, originally
-         * observed in Safari 3. Firefox 2 is also affected.
-         */
-        if ($().jquery == '1.3.2' && position == 'fixed' &&
-            !docElem['getBoundingClientRect'])
-        {
-            imgOfs.top += max(document.body.scrollTop, docElem.scrollTop);
-            imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
-        }
-
-        /* Determine parent element offset */
-        parOfs = /absolute|relative/.test($parent.css('position')) ?
-            { left: round($parent.offset().left) - $parent.scrollLeft(),
-                top: round($parent.offset().top) - $parent.scrollTop() } :
-            position == 'fixed' ?
-                { left: $(document).scrollLeft(), top: $(document).scrollTop() } :
-                { left: 0, top: 0 };
-
-        left = viewX(0);
-        top = viewY(0);
-
-        /*
-         * Check if selection area is within image boundaries, adjust if
-         * necessary
-         */
-        if (selection.x2 > imgWidth || selection.y2 > imgHeight)
-            doResize();
-    }
-
-    /**
-     * Update plugin elements
-     *
-     * @param resetKeyPress
-     *            If set to <code>false</code>, this instance's keypress
-     *            event handler is not activated
-     */
-    function update(resetKeyPress) {
-        /* If plugin elements are hidden, do nothing */
-        if (!shown) return;
-
-        /*
-         * Set the position and size of the container box and the selection area
-         * inside it
-         */
-        $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
-            .add($area).width(w = selection.width).height(h = selection.height);
-
-        /*
-         * Reset the position of selection area, borders, and handles (IE6/IE7
-         * position them incorrectly if we don't do this)
-         */
-        $area.add($border).add($handles).css({ left: 0, top: 0 });
-
-        /* Set border dimensions */
-        $border
-            .width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
-            .height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
-
-        /* Arrange the outer area elements */
-        $($outer[0]).css({ left: left, top: top,
-            width: selection.x1, height: imgHeight });
-        $($outer[1]).css({ left: left + selection.x1, top: top,
-            width: w, height: selection.y1 });
-        $($outer[2]).css({ left: left + selection.x2, top: top,
-            width: imgWidth - selection.x2, height: imgHeight });
-        $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2,
-            width: w, height: imgHeight - selection.y2 });
-
-        w -= $handles.outerWidth();
-        h -= $handles.outerHeight();
-
-        /* Arrange handles */
-        switch ($handles.length) {
-        case 8:
-            $($handles[4]).css({ left: w >> 1 });
-            $($handles[5]).css({ left: w, top: h >> 1 });
-            $($handles[6]).css({ left: w >> 1, top: h });
-            $($handles[7]).css({ top: h >> 1 });
-        case 4:
-            $handles.slice(1,3).css({ left: w });
-            $handles.slice(2,4).css({ top: h });
-        }
-
-        if (resetKeyPress !== false) {
-            /*
-             * Need to reset the document keypress event handler -- unbind the
-             * current handler
-             */
-            if ($.imgAreaSelect.keyPress != docKeyPress)
-                $(document).unbind($.imgAreaSelect.keyPress,
-                    $.imgAreaSelect.onKeyPress);
-
-            if (options.keys)
-                /*
-                 * Set the document keypress event handler to this instance's
-                 * docKeyPress() function
-                 */
-                $(document)[$.imgAreaSelect.keyPress](
-                    $.imgAreaSelect.onKeyPress = docKeyPress);
-        }
-
-        /*
-         * Internet Explorer displays 1px-wide dashed borders incorrectly by
-         * filling the spaces between dashes with white. Toggling the margin
-         * property between 0 and "auto" fixes this in IE6 and IE7 (IE8 is still
-         * broken). This workaround is not perfect, as it requires setTimeout()
-         * and thus causes the border to flicker a bit, but I haven't found a
-         * better solution.
-         *
-         * Note: This only happens with CSS borders, set with the borderWidth,
-         * borderOpacity, borderColor1, and borderColor2 options (which are now
-         * deprecated). Borders created with GIF background images are fine.
-         */
-        if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) {
-            $border.css('margin', 0);
-            setTimeout(function () { $border.css('margin', 'auto'); }, 0);
-        }
-    }
-
-    /**
-     * Do the complete update sequence: recalculate offsets, update the
-     * elements, and set the correct values of x1, y1, x2, and y2.
-     *
-     * @param resetKeyPress
-     *            If set to <code>false</code>, this instance's keypress
-     *            event handler is not activated
-     */
-    function doUpdate(resetKeyPress) {
-        adjust();
-        update(resetKeyPress);
-        x1 = viewX(selection.x1); y1 = viewY(selection.y1);
-        x2 = viewX(selection.x2); y2 = viewY(selection.y2);
-    }
-
-    /**
-     * Hide or fade out an element (or multiple elements)
-     *
-     * @param $elem
-     *            A jQuery object containing the element(s) to hide/fade out
-     * @param fn
-     *            Callback function to be called when fadeOut() completes
-     */
-    function hide($elem, fn) {
-        options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide();
-    }
-
-    /**
-     * Selection area mousemove event handler
-     *
-     * @param event
-     *            The event object
-     */
-    function areaMouseMove(event) {
-        var x = selX(evX(event)) - selection.x1,
-            y = selY(evY(event)) - selection.y1;
-
-        if (!adjusted) {
-            adjust();
-            adjusted = true;
-
-            $box.one('mouseout', function () { adjusted = false; });
-        }
-
-        /* Clear the resize mode */
-        resize = '';
-
-        if (options.resizable) {
-            /*
-             * Check if the mouse pointer is over the resize margin area and set
-             * the resize mode accordingly
-             */
-            if (y <= options.resizeMargin)
-                resize = 'n';
-            else if (y >= selection.height - options.resizeMargin)
-                resize = 's';
-            if (x <= options.resizeMargin)
-                resize += 'w';
-            else if (x >= selection.width - options.resizeMargin)
-                resize += 'e';
-        }
-
-        $box.css('cursor', resize ? resize + '-resize' :
-            options.movable ? 'move' : '');
-        if ($areaOpera)
-            $areaOpera.toggle();
-    }
-
-    /**
-     * Document mouseup event handler
-     *
-     * @param event
-     *            The event object
-     */
-    function docMouseUp(event) {
-        /* Set back the default cursor */
-        $('body').css('cursor', '');
-        /*
-         * If autoHide is enabled, or if the selection has zero width/height,
-         * hide the selection and the outer area
-         */
-        if (options.autoHide || selection.width * selection.height == 0)
-            hide($box.add($outer), function () { $(this).hide(); });
-
-        $(document).unbind('mousemove', selectingMouseMove);
-        $box.mousemove(areaMouseMove);
-
-        options.onSelectEnd(img, getSelection());
-    }
-
-    /**
-     * Selection area mousedown event handler
-     *
-     * @param event
-     *            The event object
-     * @return false
-     */
-    function areaMouseDown(event) {
-        if (event.which != 1) return false;
-
-        adjust();
-
-        if (resize) {
-            /* Resize mode is in effect */
-            $('body').css('cursor', resize + '-resize');
-
-            x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
-            y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']);
-
-            $(document).mousemove(selectingMouseMove)
-                .one('mouseup', docMouseUp);
-            $box.unbind('mousemove', areaMouseMove);
-        }
-        else if (options.movable) {
-            startX = left + selection.x1 - evX(event);
-            startY = top + selection.y1 - evY(event);
-
-            $box.unbind('mousemove', areaMouseMove);
-
-            $(document).mousemove(movingMouseMove)
-                .one('mouseup', function () {
-                    options.onSelectEnd(img, getSelection());
-
-                    $(document).unbind('mousemove', movingMouseMove);
-                    $box.mousemove(areaMouseMove);
-                });
-        }
-        else
-            $img.mousedown(event);
-
-        return false;
-    }
-
-    /**
-     * Adjust the x2/y2 coordinates to maintain aspect ratio (if defined)
-     *
-     * @param xFirst
-     *            If set to <code>true</code>, calculate x2 first. Otherwise,
-     *            calculate y2 first.
-     */
-    function fixAspectRatio(xFirst) {
-        if (aspectRatio)
-            if (xFirst) {
-                x2 = max(left, min(left + imgWidth,
-                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));
-                y2 = round(max(top, min(top + imgHeight,
-                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
-                x2 = round(x2);
-            }
-            else {
-                y2 = max(top, min(top + imgHeight,
-                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)));
-                x2 = round(max(left, min(left + imgWidth,
-                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))));
-                y2 = round(y2);
-            }
-    }
-
-    /**
-     * Resize the selection area respecting the minimum/maximum dimensions and
-     * aspect ratio
-     */
-    function doResize() {
-        /*
-         * Make sure the top left corner of the selection area stays within
-         * image boundaries (it might not if the image source was dynamically
-         * changed).
-         */
-        x1 = min(x1, left + imgWidth);
-        y1 = min(y1, top + imgHeight);
-
-        if (abs(x2 - x1) < minWidth) {
-            /* Selection width is smaller than minWidth */
-            x2 = x1 - minWidth * (x2 < x1 || -1);
-
-            if (x2 < left)
-                x1 = left + minWidth;
-            else if (x2 > left + imgWidth)
-                x1 = left + imgWidth - minWidth;
-        }
-
-        if (abs(y2 - y1) < minHeight) {
-            /* Selection height is smaller than minHeight */
-            y2 = y1 - minHeight * (y2 < y1 || -1);
-
-            if (y2 < top)
-                y1 = top + minHeight;
-            else if (y2 > top + imgHeight)
-                y1 = top + imgHeight - minHeight;
-        }
-
-        x2 = max(left, min(x2, left + imgWidth));
-        y2 = max(top, min(y2, top + imgHeight));
-
-        fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
-
-        if (abs(x2 - x1) > maxWidth) {
-            /* Selection width is greater than maxWidth */
-            x2 = x1 - maxWidth * (x2 < x1 || -1);
-            fixAspectRatio();
-        }
-
-        if (abs(y2 - y1) > maxHeight) {
-            /* Selection height is greater than maxHeight */
-            y2 = y1 - maxHeight * (y2 < y1 || -1);
-            fixAspectRatio(true);
-        }
-
-        selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)),
-            y1: selY(min(y1, y2)), y2: selY(max(y1, y2)),
-            width: abs(x2 - x1), height: abs(y2 - y1) };
-
-        update();
-
-        options.onSelectChange(img, getSelection());
-    }
-
-    /**
-     * Mousemove event handler triggered when the user is selecting an area
-     *
-     * @param event
-     *            The event object
-     * @return false
-     */
-    function selectingMouseMove(event) {
-        x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
-        y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
-
-        doResize();
-
-        return false;
-    }
-
-    /**
-     * Move the selection area
-     *
-     * @param newX1
-     *            New viewport X1
-     * @param newY1
-     *            New viewport Y1
-     */
-    function doMove(newX1, newY1) {
-        x2 = (x1 = newX1) + selection.width;
-        y2 = (y1 = newY1) + selection.height;
-
-        $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2),
-            y2: selY(y2) });
-
-        update();
-
-        options.onSelectChange(img, getSelection());
-    }
-
-    /**
-     * Mousemove event handler triggered when the selection area is being moved
-     *
-     * @param event
-     *            The event object
-     * @return false
-     */
-    function movingMouseMove(event) {
-        x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
-        y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
-
-        doMove(x1, y1);
-
-        event.preventDefault();
-        return false;
-    }
-
-    /**
-     * Start selection
-     */
-    function startSelection() {
-        $(document).unbind('mousemove', startSelection);
-        adjust();
-
-        x2 = x1;
-        y2 = y1;
-        doResize();
-
-        resize = '';
-
-        if (!$outer.is(':visible'))
-            /* Show the plugin elements */
-            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
-
-        shown = true;
-
-        $(document).unbind('mouseup', cancelSelection)
-            .mousemove(selectingMouseMove).one('mouseup', docMouseUp);
-        $box.unbind('mousemove', areaMouseMove);
-
-        options.onSelectStart(img, getSelection());
-    }
-
-    /**
-     * Cancel selection
-     */
-    function cancelSelection() {
-        $(document).unbind('mousemove', startSelection)
-            .unbind('mouseup', cancelSelection);
-        hide($box.add($outer));
-
-        setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
-
-        /* If this is an API call, callback functions should not be triggered */
-        if (!(this instanceof $.imgAreaSelect)) {
-            options.onSelectChange(img, getSelection());
-            options.onSelectEnd(img, getSelection());
-        }
-    }
-
-    /**
-     * Image mousedown event handler
-     *
-     * @param event
-     *            The event object
-     * @return false
-     */
-    function imgMouseDown(event) {
-        /* Ignore the event if animation is in progress */
-        if (event.which != 1 || $outer.is(':animated')) return false;
-
-        adjust();
-        startX = x1 = evX(event);
-        startY = y1 = evY(event);
-
-        /* Selection will start when the mouse is moved */
-        $(document).mousemove(startSelection).mouseup(cancelSelection);
-
-        return false;
-    }
-
-    /**
-     * Window resize event handler
-     */
-    function windowResize() {
-        doUpdate(false);
-    }
-
-    /**
-     * Image load event handler. This is the final part of the initialization
-     * process.
-     */
-    function imgLoad() {
-        imgLoaded = true;
-
-        /* Set options */
-        setOptions(options = $.extend({
-            classPrefix: 'imgareaselect',
-            movable: true,
-            parent: 'body',
-            resizable: true,
-            resizeMargin: 10,
-            onInit: function () {},
-            onSelectStart: function () {},
-            onSelectChange: function () {},
-            onSelectEnd: function () {}
-        }, options));
-
-        $box.add($outer).css({ visibility: '' });
-
-        if (options.show) {
-            shown = true;
-            adjust();
-            update();
-            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
-        }
-
-        /*
-         * Call the onInit callback. The setTimeout() call is used to ensure
-         * that the plugin has been fully initialized and the object instance is
-         * available (so that it can be obtained in the callback).
-         */
-        setTimeout(function () { options.onInit(img, getSelection()); }, 0);
-    }
-
-    /**
-     * Document keypress event handler
-     *
-     * @param event
-     *            The event object
-     * @return false
-     */
-    var docKeyPress = function(event) {
-        var k = options.keys, d, t, key = event.keyCode;
-
-        d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
-            !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
-            !isNaN(k.shift) && event.shiftKey ? k.shift :
-            !isNaN(k.arrows) ? k.arrows : 10;
-
-        if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
-            (k.ctrl == 'resize' && event.ctrlKey) ||
-            (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
-        {
-            /* Resize selection */
-
-            switch (key) {
-            case 37:
-                /* Left */
-                d = -d;
-            case 39:
-                /* Right */
-                t = max(x1, x2);
-                x1 = min(x1, x2);
-                x2 = max(t + d, x1);
-                fixAspectRatio();
-                break;
-            case 38:
-                /* Up */
-                d = -d;
-            case 40:
-                /* Down */
-                t = max(y1, y2);
-                y1 = min(y1, y2);
-                y2 = max(t + d, y1);
-                fixAspectRatio(true);
-                break;
-            default:
-                return;
-            }
-
-            doResize();
-        }
-        else {
-            /* Move selection */
-
-            x1 = min(x1, x2);
-            y1 = min(y1, y2);
-
-            switch (key) {
-            case 37:
-                /* Left */
-                doMove(max(x1 - d, left), y1);
-                break;
-            case 38:
-                /* Up */
-                doMove(x1, max(y1 - d, top));
-                break;
-            case 39:
-                /* Right */
-                doMove(x1 + min(d, imgWidth - selX(x2)), y1);
-                break;
-            case 40:
-                /* Down */
-                doMove(x1, y1 + min(d, imgHeight - selY(y2)));
-                break;
-            default:
-                return;
-            }
-        }
-
-        return false;
-    };
-
-    /**
-     * Apply style options to plugin element (or multiple elements)
-     *
-     * @param $elem
-     *            A jQuery object representing the element(s) to style
-     * @param props
-     *            An object that maps option names to corresponding CSS
-     *            properties
-     */
-    function styleOptions($elem, props) {
-        for (var option in props)
-            if (options[option] !== undefined)
-                $elem.css(props[option], options[option]);
-    }
-
-    /**
-     * Set plugin options
-     *
-     * @param newOptions
-     *            The new options object
-     */
-    function setOptions(newOptions) {
-        if (newOptions.parent)
-            ($parent = $(newOptions.parent)).append($box.add($outer));
-
-        /* Merge the new options with the existing ones */
-        $.extend(options, newOptions);
-
-        adjust();
-
-        if (newOptions.handles != null) {
-            /* Recreate selection area handles */
-            $handles.remove();
-            $handles = $([]);
-
-            i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;
-
-            while (i--)
-                $handles = $handles.add(div());
-
-            /* Add a class to handles and set the CSS properties */
-            $handles.addClass(options.classPrefix + '-handle').css({
-                position: 'absolute',
-                /*
-                 * The font-size property needs to be set to zero, otherwise
-                 * Internet Explorer makes the handles too large
-                 */
-                fontSize: 0,
-                zIndex: zIndex + 1 || 1
-            });
-
-            /*
-             * If handle width/height has not been set with CSS rules, set the
-             * default 5px
-             */
-            if (!parseInt($handles.css('width')) >= 0)
-                $handles.width(5).height(5);
-
-            /*
-             * If the borderWidth option is in use, add a solid border to
-             * handles
-             */
-            if (o = options.borderWidth)
-                $handles.css({ borderWidth: o, borderStyle: 'solid' });
-
-            /* Apply other style options */
-            styleOptions($handles, { borderColor1: 'border-color',
-                borderColor2: 'background-color',
-                borderOpacity: 'opacity' });
-        }
-
-        /* Calculate scale factors */
-        scaleX = options.imageWidth / imgWidth || 1;
-        scaleY = options.imageHeight / imgHeight || 1;
-
-        /* Set selection */
-        if (newOptions.x1 != null) {
-            setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
-                newOptions.y2);
-            newOptions.show = !newOptions.hide;
-        }
-
-        if (newOptions.keys)
-            /* Enable keyboard support */
-            options.keys = $.extend({ shift: 1, ctrl: 'resize' },
-                newOptions.keys);
-
-        /* Add classes to plugin elements */
-        $outer.addClass(options.classPrefix + '-outer');
-        $area.addClass(options.classPrefix + '-selection');
-        for (i = 0; i++ < 4;)
-            $($border[i-1]).addClass(options.classPrefix + '-border' + i);
-
-        /* Apply style options */
-        styleOptions($area, { selectionColor: 'background-color',
-            selectionOpacity: 'opacity' });
-        styleOptions($border, { borderOpacity: 'opacity',
-            borderWidth: 'border-width' });
-        styleOptions($outer, { outerColor: 'background-color',
-            outerOpacity: 'opacity' });
-        if (o = options.borderColor1)
-            $($border[0]).css({ borderStyle: 'solid', borderColor: o });
-        if (o = options.borderColor2)
-            $($border[1]).css({ borderStyle: 'dashed', borderColor: o });
-
-        /* Append all the selection area elements to the container box */
-        $box.append($area.add($border).add($areaOpera).add($handles));
-
-        if ($.browser.msie) {
-            if (o = $outer.css('filter').match(/opacity=(\d+)/))
-                $outer.css('opacity', o[1]/100);
-            if (o = $border.css('filter').match(/opacity=(\d+)/))
-                $border.css('opacity', o[1]/100);
-        }
-
-        if (newOptions.hide)
-            hide($box.add($outer));
-        else if (newOptions.show && imgLoaded) {
-            shown = true;
-            $box.add($outer).fadeIn(options.fadeSpeed||0);
-            doUpdate();
-        }
-
-        /* Calculate the aspect ratio factor */
-        aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
-
-        $img.add($outer).unbind('mousedown', imgMouseDown);
-
-        if (options.disable || options.enable === false) {
-            /* Disable the plugin */
-            $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
-            $(window).unbind('resize', windowResize);
-        }
-        else {
-            if (options.enable || options.disable === false) {
-                /* Enable the plugin */
-                if (options.resizable || options.movable)
-                    $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
-
-                $(window).resize(windowResize);
-            }
-
-            if (!options.persistent)
-                $img.add($outer).mousedown(imgMouseDown);
-        }
-
-        options.enable = options.disable = undefined;
-    }
-
-    /**
-     * Remove plugin completely
-     */
-    this.remove = function () {
-        /*
-         * Call setOptions with { disable: true } to unbind the event handlers
-         */
-        setOptions({ disable: true });
-        $box.add($outer).remove();
-    };
-
-    /*
-     * Public API
-     */
-
-    /**
-     * Get current options
-     *
-     * @return An object containing the set of options currently in use
-     */
-    this.getOptions = function () { return options; };
-
-    /**
-     * Set plugin options
-     *
-     * @param newOptions
-     *            The new options object
-     */
-    this.setOptions = setOptions;
-
-    /**
-     * Get the current selection
-     *
-     * @param noScale
-     *            If set to <code>true</code>, scaling is not applied to the
-     *            returned selection
-     * @return Selection object
-     */
-    this.getSelection = getSelection;
-
-    /**
-     * Set the current selection
-     *
-     * @param x1
-     *            X coordinate of the upper left corner of the selection area
-     * @param y1
-     *            Y coordinate of the upper left corner of the selection area
-     * @param x2
-     *            X coordinate of the lower right corner of the selection area
-     * @param y2
-     *            Y coordinate of the lower right corner of the selection area
-     * @param noScale
-     *            If set to <code>true</code>, scaling is not applied to the
-     *            new selection
-     */
-    this.setSelection = setSelection;
-
-    /**
-     * Cancel selection
-     */
-    this.cancelSelection = cancelSelection;
-
-    /**
-     * Update plugin elements
-     *
-     * @param resetKeyPress
-     *            If set to <code>false</code>, this instance's keypress
-     *            event handler is not activated
-     */
-    this.update = doUpdate;
-
-    /*
-     * Traverse the image's parent elements (up to <body>) and find the
-     * highest z-index
-     */
-    $p = $img;
-
-    while ($p.length) {
-        zIndex = max(zIndex,
-            !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
-        /* Also check if any of the ancestor elements has fixed position */
-        if ($p.css('position') == 'fixed')
-            position = 'fixed';
-
-        $p = $p.parent(':not(body)');
-    }
-
-    /*
-     * If z-index is given as an option, it overrides the one found by the
-     * above loop
-     */
-    zIndex = options.zIndex || zIndex;
-
-    if ($.browser.msie)
-        $img.attr('unselectable', 'on');
-
-    /*
-     * In MSIE and WebKit, we need to use the keydown event instead of keypress
-     */
-    $.imgAreaSelect.keyPress = $.browser.msie ||
-        $.browser.safari ? 'keydown' : 'keypress';
-
-    /*
-     * There is a bug affecting the CSS cursor property in Opera (observed in
-     * versions up to 10.00) that prevents the cursor from being updated unless
-     * the mouse leaves and enters the element again. To trigger the mouseover
-     * event, we're adding an additional div to $box and we're going to toggle
-     * it when mouse moves inside the selection area.
-     */
-    if ($.browser.opera)
-        $areaOpera = div().css({ width: '100%', height: '100%',
-            position: 'absolute', zIndex: zIndex + 2 || 2 });
-
-    /*
-     * We initially set visibility to "hidden" as a workaround for a weird
-     * behaviour observed in Google Chrome 1.0.154.53 (on Windows XP). Normally
-     * we would just set display to "none", but, for some reason, if we do so
-     * then Chrome refuses to later display the element with .show() or
-     * .fadeIn().
-     */
-    $box.add($outer).css({ visibility: 'hidden', position: position,
-        overflow: 'hidden', zIndex: zIndex || '0' });
-    $box.css({ zIndex: zIndex + 2 || 2 });
-    $area.add($border).css({ position: 'absolute', fontSize: 0 });
-
-    /*
-     * If the image has been fully loaded, or if it is not really an image (eg.
-     * a div), call imgLoad() immediately; otherwise, bind it to be called once
-     * on image load event.
-     */
-    img.complete || img.readyState == 'complete' || !$img.is('img') ?
-        imgLoad() : $img.one('load', imgLoad);
-
-    /*
-     * MSIE 9.0 doesn't always fire the image load event -- resetting the src
-     * attribute seems to trigger it. The check is for version 7 and above to
-     * accommodate for MSIE 9 running in compatibility mode.
-     */
-   if (!imgLoaded && $.browser.msie && $.browser.version >= 7)
-        img.src = img.src;
-};
-
-/**
- * Invoke imgAreaSelect on a jQuery object containing the image(s)
- *
- * @param options
- *            Options object
- * @return The jQuery object or a reference to imgAreaSelect instance (if the
- *         <code>instance</code> option was specified)
- */
-$.fn.imgAreaSelect = function (options) {
-    options = options || {};
-
-    this.each(function () {
-        /* Is there already an imgAreaSelect instance bound to this element? */
-        if ($(this).data('imgAreaSelect')) {
-            /* Yes there is -- is it supposed to be removed? */
-            if (options.remove) {
-                /* Remove the plugin */
-                $(this).data('imgAreaSelect').remove();
-                $(this).removeData('imgAreaSelect');
-            }
-            else
-                /* Reset options */
-                $(this).data('imgAreaSelect').setOptions(options);
-        }
-        else if (!options.remove) {
-            /* No exising instance -- create a new one */
-
-            /*
-             * If neither the "enable" nor the "disable" option is present, add
-             * "enable" as the default
-             */
-            if (options.enable === undefined && options.disable === undefined)
-                options.enable = true;
-
-            $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options));
-        }
-    });
-
-    if (options.instance)
-        /*
-         * Return the imgAreaSelect instance bound to the first element in the
-         * set
-         */
-        return $(this).data('imgAreaSelect');
-
-    return this;
-};
-
-})(jQuery);
index 0f949681fefd065aab5ccb003fe7d1a656b6397a..28860461b677a7296df5712fc75f26963d61e886 100644 (file)
@@ -1 +1,1198 @@
-(function(e){var b=Math.abs,a=Math.max,d=Math.min,c=Math.round;function f(){return e("<div/>")}e.imgAreaSelect=function(s,X){var az=e(s),Z,av=f(),ai=f(),K=f().add(f()).add(f()).add(f()),ab=f().add(f()).add(f()).add(f()),O=e([]),V,n,q,aC={left:0,top:0},Q,j,C,P={left:0,top:0},D=0,ag="absolute",T,S,ad,ac,L,E,U,W,am,Y,N,A,aD,z,aB,y={x1:0,y1:0,x2:0,y2:0,width:0,height:0},p=document.documentElement,l,au,ap,aj,af,aq,x;function J(h){return h+aC.left-P.left}function I(h){return h+aC.top-P.top}function H(h){return h-aC.left+P.left}function B(h){return h-aC.top+P.top}function ao(h){return h.pageX-P.left}function al(h){return h.pageY-P.top}function G(h){var o=h||ad,i=h||ac;return{x1:c(y.x1*o),y1:c(y.y1*i),x2:c(y.x2*o),y2:c(y.y2*i),width:c(y.x2*o)-c(y.x1*o),height:c(y.y2*i)-c(y.y1*i)}}function ah(i,w,h,o,aE){var aG=aE||ad,aF=aE||ac;y={x1:c(i/aG||0),y1:c(w/aF||0),x2:c(h/aG||0),y2:c(o/aF||0)};y.width=y.x2-y.x1;y.height=y.y2-y.y1}function ar(){if(!az.width()){return}aC={left:c(az.offset().left),top:c(az.offset().top)};Q=az.innerWidth();j=az.innerHeight();aC.top+=(az.outerHeight()-j)>>1;aC.left+=(az.outerWidth()-Q)>>1;E=c(X.minWidth/ad)||0;U=c(X.minHeight/ac)||0;W=c(d(X.maxWidth/ad||1<<24,Q));am=c(d(X.maxHeight/ac||1<<24,j));if(e().jquery=="1.3.2"&&ag=="fixed"&&!p.getBoundingClientRect){aC.top+=a(document.body.scrollTop,p.scrollTop);aC.left+=a(document.body.scrollLeft,p.scrollLeft)}P=/absolute|relative/.test(C.css("position"))?{left:c(C.offset().left)-C.scrollLeft(),top:c(C.offset().top)-C.scrollTop()}:ag=="fixed"?{left:e(document).scrollLeft(),top:e(document).scrollTop()}:{left:0,top:0};n=J(0);q=I(0);if(y.x2>Q||y.y2>j){ay()}}function aa(h){if(!N){return}av.css({left:J(y.x1),top:I(y.y1)}).add(ai).width(af=y.width).height(aq=y.height);ai.add(K).add(O).css({left:0,top:0});K.width(a(af-K.outerWidth()+K.innerWidth(),0)).height(a(aq-K.outerHeight()+K.innerHeight(),0));e(ab[0]).css({left:n,top:q,width:y.x1,height:j});e(ab[1]).css({left:n+y.x1,top:q,width:af,height:y.y1});e(ab[2]).css({left:n+y.x2,top:q,width:Q-y.x2,height:j});e(ab[3]).css({left:n+y.x1,top:q+y.y2,width:af,height:j-y.y2});af-=O.outerWidth();aq-=O.outerHeight();switch(O.length){case 8:e(O[4]).css({left:af>>1});e(O[5]).css({left:af,top:aq>>1});e(O[6]).css({left:af>>1,top:aq});e(O[7]).css({top:aq>>1});case 4:O.slice(1,3).css({left:af});O.slice(2,4).css({top:aq})}if(h!==false){if(e.imgAreaSelect.keyPress!=aw){e(document).unbind(e.imgAreaSelect.keyPress,e.imgAreaSelect.onKeyPress)}if(X.keys){e(document)[e.imgAreaSelect.keyPress](e.imgAreaSelect.onKeyPress=aw)}}if(e.browser.msie&&K.outerWidth()-K.innerWidth()==2){K.css("margin",0);setTimeout(function(){K.css("margin","auto")},0)}}function u(h){ar();aa(h);A=J(y.x1);aD=I(y.y1);z=J(y.x2);aB=I(y.y2)}function ak(h,i){X.fadeSpeed?h.fadeOut(X.fadeSpeed,i):h.hide()}function F(i){var h=H(ao(i))-y.x1,o=B(al(i))-y.y1;if(!x){ar();x=true;av.one("mouseout",function(){x=false})}L="";if(X.resizable){if(o<=X.resizeMargin){L="n"}else{if(o>=y.height-X.resizeMargin){L="s"}}if(h<=X.resizeMargin){L+="w"}else{if(h>=y.width-X.resizeMargin){L+="e"}}}av.css("cursor",L?L+"-resize":X.movable?"move":"");if(V){V.toggle()}}function an(h){e("body").css("cursor","");if(X.autoHide||y.width*y.height==0){ak(av.add(ab),function(){e(this).hide()})}e(document).unbind("mousemove",ae);av.mousemove(F);X.onSelectEnd(s,G())}function t(h){if(h.which!=1){return false}ar();if(L){e("body").css("cursor",L+"-resize");A=J(y[/w/.test(L)?"x2":"x1"]);aD=I(y[/n/.test(L)?"y2":"y1"]);e(document).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F)}else{if(X.movable){T=n+y.x1-ao(h);S=q+y.y1-al(h);av.unbind("mousemove",F);e(document).mousemove(g).one("mouseup",function(){X.onSelectEnd(s,G());e(document).unbind("mousemove",g);av.mousemove(F)})}else{az.mousedown(h)}}return false}function r(h){if(Y){if(h){z=a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1)));aB=c(a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1))));z=c(z)}else{aB=a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1)));z=c(a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1))));aB=c(aB)}}}function ay(){A=d(A,n+Q);aD=d(aD,q+j);if(b(z-A)<E){z=A-E*(z<A||-1);if(z<n){A=n+E}else{if(z>n+Q){A=n+Q-E}}}if(b(aB-aD)<U){aB=aD-U*(aB<aD||-1);if(aB<q){aD=q+U}else{if(aB>q+j){aD=q+j-U}}}z=a(n,d(z,n+Q));aB=a(q,d(aB,q+j));r(b(z-A)<b(aB-aD)*Y);if(b(z-A)>W){z=A-W*(z<A||-1);r()}if(b(aB-aD)>am){aB=aD-am*(aB<aD||-1);r(true)}y={x1:H(d(A,z)),x2:H(a(A,z)),y1:B(d(aD,aB)),y2:B(a(aD,aB)),width:b(z-A),height:b(aB-aD)};aa();X.onSelectChange(s,G())}function ae(h){z=/w|e|^$/.test(L)||Y?ao(h):J(y.x2);aB=/n|s|^$/.test(L)||Y?al(h):I(y.y2);ay();return false}function R(h,i){z=(A=h)+y.width;aB=(aD=i)+y.height;e.extend(y,{x1:H(A),y1:B(aD),x2:H(z),y2:B(aB)});aa();X.onSelectChange(s,G())}function g(h){A=a(n,d(T+ao(h),n+Q-y.width));aD=a(q,d(S+al(h),q+j-y.height));R(A,aD);h.preventDefault();return false}function aA(){e(document).unbind("mousemove",aA);ar();z=A;aB=aD;ay();L="";if(!ab.is(":visible")){av.add(ab).hide().fadeIn(X.fadeSpeed||0)}N=true;e(document).unbind("mouseup",at).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F);X.onSelectStart(s,G())}function at(){e(document).unbind("mousemove",aA).unbind("mouseup",at);ak(av.add(ab));ah(H(A),B(aD),H(A),B(aD));if(!(this instanceof e.imgAreaSelect)){X.onSelectChange(s,G());X.onSelectEnd(s,G())}}function m(h){if(h.which!=1||ab.is(":animated")){return false}ar();T=A=ao(h);S=aD=al(h);e(document).mousemove(aA).mouseup(at);return false}function v(){u(false)}function ax(){Z=true;M(X=e.extend({classPrefix:"imgareaselect",movable:true,parent:"body",resizable:true,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},X));av.add(ab).css({visibility:""});if(X.show){N=true;ar();aa();av.add(ab).hide().fadeIn(X.fadeSpeed||0)}setTimeout(function(){X.onInit(s,G())},0)}var aw=function(w){var h=X.keys,aE,o,i=w.keyCode;aE=!isNaN(h.alt)&&(w.altKey||w.originalEvent.altKey)?h.alt:!isNaN(h.ctrl)&&w.ctrlKey?h.ctrl:!isNaN(h.shift)&&w.shiftKey?h.shift:!isNaN(h.arrows)?h.arrows:10;if(h.arrows=="resize"||(h.shift=="resize"&&w.shiftKey)||(h.ctrl=="resize"&&w.ctrlKey)||(h.alt=="resize"&&(w.altKey||w.originalEvent.altKey))){switch(i){case 37:aE=-aE;case 39:o=a(A,z);A=d(A,z);z=a(o+aE,A);r();break;case 38:aE=-aE;case 40:o=a(aD,aB);aD=d(aD,aB);aB=a(o+aE,aD);r(true);break;default:return}ay()}else{A=d(A,z);aD=d(aD,aB);switch(i){case 37:R(a(A-aE,n),aD);break;case 38:R(A,a(aD-aE,q));break;case 39:R(A+d(aE,Q-H(z)),aD);break;case 40:R(A,aD+d(aE,j-B(aB)));break;default:return}}return false};function k(h,o){for(var i in o){if(X[i]!==undefined){h.css(o[i],X[i])}}}function M(h){if(h.parent){(C=e(h.parent)).append(av.add(ab))}e.extend(X,h);ar();if(h.handles!=null){O.remove();O=e([]);ap=h.handles?h.handles=="corners"?4:8:0;while(ap--){O=O.add(f())}O.addClass(X.classPrefix+"-handle").css({position:"absolute",fontSize:0,zIndex:D+1||1});if(!parseInt(O.css("width"))>=0){O.width(5).height(5)}if(aj=X.borderWidth){O.css({borderWidth:aj,borderStyle:"solid"})}k(O,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}ad=X.imageWidth/Q||1;ac=X.imageHeight/j||1;if(h.x1!=null){ah(h.x1,h.y1,h.x2,h.y2);h.show=!h.hide}if(h.keys){X.keys=e.extend({shift:1,ctrl:"resize"},h.keys)}ab.addClass(X.classPrefix+"-outer");ai.addClass(X.classPrefix+"-selection");for(ap=0;ap++<4;){e(K[ap-1]).addClass(X.classPrefix+"-border"+ap)}k(ai,{selectionColor:"background-color",selectionOpacity:"opacity"});k(K,{borderOpacity:"opacity",borderWidth:"border-width"});k(ab,{outerColor:"background-color",outerOpacity:"opacity"});if(aj=X.borderColor1){e(K[0]).css({borderStyle:"solid",borderColor:aj})}if(aj=X.borderColor2){e(K[1]).css({borderStyle:"dashed",borderColor:aj})}av.append(ai.add(K).add(V).add(O));if(e.browser.msie){if(aj=ab.css("filter").match(/opacity=(\d+)/)){ab.css("opacity",aj[1]/100)}if(aj=K.css("filter").match(/opacity=(\d+)/)){K.css("opacity",aj[1]/100)}}if(h.hide){ak(av.add(ab))}else{if(h.show&&Z){N=true;av.add(ab).fadeIn(X.fadeSpeed||0);u()}}Y=(au=(X.aspectRatio||"").split(/:/))[0]/au[1];az.add(ab).unbind("mousedown",m);if(X.disable||X.enable===false){av.unbind("mousemove",F).unbind("mousedown",t);e(window).unbind("resize",v)}else{if(X.enable||X.disable===false){if(X.resizable||X.movable){av.mousemove(F).mousedown(t)}e(window).resize(v)}if(!X.persistent){az.add(ab).mousedown(m)}}X.enable=X.disable=undefined}this.remove=function(){M({disable:true});av.add(ab).remove()};this.getOptions=function(){return X};this.setOptions=M;this.getSelection=G;this.setSelection=ah;this.cancelSelection=at;this.update=u;l=az;while(l.length){D=a(D,!isNaN(l.css("z-index"))?l.css("z-index"):D);if(l.css("position")=="fixed"){ag="fixed"}l=l.parent(":not(body)")}D=X.zIndex||D;if(e.browser.msie){az.attr("unselectable","on")}e.imgAreaSelect.keyPress=e.browser.msie||e.browser.safari?"keydown":"keypress";if(e.browser.opera){V=f().css({width:"100%",height:"100%",position:"absolute",zIndex:D+2||2})}av.add(ab).css({visibility:"hidden",position:ag,overflow:"hidden",zIndex:D||"0"});av.css({zIndex:D+2||2});ai.add(K).css({position:"absolute",fontSize:0});s.complete||s.readyState=="complete"||!az.is("img")?ax():az.one("load",ax);if(!Z&&e.browser.msie&&e.browser.version>=7){s.src=s.src}};e.fn.imgAreaSelect=function(g){g=g||{};this.each(function(){if(e(this).data("imgAreaSelect")){if(g.remove){e(this).data("imgAreaSelect").remove();e(this).removeData("imgAreaSelect")}else{e(this).data("imgAreaSelect").setOptions(g)}}else{if(!g.remove){if(g.enable===undefined&&g.disable===undefined){g.enable=true}e(this).data("imgAreaSelect",new e.imgAreaSelect(this,g))}}});if(g.instance){return e(this).data("imgAreaSelect")}return this}})(jQuery);
\ No newline at end of file
+/*
+ * imgAreaSelect jQuery plugin
+ * version 0.9.9
+ *
+ * Copyright (c) 2008-2011 Michal Wojciechowski (odyniec.net)
+ *
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://odyniec.net/projects/imgareaselect/
+ *
+ */
+
+(function($) {
+
+/*
+ * Math functions will be used extensively, so it's convenient to make a few
+ * shortcuts
+ */
+var abs = Math.abs,
+    max = Math.max,
+    min = Math.min,
+    round = Math.round;
+
+/**
+ * Create a new HTML div element
+ *
+ * @return A jQuery object representing the new element
+ */
+function div() {
+    return $('<div/>');
+}
+
+/**
+ * imgAreaSelect initialization
+ *
+ * @param img
+ *            A HTML image element to attach the plugin to
+ * @param options
+ *            An options object
+ */
+$.imgAreaSelect = function (img, options) {
+    var
+        /* jQuery object representing the image */
+        $img = $(img),
+
+        /* Has the image finished loading? */
+        imgLoaded,
+
+        /* Plugin elements */
+
+        /* Container box */
+        $box = div(),
+        /* Selection area */
+        $area = div(),
+        /* Border (four divs) */
+        $border = div().add(div()).add(div()).add(div()),
+        /* Outer area (four divs) */
+        $outer = div().add(div()).add(div()).add(div()),
+        /* Handles (empty by default, initialized in setOptions()) */
+        $handles = $([]),
+
+        /*
+         * Additional element to work around a cursor problem in Opera
+         * (explained later)
+         */
+        $areaOpera,
+
+        /* Image position (relative to viewport) */
+        left, top,
+
+        /* Image offset (as returned by .offset()) */
+        imgOfs = { left: 0, top: 0 },
+
+        /* Image dimensions (as returned by .width() and .height()) */
+        imgWidth, imgHeight,
+
+        /*
+         * jQuery object representing the parent element that the plugin
+         * elements are appended to
+         */
+        $parent,
+
+        /* Parent element offset (as returned by .offset()) */
+        parOfs = { left: 0, top: 0 },
+
+        /* Base z-index for plugin elements */
+        zIndex = 0,
+
+        /* Plugin elements position */
+        position = 'absolute',
+
+        /* X/Y coordinates of the starting point for move/resize operations */
+        startX, startY,
+
+        /* Horizontal and vertical scaling factors */
+        scaleX, scaleY,
+
+        /* Current resize mode ("nw", "se", etc.) */
+        resize,
+
+        /* Selection area constraints */
+        minWidth, minHeight, maxWidth, maxHeight,
+
+        /* Aspect ratio to maintain (floating point number) */
+        aspectRatio,
+
+        /* Are the plugin elements currently displayed? */
+        shown,
+
+        /* Current selection (relative to parent element) */
+        x1, y1, x2, y2,
+
+        /* Current selection (relative to scaled image) */
+        selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
+
+        /* Document element */
+        docElem = document.documentElement,
+
+        /* Various helper variables used throughout the code */
+        $p, d, i, o, w, h, adjusted;
+
+    /*
+     * Translate selection coordinates (relative to scaled image) to viewport
+     * coordinates (relative to parent element)
+     */
+
+    /**
+     * Translate selection X to viewport X
+     *
+     * @param x
+     *            Selection X
+     * @return Viewport X
+     */
+    function viewX(x) {
+        return x + imgOfs.left - parOfs.left;
+    }
+
+    /**
+     * Translate selection Y to viewport Y
+     *
+     * @param y
+     *            Selection Y
+     * @return Viewport Y
+     */
+    function viewY(y) {
+        return y + imgOfs.top - parOfs.top;
+    }
+
+    /*
+     * Translate viewport coordinates to selection coordinates
+     */
+
+    /**
+     * Translate viewport X to selection X
+     *
+     * @param x
+     *            Viewport X
+     * @return Selection X
+     */
+    function selX(x) {
+        return x - imgOfs.left + parOfs.left;
+    }
+
+    /**
+     * Translate viewport Y to selection Y
+     *
+     * @param y
+     *            Viewport Y
+     * @return Selection Y
+     */
+    function selY(y) {
+        return y - imgOfs.top + parOfs.top;
+    }
+
+    /*
+     * Translate event coordinates (relative to document) to viewport
+     * coordinates
+     */
+
+    /**
+     * Get event X and translate it to viewport X
+     *
+     * @param event
+     *            The event object
+     * @return Viewport X
+     */
+    function evX(event) {
+        return event.pageX - parOfs.left;
+    }
+
+    /**
+     * Get event Y and translate it to viewport Y
+     *
+     * @param event
+     *            The event object
+     * @return Viewport Y
+     */
+    function evY(event) {
+        return event.pageY - parOfs.top;
+    }
+
+    /**
+     * Get the current selection
+     *
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
+    function getSelection(noScale) {
+        var sx = noScale || scaleX, sy = noScale || scaleY;
+
+        return { x1: round(selection.x1 * sx),
+            y1: round(selection.y1 * sy),
+            x2: round(selection.x2 * sx),
+            y2: round(selection.y2 * sy),
+            width: round(selection.x2 * sx) - round(selection.x1 * sx),
+            height: round(selection.y2 * sy) - round(selection.y1 * sy) };
+    }
+
+    /**
+     * Set the current selection
+     *
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
+    function setSelection(x1, y1, x2, y2, noScale) {
+        var sx = noScale || scaleX, sy = noScale || scaleY;
+
+        selection = {
+            x1: round(x1 / sx || 0),
+            y1: round(y1 / sy || 0),
+            x2: round(x2 / sx || 0),
+            y2: round(y2 / sy || 0)
+        };
+
+        selection.width = selection.x2 - selection.x1;
+        selection.height = selection.y2 - selection.y1;
+    }
+
+    /**
+     * Recalculate image and parent offsets
+     */
+    function adjust() {
+        /*
+         * Do not adjust if image width is not a positive number. This might
+         * happen when imgAreaSelect is put on a parent element which is then
+         * hidden.
+         */
+        if (!$img.width())
+            return;
+
+        /*
+         * Get image offset. The .offset() method returns float values, so they
+         * need to be rounded.
+         */
+        imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
+
+        /* Get image dimensions */
+        imgWidth = $img.innerWidth();
+        imgHeight = $img.innerHeight();
+
+        imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
+        imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
+
+        /* Set minimum and maximum selection area dimensions */
+        minWidth = round(options.minWidth / scaleX) || 0;
+        minHeight = round(options.minHeight / scaleY) || 0;
+        maxWidth = round(min(options.maxWidth / scaleX || 1<<24, imgWidth));
+        maxHeight = round(min(options.maxHeight / scaleY || 1<<24, imgHeight));
+
+        /*
+         * Workaround for jQuery 1.3.2 incorrect offset calculation, originally
+         * observed in Safari 3. Firefox 2 is also affected.
+         */
+        if ($().jquery == '1.3.2' && position == 'fixed' &&
+            !docElem['getBoundingClientRect'])
+        {
+            imgOfs.top += max(document.body.scrollTop, docElem.scrollTop);
+            imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
+        }
+
+        /* Determine parent element offset */
+        parOfs = /absolute|relative/.test($parent.css('position')) ?
+            { left: round($parent.offset().left) - $parent.scrollLeft(),
+                top: round($parent.offset().top) - $parent.scrollTop() } :
+            position == 'fixed' ?
+                { left: $(document).scrollLeft(), top: $(document).scrollTop() } :
+                { left: 0, top: 0 };
+
+        left = viewX(0);
+        top = viewY(0);
+
+        /*
+         * Check if selection area is within image boundaries, adjust if
+         * necessary
+         */
+        if (selection.x2 > imgWidth || selection.y2 > imgHeight)
+            doResize();
+    }
+
+    /**
+     * Update plugin elements
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    function update(resetKeyPress) {
+        /* If plugin elements are hidden, do nothing */
+        if (!shown) return;
+
+        /*
+         * Set the position and size of the container box and the selection area
+         * inside it
+         */
+        $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
+            .add($area).width(w = selection.width).height(h = selection.height);
+
+        /*
+         * Reset the position of selection area, borders, and handles (IE6/IE7
+         * position them incorrectly if we don't do this)
+         */
+        $area.add($border).add($handles).css({ left: 0, top: 0 });
+
+        /* Set border dimensions */
+        $border
+            .width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
+            .height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
+
+        /* Arrange the outer area elements */
+        $($outer[0]).css({ left: left, top: top,
+            width: selection.x1, height: imgHeight });
+        $($outer[1]).css({ left: left + selection.x1, top: top,
+            width: w, height: selection.y1 });
+        $($outer[2]).css({ left: left + selection.x2, top: top,
+            width: imgWidth - selection.x2, height: imgHeight });
+        $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2,
+            width: w, height: imgHeight - selection.y2 });
+
+        w -= $handles.outerWidth();
+        h -= $handles.outerHeight();
+
+        /* Arrange handles */
+        switch ($handles.length) {
+        case 8:
+            $($handles[4]).css({ left: w >> 1 });
+            $($handles[5]).css({ left: w, top: h >> 1 });
+            $($handles[6]).css({ left: w >> 1, top: h });
+            $($handles[7]).css({ top: h >> 1 });
+        case 4:
+            $handles.slice(1,3).css({ left: w });
+            $handles.slice(2,4).css({ top: h });
+        }
+
+        if (resetKeyPress !== false) {
+            /*
+             * Need to reset the document keypress event handler -- unbind the
+             * current handler
+             */
+            if ($.imgAreaSelect.keyPress != docKeyPress)
+                $(document).unbind($.imgAreaSelect.keyPress,
+                    $.imgAreaSelect.onKeyPress);
+
+            if (options.keys)
+                /*
+                 * Set the document keypress event handler to this instance's
+                 * docKeyPress() function
+                 */
+                $(document)[$.imgAreaSelect.keyPress](
+                    $.imgAreaSelect.onKeyPress = docKeyPress);
+        }
+
+        /*
+         * Internet Explorer displays 1px-wide dashed borders incorrectly by
+         * filling the spaces between dashes with white. Toggling the margin
+         * property between 0 and "auto" fixes this in IE6 and IE7 (IE8 is still
+         * broken). This workaround is not perfect, as it requires setTimeout()
+         * and thus causes the border to flicker a bit, but I haven't found a
+         * better solution.
+         *
+         * Note: This only happens with CSS borders, set with the borderWidth,
+         * borderOpacity, borderColor1, and borderColor2 options (which are now
+         * deprecated). Borders created with GIF background images are fine.
+         */
+        if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) {
+            $border.css('margin', 0);
+            setTimeout(function () { $border.css('margin', 'auto'); }, 0);
+        }
+    }
+
+    /**
+     * Do the complete update sequence: recalculate offsets, update the
+     * elements, and set the correct values of x1, y1, x2, and y2.
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    function doUpdate(resetKeyPress) {
+        adjust();
+        update(resetKeyPress);
+        x1 = viewX(selection.x1); y1 = viewY(selection.y1);
+        x2 = viewX(selection.x2); y2 = viewY(selection.y2);
+    }
+
+    /**
+     * Hide or fade out an element (or multiple elements)
+     *
+     * @param $elem
+     *            A jQuery object containing the element(s) to hide/fade out
+     * @param fn
+     *            Callback function to be called when fadeOut() completes
+     */
+    function hide($elem, fn) {
+        options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide();
+    }
+
+    /**
+     * Selection area mousemove event handler
+     *
+     * @param event
+     *            The event object
+     */
+    function areaMouseMove(event) {
+        var x = selX(evX(event)) - selection.x1,
+            y = selY(evY(event)) - selection.y1;
+
+        if (!adjusted) {
+            adjust();
+            adjusted = true;
+
+            $box.one('mouseout', function () { adjusted = false; });
+        }
+
+        /* Clear the resize mode */
+        resize = '';
+
+        if (options.resizable) {
+            /*
+             * Check if the mouse pointer is over the resize margin area and set
+             * the resize mode accordingly
+             */
+            if (y <= options.resizeMargin)
+                resize = 'n';
+            else if (y >= selection.height - options.resizeMargin)
+                resize = 's';
+            if (x <= options.resizeMargin)
+                resize += 'w';
+            else if (x >= selection.width - options.resizeMargin)
+                resize += 'e';
+        }
+
+        $box.css('cursor', resize ? resize + '-resize' :
+            options.movable ? 'move' : '');
+        if ($areaOpera)
+            $areaOpera.toggle();
+    }
+
+    /**
+     * Document mouseup event handler
+     *
+     * @param event
+     *            The event object
+     */
+    function docMouseUp(event) {
+        /* Set back the default cursor */
+        $('body').css('cursor', '');
+        /*
+         * If autoHide is enabled, or if the selection has zero width/height,
+         * hide the selection and the outer area
+         */
+        if (options.autoHide || selection.width * selection.height == 0)
+            hide($box.add($outer), function () { $(this).hide(); });
+
+        $(document).unbind('mousemove', selectingMouseMove);
+        $box.mousemove(areaMouseMove);
+
+        options.onSelectEnd(img, getSelection());
+    }
+
+    /**
+     * Selection area mousedown event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function areaMouseDown(event) {
+        if (event.which != 1) return false;
+
+        adjust();
+
+        if (resize) {
+            /* Resize mode is in effect */
+            $('body').css('cursor', resize + '-resize');
+
+            x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
+            y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']);
+
+            $(document).mousemove(selectingMouseMove)
+                .one('mouseup', docMouseUp);
+            $box.unbind('mousemove', areaMouseMove);
+        }
+        else if (options.movable) {
+            startX = left + selection.x1 - evX(event);
+            startY = top + selection.y1 - evY(event);
+
+            $box.unbind('mousemove', areaMouseMove);
+
+            $(document).mousemove(movingMouseMove)
+                .one('mouseup', function () {
+                    options.onSelectEnd(img, getSelection());
+
+                    $(document).unbind('mousemove', movingMouseMove);
+                    $box.mousemove(areaMouseMove);
+                });
+        }
+        else
+            $img.mousedown(event);
+
+        return false;
+    }
+
+    /**
+     * Adjust the x2/y2 coordinates to maintain aspect ratio (if defined)
+     *
+     * @param xFirst
+     *            If set to <code>true</code>, calculate x2 first. Otherwise,
+     *            calculate y2 first.
+     */
+    function fixAspectRatio(xFirst) {
+        if (aspectRatio)
+            if (xFirst) {
+                x2 = max(left, min(left + imgWidth,
+                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));
+                y2 = round(max(top, min(top + imgHeight,
+                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
+                x2 = round(x2);
+            }
+            else {
+                y2 = max(top, min(top + imgHeight,
+                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)));
+                x2 = round(max(left, min(left + imgWidth,
+                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))));
+                y2 = round(y2);
+            }
+    }
+
+    /**
+     * Resize the selection area respecting the minimum/maximum dimensions and
+     * aspect ratio
+     */
+    function doResize() {
+        /*
+         * Make sure the top left corner of the selection area stays within
+         * image boundaries (it might not if the image source was dynamically
+         * changed).
+         */
+        x1 = min(x1, left + imgWidth);
+        y1 = min(y1, top + imgHeight);
+
+        if (abs(x2 - x1) < minWidth) {
+            /* Selection width is smaller than minWidth */
+            x2 = x1 - minWidth * (x2 < x1 || -1);
+
+            if (x2 < left)
+                x1 = left + minWidth;
+            else if (x2 > left + imgWidth)
+                x1 = left + imgWidth - minWidth;
+        }
+
+        if (abs(y2 - y1) < minHeight) {
+            /* Selection height is smaller than minHeight */
+            y2 = y1 - minHeight * (y2 < y1 || -1);
+
+            if (y2 < top)
+                y1 = top + minHeight;
+            else if (y2 > top + imgHeight)
+                y1 = top + imgHeight - minHeight;
+        }
+
+        x2 = max(left, min(x2, left + imgWidth));
+        y2 = max(top, min(y2, top + imgHeight));
+
+        fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
+
+        if (abs(x2 - x1) > maxWidth) {
+            /* Selection width is greater than maxWidth */
+            x2 = x1 - maxWidth * (x2 < x1 || -1);
+            fixAspectRatio();
+        }
+
+        if (abs(y2 - y1) > maxHeight) {
+            /* Selection height is greater than maxHeight */
+            y2 = y1 - maxHeight * (y2 < y1 || -1);
+            fixAspectRatio(true);
+        }
+
+        selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)),
+            y1: selY(min(y1, y2)), y2: selY(max(y1, y2)),
+            width: abs(x2 - x1), height: abs(y2 - y1) };
+
+        update();
+
+        options.onSelectChange(img, getSelection());
+    }
+
+    /**
+     * Mousemove event handler triggered when the user is selecting an area
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function selectingMouseMove(event) {
+        x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
+        y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
+
+        doResize();
+
+        return false;
+    }
+
+    /**
+     * Move the selection area
+     *
+     * @param newX1
+     *            New viewport X1
+     * @param newY1
+     *            New viewport Y1
+     */
+    function doMove(newX1, newY1) {
+        x2 = (x1 = newX1) + selection.width;
+        y2 = (y1 = newY1) + selection.height;
+
+        $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2),
+            y2: selY(y2) });
+
+        update();
+
+        options.onSelectChange(img, getSelection());
+    }
+
+    /**
+     * Mousemove event handler triggered when the selection area is being moved
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function movingMouseMove(event) {
+        x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
+        y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
+
+        doMove(x1, y1);
+
+        event.preventDefault();
+        return false;
+    }
+
+    /**
+     * Start selection
+     */
+    function startSelection() {
+        $(document).unbind('mousemove', startSelection);
+        adjust();
+
+        x2 = x1;
+        y2 = y1;
+        doResize();
+
+        resize = '';
+
+        if (!$outer.is(':visible'))
+            /* Show the plugin elements */
+            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
+
+        shown = true;
+
+        $(document).unbind('mouseup', cancelSelection)
+            .mousemove(selectingMouseMove).one('mouseup', docMouseUp);
+        $box.unbind('mousemove', areaMouseMove);
+
+        options.onSelectStart(img, getSelection());
+    }
+
+    /**
+     * Cancel selection
+     */
+    function cancelSelection() {
+        $(document).unbind('mousemove', startSelection)
+            .unbind('mouseup', cancelSelection);
+        hide($box.add($outer));
+
+        setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
+
+        /* If this is an API call, callback functions should not be triggered */
+        if (!(this instanceof $.imgAreaSelect)) {
+            options.onSelectChange(img, getSelection());
+            options.onSelectEnd(img, getSelection());
+        }
+    }
+
+    /**
+     * Image mousedown event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function imgMouseDown(event) {
+        /* Ignore the event if animation is in progress */
+        if (event.which != 1 || $outer.is(':animated')) return false;
+
+        adjust();
+        startX = x1 = evX(event);
+        startY = y1 = evY(event);
+
+        /* Selection will start when the mouse is moved */
+        $(document).mousemove(startSelection).mouseup(cancelSelection);
+
+        return false;
+    }
+
+    /**
+     * Window resize event handler
+     */
+    function windowResize() {
+        doUpdate(false);
+    }
+
+    /**
+     * Image load event handler. This is the final part of the initialization
+     * process.
+     */
+    function imgLoad() {
+        imgLoaded = true;
+
+        /* Set options */
+        setOptions(options = $.extend({
+            classPrefix: 'imgareaselect',
+            movable: true,
+            parent: 'body',
+            resizable: true,
+            resizeMargin: 10,
+            onInit: function () {},
+            onSelectStart: function () {},
+            onSelectChange: function () {},
+            onSelectEnd: function () {}
+        }, options));
+
+        $box.add($outer).css({ visibility: '' });
+
+        if (options.show) {
+            shown = true;
+            adjust();
+            update();
+            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
+        }
+
+        /*
+         * Call the onInit callback. The setTimeout() call is used to ensure
+         * that the plugin has been fully initialized and the object instance is
+         * available (so that it can be obtained in the callback).
+         */
+        setTimeout(function () { options.onInit(img, getSelection()); }, 0);
+    }
+
+    /**
+     * Document keypress event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
+    var docKeyPress = function(event) {
+        var k = options.keys, d, t, key = event.keyCode;
+
+        d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
+            !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
+            !isNaN(k.shift) && event.shiftKey ? k.shift :
+            !isNaN(k.arrows) ? k.arrows : 10;
+
+        if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
+            (k.ctrl == 'resize' && event.ctrlKey) ||
+            (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
+        {
+            /* Resize selection */
+
+            switch (key) {
+            case 37:
+                /* Left */
+                d = -d;
+            case 39:
+                /* Right */
+                t = max(x1, x2);
+                x1 = min(x1, x2);
+                x2 = max(t + d, x1);
+                fixAspectRatio();
+                break;
+            case 38:
+                /* Up */
+                d = -d;
+            case 40:
+                /* Down */
+                t = max(y1, y2);
+                y1 = min(y1, y2);
+                y2 = max(t + d, y1);
+                fixAspectRatio(true);
+                break;
+            default:
+                return;
+            }
+
+            doResize();
+        }
+        else {
+            /* Move selection */
+
+            x1 = min(x1, x2);
+            y1 = min(y1, y2);
+
+            switch (key) {
+            case 37:
+                /* Left */
+                doMove(max(x1 - d, left), y1);
+                break;
+            case 38:
+                /* Up */
+                doMove(x1, max(y1 - d, top));
+                break;
+            case 39:
+                /* Right */
+                doMove(x1 + min(d, imgWidth - selX(x2)), y1);
+                break;
+            case 40:
+                /* Down */
+                doMove(x1, y1 + min(d, imgHeight - selY(y2)));
+                break;
+            default:
+                return;
+            }
+        }
+
+        return false;
+    };
+
+    /**
+     * Apply style options to plugin element (or multiple elements)
+     *
+     * @param $elem
+     *            A jQuery object representing the element(s) to style
+     * @param props
+     *            An object that maps option names to corresponding CSS
+     *            properties
+     */
+    function styleOptions($elem, props) {
+        for (var option in props)
+            if (options[option] !== undefined)
+                $elem.css(props[option], options[option]);
+    }
+
+    /**
+     * Set plugin options
+     *
+     * @param newOptions
+     *            The new options object
+     */
+    function setOptions(newOptions) {
+        if (newOptions.parent)
+            ($parent = $(newOptions.parent)).append($box.add($outer));
+
+        /* Merge the new options with the existing ones */
+        $.extend(options, newOptions);
+
+        adjust();
+
+        if (newOptions.handles != null) {
+            /* Recreate selection area handles */
+            $handles.remove();
+            $handles = $([]);
+
+            i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;
+
+            while (i--)
+                $handles = $handles.add(div());
+
+            /* Add a class to handles and set the CSS properties */
+            $handles.addClass(options.classPrefix + '-handle').css({
+                position: 'absolute',
+                /*
+                 * The font-size property needs to be set to zero, otherwise
+                 * Internet Explorer makes the handles too large
+                 */
+                fontSize: 0,
+                zIndex: zIndex + 1 || 1
+            });
+
+            /*
+             * If handle width/height has not been set with CSS rules, set the
+             * default 5px
+             */
+            if (!parseInt($handles.css('width')) >= 0)
+                $handles.width(5).height(5);
+
+            /*
+             * If the borderWidth option is in use, add a solid border to
+             * handles
+             */
+            if (o = options.borderWidth)
+                $handles.css({ borderWidth: o, borderStyle: 'solid' });
+
+            /* Apply other style options */
+            styleOptions($handles, { borderColor1: 'border-color',
+                borderColor2: 'background-color',
+                borderOpacity: 'opacity' });
+        }
+
+        /* Calculate scale factors */
+        scaleX = options.imageWidth / imgWidth || 1;
+        scaleY = options.imageHeight / imgHeight || 1;
+
+        /* Set selection */
+        if (newOptions.x1 != null) {
+            setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
+                newOptions.y2);
+            newOptions.show = !newOptions.hide;
+        }
+
+        if (newOptions.keys)
+            /* Enable keyboard support */
+            options.keys = $.extend({ shift: 1, ctrl: 'resize' },
+                newOptions.keys);
+
+        /* Add classes to plugin elements */
+        $outer.addClass(options.classPrefix + '-outer');
+        $area.addClass(options.classPrefix + '-selection');
+        for (i = 0; i++ < 4;)
+            $($border[i-1]).addClass(options.classPrefix + '-border' + i);
+
+        /* Apply style options */
+        styleOptions($area, { selectionColor: 'background-color',
+            selectionOpacity: 'opacity' });
+        styleOptions($border, { borderOpacity: 'opacity',
+            borderWidth: 'border-width' });
+        styleOptions($outer, { outerColor: 'background-color',
+            outerOpacity: 'opacity' });
+        if (o = options.borderColor1)
+            $($border[0]).css({ borderStyle: 'solid', borderColor: o });
+        if (o = options.borderColor2)
+            $($border[1]).css({ borderStyle: 'dashed', borderColor: o });
+
+        /* Append all the selection area elements to the container box */
+        $box.append($area.add($border).add($areaOpera).add($handles));
+
+        if ($.browser.msie) {
+            if (o = $outer.css('filter').match(/opacity=(\d+)/))
+                $outer.css('opacity', o[1]/100);
+            if (o = $border.css('filter').match(/opacity=(\d+)/))
+                $border.css('opacity', o[1]/100);
+        }
+
+        if (newOptions.hide)
+            hide($box.add($outer));
+        else if (newOptions.show && imgLoaded) {
+            shown = true;
+            $box.add($outer).fadeIn(options.fadeSpeed||0);
+            doUpdate();
+        }
+
+        /* Calculate the aspect ratio factor */
+        aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
+
+        $img.add($outer).unbind('mousedown', imgMouseDown);
+
+        if (options.disable || options.enable === false) {
+            /* Disable the plugin */
+            $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
+            $(window).unbind('resize', windowResize);
+        }
+        else {
+            if (options.enable || options.disable === false) {
+                /* Enable the plugin */
+                if (options.resizable || options.movable)
+                    $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
+
+                $(window).resize(windowResize);
+            }
+
+            if (!options.persistent)
+                $img.add($outer).mousedown(imgMouseDown);
+        }
+
+        options.enable = options.disable = undefined;
+    }
+
+    /**
+     * Remove plugin completely
+     */
+    this.remove = function () {
+        /*
+         * Call setOptions with { disable: true } to unbind the event handlers
+         */
+        setOptions({ disable: true });
+        $box.add($outer).remove();
+    };
+
+    /*
+     * Public API
+     */
+
+    /**
+     * Get current options
+     *
+     * @return An object containing the set of options currently in use
+     */
+    this.getOptions = function () { return options; };
+
+    /**
+     * Set plugin options
+     *
+     * @param newOptions
+     *            The new options object
+     */
+    this.setOptions = setOptions;
+
+    /**
+     * Get the current selection
+     *
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
+    this.getSelection = getSelection;
+
+    /**
+     * Set the current selection
+     *
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
+    this.setSelection = setSelection;
+
+    /**
+     * Cancel selection
+     */
+    this.cancelSelection = cancelSelection;
+
+    /**
+     * Update plugin elements
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    this.update = doUpdate;
+
+    /*
+     * Traverse the image's parent elements (up to <body>) and find the
+     * highest z-index
+     */
+    $p = $img;
+
+    while ($p.length) {
+        zIndex = max(zIndex,
+            !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
+        /* Also check if any of the ancestor elements has fixed position */
+        if ($p.css('position') == 'fixed')
+            position = 'fixed';
+
+        $p = $p.parent(':not(body)');
+    }
+
+    /*
+     * If z-index is given as an option, it overrides the one found by the
+     * above loop
+     */
+    zIndex = options.zIndex || zIndex;
+
+    if ($.browser.msie)
+        $img.attr('unselectable', 'on');
+
+    /*
+     * In MSIE and WebKit, we need to use the keydown event instead of keypress
+     */
+    $.imgAreaSelect.keyPress = $.browser.msie ||
+        $.browser.safari ? 'keydown' : 'keypress';
+
+    /*
+     * There is a bug affecting the CSS cursor property in Opera (observed in
+     * versions up to 10.00) that prevents the cursor from being updated unless
+     * the mouse leaves and enters the element again. To trigger the mouseover
+     * event, we're adding an additional div to $box and we're going to toggle
+     * it when mouse moves inside the selection area.
+     */
+    if ($.browser.opera)
+        $areaOpera = div().css({ width: '100%', height: '100%',
+            position: 'absolute', zIndex: zIndex + 2 || 2 });
+
+    /*
+     * We initially set visibility to "hidden" as a workaround for a weird
+     * behaviour observed in Google Chrome 1.0.154.53 (on Windows XP). Normally
+     * we would just set display to "none", but, for some reason, if we do so
+     * then Chrome refuses to later display the element with .show() or
+     * .fadeIn().
+     */
+    $box.add($outer).css({ visibility: 'hidden', position: position,
+        overflow: 'hidden', zIndex: zIndex || '0' });
+    $box.css({ zIndex: zIndex + 2 || 2 });
+    $area.add($border).css({ position: 'absolute', fontSize: 0 });
+
+    /*
+     * If the image has been fully loaded, or if it is not really an image (eg.
+     * a div), call imgLoad() immediately; otherwise, bind it to be called once
+     * on image load event.
+     */
+    img.complete || img.readyState == 'complete' || !$img.is('img') ?
+        imgLoad() : $img.one('load', imgLoad);
+
+    /*
+     * MSIE 9.0 doesn't always fire the image load event -- resetting the src
+     * attribute seems to trigger it. The check is for version 7 and above to
+     * accommodate for MSIE 9 running in compatibility mode.
+     */
+   if (!imgLoaded && $.browser.msie && $.browser.version >= 7)
+        img.src = img.src;
+};
+
+/**
+ * Invoke imgAreaSelect on a jQuery object containing the image(s)
+ *
+ * @param options
+ *            Options object
+ * @return The jQuery object or a reference to imgAreaSelect instance (if the
+ *         <code>instance</code> option was specified)
+ */
+$.fn.imgAreaSelect = function (options) {
+    options = options || {};
+
+    this.each(function () {
+        /* Is there already an imgAreaSelect instance bound to this element? */
+        if ($(this).data('imgAreaSelect')) {
+            /* Yes there is -- is it supposed to be removed? */
+            if (options.remove) {
+                /* Remove the plugin */
+                $(this).data('imgAreaSelect').remove();
+                $(this).removeData('imgAreaSelect');
+            }
+            else
+                /* Reset options */
+                $(this).data('imgAreaSelect').setOptions(options);
+        }
+        else if (!options.remove) {
+            /* No exising instance -- create a new one */
+
+            /*
+             * If neither the "enable" nor the "disable" option is present, add
+             * "enable" as the default
+             */
+            if (options.enable === undefined && options.disable === undefined)
+                options.enable = true;
+
+            $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options));
+        }
+    });
+
+    if (options.instance)
+        /*
+         * Return the imgAreaSelect instance bound to the first element in the
+         * set
+         */
+        return $(this).data('imgAreaSelect');
+
+    return this;
+};
+
+})(jQuery);
diff --git a/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js b/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js
new file mode 100644 (file)
index 0000000..0f94968
--- /dev/null
@@ -0,0 +1 @@
+(function(e){var b=Math.abs,a=Math.max,d=Math.min,c=Math.round;function f(){return e("<div/>")}e.imgAreaSelect=function(s,X){var az=e(s),Z,av=f(),ai=f(),K=f().add(f()).add(f()).add(f()),ab=f().add(f()).add(f()).add(f()),O=e([]),V,n,q,aC={left:0,top:0},Q,j,C,P={left:0,top:0},D=0,ag="absolute",T,S,ad,ac,L,E,U,W,am,Y,N,A,aD,z,aB,y={x1:0,y1:0,x2:0,y2:0,width:0,height:0},p=document.documentElement,l,au,ap,aj,af,aq,x;function J(h){return h+aC.left-P.left}function I(h){return h+aC.top-P.top}function H(h){return h-aC.left+P.left}function B(h){return h-aC.top+P.top}function ao(h){return h.pageX-P.left}function al(h){return h.pageY-P.top}function G(h){var o=h||ad,i=h||ac;return{x1:c(y.x1*o),y1:c(y.y1*i),x2:c(y.x2*o),y2:c(y.y2*i),width:c(y.x2*o)-c(y.x1*o),height:c(y.y2*i)-c(y.y1*i)}}function ah(i,w,h,o,aE){var aG=aE||ad,aF=aE||ac;y={x1:c(i/aG||0),y1:c(w/aF||0),x2:c(h/aG||0),y2:c(o/aF||0)};y.width=y.x2-y.x1;y.height=y.y2-y.y1}function ar(){if(!az.width()){return}aC={left:c(az.offset().left),top:c(az.offset().top)};Q=az.innerWidth();j=az.innerHeight();aC.top+=(az.outerHeight()-j)>>1;aC.left+=(az.outerWidth()-Q)>>1;E=c(X.minWidth/ad)||0;U=c(X.minHeight/ac)||0;W=c(d(X.maxWidth/ad||1<<24,Q));am=c(d(X.maxHeight/ac||1<<24,j));if(e().jquery=="1.3.2"&&ag=="fixed"&&!p.getBoundingClientRect){aC.top+=a(document.body.scrollTop,p.scrollTop);aC.left+=a(document.body.scrollLeft,p.scrollLeft)}P=/absolute|relative/.test(C.css("position"))?{left:c(C.offset().left)-C.scrollLeft(),top:c(C.offset().top)-C.scrollTop()}:ag=="fixed"?{left:e(document).scrollLeft(),top:e(document).scrollTop()}:{left:0,top:0};n=J(0);q=I(0);if(y.x2>Q||y.y2>j){ay()}}function aa(h){if(!N){return}av.css({left:J(y.x1),top:I(y.y1)}).add(ai).width(af=y.width).height(aq=y.height);ai.add(K).add(O).css({left:0,top:0});K.width(a(af-K.outerWidth()+K.innerWidth(),0)).height(a(aq-K.outerHeight()+K.innerHeight(),0));e(ab[0]).css({left:n,top:q,width:y.x1,height:j});e(ab[1]).css({left:n+y.x1,top:q,width:af,height:y.y1});e(ab[2]).css({left:n+y.x2,top:q,width:Q-y.x2,height:j});e(ab[3]).css({left:n+y.x1,top:q+y.y2,width:af,height:j-y.y2});af-=O.outerWidth();aq-=O.outerHeight();switch(O.length){case 8:e(O[4]).css({left:af>>1});e(O[5]).css({left:af,top:aq>>1});e(O[6]).css({left:af>>1,top:aq});e(O[7]).css({top:aq>>1});case 4:O.slice(1,3).css({left:af});O.slice(2,4).css({top:aq})}if(h!==false){if(e.imgAreaSelect.keyPress!=aw){e(document).unbind(e.imgAreaSelect.keyPress,e.imgAreaSelect.onKeyPress)}if(X.keys){e(document)[e.imgAreaSelect.keyPress](e.imgAreaSelect.onKeyPress=aw)}}if(e.browser.msie&&K.outerWidth()-K.innerWidth()==2){K.css("margin",0);setTimeout(function(){K.css("margin","auto")},0)}}function u(h){ar();aa(h);A=J(y.x1);aD=I(y.y1);z=J(y.x2);aB=I(y.y2)}function ak(h,i){X.fadeSpeed?h.fadeOut(X.fadeSpeed,i):h.hide()}function F(i){var h=H(ao(i))-y.x1,o=B(al(i))-y.y1;if(!x){ar();x=true;av.one("mouseout",function(){x=false})}L="";if(X.resizable){if(o<=X.resizeMargin){L="n"}else{if(o>=y.height-X.resizeMargin){L="s"}}if(h<=X.resizeMargin){L+="w"}else{if(h>=y.width-X.resizeMargin){L+="e"}}}av.css("cursor",L?L+"-resize":X.movable?"move":"");if(V){V.toggle()}}function an(h){e("body").css("cursor","");if(X.autoHide||y.width*y.height==0){ak(av.add(ab),function(){e(this).hide()})}e(document).unbind("mousemove",ae);av.mousemove(F);X.onSelectEnd(s,G())}function t(h){if(h.which!=1){return false}ar();if(L){e("body").css("cursor",L+"-resize");A=J(y[/w/.test(L)?"x2":"x1"]);aD=I(y[/n/.test(L)?"y2":"y1"]);e(document).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F)}else{if(X.movable){T=n+y.x1-ao(h);S=q+y.y1-al(h);av.unbind("mousemove",F);e(document).mousemove(g).one("mouseup",function(){X.onSelectEnd(s,G());e(document).unbind("mousemove",g);av.mousemove(F)})}else{az.mousedown(h)}}return false}function r(h){if(Y){if(h){z=a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1)));aB=c(a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1))));z=c(z)}else{aB=a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1)));z=c(a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1))));aB=c(aB)}}}function ay(){A=d(A,n+Q);aD=d(aD,q+j);if(b(z-A)<E){z=A-E*(z<A||-1);if(z<n){A=n+E}else{if(z>n+Q){A=n+Q-E}}}if(b(aB-aD)<U){aB=aD-U*(aB<aD||-1);if(aB<q){aD=q+U}else{if(aB>q+j){aD=q+j-U}}}z=a(n,d(z,n+Q));aB=a(q,d(aB,q+j));r(b(z-A)<b(aB-aD)*Y);if(b(z-A)>W){z=A-W*(z<A||-1);r()}if(b(aB-aD)>am){aB=aD-am*(aB<aD||-1);r(true)}y={x1:H(d(A,z)),x2:H(a(A,z)),y1:B(d(aD,aB)),y2:B(a(aD,aB)),width:b(z-A),height:b(aB-aD)};aa();X.onSelectChange(s,G())}function ae(h){z=/w|e|^$/.test(L)||Y?ao(h):J(y.x2);aB=/n|s|^$/.test(L)||Y?al(h):I(y.y2);ay();return false}function R(h,i){z=(A=h)+y.width;aB=(aD=i)+y.height;e.extend(y,{x1:H(A),y1:B(aD),x2:H(z),y2:B(aB)});aa();X.onSelectChange(s,G())}function g(h){A=a(n,d(T+ao(h),n+Q-y.width));aD=a(q,d(S+al(h),q+j-y.height));R(A,aD);h.preventDefault();return false}function aA(){e(document).unbind("mousemove",aA);ar();z=A;aB=aD;ay();L="";if(!ab.is(":visible")){av.add(ab).hide().fadeIn(X.fadeSpeed||0)}N=true;e(document).unbind("mouseup",at).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F);X.onSelectStart(s,G())}function at(){e(document).unbind("mousemove",aA).unbind("mouseup",at);ak(av.add(ab));ah(H(A),B(aD),H(A),B(aD));if(!(this instanceof e.imgAreaSelect)){X.onSelectChange(s,G());X.onSelectEnd(s,G())}}function m(h){if(h.which!=1||ab.is(":animated")){return false}ar();T=A=ao(h);S=aD=al(h);e(document).mousemove(aA).mouseup(at);return false}function v(){u(false)}function ax(){Z=true;M(X=e.extend({classPrefix:"imgareaselect",movable:true,parent:"body",resizable:true,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},X));av.add(ab).css({visibility:""});if(X.show){N=true;ar();aa();av.add(ab).hide().fadeIn(X.fadeSpeed||0)}setTimeout(function(){X.onInit(s,G())},0)}var aw=function(w){var h=X.keys,aE,o,i=w.keyCode;aE=!isNaN(h.alt)&&(w.altKey||w.originalEvent.altKey)?h.alt:!isNaN(h.ctrl)&&w.ctrlKey?h.ctrl:!isNaN(h.shift)&&w.shiftKey?h.shift:!isNaN(h.arrows)?h.arrows:10;if(h.arrows=="resize"||(h.shift=="resize"&&w.shiftKey)||(h.ctrl=="resize"&&w.ctrlKey)||(h.alt=="resize"&&(w.altKey||w.originalEvent.altKey))){switch(i){case 37:aE=-aE;case 39:o=a(A,z);A=d(A,z);z=a(o+aE,A);r();break;case 38:aE=-aE;case 40:o=a(aD,aB);aD=d(aD,aB);aB=a(o+aE,aD);r(true);break;default:return}ay()}else{A=d(A,z);aD=d(aD,aB);switch(i){case 37:R(a(A-aE,n),aD);break;case 38:R(A,a(aD-aE,q));break;case 39:R(A+d(aE,Q-H(z)),aD);break;case 40:R(A,aD+d(aE,j-B(aB)));break;default:return}}return false};function k(h,o){for(var i in o){if(X[i]!==undefined){h.css(o[i],X[i])}}}function M(h){if(h.parent){(C=e(h.parent)).append(av.add(ab))}e.extend(X,h);ar();if(h.handles!=null){O.remove();O=e([]);ap=h.handles?h.handles=="corners"?4:8:0;while(ap--){O=O.add(f())}O.addClass(X.classPrefix+"-handle").css({position:"absolute",fontSize:0,zIndex:D+1||1});if(!parseInt(O.css("width"))>=0){O.width(5).height(5)}if(aj=X.borderWidth){O.css({borderWidth:aj,borderStyle:"solid"})}k(O,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}ad=X.imageWidth/Q||1;ac=X.imageHeight/j||1;if(h.x1!=null){ah(h.x1,h.y1,h.x2,h.y2);h.show=!h.hide}if(h.keys){X.keys=e.extend({shift:1,ctrl:"resize"},h.keys)}ab.addClass(X.classPrefix+"-outer");ai.addClass(X.classPrefix+"-selection");for(ap=0;ap++<4;){e(K[ap-1]).addClass(X.classPrefix+"-border"+ap)}k(ai,{selectionColor:"background-color",selectionOpacity:"opacity"});k(K,{borderOpacity:"opacity",borderWidth:"border-width"});k(ab,{outerColor:"background-color",outerOpacity:"opacity"});if(aj=X.borderColor1){e(K[0]).css({borderStyle:"solid",borderColor:aj})}if(aj=X.borderColor2){e(K[1]).css({borderStyle:"dashed",borderColor:aj})}av.append(ai.add(K).add(V).add(O));if(e.browser.msie){if(aj=ab.css("filter").match(/opacity=(\d+)/)){ab.css("opacity",aj[1]/100)}if(aj=K.css("filter").match(/opacity=(\d+)/)){K.css("opacity",aj[1]/100)}}if(h.hide){ak(av.add(ab))}else{if(h.show&&Z){N=true;av.add(ab).fadeIn(X.fadeSpeed||0);u()}}Y=(au=(X.aspectRatio||"").split(/:/))[0]/au[1];az.add(ab).unbind("mousedown",m);if(X.disable||X.enable===false){av.unbind("mousemove",F).unbind("mousedown",t);e(window).unbind("resize",v)}else{if(X.enable||X.disable===false){if(X.resizable||X.movable){av.mousemove(F).mousedown(t)}e(window).resize(v)}if(!X.persistent){az.add(ab).mousedown(m)}}X.enable=X.disable=undefined}this.remove=function(){M({disable:true});av.add(ab).remove()};this.getOptions=function(){return X};this.setOptions=M;this.getSelection=G;this.setSelection=ah;this.cancelSelection=at;this.update=u;l=az;while(l.length){D=a(D,!isNaN(l.css("z-index"))?l.css("z-index"):D);if(l.css("position")=="fixed"){ag="fixed"}l=l.parent(":not(body)")}D=X.zIndex||D;if(e.browser.msie){az.attr("unselectable","on")}e.imgAreaSelect.keyPress=e.browser.msie||e.browser.safari?"keydown":"keypress";if(e.browser.opera){V=f().css({width:"100%",height:"100%",position:"absolute",zIndex:D+2||2})}av.add(ab).css({visibility:"hidden",position:ag,overflow:"hidden",zIndex:D||"0"});av.css({zIndex:D+2||2});ai.add(K).css({position:"absolute",fontSize:0});s.complete||s.readyState=="complete"||!az.is("img")?ax():az.one("load",ax);if(!Z&&e.browser.msie&&e.browser.version>=7){s.src=s.src}};e.fn.imgAreaSelect=function(g){g=g||{};this.each(function(){if(e(this).data("imgAreaSelect")){if(g.remove){e(this).data("imgAreaSelect").remove();e(this).removeData("imgAreaSelect")}else{e(this).data("imgAreaSelect").setOptions(g)}}else{if(!g.remove){if(g.enable===undefined&&g.disable===undefined){g.enable=true}e(this).data("imgAreaSelect",new e.imgAreaSelect(this,g))}}});if(g.instance){return e(this).data("imgAreaSelect")}return this}})(jQuery);
\ No newline at end of file
index 72ea7ccb5321d5384d70437cfaac73011237901e..0e24ab1b1262cf788b592e9429a869cbcec56baf 100644 (file)
Binary files a/wp-includes/js/jcrop/Jcrop.gif and b/wp-includes/js/jcrop/Jcrop.gif differ
diff --git a/wp-includes/js/jcrop/jquery.Jcrop.css b/wp-includes/js/jcrop/jquery.Jcrop.css
deleted file mode 100644 (file)
index 24925dc..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */
-.jcrop-holder { text-align: left; }
-
-.jcrop-vline, .jcrop-hline
-{
-       font-size: 0;
-       position: absolute;
-       background: white url('Jcrop.gif') top left repeat;
-}
-.jcrop-vline { height: 100%; width: 1px !important; }
-.jcrop-hline { width: 100%; height: 1px !important; }
-.jcrop-handle {
-       font-size: 1px;
-       width: 7px !important;
-       height: 7px !important;
-       border: 1px #eee solid;
-       background-color: #333;
-       *width: 9px;
-       *height: 9px;
-}
-
-.jcrop-tracker { width: 100%; height: 100%; }
-
-.custom .jcrop-vline,
-.custom .jcrop-hline
-{
-       background: yellow;
-}
-.custom .jcrop-handle
-{
-       border-color: black;
-       background-color: #C7BB00;
-       -moz-border-radius: 3px;
-       -webkit-border-radius: 3px;
-}
diff --git a/wp-includes/js/jcrop/jquery.Jcrop.dev.js b/wp-includes/js/jcrop/jquery.Jcrop.dev.js
deleted file mode 100644 (file)
index ad261f9..0000000
+++ /dev/null
@@ -1,1197 +0,0 @@
-/**
- * jquery.Jcrop.js v0.9.8
- * jQuery Image Cropping Plugin
- * @author Kelly Hallman <khallman@gmail.com>
- * Copyright (c) 2008-2009 Kelly Hallman - released under MIT License {{{
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
-
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
-
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
-
- * }}}
- */
-
-(function($) {
-
-$.Jcrop = function(obj,opt)
-{
-       // Initialization {{{
-
-       // Sanitize some options {{{
-       var obj = obj, opt = opt;
-
-       if (typeof(obj) !== 'object') obj = $(obj)[0];
-       if (typeof(opt) !== 'object') opt = { };
-
-       // Some on-the-fly fixes for MSIE...sigh
-       if (!('trackDocument' in opt))
-       {
-               opt.trackDocument = $.browser.msie ? false : true;
-               if ($.browser.msie && $.browser.version.split('.')[0] == '8')
-                       opt.trackDocument = true;
-       }
-
-       if (!('keySupport' in opt))
-                       opt.keySupport = $.browser.msie ? false : true;
-               
-       // }}}
-       // Extend the default options {{{
-       var defaults = {
-
-               // Basic Settings
-               trackDocument:          false,
-               baseClass:                      'jcrop',
-               addClass:                       null,
-
-               // Styling Options
-               bgColor:                        'black',
-               bgOpacity:                      .6,
-               borderOpacity:          .4,
-               handleOpacity:          .5,
-
-               handlePad:                      5,
-               handleSize:                     9,
-               handleOffset:           5,
-               edgeMargin:                     14,
-
-               aspectRatio:            0,
-               keySupport:                     true,
-               cornerHandles:          true,
-               sideHandles:            true,
-               drawBorders:            true,
-               dragEdges:                      true,
-
-               boxWidth:                       0,
-               boxHeight:                      0,
-
-               boundary:                       8,
-               animationDelay:         20,
-               swingSpeed:                     3,
-
-               allowSelect:            true,
-               allowMove:                      true,
-               allowResize:            true,
-
-               minSelect:                      [ 0, 0 ],
-               maxSize:                        [ 0, 0 ],
-               minSize:                        [ 0, 0 ],
-
-               // Callbacks / Event Handlers
-               onChange: function() { },
-               onSelect: function() { }
-
-       };
-       var options = defaults;
-       setOptions(opt);
-
-       // }}}
-       // Initialize some jQuery objects {{{
-
-       var $origimg = $(obj);
-       var $img = $origimg.clone().removeAttr('id').css({ position: 'absolute' });
-
-       $img.width($origimg.width());
-       $img.height($origimg.height());
-       $origimg.after($img).hide();
-
-       presize($img,options.boxWidth,options.boxHeight);
-
-       var boundx = $img.width(),
-               boundy = $img.height(),
-
-               $div = $('<div />')
-                       .width(boundx).height(boundy)
-                       .addClass(cssClass('holder'))
-                       .css({
-                               position: 'relative',
-                               backgroundColor: options.bgColor
-                       }).insertAfter($origimg).append($img);
-       ;
-       
-       if (options.addClass) $div.addClass(options.addClass);
-       //$img.wrap($div);
-
-       var $img2 = $('<img />')/*{{{*/
-                       .attr('src',$img.attr('src'))
-                       .css('position','absolute')
-                       .width(boundx).height(boundy)
-       ;/*}}}*/
-       var $img_holder = $('<div />')/*{{{*/
-               .width(pct(100)).height(pct(100))
-               .css({
-                       zIndex: 310,
-                       position: 'absolute',
-                       overflow: 'hidden'
-               })
-               .append($img2)
-       ;/*}}}*/
-       var $hdl_holder = $('<div />')/*{{{*/
-               .width(pct(100)).height(pct(100))
-               .css('zIndex',320);
-       /*}}}*/
-       var $sel = $('<div />')/*{{{*/
-               .css({
-                       position: 'absolute',
-                       zIndex: 300
-               })
-               .insertBefore($img)
-               .append($img_holder,$hdl_holder)
-       ;/*}}}*/
-
-       var bound = options.boundary;
-       var $trk = newTracker().width(boundx+(bound*2)).height(boundy+(bound*2))
-               .css({ position: 'absolute', top: px(-bound), left: px(-bound), zIndex: 290 })
-               .mousedown(newSelection);       
-       
-       /* }}} */
-       // Set more variables {{{
-
-       var xlimit, ylimit, xmin, ymin;
-       var xscale, yscale, enabled = true;
-       var docOffset = getPos($img),
-               // Internal states
-               btndown, lastcurs, dimmed, animating,
-               shift_down;
-
-       // }}}
-               
-
-               // }}}
-       // Internal Modules {{{
-
-       var Coords = function()/*{{{*/
-       {
-               var x1 = 0, y1 = 0, x2 = 0, y2 = 0, ox, oy;
-
-               function setPressed(pos)/*{{{*/
-               {
-                       var pos = rebound(pos);
-                       x2 = x1 = pos[0];
-                       y2 = y1 = pos[1];
-               };
-               /*}}}*/
-               function setCurrent(pos)/*{{{*/
-               {
-                       var pos = rebound(pos);
-                       ox = pos[0] - x2;
-                       oy = pos[1] - y2;
-                       x2 = pos[0];
-                       y2 = pos[1];
-               };
-               /*}}}*/
-               function getOffset()/*{{{*/
-               {
-                       return [ ox, oy ];
-               };
-               /*}}}*/
-               function moveOffset(offset)/*{{{*/
-               {
-                       var ox = offset[0], oy = offset[1];
-
-                       if (0 > x1 + ox) ox -= ox + x1;
-                       if (0 > y1 + oy) oy -= oy + y1;
-
-                       if (boundy < y2 + oy) oy += boundy - (y2 + oy);
-                       if (boundx < x2 + ox) ox += boundx - (x2 + ox);
-
-                       x1 += ox;
-                       x2 += ox;
-                       y1 += oy;
-                       y2 += oy;
-               };
-               /*}}}*/
-               function getCorner(ord)/*{{{*/
-               {
-                       var c = getFixed();
-                       switch(ord)
-                       {
-                               case 'ne': return [ c.x2, c.y ];
-                               case 'nw': return [ c.x, c.y ];
-                               case 'se': return [ c.x2, c.y2 ];
-                               case 'sw': return [ c.x, c.y2 ];
-                       }
-               };
-               /*}}}*/
-               function getFixed()/*{{{*/
-               {
-                       if (!options.aspectRatio) return getRect();
-                       // This function could use some optimization I think...
-                       var aspect = options.aspectRatio,
-                               min_x = options.minSize[0]/xscale, 
-                               min_y = options.minSize[1]/yscale,
-                               max_x = options.maxSize[0]/xscale, 
-                               max_y = options.maxSize[1]/yscale,
-                               rw = x2 - x1,
-                               rh = y2 - y1,
-                               rwa = Math.abs(rw),
-                               rha = Math.abs(rh),
-                               real_ratio = rwa / rha,
-                               xx, yy
-                       ;
-                       if (max_x == 0) { max_x = boundx * 10 }
-                       if (max_y == 0) { max_y = boundy * 10 }
-                       if (real_ratio < aspect)
-                       {
-                               yy = y2;
-                               w = rha * aspect;
-                               xx = rw < 0 ? x1 - w : w + x1;
-
-                               if (xx < 0)
-                               {
-                                       xx = 0;
-                                       h = Math.abs((xx - x1) / aspect);
-                                       yy = rh < 0 ? y1 - h: h + y1;
-                               }
-                               else if (xx > boundx)
-                               {
-                                       xx = boundx;
-                                       h = Math.abs((xx - x1) / aspect);
-                                       yy = rh < 0 ? y1 - h : h + y1;
-                               }
-                       }
-                       else
-                       {
-                               xx = x2;
-                               h = rwa / aspect;
-                               yy = rh < 0 ? y1 - h : y1 + h;
-                               if (yy < 0)
-                               {
-                                       yy = 0;
-                                       w = Math.abs((yy - y1) * aspect);
-                                       xx = rw < 0 ? x1 - w : w + x1;
-                               }
-                               else if (yy > boundy)
-                               {
-                                       yy = boundy;
-                                       w = Math.abs(yy - y1) * aspect;
-                                       xx = rw < 0 ? x1 - w : w + x1;
-                               }
-                       }
-
-                       // Magic %-)
-                       if(xx > x1) { // right side
-                         if(xx - x1 < min_x) {
-                               xx = x1 + min_x;
-                         } else if (xx - x1 > max_x) {
-                               xx = x1 + max_x;
-                         }
-                         if(yy > y1) {
-                               yy = y1 + (xx - x1)/aspect;
-                         } else {
-                               yy = y1 - (xx - x1)/aspect;
-                         }
-                       } else if (xx < x1) { // left side
-                         if(x1 - xx < min_x) {
-                               xx = x1 - min_x
-                         } else if (x1 - xx > max_x) {
-                               xx = x1 - max_x;
-                         }
-                         if(yy > y1) {
-                               yy = y1 + (x1 - xx)/aspect;
-                         } else {
-                               yy = y1 - (x1 - xx)/aspect;
-                         }
-                       }
-
-                       if(xx < 0) {
-                               x1 -= xx;
-                               xx = 0;
-                       } else  if (xx > boundx) {
-                               x1 -= xx - boundx;
-                               xx = boundx;
-                       }
-
-                       if(yy < 0) {
-                               y1 -= yy;
-                               yy = 0;
-                       } else  if (yy > boundy) {
-                               y1 -= yy - boundy;
-                               yy = boundy;
-                       }
-
-                       return last = makeObj(flipCoords(x1,y1,xx,yy));
-               };
-               /*}}}*/
-               function rebound(p)/*{{{*/
-               {
-                       if (p[0] < 0) p[0] = 0;
-                       if (p[1] < 0) p[1] = 0;
-
-                       if (p[0] > boundx) p[0] = boundx;
-                       if (p[1] > boundy) p[1] = boundy;
-
-                       return [ p[0], p[1] ];
-               };
-               /*}}}*/
-               function flipCoords(x1,y1,x2,y2)/*{{{*/
-               {
-                       var xa = x1, xb = x2, ya = y1, yb = y2;
-                       if (x2 < x1)
-                       {
-                               xa = x2;
-                               xb = x1;
-                       }
-                       if (y2 < y1)
-                       {
-                               ya = y2;
-                               yb = y1;
-                       }
-                       return [ Math.round(xa), Math.round(ya), Math.round(xb), Math.round(yb) ];
-               };
-               /*}}}*/
-               function getRect()/*{{{*/
-               {
-                       var xsize = x2 - x1;
-                       var ysize = y2 - y1;
-
-                       if (xlimit && (Math.abs(xsize) > xlimit))
-                               x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
-                       if (ylimit && (Math.abs(ysize) > ylimit))
-                               y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
-
-                       if (ymin && (Math.abs(ysize) < ymin))
-                               y2 = (ysize > 0) ? (y1 + ymin) : (y1 - ymin);
-                       if (xmin && (Math.abs(xsize) < xmin))
-                               x2 = (xsize > 0) ? (x1 + xmin) : (x1 - xmin);
-
-                       if (x1 < 0) { x2 -= x1; x1 -= x1; }
-                       if (y1 < 0) { y2 -= y1; y1 -= y1; }
-                       if (x2 < 0) { x1 -= x2; x2 -= x2; }
-                       if (y2 < 0) { y1 -= y2; y2 -= y2; }
-                       if (x2 > boundx) { var delta = x2 - boundx; x1 -= delta; x2 -= delta; }
-                       if (y2 > boundy) { var delta = y2 - boundy; y1 -= delta; y2 -= delta; }
-                       if (x1 > boundx) { var delta = x1 - boundy; y2 -= delta; y1 -= delta; }
-                       if (y1 > boundy) { var delta = y1 - boundy; y2 -= delta; y1 -= delta; }
-
-                       return makeObj(flipCoords(x1,y1,x2,y2));
-               };
-               /*}}}*/
-               function makeObj(a)/*{{{*/
-               {
-                       return { x: a[0], y: a[1], x2: a[2], y2: a[3],
-                               w: a[2] - a[0], h: a[3] - a[1] };
-               };
-               /*}}}*/
-
-               return {
-                       flipCoords: flipCoords,
-                       setPressed: setPressed,
-                       setCurrent: setCurrent,
-                       getOffset: getOffset,
-                       moveOffset: moveOffset,
-                       getCorner: getCorner,
-                       getFixed: getFixed
-               };
-       }();
-
-       /*}}}*/
-       var Selection = function()/*{{{*/
-       {
-               var start, end, dragmode, awake, hdep = 370;
-               var borders = { };
-               var handle = { };
-               var seehandles = false;
-               var hhs = options.handleOffset;
-
-               /* Insert draggable elements {{{*/
-
-               // Insert border divs for outline
-               if (options.drawBorders) {
-                       borders = {
-                                       top: insertBorder('hline')
-                                               .css('top',$.browser.msie?px(-1):px(0)),
-                                       bottom: insertBorder('hline'),
-                                       left: insertBorder('vline'),
-                                       right: insertBorder('vline')
-                       };
-               }
-
-               // Insert handles on edges
-               if (options.dragEdges) {
-                       handle.t = insertDragbar('n');
-                       handle.b = insertDragbar('s');
-                       handle.r = insertDragbar('e');
-                       handle.l = insertDragbar('w');
-               }
-
-               // Insert side handles
-               options.sideHandles &&
-                       createHandles(['n','s','e','w']);
-
-               // Insert corner handles
-               options.cornerHandles &&
-                       createHandles(['sw','nw','ne','se']);
-
-               /*}}}*/
-               // Private Methods
-               function insertBorder(type)/*{{{*/
-               {
-                       var jq = $('<div />')
-                               .css({position: 'absolute', opacity: options.borderOpacity })
-                               .addClass(cssClass(type));
-                       $img_holder.append(jq);
-                       return jq;
-               };
-               /*}}}*/
-               function dragDiv(ord,zi)/*{{{*/
-               {
-                       var jq = $('<div />')
-                               .mousedown(createDragger(ord))
-                               .css({
-                                       cursor: ord+'-resize',
-                                       position: 'absolute',
-                                       zIndex: zi 
-                               })
-                       ;
-                       $hdl_holder.append(jq);
-                       return jq;
-               };
-               /*}}}*/
-               function insertHandle(ord)/*{{{*/
-               {
-                       return dragDiv(ord,hdep++)
-                               .css({ top: px(-hhs+1), left: px(-hhs+1), opacity: options.handleOpacity })
-                               .addClass(cssClass('handle'));
-               };
-               /*}}}*/
-               function insertDragbar(ord)/*{{{*/
-               {
-                       var s = options.handleSize,
-                               o = hhs,
-                               h = s, w = s,
-                               t = o, l = o;
-
-                       switch(ord)
-                       {
-                               case 'n': case 's': w = pct(100); break;
-                               case 'e': case 'w': h = pct(100); break;
-                       }
-
-                       return dragDiv(ord,hdep++).width(w).height(h)
-                               .css({ top: px(-t+1), left: px(-l+1)});
-               };
-               /*}}}*/
-               function createHandles(li)/*{{{*/
-               {
-                       for(i in li) handle[li[i]] = insertHandle(li[i]);
-               };
-               /*}}}*/
-               function moveHandles(c)/*{{{*/
-               {
-                       var midvert  = Math.round((c.h / 2) - hhs),
-                               midhoriz = Math.round((c.w / 2) - hhs),
-                               north = west = -hhs+1,
-                               east = c.w - hhs,
-                               south = c.h - hhs,
-                               x, y;
-
-                       'e' in handle &&
-                               handle.e.css({ top: px(midvert), left: px(east) }) &&
-                               handle.w.css({ top: px(midvert) }) &&
-                               handle.s.css({ top: px(south), left: px(midhoriz) }) &&
-                               handle.n.css({ left: px(midhoriz) });
-
-                       'ne' in handle &&
-                               handle.ne.css({ left: px(east) }) &&
-                               handle.se.css({ top: px(south), left: px(east) }) &&
-                               handle.sw.css({ top: px(south) });
-
-                       'b' in handle &&
-                               handle.b.css({ top: px(south) }) &&
-                               handle.r.css({ left: px(east) });
-               };
-               /*}}}*/
-               function moveto(x,y)/*{{{*/
-               {
-                       $img2.css({ top: px(-y), left: px(-x) });
-                       $sel.css({ top: px(y), left: px(x) });
-               };
-               /*}}}*/
-               function resize(w,h)/*{{{*/
-               {
-                       $sel.width(w).height(h);
-               };
-               /*}}}*/
-               function refresh()/*{{{*/
-               {
-                       var c = Coords.getFixed();
-
-                       Coords.setPressed([c.x,c.y]);
-                       Coords.setCurrent([c.x2,c.y2]);
-
-                       updateVisible();
-               };
-               /*}}}*/
-
-               // Internal Methods
-               function updateVisible()/*{{{*/
-                       { if (awake) return update(); };
-               /*}}}*/
-               function update()/*{{{*/
-               {
-                       var c = Coords.getFixed();
-
-                       resize(c.w,c.h);
-                       moveto(c.x,c.y);
-
-                       options.drawBorders &&
-                               borders['right'].css({ left: px(c.w-1) }) &&
-                                       borders['bottom'].css({ top: px(c.h-1) });
-
-                       seehandles && moveHandles(c);
-                       awake || show();
-
-                       options.onChange(unscale(c));
-               };
-               /*}}}*/
-               function show()/*{{{*/
-               {
-                       $sel.show();
-                       $img.css('opacity',options.bgOpacity);
-                       awake = true;
-               };
-               /*}}}*/
-               function release()/*{{{*/
-               {
-                       disableHandles();
-                       $sel.hide();
-                       $img.css('opacity',1);
-                       awake = false;
-               };
-               /*}}}*/
-               function showHandles()//{{{
-               {
-                       if (seehandles)
-                       {
-                               moveHandles(Coords.getFixed());
-                               $hdl_holder.show();
-                       }
-               };
-               //}}}
-               function enableHandles()/*{{{*/
-               { 
-                       seehandles = true;
-                       if (options.allowResize)
-                       {
-                               moveHandles(Coords.getFixed());
-                               $hdl_holder.show();
-                               return true;
-                       }
-               };
-               /*}}}*/
-               function disableHandles()/*{{{*/
-               {
-                       seehandles = false;
-                       $hdl_holder.hide();
-               };
-               /*}}}*/
-               function animMode(v)/*{{{*/
-               {
-                       (animating = v) ? disableHandles(): enableHandles();
-               };
-               /*}}}*/
-               function done()/*{{{*/
-               {
-                       animMode(false);
-                       refresh();
-               };
-               /*}}}*/
-
-               var $track = newTracker().mousedown(createDragger('move'))
-                               .css({ cursor: 'move', position: 'absolute', zIndex: 360 })
-
-               $img_holder.append($track);
-               disableHandles();
-
-               return {
-                       updateVisible: updateVisible,
-                       update: update,
-                       release: release,
-                       refresh: refresh,
-                       setCursor: function (cursor) { $track.css('cursor',cursor); },
-                       enableHandles: enableHandles,
-                       enableOnly: function() { seehandles = true; },
-                       showHandles: showHandles,
-                       disableHandles: disableHandles,
-                       animMode: animMode,
-                       done: done
-               };
-       }();
-       /*}}}*/
-       var Tracker = function()/*{{{*/
-       {
-               var onMove              = function() { },
-                       onDone          = function() { },
-                       trackDoc        = options.trackDocument;
-
-               if (!trackDoc)
-               {
-                       $trk
-                               .mousemove(trackMove)
-                               .mouseup(trackUp)
-                               .mouseout(trackUp)
-                       ;
-               }
-
-               function toFront()/*{{{*/
-               {
-                       $trk.css({zIndex:450});
-                       if (trackDoc)
-                       {
-                               $(document)
-                                       .mousemove(trackMove)
-                                       .mouseup(trackUp)
-                               ;
-                       }
-               }
-               /*}}}*/
-               function toBack()/*{{{*/
-               {
-                       $trk.css({zIndex:290});
-                       if (trackDoc)
-                       {
-                               $(document)
-                                       .unbind('mousemove',trackMove)
-                                       .unbind('mouseup',trackUp)
-                               ;
-                       }
-               }
-               /*}}}*/
-               function trackMove(e)/*{{{*/
-               {
-                       onMove(mouseAbs(e));
-               };
-               /*}}}*/
-               function trackUp(e)/*{{{*/
-               {
-                       e.preventDefault();
-                       e.stopPropagation();
-
-                       if (btndown)
-                       {
-                               btndown = false;
-
-                               onDone(mouseAbs(e));
-                               options.onSelect(unscale(Coords.getFixed()));
-                               toBack();
-                               onMove = function() { };
-                               onDone = function() { };
-                       }
-
-                       return false;
-               };
-               /*}}}*/
-
-               function activateHandlers(move,done)/* {{{ */
-               {
-                       btndown = true;
-                       onMove = move;
-                       onDone = done;
-                       toFront();
-                       return false;
-               };
-               /* }}} */
-
-               function setCursor(t) { $trk.css('cursor',t); };
-
-               $img.before($trk);
-               return {
-                       activateHandlers: activateHandlers,
-                       setCursor: setCursor
-               };
-       }();
-       /*}}}*/
-       var KeyManager = function()/*{{{*/
-       {
-               var $keymgr = $('<input type="radio" />')
-                               .css({ position: 'absolute', left: '-30px' })
-                               .keypress(parseKey)
-                               .blur(onBlur),
-
-                       $keywrap = $('<div />')
-                               .css({
-                                       position: 'absolute',
-                                       overflow: 'hidden'
-                               })
-                               .append($keymgr)
-               ;
-
-               function watchKeys()/*{{{*/
-               {
-                       if (options.keySupport)
-                       {
-                               $keymgr.show();
-                               $keymgr.focus();
-                       }
-               };
-               /*}}}*/
-               function onBlur(e)/*{{{*/
-               {
-                       $keymgr.hide();
-               };
-               /*}}}*/
-               function doNudge(e,x,y)/*{{{*/
-               {
-                       if (options.allowMove) {
-                               Coords.moveOffset([x,y]);
-                               Selection.updateVisible();
-                       };
-                       e.preventDefault();
-                       e.stopPropagation();
-               };
-               /*}}}*/
-               function parseKey(e)/*{{{*/
-               {
-                       if (e.ctrlKey) return true;
-                       shift_down = e.shiftKey ? true : false;
-                       var nudge = shift_down ? 10 : 1;
-                       switch(e.keyCode)
-                       {
-                               case 37: doNudge(e,-nudge,0); break;
-                               case 39: doNudge(e,nudge,0); break;
-                               case 38: doNudge(e,0,-nudge); break;
-                               case 40: doNudge(e,0,nudge); break;
-
-                               case 27: Selection.release(); break;
-
-                               case 9: return true;
-                       }
-
-                       return nothing(e);
-               };
-               /*}}}*/
-               
-               if (options.keySupport) $keywrap.insertBefore($img);
-               return {
-                       watchKeys: watchKeys
-               };
-       }();
-       /*}}}*/
-
-       // }}}
-       // Internal Methods {{{
-
-       function px(n) { return '' + parseInt(n) + 'px'; };
-       function pct(n) { return '' + parseInt(n) + '%'; };
-       function cssClass(cl) { return options.baseClass + '-' + cl; };
-       function getPos(obj)/*{{{*/
-       {
-               // Updated in v0.9.4 to use built-in dimensions plugin
-               var pos = $(obj).offset();
-               return [ pos.left, pos.top ];
-       };
-       /*}}}*/
-       function mouseAbs(e)/*{{{*/
-       {
-               return [ (e.pageX - docOffset[0]), (e.pageY - docOffset[1]) ];
-       };
-       /*}}}*/
-       function myCursor(type)/*{{{*/
-       {
-               if (type != lastcurs)
-               {
-                       Tracker.setCursor(type);
-                       //Handles.xsetCursor(type);
-                       lastcurs = type;
-               }
-       };
-       /*}}}*/
-       function startDragMode(mode,pos)/*{{{*/
-       {
-               docOffset = getPos($img);
-               Tracker.setCursor(mode=='move'?mode:mode+'-resize');
-
-               if (mode == 'move')
-                       return Tracker.activateHandlers(createMover(pos), doneSelect);
-
-               var fc = Coords.getFixed();
-               var opp = oppLockCorner(mode);
-               var opc = Coords.getCorner(oppLockCorner(opp));
-
-               Coords.setPressed(Coords.getCorner(opp));
-               Coords.setCurrent(opc);
-
-               Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);
-       };
-       /*}}}*/
-       function dragmodeHandler(mode,f)/*{{{*/
-       {
-               return function(pos) {
-                       if (!options.aspectRatio) switch(mode)
-                       {
-                               case 'e': pos[1] = f.y2; break;
-                               case 'w': pos[1] = f.y2; break;
-                               case 'n': pos[0] = f.x2; break;
-                               case 's': pos[0] = f.x2; break;
-                       }
-                       else switch(mode)
-                       {
-                               case 'e': pos[1] = f.y+1; break;
-                               case 'w': pos[1] = f.y+1; break;
-                               case 'n': pos[0] = f.x+1; break;
-                               case 's': pos[0] = f.x+1; break;
-                       }
-                       Coords.setCurrent(pos);
-                       Selection.update();
-               };
-       };
-       /*}}}*/
-       function createMover(pos)/*{{{*/
-       {
-               var lloc = pos;
-               KeyManager.watchKeys();
-
-               return function(pos)
-               {
-                       Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
-                       lloc = pos;
-                       
-                       Selection.update();
-               };
-       };
-       /*}}}*/
-       function oppLockCorner(ord)/*{{{*/
-       {
-               switch(ord)
-               {
-                       case 'n': return 'sw';
-                       case 's': return 'nw';
-                       case 'e': return 'nw';
-                       case 'w': return 'ne';
-                       case 'ne': return 'sw';
-                       case 'nw': return 'se';
-                       case 'se': return 'nw';
-                       case 'sw': return 'ne';
-               };
-       };
-       /*}}}*/
-       function createDragger(ord)/*{{{*/
-       {
-               return function(e) {
-                       if (options.disabled) return false;
-                       if ((ord == 'move') && !options.allowMove) return false;
-                       btndown = true;
-                       startDragMode(ord,mouseAbs(e));
-                       e.stopPropagation();
-                       e.preventDefault();
-                       return false;
-               };
-       };
-       /*}}}*/
-       function presize($obj,w,h)/*{{{*/
-       {
-               var nw = $obj.width(), nh = $obj.height();
-               if ((nw > w) && w > 0)
-               {
-                       nw = w;
-                       nh = (w/$obj.width()) * $obj.height();
-               }
-               if ((nh > h) && h > 0)
-               {
-                       nh = h;
-                       nw = (h/$obj.height()) * $obj.width();
-               }
-               xscale = $obj.width() / nw;
-               yscale = $obj.height() / nh;
-               $obj.width(nw).height(nh);
-       };
-       /*}}}*/
-       function unscale(c)/*{{{*/
-       {
-               return {
-                       x: parseInt(c.x * xscale), y: parseInt(c.y * yscale), 
-                       x2: parseInt(c.x2 * xscale), y2: parseInt(c.y2 * yscale), 
-                       w: parseInt(c.w * xscale), h: parseInt(c.h * yscale)
-               };
-       };
-       /*}}}*/
-       function doneSelect(pos)/*{{{*/
-       {
-               var c = Coords.getFixed();
-               if (c.w > options.minSelect[0] && c.h > options.minSelect[1])
-               {
-                       Selection.enableHandles();
-                       Selection.done();
-               }
-               else
-               {
-                       Selection.release();
-               }
-               Tracker.setCursor( options.allowSelect?'crosshair':'default' );
-       };
-       /*}}}*/
-       function newSelection(e)/*{{{*/
-       {
-               if (options.disabled) return false;
-               if (!options.allowSelect) return false;
-               btndown = true;
-               docOffset = getPos($img);
-               Selection.disableHandles();
-               myCursor('crosshair');
-               var pos = mouseAbs(e);
-               Coords.setPressed(pos);
-               Tracker.activateHandlers(selectDrag,doneSelect);
-               KeyManager.watchKeys();
-               Selection.update();
-
-               e.stopPropagation();
-               e.preventDefault();
-               return false;
-       };
-       /*}}}*/
-       function selectDrag(pos)/*{{{*/
-       {
-               Coords.setCurrent(pos);
-               Selection.update();
-       };
-       /*}}}*/
-       function newTracker()
-       {
-               var trk = $('<div></div>').addClass(cssClass('tracker'));
-               $.browser.msie && trk.css({ opacity: 0, backgroundColor: 'white' });
-               return trk;
-       };
-
-       // }}}
-       // API methods {{{
-               
-       function animateTo(a)/*{{{*/
-       {
-               var x1 = a[0] / xscale,
-                       y1 = a[1] / yscale,
-                       x2 = a[2] / xscale,
-                       y2 = a[3] / yscale;
-
-               if (animating) return;
-
-               var animto = Coords.flipCoords(x1,y1,x2,y2);
-               var c = Coords.getFixed();
-               var animat = initcr = [ c.x, c.y, c.x2, c.y2 ];
-               var interv = options.animationDelay;
-
-               var x = animat[0];
-               var y = animat[1];
-               var x2 = animat[2];
-               var y2 = animat[3];
-               var ix1 = animto[0] - initcr[0];
-               var iy1 = animto[1] - initcr[1];
-               var ix2 = animto[2] - initcr[2];
-               var iy2 = animto[3] - initcr[3];
-               var pcent = 0;
-               var velocity = options.swingSpeed;
-
-               Selection.animMode(true);
-
-               var animator = function()
-               {
-                       return function()
-                       {
-                               pcent += (100 - pcent) / velocity;
-
-                               animat[0] = x + ((pcent / 100) * ix1);
-                               animat[1] = y + ((pcent / 100) * iy1);
-                               animat[2] = x2 + ((pcent / 100) * ix2);
-                               animat[3] = y2 + ((pcent / 100) * iy2);
-
-                               if (pcent < 100) animateStart();
-                                       else Selection.done();
-
-                               if (pcent >= 99.8) pcent = 100;
-
-                               setSelectRaw(animat);
-                       };
-               }();
-
-               function animateStart()
-                       { window.setTimeout(animator,interv); };
-
-               animateStart();
-       };
-       /*}}}*/
-       function setSelect(rect)//{{{
-       {
-               setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]);
-       };
-       //}}}
-       function setSelectRaw(l) /*{{{*/
-       {
-               Coords.setPressed([l[0],l[1]]);
-               Coords.setCurrent([l[2],l[3]]);
-               Selection.update();
-       };
-       /*}}}*/
-       function setOptions(opt)/*{{{*/
-       {
-               if (typeof(opt) != 'object') opt = { };
-               options = $.extend(options,opt);
-
-               if (typeof(options.onChange)!=='function')
-                       options.onChange = function() { };
-
-               if (typeof(options.onSelect)!=='function')
-                       options.onSelect = function() { };
-
-       };
-       /*}}}*/
-       function tellSelect()/*{{{*/
-       {
-               return unscale(Coords.getFixed());
-       };
-       /*}}}*/
-       function tellScaled()/*{{{*/
-       {
-               return Coords.getFixed();
-       };
-       /*}}}*/
-       function setOptionsNew(opt)/*{{{*/
-       {
-               setOptions(opt);
-               interfaceUpdate();
-       };
-       /*}}}*/
-       function disableCrop()//{{{
-       {
-               options.disabled = true;
-               Selection.disableHandles();
-               Selection.setCursor('default');
-               Tracker.setCursor('default');
-       };
-       //}}}
-       function enableCrop()//{{{
-       {
-               options.disabled = false;
-               interfaceUpdate();
-       };
-       //}}}
-       function cancelCrop()//{{{
-       {
-               Selection.done();
-               Tracker.activateHandlers(null,null);
-       };
-       //}}}
-       function destroy()//{{{
-       {
-               $div.remove();
-               $origimg.show();
-       };
-       //}}}
-
-       function interfaceUpdate(alt)//{{{
-       // This method tweaks the interface based on options object.
-       // Called when options are changed and at end of initialization.
-       {
-               options.allowResize ?
-                       alt?Selection.enableOnly():Selection.enableHandles():
-                       Selection.disableHandles();
-
-               Tracker.setCursor( options.allowSelect? 'crosshair': 'default' );
-               Selection.setCursor( options.allowMove? 'move': 'default' );
-
-               $div.css('backgroundColor',options.bgColor);
-
-               if ('setSelect' in options) {
-                       setSelect(opt.setSelect);
-                       Selection.done();
-                       delete(options.setSelect);
-               }
-
-               if ('trueSize' in options) {
-                       xscale = options.trueSize[0] / boundx;
-                       yscale = options.trueSize[1] / boundy;
-               }
-
-               xlimit = options.maxSize[0] || 0;
-               ylimit = options.maxSize[1] || 0;
-               xmin = options.minSize[0] || 0;
-               ymin = options.minSize[1] || 0;
-
-               if ('outerImage' in options)
-               {
-                       $img.attr('src',options.outerImage);
-                       delete(options.outerImage);
-               }
-
-               Selection.refresh();
-       };
-       //}}}
-
-       // }}}
-
-       $hdl_holder.hide();
-       interfaceUpdate(true);
-       
-       var api = {
-               animateTo: animateTo,
-               setSelect: setSelect,
-               setOptions: setOptionsNew,
-               tellSelect: tellSelect,
-               tellScaled: tellScaled,
-
-               disable: disableCrop,
-               enable: enableCrop,
-               cancel: cancelCrop,
-
-               focus: KeyManager.watchKeys,
-
-               getBounds: function() { return [ boundx * xscale, boundy * yscale ]; },
-               getWidgetSize: function() { return [ boundx, boundy ]; },
-
-               release: Selection.release,
-               destroy: destroy
-
-       };
-
-       $origimg.data('Jcrop',api);
-       return api;
-};
-
-$.fn.Jcrop = function(options)/*{{{*/
-{
-       function attachWhenDone(from)/*{{{*/
-       {
-               var loadsrc = options.useImg || from.src;
-               var img = new Image();
-               img.onload = function() { $.Jcrop(from,options); };
-               img.src = loadsrc;
-       };
-       /*}}}*/
-       if (typeof(options) !== 'object') options = { };
-
-       // Iterate over each object, attach Jcrop
-       this.each(function()
-       {
-               // If we've already attached to this object
-               if ($(this).data('Jcrop'))
-               {
-                       // The API can be requested this way (undocumented)
-                       if (options == 'api') return $(this).data('Jcrop');
-                       // Otherwise, we just reset the options...
-                       else $(this).data('Jcrop').setOptions(options);
-               }
-               // If we haven't been attached, preload and attach
-               else attachWhenDone(this);
-       });
-
-       // Return "this" so we're chainable a la jQuery plugin-style!
-       return this;
-};
-/*}}}*/
-
-})(jQuery);
diff --git a/wp-includes/js/jcrop/jquery.Jcrop.js b/wp-includes/js/jcrop/jquery.Jcrop.js
deleted file mode 100644 (file)
index 70b5505..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.Jcrop=function(d,A){var d=d,A=A;if(typeof(d)!=="object"){d=a(d)[0]}if(typeof(A)!=="object"){A={}}if(!("trackDocument" in A)){A.trackDocument=a.browser.msie?false:true;if(a.browser.msie&&a.browser.version.split(".")[0]=="8"){A.trackDocument=true}}if(!("keySupport" in A)){A.keySupport=a.browser.msie?false:true}var U={trackDocument:false,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:0.6,borderOpacity:0.4,handleOpacity:0.5,handlePad:5,handleSize:9,handleOffset:5,edgeMargin:14,aspectRatio:0,keySupport:true,cornerHandles:true,sideHandles:true,drawBorders:true,dragEdges:true,boxWidth:0,boxHeight:0,boundary:8,animationDelay:20,swingSpeed:3,allowSelect:true,allowMove:true,allowResize:true,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){}};var H=U;z(A);var W=a(d);var al=W.clone().removeAttr("id").css({position:"absolute"});al.width(W.width());al.height(W.height());W.after(al).hide();T(al,H.boxWidth,H.boxHeight);var Q=al.width(),O=al.height(),Z=a("<div />").width(Q).height(O).addClass(C("holder")).css({position:"relative",backgroundColor:H.bgColor}).insertAfter(W).append(al);if(H.addClass){Z.addClass(H.addClass)}var I=a("<img />").attr("src",al.attr("src")).css("position","absolute").width(Q).height(O);var k=a("<div />").width(K(100)).height(K(100)).css({zIndex:310,position:"absolute",overflow:"hidden"}).append(I);var L=a("<div />").width(K(100)).height(K(100)).css("zIndex",320);var y=a("<div />").css({position:"absolute",zIndex:300}).insertBefore(al).append(k,L);var t=H.boundary;var b=ae().width(Q+(t*2)).height(O+(t*2)).css({position:"absolute",top:l(-t),left:l(-t),zIndex:290}).mousedown(ac);var x,ah,p,S;var M,e,n=true;var ad=D(al),r,an,am,B,ab;var aa=function(){var aq=0,aC=0,ap=0,aB=0,au,ar;function aw(aF){var aF=at(aF);ap=aq=aF[0];aB=aC=aF[1]}function av(aF){var aF=at(aF);au=aF[0]-ap;ar=aF[1]-aB;ap=aF[0];aB=aF[1]}function aE(){return[au,ar]}function ao(aH){var aG=aH[0],aF=aH[1];if(0>aq+aG){aG-=aG+aq}if(0>aC+aF){aF-=aF+aC}if(O<aB+aF){aF+=O-(aB+aF)}if(Q<ap+aG){aG+=Q-(ap+aG)}aq+=aG;ap+=aG;aC+=aF;aB+=aF}function ax(aF){var aG=aD();switch(aF){case"ne":return[aG.x2,aG.y];case"nw":return[aG.x,aG.y];case"se":return[aG.x2,aG.y2];case"sw":return[aG.x,aG.y2]}}function aD(){if(!H.aspectRatio){return aA()}var aH=H.aspectRatio,aO=H.minSize[0]/M,aN=H.minSize[1]/e,aG=H.maxSize[0]/M,aQ=H.maxSize[1]/e,aI=ap-aq,aP=aB-aC,aJ=Math.abs(aI),aK=Math.abs(aP),aL=aJ/aK,aF,aM;if(aG==0){aG=Q*10}if(aQ==0){aQ=O*10}if(aL<aH){aM=aB;w=aK*aH;aF=aI<0?aq-w:w+aq;if(aF<0){aF=0;h=Math.abs((aF-aq)/aH);aM=aP<0?aC-h:h+aC}else{if(aF>Q){aF=Q;h=Math.abs((aF-aq)/aH);aM=aP<0?aC-h:h+aC}}}else{aF=ap;h=aJ/aH;aM=aP<0?aC-h:aC+h;if(aM<0){aM=0;w=Math.abs((aM-aC)*aH);aF=aI<0?aq-w:w+aq}else{if(aM>O){aM=O;w=Math.abs(aM-aC)*aH;aF=aI<0?aq-w:w+aq}}}if(aF>aq){if(aF-aq<aO){aF=aq+aO}else{if(aF-aq>aG){aF=aq+aG}}if(aM>aC){aM=aC+(aF-aq)/aH}else{aM=aC-(aF-aq)/aH}}else{if(aF<aq){if(aq-aF<aO){aF=aq-aO}else{if(aq-aF>aG){aF=aq-aG}}if(aM>aC){aM=aC+(aq-aF)/aH}else{aM=aC-(aq-aF)/aH}}}if(aF<0){aq-=aF;aF=0}else{if(aF>Q){aq-=aF-Q;aF=Q}}if(aM<0){aC-=aM;aM=0}else{if(aM>O){aC-=aM-O;aM=O}}return last=az(ay(aq,aC,aF,aM))}function at(aF){if(aF[0]<0){aF[0]=0}if(aF[1]<0){aF[1]=0}if(aF[0]>Q){aF[0]=Q}if(aF[1]>O){aF[1]=O}return[aF[0],aF[1]]}function ay(aI,aK,aH,aJ){var aM=aI,aL=aH,aG=aK,aF=aJ;if(aH<aI){aM=aH;aL=aI}if(aJ<aK){aG=aJ;aF=aK}return[Math.round(aM),Math.round(aG),Math.round(aL),Math.round(aF)]}function aA(){var aG=ap-aq;var aF=aB-aC;if(x&&(Math.abs(aG)>x)){ap=(aG>0)?(aq+x):(aq-x)}if(ah&&(Math.abs(aF)>ah)){aB=(aF>0)?(aC+ah):(aC-ah)}if(S&&(Math.abs(aF)<S)){aB=(aF>0)?(aC+S):(aC-S)}if(p&&(Math.abs(aG)<p)){ap=(aG>0)?(aq+p):(aq-p)}if(aq<0){ap-=aq;aq-=aq}if(aC<0){aB-=aC;aC-=aC}if(ap<0){aq-=ap;ap-=ap}if(aB<0){aC-=aB;aB-=aB}if(ap>Q){var aH=ap-Q;aq-=aH;ap-=aH}if(aB>O){var aH=aB-O;aC-=aH;aB-=aH}if(aq>Q){var aH=aq-O;aB-=aH;aC-=aH}if(aC>O){var aH=aC-O;aB-=aH;aC-=aH}return az(ay(aq,aC,ap,aB))}function az(aF){return{x:aF[0],y:aF[1],x2:aF[2],y2:aF[3],w:aF[2]-aF[0],h:aF[3]-aF[1]}}return{flipCoords:ay,setPressed:aw,setCurrent:av,getOffset:aE,moveOffset:ao,getCorner:ax,getFixed:aD}}();var X=function(){var aw,ar,aC,aB,aK=370;var av={};var aO={};var aq=false;var aA=H.handleOffset;if(H.drawBorders){av={top:ax("hline").css("top",a.browser.msie?l(-1):l(0)),bottom:ax("hline"),left:ax("vline"),right:ax("vline")}}if(H.dragEdges){aO.t=aJ("n");aO.b=aJ("s");aO.r=aJ("e");aO.l=aJ("w")}H.sideHandles&&aF(["n","s","e","w"]);H.cornerHandles&&aF(["sw","nw","ne","se"]);function ax(aR){var aS=a("<div />").css({position:"absolute",opacity:H.borderOpacity}).addClass(C(aR));k.append(aS);return aS}function ap(aR,aS){var aT=a("<div />").mousedown(c(aR)).css({cursor:aR+"-resize",position:"absolute",zIndex:aS});L.append(aT);return aT}function aD(aR){return ap(aR,aK++).css({top:l(-aA+1),left:l(-aA+1),opacity:H.handleOpacity}).addClass(C("handle"))}function aJ(aT){var aW=H.handleSize,aX=aA,aV=aW,aS=aW,aU=aX,aR=aX;switch(aT){case"n":case"s":aS=K(100);break;case"e":case"w":aV=K(100);break}return ap(aT,aK++).width(aS).height(aV).css({top:l(-aU+1),left:l(-aR+1)})}function aF(aR){for(i in aR){aO[aR[i]]=aD(aR[i])}}function aH(aY){var aT=Math.round((aY.h/2)-aA),aS=Math.round((aY.w/2)-aA),aW=west=-aA+1,aV=aY.w-aA,aU=aY.h-aA,aR,aX;"e" in aO&&aO.e.css({top:l(aT),left:l(aV)})&&aO.w.css({top:l(aT)})&&aO.s.css({top:l(aU),left:l(aS)})&&aO.n.css({left:l(aS)});"ne" in aO&&aO.ne.css({left:l(aV)})&&aO.se.css({top:l(aU),left:l(aV)})&&aO.sw.css({top:l(aU)});"b" in aO&&aO.b.css({top:l(aU)})&&aO.r.css({left:l(aV)})}function az(aR,aS){I.css({top:l(-aS),left:l(-aR)});y.css({top:l(aS),left:l(aR)})}function aQ(aR,aS){y.width(aR).height(aS)}function at(){var aR=aa.getFixed();aa.setPressed([aR.x,aR.y]);aa.setCurrent([aR.x2,aR.y2]);aN()}function aN(){if(aB){return ay()}}function ay(){var aR=aa.getFixed();aQ(aR.w,aR.h);az(aR.x,aR.y);H.drawBorders&&av.right.css({left:l(aR.w-1)})&&av.bottom.css({top:l(aR.h-1)});aq&&aH(aR);aB||aP();H.onChange(Y(aR))}function aP(){y.show();al.css("opacity",H.bgOpacity);aB=true}function aL(){aM();y.hide();al.css("opacity",1);aB=false}function ao(){if(aq){aH(aa.getFixed());L.show()}}function aG(){aq=true;if(H.allowResize){aH(aa.getFixed());L.show();return true}}function aM(){aq=false;L.hide()}function aI(aR){(B=aR)?aM():aG()}function aE(){aI(false);at()}var au=ae().mousedown(c("move")).css({cursor:"move",position:"absolute",zIndex:360});k.append(au);aM();return{updateVisible:aN,update:ay,release:aL,refresh:at,setCursor:function(aR){au.css("cursor",aR)},enableHandles:aG,enableOnly:function(){aq=true},showHandles:ao,disableHandles:aM,animMode:aI,done:aE}}();var P=function(){var ap=function(){},ar=function(){},aq=H.trackDocument;if(!aq){b.mousemove(ao).mouseup(at).mouseout(at)}function ax(){b.css({zIndex:450});if(aq){a(document).mousemove(ao).mouseup(at)}}function aw(){b.css({zIndex:290});if(aq){a(document).unbind("mousemove",ao).unbind("mouseup",at)}}function ao(ay){ap(F(ay))}function at(ay){ay.preventDefault();ay.stopPropagation();if(r){r=false;ar(F(ay));H.onSelect(Y(aa.getFixed()));aw();ap=function(){};ar=function(){}}return false}function au(az,ay){r=true;ap=az;ar=ay;ax();return false}function av(ay){b.css("cursor",ay)}al.before(b);return{activateHandlers:au,setCursor:av}}();var ak=function(){var ar=a('<input type="radio" />').css({position:"absolute",left:"-30px"}).keypress(ao).blur(at),au=a("<div />").css({position:"absolute",overflow:"hidden"}).append(ar);function ap(){if(H.keySupport){ar.show();ar.focus()}}function at(av){ar.hide()}function aq(aw,av,ax){if(H.allowMove){aa.moveOffset([av,ax]);X.updateVisible()}aw.preventDefault();aw.stopPropagation()}function ao(aw){if(aw.ctrlKey){return true}ab=aw.shiftKey?true:false;var av=ab?10:1;switch(aw.keyCode){case 37:aq(aw,-av,0);break;case 39:aq(aw,av,0);break;case 38:aq(aw,0,-av);break;case 40:aq(aw,0,av);break;case 27:X.release();break;case 9:return true}return nothing(aw)}if(H.keySupport){au.insertBefore(al)}return{watchKeys:ap}}();function l(ao){return""+parseInt(ao)+"px"}function K(ao){return""+parseInt(ao)+"%"}function C(ao){return H.baseClass+"-"+ao}function D(ao){var ap=a(ao).offset();return[ap.left,ap.top]}function F(ao){return[(ao.pageX-ad[0]),(ao.pageY-ad[1])]}function E(ao){if(ao!=an){P.setCursor(ao);an=ao}}function f(aq,at){ad=D(al);P.setCursor(aq=="move"?aq:aq+"-resize");if(aq=="move"){return P.activateHandlers(R(at),o)}var ao=aa.getFixed();var ap=q(aq);var ar=aa.getCorner(q(ap));aa.setPressed(aa.getCorner(ap));aa.setCurrent(ar);P.activateHandlers(G(aq,ao),o)}function G(ap,ao){return function(aq){if(!H.aspectRatio){switch(ap){case"e":aq[1]=ao.y2;break;case"w":aq[1]=ao.y2;break;case"n":aq[0]=ao.x2;break;case"s":aq[0]=ao.x2;break}}else{switch(ap){case"e":aq[1]=ao.y+1;break;case"w":aq[1]=ao.y+1;break;case"n":aq[0]=ao.x+1;break;case"s":aq[0]=ao.x+1;break}}aa.setCurrent(aq);X.update()}}function R(ap){var ao=ap;ak.watchKeys();return function(aq){aa.moveOffset([aq[0]-ao[0],aq[1]-ao[1]]);ao=aq;X.update()}}function q(ao){switch(ao){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function c(ao){return function(ap){if(H.disabled){return false}if((ao=="move")&&!H.allowMove){return false}r=true;f(ao,F(ap));ap.stopPropagation();ap.preventDefault();return false}}function T(at,ap,ar){var ao=at.width(),aq=at.height();if((ao>ap)&&ap>0){ao=ap;aq=(ap/at.width())*at.height()}if((aq>ar)&&ar>0){aq=ar;ao=(ar/at.height())*at.width()}M=at.width()/ao;e=at.height()/aq;at.width(ao).height(aq)}function Y(ao){return{x:parseInt(ao.x*M),y:parseInt(ao.y*e),x2:parseInt(ao.x2*M),y2:parseInt(ao.y2*e),w:parseInt(ao.w*M),h:parseInt(ao.h*e)}}function o(ap){var ao=aa.getFixed();if(ao.w>H.minSelect[0]&&ao.h>H.minSelect[1]){X.enableHandles();X.done()}else{X.release()}P.setCursor(H.allowSelect?"crosshair":"default")}function ac(ao){if(H.disabled){return false}if(!H.allowSelect){return false}r=true;ad=D(al);X.disableHandles();E("crosshair");var ap=F(ao);aa.setPressed(ap);P.activateHandlers(aj,o);ak.watchKeys();X.update();ao.stopPropagation();ao.preventDefault();return false}function aj(ao){aa.setCurrent(ao);X.update()}function ae(){var ao=a("<div></div>").addClass(C("tracker"));a.browser.msie&&ao.css({opacity:0,backgroundColor:"white"});return ao}function s(aG){var aB=aG[0]/M,ap=aG[1]/e,aA=aG[2]/M,ao=aG[3]/e;if(B){return}var az=aa.flipCoords(aB,ap,aA,ao);var aE=aa.getFixed();var ar=initcr=[aE.x,aE.y,aE.x2,aE.y2];var aq=H.animationDelay;var ax=ar[0];var aw=ar[1];var aA=ar[2];var ao=ar[3];var aD=az[0]-initcr[0];var au=az[1]-initcr[1];var aC=az[2]-initcr[2];var at=az[3]-initcr[3];var ay=0;var av=H.swingSpeed;X.animMode(true);var aF=function(){return function(){ay+=(100-ay)/av;ar[0]=ax+((ay/100)*aD);ar[1]=aw+((ay/100)*au);ar[2]=aA+((ay/100)*aC);ar[3]=ao+((ay/100)*at);if(ay<100){aH()}else{X.done()}if(ay>=99.8){ay=100}ai(ar)}}();function aH(){window.setTimeout(aF,aq)}aH()}function J(ao){ai([ao[0]/M,ao[1]/e,ao[2]/M,ao[3]/e])}function ai(ao){aa.setPressed([ao[0],ao[1]]);aa.setCurrent([ao[2],ao[3]]);X.update()}function z(ao){if(typeof(ao)!="object"){ao={}}H=a.extend(H,ao);if(typeof(H.onChange)!=="function"){H.onChange=function(){}}if(typeof(H.onSelect)!=="function"){H.onSelect=function(){}}}function j(){return Y(aa.getFixed())}function ag(){return aa.getFixed()}function u(ao){z(ao);N()}function v(){H.disabled=true;X.disableHandles();X.setCursor("default");P.setCursor("default")}function V(){H.disabled=false;N()}function m(){X.done();P.activateHandlers(null,null)}function af(){Z.remove();W.show()}function N(ao){H.allowResize?ao?X.enableOnly():X.enableHandles():X.disableHandles();P.setCursor(H.allowSelect?"crosshair":"default");X.setCursor(H.allowMove?"move":"default");Z.css("backgroundColor",H.bgColor);if("setSelect" in H){J(A.setSelect);X.done();delete (H.setSelect)}if("trueSize" in H){M=H.trueSize[0]/Q;e=H.trueSize[1]/O}x=H.maxSize[0]||0;ah=H.maxSize[1]||0;p=H.minSize[0]||0;S=H.minSize[1]||0;if("outerImage" in H){al.attr("src",H.outerImage);delete (H.outerImage)}X.refresh()}L.hide();N(true);var g={animateTo:s,setSelect:J,setOptions:u,tellSelect:j,tellScaled:ag,disable:v,enable:V,cancel:m,focus:ak.watchKeys,getBounds:function(){return[Q*M,O*e]},getWidgetSize:function(){return[Q,O]},release:X.release,destroy:af};W.data("Jcrop",g);return g};a.fn.Jcrop=function(c){function b(f){var e=c.useImg||f.src;var d=new Image();d.onload=function(){a.Jcrop(f,c)};d.src=e}if(typeof(c)!=="object"){c={}}this.each(function(){if(a(this).data("Jcrop")){if(c=="api"){return a(this).data("Jcrop")}else{a(this).data("Jcrop").setOptions(c)}}else{b(this)}});return this}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jcrop/jquery.Jcrop.min.css b/wp-includes/js/jcrop/jquery.Jcrop.min.css
new file mode 100644 (file)
index 0000000..f438f33
--- /dev/null
@@ -0,0 +1,28 @@
+/* jquery.Jcrop.min.css v0.9.10 (build:20120429) */
+.jcrop-holder{direction:ltr;text-align:left;}
+.jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif) top left repeat;font-size:0;position:absolute;}
+.jcrop-vline{height:100%;width:1px!important;}
+.jcrop-hline{height:1px!important;width:100%;}
+.jcrop-vline.right{right:0;}
+.jcrop-hline.bottom{bottom:0;}
+.jcrop-handle{background-color:#333;border:1px #eee solid;font-size:1px;}
+.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;}
+.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;}
+.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;}
+.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;}
+.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;}
+.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;}
+.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;}
+.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;}
+.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;}
+.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;}
+.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;}
+.jcrop-dragbar.ord-n{margin-top:-4px;}
+.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;}
+.jcrop-dragbar.ord-e{margin-right:-4px;right:0;}
+.jcrop-dragbar.ord-w{margin-left:-4px;}
+.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:Alpha(opacity=70)!important;opacity:.70!important;}
+.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;}
+.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:Alpha(opacity=70)!important;opacity:.7!important;}
+.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;}
+.jcrop-holder img,img.jcrop-preview{max-width:none;}
diff --git a/wp-includes/js/jcrop/jquery.Jcrop.min.js b/wp-includes/js/jcrop/jquery.Jcrop.min.js
new file mode 100644 (file)
index 0000000..2df51ad
--- /dev/null
@@ -0,0 +1,22 @@
+/**
+ * jquery.Jcrop.min.js v0.9.10 (build:20120429)
+ * jQuery Image Cropping Plugin - released under MIT License
+ * Copyright (c) 2008-2012 Tapmodo Interactive LLC
+ * https://github.com/tapmodo/Jcrop
+ */
+(function(a){a.Jcrop=function(b,c){function h(a){return a+"px"}function i(a){return d.baseClass+"-"+a}function j(){return a.fx.step.hasOwnProperty("backgroundColor")}function k(b){var c=a(b).offset();return[c.left,c.top]}function l(a){return[a.pageX-e[0],a.pageY-e[1]]}function m(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function n(a,b){e=k(E),bd.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bd.activateHandlers(p(b),u);var c=ba.getFixed(),d=q(a),f=ba.getCorner(q(d));ba.setPressed(ba.getCorner(d)),ba.setCurrent(f),bd.activateHandlers(o(a,c),u)}function o(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}ba.setCurrent(c),bc.update()}}function p(a){var b=a;return be.watchKeys(),function(
+a){ba.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bc.update()}}function q(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function r(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=k(E),X=!0,n(a,l(b)),b.stopPropagation(),b.preventDefault(),!1)}}function s(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),U=a.width()/d,V=a.height()/e,a.width(d).height(e)}function t(a){return{x:a.x*U,y:a.y*V,x2:a.x2*U,y2:a.y2*V,w:a.w*U,h:a.h*V}}function u(a){var b=ba.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bc.enableHandles(),bc.done()):bc.release(),bd.setCursor(d.allowSelect?"crosshair":"default")}function v(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;X=!0,e=k(E),bc.disableHandles(),bd.setCursor("crosshair");var b=l(a);return ba.setPressed(b),bc.update(),bd.activateHandlers(w,u),be.watchKeys(),a.stopPropagation
+(),a.preventDefault(),!1}function w(a){ba.setCurrent(a),bc.update()}function z(){var b=a("<div></div>").addClass(i("tracker"));return a.browser.msie&&b.css({opacity:0,backgroundColor:"white"}),b}function bf(a){H.removeClass().addClass(i("holder")).addClass(a)}function bg(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/U,e=a[1]/V,f=a[2]/U,g=a[3]/V;if(Y)return;var h=ba.flipCoords(c,e,f,g),i=ba.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;x=k[0],y=k[1],f=k[2],g=k[3],bc.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=x+q/100*m,k[1]=y+q/100*n,k[2]=f+q/100*o,k[3]=g+q/100*p,q>=99.8&&(q=100),q<100?(bi(k),t()):(bc.done(),typeof b=="function"&&b.call(bt))}}();t()}function bh(a){bi([a[0]/U,a[1]/V,a[2]/U,a[3]/V]),d.onSelect.call(bt,t(ba.getFixed())),bc.enableHandles()}function bi(a){ba.setPressed([a[0],a[1]]),ba.setCurrent([a[2],a[3]]),bc.update()}function bj(){return t(ba.getFixed())}function bk(){return ba.getFixed()}function bl
+(a){m(a),bs()}function bm(){d.disabled=!0,bc.disableHandles(),bc.setCursor("default"),bd.setCursor("default")}function bn(){d.disabled=!1,bs()}function bo(){bc.done(),bd.activateHandlers(null,null)}function bp(){H.remove(),B.show(),a(b).removeData("Jcrop")}function bq(a,b){bc.release(),bm();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;E.width(e).height(f),E.attr("src",a),I.attr("src",a),s(E,g,h),F=E.width(),G=E.height(),I.width(F).height(G),N.width(F+M*2).height(G+M*2),H.width(F).height(G),bb.resize(F,G),bn(),typeof b=="function"&&b.call(bt)},c.src=a}function br(a,b,c){var e=b||d.bgColor;d.bgFade&&j()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function bs(a){d.allowResize?a?bc.enableOnly():bc.enableHandles():bc.disableHandles(),bd.setCursor(d.allowSelect?"crosshair":"default"),bc.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(U=d.trueSize[0]/F,V=d.trueSize[1]/G),d.hasOwnProperty("setSelect"
+)&&(bh(d.setSelect),bc.done(),delete d.setSelect),bb.refresh(),d.bgColor!=O&&(br(d.shade?bb.getShades():H,d.shade?d.shadeColor||d.bgColor:d.bgColor),O=d.bgColor),P!=d.bgOpacity&&(P=d.bgOpacity,d.shade?bb.refresh():bc.setBgOpacity(P)),Q=d.maxSize[0]||0,R=d.maxSize[1]||0,S=d.minSize[0]||0,T=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(E.attr("src",d.outerImage),delete d.outerImage),bc.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f,g=!1;a.browser.msie&&a.browser.version.split(".")[0]==="6"&&(g=!0),typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),m(c);var A={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},B=a(b),C=!0;if(b.tagName=="IMG"){if(B[0].width!=0&&B[0].height!=0)B.width(B[0].width),B.height(B[0].height);else{var D=new Image;D.src=B[0].src,B.width(D.width),B.height(D.height)}var E=B.clone().removeAttr("id").css(A).show();E.width(B.width()),E.height(B.height()),B.after(E).hide()}else E=B.css(A).show(),C=!1,d.shade===null&&(d.shade=!0);s(E,d.boxWidth,d.
+boxHeight);var F=E.width(),G=E.height(),H=a("<div />").width(F).height(G).addClass(i("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(B).append(E);d.addClass&&H.addClass(d.addClass);var I=a("<div />"),J=a("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),K=a("<div />").width("100%").height("100%").css("zIndex",320),L=a("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var a=ba.getFixed();d.onDblClick.call(bt,a)}).insertBefore(E).append(J,K);C&&(I=a("<img />").attr("src",E.attr("src")).css(A).width(F).height(G),J.append(I)),g&&L.css({overflowY:"hidden"});var M=d.boundary,N=z().width(F+M*2).height(G+M*2).css({position:"absolute",top:h(-M),left:h(-M),zIndex:290}).mousedown(v),O=d.bgColor,P=d.bgOpacity,Q,R,S,T,U,V,W=!0,X,Y,Z;e=k(E);var _=function(){function a(){var a={},b=["touchstart","touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;d<b.length;d++){var e=b[d];e="on"+e;var f=e in c;f||(c.setAttribute(e,"return;"
+),f=typeof c[e]=="function"),a[b[d]]=f}return a.touchstart&&a.touchend&&a.touchmove}catch(g){return!1}}function b(){return d.touchSupport===!0||d.touchSupport===!1?d.touchSupport:a()}return{createDragger:function(a){return function(b){return b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,d.disabled?!1:a==="move"&&!d.allowMove?!1:(X=!0,n(a,l(b)),b.stopPropagation(),b.preventDefault(),!1)}},newSelection:function(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,v(a)},isSupported:a,support:b()}}(),ba=function(){function h(d){d=n(d),c=a=d[0],e=b=d[1]}function i(a){a=n(a),f=a[0]-c,g=a[1]-e,c=a[0],e=a[1]}function j(){return[f,g]}function k(d){var f=d[0],g=d[1];0>a+f&&(f-=f+a),0>b+g&&(g-=g+b),G<e+g&&(g+=G-(e+g)),F<c+f&&(f+=F-(c+f)),a+=f,c+=f,b+=g,e+=g}function l(a){var b=m();switch(a){case"ne":return[b.x2,b.y];case"nw":return[b.x,b.y];case"se":return[b.x2,b.y2];case"sw":return[b.x,b.y2]}}function m(){if(!d.aspectRatio
+)return p();var f=d.aspectRatio,g=d.minSize[0]/U,h=d.maxSize[0]/U,i=d.maxSize[1]/V,j=c-a,k=e-b,l=Math.abs(j),m=Math.abs(k),n=l/m,r,s,t,u;return h===0&&(h=F*10),i===0&&(i=G*10),n<f?(s=e,t=m*f,r=j<0?a-t:t+a,r<0?(r=0,u=Math.abs((r-a)/f),s=k<0?b-u:u+b):r>F&&(r=F,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>G&&(s=G,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-a<g?r=a+g:r-a>h&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):r<a&&(a-r<g?r=a-g:a-r>h&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>F&&(a-=r-F,r=F),s<0?(b-=s,s=0):s>G&&(b-=s-G,s=G),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>F&&(a[0]=F),a[1]>G&&(a[1]=G),[a[0],a[1]]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return c<a&&(e=c,f=a),d<b&&(g=d,h=b),[e,g,f,h]}function p(){var d=c-a,f=e-b,g;return Q&&Math.abs(d)>Q&&(c=d>0?a+Q:a-Q),R&&Math.abs(f)>R&&(e=f>0?b+R:b-R),T/V&&Math.abs(f)<T/V&&(e=f>0?b+T/V:b-T/V),S/U&&Math.abs(d)<S/U&&(c=d>0?a+S/U:a-S/U),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&
+(a-=c,c-=c),e<0&&(b-=e,e-=e),c>F&&(g=c-F,a-=g,c-=g),e>G&&(g=e-G,b-=g,e-=g),a>F&&(g=a-G,e-=g,b-=g),b>G&&(g=b-G,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),bb=function(){function f(a,b){e.left.css({height:h(b)}),e.right.css({height:h(b)})}function g(){return i(ba.getFixed())}function i(a){e.top.css({left:h(a.x),width:h(a.w),height:h(a.y)}),e.bottom.css({top:h(a.y2),left:h(a.x),width:h(a.w),height:h(G-a.y2)}),e.right.css({left:h(a.x2),width:h(F-a.x2)}),e.left.css({width:h(a.x)})}function j(){return a("<div />").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(E),g(),bc.setBgOpacity(1,0,1),I.hide(),l(d.shadeColor||d.bgColor,1),bc.isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){br(p(),a,b)}function m(){b&&(c.remove(),I.show(),b=!1,bc.isAwake()?bc.setBgOpacity(d.bgOpacity
+,1,1):(bc.setBgOpacity(1,1,1),bc.disableHandles()),br(H,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bc.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("<div />").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(G),right:j().height(G),bottom:j()};return{update:g,updateRaw:i,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bc=function(){function k(b){var c=a("<div />").css({position:"absolute",opacity:d.borderOpacity}).addClass(i(b));return J.append(c),c}function l(b,c){var d=a("<div />").mousedown(r(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return _.support&&d.bind("touchstart.jcrop",_.createDragger(b)),K.append(d),d}function m(a){var b=d.handleSize;return l(a,c++).css({opacity:d.handleOpacity}).width(b).height(b).addClass(i("handle"))}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o
+(a){var b;for(b=0;b<a.length;b++)g[a[b]]=n(a[b])}function p(a){var b,c;for(c=0;c<a.length;c++){switch(a[c]){case"n":b="hline";break;case"s":b="hline bottom";break;case"e":b="vline right";break;case"w":b="vline"}e[a[c]]=k(b)}}function q(a){var b;for(b=0;b<a.length;b++)f[a[b]]=m(a[b])}function s(a,b){d.shade||I.css({top:h(-b),left:h(-a)}),L.css({top:h(b),left:h(a)})}function u(a,b){L.width(a).height(b)}function v(){var a=ba.getFixed();ba.setPressed([a.x,a.y]),ba.setCurrent([a.x2,a.y2]),w()}function w(a){if(b)return x(a)}function x(a){var c=ba.getFixed();u(c.w,c.h),s(c.x,c.y),d.shade&&bb.updateRaw(c),b||A(),a?d.onSelect.call(bt,t(c)):d.onChange.call(bt,t(c))}function y(a,c,e){if(!b&&!c)return;d.bgFade&&!e?E.animate({opacity:a},{queue:!1,duration:d.fadeTime}):E.css("opacity",a)}function A(){L.show(),d.shade?bb.opacity(P):y(P,!0),b=!0}function B(){F(),L.hide(),d.shade?bb.opacity(1):y(1),b=!1,d.onRelease.call(bt)}function C(){j&&K.show()}function D(){j=!0;if(d.allowResize)return K.show(),!0}function F(){j=!1,K.hide(
+)}function G(a){Y===a?F():D()}function H(){G(!1),v()}var b,c=370,e={},f={},g={},j=!1;d.dragEdges&&a.isArray(d.createDragbars)&&o(d.createDragbars),a.isArray(d.createHandles)&&q(d.createHandles),d.drawBorders&&a.isArray(d.createBorders)&&p(d.createBorders),a(document).bind("touchstart.jcrop-ios",function(b){a(b.currentTarget).hasClass("jcrop-tracker")&&b.stopPropagation()});var M=z().mousedown(r("move")).css({cursor:"move",position:"absolute",zIndex:360});return _.support&&M.bind("touchstart.jcrop",_.createDragger("move")),J.append(M),F(),{updateVisible:w,update:x,release:B,refresh:v,isAwake:function(){return b},setCursor:function(a){M.css("cursor",a)},enableHandles:D,enableOnly:function(){j=!0},showHandles:C,disableHandles:F,animMode:G,setBgOpacity:y,done:H}}(),bd=function(){function f(){N.css({zIndex:450}),_.support&&a(document).bind("touchmove.jcrop",k).bind("touchend.jcrop",m),e&&a(document).bind("mousemove.jcrop",h).bind("mouseup.jcrop",i)}function g(){N.css({zIndex:290}),a(document).unbind(".jcrop")}function h
+(a){return b(l(a)),!1}function i(a){return a.preventDefault(),a.stopPropagation(),X&&(X=!1,c(l(a)),bc.isAwake()&&d.onSelect.call(bt,t(ba.getFixed())),g(),b=function(){},c=function(){}),!1}function j(a,d){return X=!0,b=a,c=d,f(),!1}function k(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,h(a)}function m(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,i(a)}function n(a){N.css("cursor",a)}var b=function(){},c=function(){},e=d.trackDocument;return e||N.mousemove(h).mouseup(i).mouseout(i),E.before(N),{activateHandlers:j,setCursor:n}}(),be=function(){function e(){d.keySupport&&(b.show(),b.focus())}function f(a){b.hide()}function h(a,b,c){d.allowMove&&(ba.moveOffset([b,c]),bc.updateVisible(!0)),a.preventDefault(),a.stopPropagation()}function i(a){if(a.ctrlKey||a.metaKey)return!0;Z=a.shiftKey?!0:!1;var b=Z?10:1;switch(a.keyCode){case 37:h(a,-b,0);break;case 39:h(a,b,0);break;case 38:h(a,0,-b);break;case 40
+:h(a,0,b);break;case 27:d.allowSelect&&bc.release();break;case 9:return!0}return!1}var b=a('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}),c=a("<div />").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),g||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(E)):b.insertBefore(E)),{watchKeys:e}}();_.support&&N.bind("touchstart.jcrop",_.newSelection),K.hide(),bs(!0);var bt={setImage:bq,animateTo:bg,setSelect:bh,setOptions:bl,tellSelect:bj,tellScaled:bk,setClass:bf,disable:bm,enable:bn,cancel:bo,release:bc.release,destroy:bp,focus:be.watchKeys,getBounds:function(){return[F*U,G*V]},getWidgetSize:function(){return[F,G]},getScaleFactor:function(){return[U,V]},getOptions:function(){return d},ui:{holder:H,selection:L}};return a.browser.msie&&H.bind("selectstart",function(){return!1}),B.data("Jcrop",bt),bt},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(b==="api")return a
+(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:7,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,
+touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.color.dev.js b/wp-includes/js/jquery/jquery.color.dev.js
deleted file mode 100644 (file)
index 1dffbd5..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * jQuery Color Animations
- * Copyright 2007 John Resig
- * Released under the MIT and GPL licenses.
- */
-
-(function(jQuery){
-
-    // We override the animation for all of these color styles
-    jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
-        jQuery.fx.step[attr] = function(fx){
-            if ( fx.state == 0 ) {
-                fx.start = getColor( fx.elem, attr );
-                fx.end = 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),
-                Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
-            ].join(",") + ")";
-        }
-    });
-
-    // Color Conversion functions from highlightFade
-    // By Blair Mitchelmore
-    // http://jquery.offput.ca/highlightFade/
-
-    // Parse strings looking for color tuples [255,255,255]
-    function getRGB(color) {
-        var result;
-
-        // Check if we're already dealing with an array of colors
-        if ( color && color.constructor == Array && color.length == 3 )
-            return color;
-
-        // Look for rgb(num,num,num)
-        if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
-            return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
-
-        // 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))
-            return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
-
-        // Look for #a0b1c2
-        if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
-            return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
-
-        // Look for #fff
-        if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
-            return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
-
-        // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
-        if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
-            return colors['transparent']
-
-        // Otherwise, we're most likely dealing with a named color
-        return colors[jQuery.trim(color).toLowerCase()];
-    }
-
-    function getColor(elem, attr) {
-        var color;
-
-        do {
-            color = jQuery.curCSS(elem, attr);
-
-            // Keep going until we find an element that has color, or we hit the body
-            if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
-                break;
-
-            attr = "backgroundColor";
-        } while ( elem = elem.parentNode );
-
-        return getRGB(color);
-    };
-
-    // Some named colors to work with
-    // From Interface by Stefan Petre
-    // http://interface.eyecon.ro/
-
-    var colors = {
-        aqua:[0,255,255],
-        azure:[240,255,255],
-        beige:[245,245,220],
-        black:[0,0,0],
-        blue:[0,0,255],
-        brown:[165,42,42],
-        cyan:[0,255,255],
-        darkblue:[0,0,139],
-        darkcyan:[0,139,139],
-        darkgrey:[169,169,169],
-        darkgreen:[0,100,0],
-        darkkhaki:[189,183,107],
-        darkmagenta:[139,0,139],
-        darkolivegreen:[85,107,47],
-        darkorange:[255,140,0],
-        darkorchid:[153,50,204],
-        darkred:[139,0,0],
-        darksalmon:[233,150,122],
-        darkviolet:[148,0,211],
-        fuchsia:[255,0,255],
-        gold:[255,215,0],
-        green:[0,128,0],
-        indigo:[75,0,130],
-        khaki:[240,230,140],
-        lightblue:[173,216,230],
-        lightcyan:[224,255,255],
-        lightgreen:[144,238,144],
-        lightgrey:[211,211,211],
-        lightpink:[255,182,193],
-        lightyellow:[255,255,224],
-        lime:[0,255,0],
-        magenta:[255,0,255],
-        maroon:[128,0,0],
-        navy:[0,0,128],
-        olive:[128,128,0],
-        orange:[255,165,0],
-        pink:[255,192,203],
-        purple:[128,0,128],
-        violet:[128,0,128],
-        red:[255,0,0],
-        silver:[192,192,192],
-        white:[255,255,255],
-        yellow:[255,255,0],
-        transparent: [255,255,255]
-    };
-
-})(jQuery);
diff --git a/wp-includes/js/jquery/jquery.color.js b/wp-includes/js/jquery/jquery.color.js
deleted file mode 100644 (file)
index 03c13f6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(g.state==0){g.start=c(g.elem,e);g.end=b(g.end)}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.color.min.js b/wp-includes/js/jquery/jquery.color.min.js
new file mode 100644 (file)
index 0000000..936b445
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery Color v@2.1.0 with SVG Color Names http://github.com/jquery/jquery-color | jquery.org/license */
+(function(a,b){function m(a,b,c){var d=h[b.type]||{};return a==null?c||!b.def?null:b.def:(a=d.floor?~~a:parseFloat(a),isNaN(a)?b.def:d.mod?(a+d.mod)%d.mod:0>a?0:d.max<a?d.max:a)}function n(b){var c=f(),d=c._rgba=[];return b=b.toLowerCase(),l(e,function(a,e){var f,h=e.re.exec(b),i=h&&e.parse(h),j=e.space||"rgba";if(i)return f=c[j](i),c[g[j].cache]=f[g[j].cache],d=c._rgba=f._rgba,!1}),d.length?(d.join()==="0,0,0,0"&&a.extend(d,k.transparent),c):k[b]}function o(a,b,c){return c=(c+1)%1,c*6<1?a+(b-a)*c*6:c*2<1?b:c*3<2?a+(b-a)*(2/3-c)*6:a}var c="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",d=/^([\-+])=\s*(\d+\.?\d*)/,e=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1]*2.55,a[2]*2.55,a[3]*2.55,a[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(a){return[a[1],a[2]/100,a[3]/100,a[4]]}}],f=a.Color=function(b,c,d,e){return new a.Color.fn.parse(b,c,d,e)},g={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},h={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},i=f.support={},j=a("<p>")[0],k,l=a.each;j.style.cssText="background-color:rgba(1,1,1,.5)",i.rgba=j.style.backgroundColor.indexOf("rgba")>-1,l(g,function(a,b){b.cache="_"+a,b.props.alpha={idx:3,type:"percent",def:1}}),f.fn=a.extend(f.prototype,{parse:function(c,d,e,h){if(c===b)return this._rgba=[null,null,null,null],this;if(c.jquery||c.nodeType)c=a(c).css(d),d=b;var i=this,j=a.type(c),o=this._rgba=[],p;d!==b&&(c=[c,d,e,h],j="array");if(j==="string")return this.parse(n(c)||k._default);if(j==="array")return l(g.rgba.props,function(a,b){o[b.idx]=m(c[b.idx],b)}),this;if(j==="object")return c instanceof f?l(g,function(a,b){c[b.cache]&&(i[b.cache]=c[b.cache].slice())}):l(g,function(b,d){var e=d.cache;l(d.props,function(a,b){if(!i[e]&&d.to){if(a==="alpha"||c[a]==null)return;i[e]=d.to(i._rgba)}i[e][b.idx]=m(c[a],b,!0)}),i[e]&&a.inArray(null,i[e].slice(0,3))<0&&(i[e][3]=1,d.from&&(i._rgba=d.from(i[e])))}),this},is:function(a){var b=f(a),c=!0,d=this;return l(g,function(a,e){var f,g=b[e.cache];return g&&(f=d[e.cache]||e.to&&e.to(d._rgba)||[],l(e.props,function(a,b){if(g[b.idx]!=null)return c=g[b.idx]===f[b.idx],c})),c}),c},_space:function(){var a=[],b=this;return l(g,function(c,d){b[d.cache]&&a.push(c)}),a.pop()},transition:function(a,b){var c=f(a),d=c._space(),e=g[d],i=this.alpha()===0?f("transparent"):this,j=i[e.cache]||e.to(i._rgba),k=j.slice();return c=c[e.cache],l(e.props,function(a,d){var e=d.idx,f=j[e],g=c[e],i=h[d.type]||{};if(g===null)return;f===null?k[e]=g:(i.mod&&(g-f>i.mod/2?f+=i.mod:f-g>i.mod/2&&(f-=i.mod)),k[e]=m((g-f)*b+f,d))}),this[d](k)},blend:function(b){if(this._rgba[3]===1)return this;var c=this._rgba.slice(),d=c.pop(),e=f(b)._rgba;return f(a.map(c,function(a,b){return(1-d)*e[b]+d*a}))},toRgbaString:function(){var b="rgba(",c=a.map(this._rgba,function(a,b){return a==null?b>2?1:0:a});return c[3]===1&&(c.pop(),b="rgb("),b+c.join()+")"},toHslaString:function(){var b="hsla(",c=a.map(this.hsla(),function(a,b){return a==null&&(a=b>2?1:0),b&&b<3&&(a=Math.round(a*100)+"%"),a});return c[3]===1&&(c.pop(),b="hsl("),b+c.join()+")"},toHexString:function(b){var c=this._rgba.slice(),d=c.pop();return b&&c.push(~~(d*255)),"#"+a.map(c,function(a,b){return a=(a||0).toString(16),a.length===1?"0"+a:a}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),f.fn.parse.prototype=f.fn,g.hsla.to=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/255,c=a[1]/255,d=a[2]/255,e=a[3],f=Math.max(b,c,d),g=Math.min(b,c,d),h=f-g,i=f+g,j=i*.5,k,l;return g===f?k=0:b===f?k=60*(c-d)/h+360:c===f?k=60*(d-b)/h+120:k=60*(b-c)/h+240,j===0||j===1?l=j:j<=.5?l=h/i:l=h/(2-i),[Math.round(k)%360,l,j,e==null?1:e]},g.hsla.from=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/360,c=a[1],d=a[2],e=a[3],f=d<=.5?d*(1+c):d+c-d*c,g=2*d-f,h,i,j;return[Math.round(o(g,f,b+1/3)*255),Math.round(o(g,f,b)*255),Math.round(o(g,f,b-1/3)*255),e]},l(g,function(c,e){var g=e.props,h=e.cache,i=e.to,j=e.from;f.fn[c]=function(c){i&&!this[h]&&(this[h]=i(this._rgba));if(c===b)return this[h].slice();var d,e=a.type(c),k=e==="array"||e==="object"?c:arguments,n=this[h].slice();return l(g,function(a,b){var c=k[e==="object"?a:b.idx];c==null&&(c=n[b.idx]),n[b.idx]=m(c,b)}),j?(d=f(j(n)),d[h]=n,d):f(n)},l(g,function(b,e){if(f.fn[b])return;f.fn[b]=function(f){var g=a.type(f),h=b==="alpha"?this._hsla?"hsla":"rgba":c,i=this[h](),j=i[e.idx],k;return g==="undefined"?j:(g==="function"&&(f=f.call(this,j),g=a.type(f)),f==null&&e.empty?this:(g==="string"&&(k=d.exec(f),k&&(f=j+parseFloat(k[2])*(k[1]==="+"?1:-1))),i[e.idx]=f,this[h](i)))}})}),f.hook=function(b){var c=b.split(" ");l(c,function(b,c){a.cssHooks[c]={set:function(b,d){var e,g,h="";if(a.type(d)!=="string"||(e=n(d))){d=f(e||d);if(!i.rgba&&d._rgba[3]!==1){g=c==="backgroundColor"?b.parentNode:b;while((h===""||h==="transparent")&&g&&g.style)try{h=a.css(g,"backgroundColor"),g=g.parentNode}catch(j){}d=d.blend(h&&h!=="transparent"?h:"_default")}d=d.toRgbaString()}try{b.style[c]=d}catch(d){}}},a.fx.step[c]=function(b){b.colorInit||(b.start=f(b.elem,c),b.end=f(b.end),b.colorInit=!0),a.cssHooks[c].set(b.elem,b.start.transition(b.end,b.pos))}})},f.hook(c),a.cssHooks.borderColor={expand:function(a){var b={};return l(["Top","Right","Bottom","Left"],function(c,d){b["border"+d+"Color"]=a}),b}},k=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}})(jQuery),jQuery.extend(jQuery.Color.names,{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32"});
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.form.dev.js b/wp-includes/js/jquery/jquery.form.dev.js
deleted file mode 100644 (file)
index d0cb23c..0000000
+++ /dev/null
@@ -1,825 +0,0 @@
-/*!
- * jQuery Form Plugin
- * version: 2.73 (03-MAY-2011)
- * @requires jQuery v1.3.2 or later
- *
- * Examples and documentation at: http://malsup.com/jquery/form/
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- */
-;(function($) {
-
-/*
-       Usage Note:
-       -----------
-       Do not use both ajaxSubmit and ajaxForm on the same form.  These
-       functions are intended to be exclusive.  Use ajaxSubmit if you want
-       to bind your own submit handler to the form.  For example,
-
-       $(document).ready(function() {
-               $('#myForm').bind('submit', function(e) {
-                       e.preventDefault(); // <-- important
-                       $(this).ajaxSubmit({
-                               target: '#output'
-                       });
-               });
-       });
-
-       Use ajaxForm when you want the plugin to manage all the event binding
-       for you.  For example,
-
-       $(document).ready(function() {
-               $('#myForm').ajaxForm({
-                       target: '#output'
-               });
-       });
-
-       When using ajaxForm, the ajaxSubmit function will be invoked for you
-       at the appropriate time.
-*/
-
-/**
- * ajaxSubmit() provides a mechanism for immediately submitting
- * an HTML form using AJAX.
- */
-$.fn.ajaxSubmit = function(options) {
-       // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
-       if (!this.length) {
-               log('ajaxSubmit: skipping submit process - no element selected');
-               return this;
-       }
-
-       if (typeof options == 'function') {
-               options = { success: options };
-       }
-
-       var action = this.attr('action');
-       var url = (typeof action === 'string') ? $.trim(action) : '';
-       if (url) {
-               // clean url (don't include hash vaue)
-               url = (url.match(/^([^#]+)/)||[])[1];
-       }
-       url = url || window.location.href || '';
-
-       options = $.extend(true, {
-               url:  url,
-               success: $.ajaxSettings.success,
-               type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57)
-               iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
-       }, options);
-
-       // hook for manipulating the form data before it is extracted;
-       // convenient for use with rich editors like tinyMCE or FCKEditor
-       var veto = {};
-       this.trigger('form-pre-serialize', [this, options, veto]);
-       if (veto.veto) {
-               log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
-               return this;
-       }
-
-       // provide opportunity to alter form data before it is serialized
-       if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
-               log('ajaxSubmit: submit aborted via beforeSerialize callback');
-               return this;
-       }
-
-       var n,v,a = this.formToArray(options.semantic);
-       if (options.data) {
-               options.extraData = options.data;
-               for (n in options.data) {
-                       if(options.data[n] instanceof Array) {
-                               for (var k in options.data[n]) {
-                                       a.push( { name: n, value: options.data[n][k] } );
-                               }
-                       }
-                       else {
-                               v = options.data[n];
-                               v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
-                               a.push( { name: n, value: v } );
-                       }
-               }
-       }
-
-       // give pre-submit callback an opportunity to abort the submit
-       if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
-               log('ajaxSubmit: submit aborted via beforeSubmit callback');
-               return this;
-       }
-
-       // fire vetoable 'validate' event
-       this.trigger('form-submit-validate', [a, this, options, veto]);
-       if (veto.veto) {
-               log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
-               return this;
-       }
-
-       var q = $.param(a);
-
-       if (options.type.toUpperCase() == 'GET') {
-               options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
-               options.data = null;  // data is null for 'get'
-       }
-       else {
-               options.data = q; // data is the query string for 'post'
-       }
-
-       var $form = this, callbacks = [];
-       if (options.resetForm) {
-               callbacks.push(function() { $form.resetForm(); });
-       }
-       if (options.clearForm) {
-               callbacks.push(function() { $form.clearForm(); });
-       }
-
-       // perform a load on the target only if dataType is not provided
-       if (!options.dataType && options.target) {
-               var oldSuccess = options.success || function(){};
-               callbacks.push(function(data) {
-                       var fn = options.replaceTarget ? 'replaceWith' : 'html';
-                       $(options.target)[fn](data).each(oldSuccess, arguments);
-               });
-       }
-       else if (options.success) {
-               callbacks.push(options.success);
-       }
-
-       options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
-               var context = options.context || options;   // jQuery 1.4+ supports scope context
-               for (var i=0, max=callbacks.length; i < max; i++) {
-                       callbacks[i].apply(context, [data, status, xhr || $form, $form]);
-               }
-       };
-
-       // are there files to upload?
-       var fileInputs = $('input:file', this).length > 0;
-       var mp = 'multipart/form-data';
-       var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
-
-       // options.iframe allows user to force iframe mode
-       // 06-NOV-09: now defaulting to iframe mode if file input is detected
-   if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
-          // 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);
-               }
-          else {
-                  fileUpload();
-               }
-   }
-   else {
-               $.ajax(options);
-   }
-
-       // fire 'notify' event
-       this.trigger('form-submit-notify', [this, options]);
-       return this;
-
-
-       // private function for handling file uploads (hat tip to YAHOO!)
-       function fileUpload() {
-               var form = $form[0];
-
-               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
-                       // able to invoke the submit fn on the form (at least not x-browser)
-                       alert('Error: Form elements must not have name or id of "submit".');
-                       return;
-               }
-
-               var s = $.extend(true, {}, $.ajaxSettings, options);
-               s.context = s.context || s;
-               var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id;
-               var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ s.iframeSrc +'" />');
-               var io = $io[0];
-
-               $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
-
-               var xhr = { // mock object
-                       aborted: 0,
-                       responseText: null,
-                       responseXML: null,
-                       status: 0,
-                       statusText: 'n/a',
-                       getAllResponseHeaders: function() {},
-                       getResponseHeader: function() {},
-                       setRequestHeader: function() {},
-                       abort: function(status) {
-                               var e = (status === 'timeout' ? 'timeout' : 'aborted');
-                               log('aborting upload... ' + e);
-                               this.aborted = 1;
-                               $io.attr('src', s.iframeSrc); // abort op in progress
-                               xhr.error = e;
-                               s.error && s.error.call(s.context, xhr, e, e);
-                               g && $.event.trigger("ajaxError", [xhr, s, e]);
-                               s.complete && s.complete.call(s.context, xhr, e);
-                       }
-               };
-
-               var g = s.global;
-               // trigger ajax global events so that activity/block indicators work like normal
-               if (g && ! $.active++) {
-                       $.event.trigger("ajaxStart");
-               }
-               if (g) {
-                       $.event.trigger("ajaxSend", [xhr, s]);
-               }
-
-               if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
-                       if (s.global) {
-                               $.active--;
-                       }
-                       return;
-               }
-               if (xhr.aborted) {
-                       return;
-               }
-
-               var timedOut = 0, timeoutHandle;
-
-               // add submitting element to data if we know it
-               var sub = form.clk;
-               if (sub) {
-                       var n = sub.name;
-                       if (n && !sub.disabled) {
-                               s.extraData = s.extraData || {};
-                               s.extraData[n] = sub.value;
-                               if (sub.type == "image") {
-                                       s.extraData[n+'.x'] = form.clk_x;
-                                       s.extraData[n+'.y'] = form.clk_y;
-                               }
-                       }
-               }
-
-               // take a breath so that pending repaints get some cpu time before the upload starts
-               function doSubmit() {
-                       // make sure form attrs are set
-                       var t = $form.attr('target'), a = $form.attr('action');
-
-                       // update form attrs in IE friendly way
-                       form.setAttribute('target',id);
-                       if (form.getAttribute('method') != 'POST') {
-                               form.setAttribute('method', 'POST');
-                       }
-                       if (form.getAttribute('action') != s.url) {
-                               form.setAttribute('action', s.url);
-                       }
-
-                       // ie borks in some cases when setting encoding
-                       if (! s.skipEncodingOverride) {
-                               $form.attr({
-                                       encoding: 'multipart/form-data',
-                                       enctype:  'multipart/form-data'
-                               });
-                       }
-
-                       // support timout
-                       if (s.timeout) {
-                               timeoutHandle = setTimeout(function() { timedOut = true; cb(true); }, s.timeout);
-                       }
-
-                       // add "extra" data to form if provided in options
-                       var extraInputs = [];
-                       try {
-                               if (s.extraData) {
-                                       for (var n in s.extraData) {
-                                               extraInputs.push(
-                                                       $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
-                                                               .appendTo(form)[0]);
-                                       }
-                               }
-
-                               // add iframe to doc and submit the form
-                               $io.appendTo('body');
-                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
-                               form.submit();
-                       }
-                       finally {
-                               // reset attrs and remove "extra" input elements
-                               form.setAttribute('action',a);
-                               if(t) {
-                                       form.setAttribute('target', t);
-                               } else {
-                                       $form.removeAttr('target');
-                               }
-                               $(extraInputs).remove();
-                       }
-               }
-
-               if (s.forceSync) {
-                       doSubmit();
-               }
-               else {
-                       setTimeout(doSubmit, 10); // this lets dom updates render
-               }
-
-               var data, doc, domCheckCount = 50, callbackProcessed;
-
-               function cb(e) {
-                       if (xhr.aborted || callbackProcessed) {
-                               return;
-                       }
-                       if (e === true && xhr) {
-                               xhr.abort('timeout');
-                               return;
-                       }
-
-                       var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
-                       if (!doc || doc.location.href == s.iframeSrc) {
-                               // response not received yet
-                               if (!timedOut)
-                                       return;
-                       }
-            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
-
-                       var ok = true;
-                       try {
-                               if (timedOut) {
-                                       throw 'timeout';
-                               }
-
-                               var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
-                               log('isXml='+isXml);
-                               if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
-                                       if (--domCheckCount) {
-                                               // in some browsers (Opera) the iframe DOM is not always traversable when
-                                               // the onload callback fires, so we loop a bit to accommodate
-                                               log('requeing onLoad callback, DOM not available');
-                                               setTimeout(cb, 250);
-                                               return;
-                                       }
-                                       // let this fall through because server response could be an empty document
-                                       //log('Could not access iframe DOM after mutiple tries.');
-                                       //throw 'DOMException: not available';
-                               }
-
-                               //log('response detected');
-                               xhr.responseText = doc.body ? doc.body.innerHTML : doc.documentElement ? doc.documentElement.innerHTML : null;
-                               xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
-                               if (isXml)
-                                       s.dataType = 'xml';
-                               xhr.getResponseHeader = function(header){
-                                       var headers = {'content-type': s.dataType};
-                                       return headers[header];
-                               };
-
-                               var scr = /(json|script|text)/.test(s.dataType);
-                               if (scr || s.textarea) {
-                                       // see if user embedded response in textarea
-                                       var ta = doc.getElementsByTagName('textarea')[0];
-                                       if (ta) {
-                                               xhr.responseText = ta.value;
-                                       }
-                                       else if (scr) {
-                                               // account for browsers injecting pre around json response
-                                               var pre = doc.getElementsByTagName('pre')[0];
-                                               var b = doc.getElementsByTagName('body')[0];
-                                               if (pre) {
-                                                       xhr.responseText = pre.textContent;
-                                               }
-                                               else if (b) {
-                                                       xhr.responseText = b.innerHTML;
-                                               }
-                                       }
-                               }
-                               else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
-                                       xhr.responseXML = toXml(xhr.responseText);
-                               }
-
-                               data = httpData(xhr, s.dataType, s);
-                       }
-                       catch(e){
-                               log('error caught:',e);
-                               ok = false;
-                               xhr.error = e;
-                               s.error && s.error.call(s.context, xhr, 'error', e);
-                               g && $.event.trigger("ajaxError", [xhr, s, e]);
-                       }
-
-                       if (xhr.aborted) {
-                               log('upload aborted');
-                               ok = false;
-                       }
-
-                       // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
-                       if (ok) {
-                               s.success && s.success.call(s.context, data, 'success', xhr);
-                               g && $.event.trigger("ajaxSuccess", [xhr, s]);
-                       }
-
-                       g && $.event.trigger("ajaxComplete", [xhr, s]);
-
-                       if (g && ! --$.active) {
-                               $.event.trigger("ajaxStop");
-                       }
-
-                       s.complete && s.complete.call(s.context, xhr, ok ? 'success' : 'error');
-
-                       callbackProcessed = true;
-                       if (s.timeout)
-                               clearTimeout(timeoutHandle);
-
-                       // clean up
-                       setTimeout(function() {
-                               $io.removeData('form-plugin-onload');
-                               $io.remove();
-                               xhr.responseXML = null;
-                       }, 100);
-               }
-
-               var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
-                       if (window.ActiveXObject) {
-                               doc = new ActiveXObject('Microsoft.XMLDOM');
-                               doc.async = 'false';
-                               doc.loadXML(s);
-                       }
-                       else {
-                               doc = (new DOMParser()).parseFromString(s, 'text/xml');
-                       }
-                       return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
-               };
-               var parseJSON = $.parseJSON || function(s) {
-                       return window['eval']('(' + s + ')');
-               };
-
-               var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
-                       var ct = xhr.getResponseHeader('content-type') || '',
-                               xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
-                               data = xml ? xhr.responseXML : xhr.responseText;
-
-                       if (xml && data.documentElement.nodeName === 'parsererror') {
-                               $.error && $.error('parsererror');
-                       }
-                       if (s && s.dataFilter) {
-                               data = s.dataFilter(data, type);
-                       }
-                       if (typeof data === 'string') {
-                               if (type === 'json' || !type && ct.indexOf('json') >= 0) {
-                                       data = parseJSON(data);
-                               } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
-                                       $.globalEval(data);
-                               }
-                       }
-                       return data;
-               };
-       }
-};
-
-/**
- * ajaxForm() provides a mechanism for fully automating form submission.
- *
- * The advantages of using this method instead of ajaxSubmit() are:
- *
- * 1: This method will include coordinates for <input type="image" /> elements (if the element
- *     is used to submit the form).
- * 2. This method will include the submit element's name/value data (for the element that was
- *     used to submit the form).
- * 3. This method binds the submit() method to the form for you.
- *
- * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
- * passes the options argument along after properly binding events for submit elements and
- * the form itself.
- */
-$.fn.ajaxForm = function(options) {
-       // in jQuery 1.3+ we can fix mistakes with the ready state
-       if (this.length === 0) {
-               var o = { s: this.selector, c: this.context };
-               if (!$.isReady && o.s) {
-                       log('DOM not ready, queuing ajaxForm');
-                       $(function() {
-                               $(o.s,o.c).ajaxForm(options);
-                       });
-                       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;
-       }
-
-       return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
-               if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
-                       e.preventDefault();
-                       $(this).ajaxSubmit(options);
-               }
-       }).bind('click.form-plugin', function(e) {
-               var target = e.target;
-               var $el = $(target);
-               if (!($el.is(":submit,input:image"))) {
-                       // is this a child element of the submit el?  (ex: a span within a button)
-                       var t = $el.closest(':submit');
-                       if (t.length == 0) {
-                               return;
-                       }
-                       target = t[0];
-               }
-               var form = this;
-               form.clk = target;
-               if (target.type == 'image') {
-                       if (e.offsetX != undefined) {
-                               form.clk_x = e.offsetX;
-                               form.clk_y = e.offsetY;
-                       } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
-                               var offset = $el.offset();
-                               form.clk_x = e.pageX - offset.left;
-                               form.clk_y = e.pageY - offset.top;
-                       } else {
-                               form.clk_x = e.pageX - target.offsetLeft;
-                               form.clk_y = e.pageY - target.offsetTop;
-                       }
-               }
-               // clear form vars
-               setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
-       });
-};
-
-// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
-$.fn.ajaxFormUnbind = function() {
-       return this.unbind('submit.form-plugin click.form-plugin');
-};
-
-/**
- * formToArray() gathers form element data into an array of objects that can
- * be passed to any of the following ajax functions: $.get, $.post, or load.
- * Each object in the array has both a 'name' and 'value' property.  An example of
- * an array for a simple login form might be:
- *
- * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
- *
- * It is this array that is passed to pre-submit callback functions provided to the
- * ajaxSubmit() and ajaxForm() methods.
- */
-$.fn.formToArray = function(semantic) {
-       var a = [];
-       if (this.length === 0) {
-               return a;
-       }
-
-       var form = this[0];
-       var els = semantic ? form.getElementsByTagName('*') : form.elements;
-       if (!els) {
-               return a;
-       }
-
-       var i,j,n,v,el,max,jmax;
-       for(i=0, max=els.length; i < max; i++) {
-               el = els[i];
-               n = el.name;
-               if (!n) {
-                       continue;
-               }
-
-               if (semantic && form.clk && el.type == "image") {
-                       // handle image inputs on the fly when semantic == true
-                       if(!el.disabled && form.clk == el) {
-                               a.push({name: n, value: $(el).val()});
-                               a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
-                       }
-                       continue;
-               }
-
-               v = $.fieldValue(el, true);
-               if (v && v.constructor == Array) {
-                       for(j=0, jmax=v.length; j < jmax; j++) {
-                               a.push({name: n, value: v[j]});
-                       }
-               }
-               else if (v !== null && typeof v != 'undefined') {
-                       a.push({name: n, value: v});
-               }
-       }
-
-       if (!semantic && form.clk) {
-               // input type=='image' are not found in elements array! handle it here
-               var $input = $(form.clk), input = $input[0];
-               n = input.name;
-               if (n && !input.disabled && input.type == 'image') {
-                       a.push({name: n, value: $input.val()});
-                       a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
-               }
-       }
-       return a;
-};
-
-/**
- * Serializes form data into a 'submittable' string. This method will return a string
- * in the format: name1=value1&amp;name2=value2
- */
-$.fn.formSerialize = function(semantic) {
-       //hand off to jQuery.param for proper encoding
-       return $.param(this.formToArray(semantic));
-};
-
-/**
- * Serializes all field elements in the jQuery object into a query string.
- * This method will return a string in the format: name1=value1&amp;name2=value2
- */
-$.fn.fieldSerialize = function(successful) {
-       var a = [];
-       this.each(function() {
-               var n = this.name;
-               if (!n) {
-                       return;
-               }
-               var v = $.fieldValue(this, successful);
-               if (v && v.constructor == Array) {
-                       for (var i=0,max=v.length; i < max; i++) {
-                               a.push({name: n, value: v[i]});
-                       }
-               }
-               else if (v !== null && typeof v != 'undefined') {
-                       a.push({name: this.name, value: v});
-               }
-       });
-       //hand off to jQuery.param for proper encoding
-       return $.param(a);
-};
-
-/**
- * Returns the value(s) of the element in the matched set.  For example, consider the following form:
- *
- *  <form><fieldset>
- *       <input name="A" type="text" />
- *       <input name="A" type="text" />
- *       <input name="B" type="checkbox" value="B1" />
- *       <input name="B" type="checkbox" value="B2"/>
- *       <input name="C" type="radio" value="C1" />
- *       <input name="C" type="radio" value="C2" />
- *  </fieldset></form>
- *
- *  var v = $(':text').fieldValue();
- *  // if no values are entered into the text inputs
- *  v == ['','']
- *  // if values entered into the text inputs are 'foo' and 'bar'
- *  v == ['foo','bar']
- *
- *  var v = $(':checkbox').fieldValue();
- *  // if neither checkbox is checked
- *  v === undefined
- *  // if both checkboxes are checked
- *  v == ['B1', 'B2']
- *
- *  var v = $(':radio').fieldValue();
- *  // if neither radio is checked
- *  v === undefined
- *  // if first radio is checked
- *  v == ['C1']
- *
- * The successful argument controls whether or not the field element must be 'successful'
- * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
- * The default value of the successful argument is true.  If this value is false the value(s)
- * for each element is returned.
- *
- * Note: This method *always* returns an array.  If no valid value can be determined the
- *        array will be empty, otherwise it will contain one or more values.
- */
-$.fn.fieldValue = function(successful) {
-       for (var val=[], i=0, max=this.length; i < max; i++) {
-               var el = this[i];
-               var v = $.fieldValue(el, successful);
-               if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
-                       continue;
-               }
-               v.constructor == Array ? $.merge(val, v) : val.push(v);
-       }
-       return val;
-};
-
-/**
- * Returns the value of the field element.
- */
-$.fieldValue = function(el, successful) {
-       var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
-       if (successful === undefined) {
-               successful = true;
-       }
-
-       if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
-               (t == 'checkbox' || t == 'radio') && !el.checked ||
-               (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
-               tag == 'select' && el.selectedIndex == -1)) {
-                       return null;
-       }
-
-       if (tag == 'select') {
-               var index = el.selectedIndex;
-               if (index < 0) {
-                       return null;
-               }
-               var a = [], ops = el.options;
-               var one = (t == 'select-one');
-               var max = (one ? index+1 : ops.length);
-               for(var i=(one ? index : 0); i < max; i++) {
-                       var op = ops[i];
-                       if (op.selected) {
-                               var v = op.value;
-                               if (!v) { // extra pain for IE...
-                                       v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
-                               }
-                               if (one) {
-                                       return v;
-                               }
-                               a.push(v);
-                       }
-               }
-               return a;
-       }
-       return $(el).val();
-};
-
-/**
- * Clears the form data.  Takes the following actions on the form's input fields:
- *  - input text fields will have their 'value' property set to the empty string
- *  - select elements will have their 'selectedIndex' property set to -1
- *  - checkbox and radio inputs will have their 'checked' property set to false
- *  - inputs of type submit, button, reset, and hidden will *not* be effected
- *  - button elements will *not* be effected
- */
-$.fn.clearForm = function() {
-       return this.each(function() {
-               $('input,select,textarea', this).clearFields();
-       });
-};
-
-/**
- * Clears the selected form elements.
- */
-$.fn.clearFields = $.fn.clearInputs = function() {
-       return this.each(function() {
-               var t = this.type, tag = this.tagName.toLowerCase();
-               if (t == 'text' || t == 'password' || tag == 'textarea') {
-                       this.value = '';
-               }
-               else if (t == 'checkbox' || t == 'radio') {
-                       this.checked = false;
-               }
-               else if (tag == 'select') {
-                       this.selectedIndex = -1;
-               }
-       });
-};
-
-/**
- * Resets the form data.  Causes all form elements to be reset to their original value.
- */
-$.fn.resetForm = function() {
-       return this.each(function() {
-               // guard against an input with the name of 'reset'
-               // note that IE reports the reset function as an 'object'
-               if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
-                       this.reset();
-               }
-       });
-};
-
-/**
- * Enables or disables any matching elements.
- */
-$.fn.enable = function(b) {
-       if (b === undefined) {
-               b = true;
-       }
-       return this.each(function() {
-               this.disabled = !b;
-       });
-};
-
-/**
- * Checks/unchecks any matching checkboxes or radio buttons and
- * selects/deselects and matching option elements.
- */
-$.fn.selected = function(select) {
-       if (select === undefined) {
-               select = true;
-       }
-       return this.each(function() {
-               var t = this.type;
-               if (t == 'checkbox' || t == 'radio') {
-                       this.checked = select;
-               }
-               else if (this.tagName.toLowerCase() == 'option') {
-                       var $sel = $(this).parent('select');
-                       if (select && $sel[0] && $sel[0].type == 'select-one') {
-                               // deselect all other options
-                               $sel.find('option').selected(false);
-                       }
-                       this.selected = select;
-               }
-       });
-};
-
-// helper fn for console logging
-// set $.fn.ajaxSubmit.debug to true to enable debug logging
-function log() {
-       if ($.fn.ajaxSubmit.debug) {
-               var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
-               if (window.console && window.console.log) {
-                       window.console.log(msg);
-               }
-               else if (window.opera && window.opera.postError) {
-                       window.opera.postError(msg);
-               }
-       }
-};
-
-})(jQuery);
index 45ddd2f6c856506599e377ed381dbe5ba976acb9..d0cb23c238bd68061a5b11d4da1ba6f885ca348d 100644 (file)
@@ -8,4 +8,818 @@
  *   http://www.opensource.org/licenses/mit-license.php
  *   http://www.gnu.org/licenses/gpl.html
  */
-(function(b){b.fn.ajaxSubmit=function(t){if(!this.length){a("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof t=="function"){t={success:t}}var h=this.attr("action");var d=(typeof h==="string")?b.trim(h):"";if(d){d=(d.match(/^([^#]+)/)||[])[1]}d=d||window.location.href||"";t=b.extend(true,{url:d,success:b.ajaxSettings.success,type:this[0].getAttribute("method")||"GET",iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},t);var u={};this.trigger("form-pre-serialize",[this,t,u]);if(u.veto){a("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(t.beforeSerialize&&t.beforeSerialize(this,t)===false){a("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var f,p,m=this.formToArray(t.semantic);if(t.data){t.extraData=t.data;for(f in t.data){if(t.data[f] instanceof Array){for(var i in t.data[f]){m.push({name:f,value:t.data[f][i]})}}else{p=t.data[f];p=b.isFunction(p)?p():p;m.push({name:f,value:p})}}}if(t.beforeSubmit&&t.beforeSubmit(m,this,t)===false){a("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[m,this,t,u]);if(u.veto){a("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var c=b.param(m);if(t.type.toUpperCase()=="GET"){t.url+=(t.url.indexOf("?")>=0?"&":"?")+c;t.data=null}else{t.data=c}var s=this,l=[];if(t.resetForm){l.push(function(){s.resetForm()})}if(t.clearForm){l.push(function(){s.clearForm()})}if(!t.dataType&&t.target){var r=t.success||function(){};l.push(function(n){var k=t.replaceTarget?"replaceWith":"html";b(t.target)[k](n).each(r,arguments)})}else{if(t.success){l.push(t.success)}}t.success=function(w,n,x){var v=t.context||t;for(var q=0,k=l.length;q<k;q++){l[q].apply(v,[w,n,x||s,s])}};var g=b("input:file",this).length>0;var e="multipart/form-data";var j=(s.attr("enctype")==e||s.attr("encoding")==e);if(t.iframe!==false&&(g||t.iframe||j)){if(t.closeKeepAlive){b.get(t.closeKeepAlive,o)}else{o()}}else{b.ajax(t)}this.trigger("form-submit-notify",[this,t]);return this;function o(){var v=s[0];if(b(":input[name=submit],:input[id=submit]",v).length){alert('Error: Form elements must not have name or id of "submit".');return}var D=b.extend(true,{},b.ajaxSettings,t);D.context=D.context||D;var G="jqFormIO"+(new Date().getTime()),A="_"+G;var x=b('<iframe id="'+G+'" name="'+G+'" src="'+D.iframeSrc+'" />');var B=x[0];x.css({position:"absolute",top:"-1000px",left:"-1000px"});var y={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(n){var O=(n==="timeout"?"timeout":"aborted");a("aborting upload... "+O);this.aborted=1;x.attr("src",D.iframeSrc);y.error=O;D.error&&D.error.call(D.context,y,O,O);K&&b.event.trigger("ajaxError",[y,D,O]);D.complete&&D.complete.call(D.context,y,O)}};var K=D.global;if(K&&!b.active++){b.event.trigger("ajaxStart")}if(K){b.event.trigger("ajaxSend",[y,D])}if(D.beforeSend&&D.beforeSend.call(D.context,y,D)===false){if(D.global){b.active--}return}if(y.aborted){return}var J=0,C;var z=v.clk;if(z){var H=z.name;if(H&&!z.disabled){D.extraData=D.extraData||{};D.extraData[H]=z.value;if(z.type=="image"){D.extraData[H+".x"]=v.clk_x;D.extraData[H+".y"]=v.clk_y}}}function I(){var Q=s.attr("target"),O=s.attr("action");v.setAttribute("target",G);if(v.getAttribute("method")!="POST"){v.setAttribute("method","POST")}if(v.getAttribute("action")!=D.url){v.setAttribute("action",D.url)}if(!D.skipEncodingOverride){s.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"})}if(D.timeout){C=setTimeout(function(){J=true;F(true)},D.timeout)}var P=[];try{if(D.extraData){for(var R in D.extraData){P.push(b('<input type="hidden" name="'+R+'" value="'+D.extraData[R]+'" />').appendTo(v)[0])}}x.appendTo("body");B.attachEvent?B.attachEvent("onload",F):B.addEventListener("load",F,false);v.submit()}finally{v.setAttribute("action",O);if(Q){v.setAttribute("target",Q)}else{s.removeAttr("target")}b(P).remove()}}if(D.forceSync){I()}else{setTimeout(I,10)}var M,N,L=50,w;function F(T){if(y.aborted||w){return}if(T===true&&y){y.abort("timeout");return}var S=B.contentWindow?B.contentWindow.document:B.contentDocument?B.contentDocument:B.document;if(!S||S.location.href==D.iframeSrc){if(!J){return}}B.detachEvent?B.detachEvent("onload",F):B.removeEventListener("load",F,false);var P=true;try{if(J){throw"timeout"}var U=D.dataType=="xml"||S.XMLDocument||b.isXMLDoc(S);a("isXml="+U);if(!U&&window.opera&&(S.body==null||S.body.innerHTML=="")){if(--L){a("requeing onLoad callback, DOM not available");setTimeout(F,250);return}}y.responseText=S.body?S.body.innerHTML:S.documentElement?S.documentElement.innerHTML:null;y.responseXML=S.XMLDocument?S.XMLDocument:S;if(U){D.dataType="xml"}y.getResponseHeader=function(W){var V={"content-type":D.dataType};return V[W]};var R=/(json|script|text)/.test(D.dataType);if(R||D.textarea){var O=S.getElementsByTagName("textarea")[0];if(O){y.responseText=O.value}else{if(R){var Q=S.getElementsByTagName("pre")[0];var n=S.getElementsByTagName("body")[0];if(Q){y.responseText=Q.textContent}else{if(n){y.responseText=n.innerHTML}}}}}else{if(D.dataType=="xml"&&!y.responseXML&&y.responseText!=null){y.responseXML=E(y.responseText)}}M=k(y,D.dataType,D)}catch(T){a("error caught:",T);P=false;y.error=T;D.error&&D.error.call(D.context,y,"error",T);K&&b.event.trigger("ajaxError",[y,D,T])}if(y.aborted){a("upload aborted");P=false}if(P){D.success&&D.success.call(D.context,M,"success",y);K&&b.event.trigger("ajaxSuccess",[y,D])}K&&b.event.trigger("ajaxComplete",[y,D]);if(K&&!--b.active){b.event.trigger("ajaxStop")}D.complete&&D.complete.call(D.context,y,P?"success":"error");w=true;if(D.timeout){clearTimeout(C)}setTimeout(function(){x.removeData("form-plugin-onload");x.remove();y.responseXML=null},100)}var E=b.parseXML||function(n,O){if(window.ActiveXObject){O=new ActiveXObject("Microsoft.XMLDOM");O.async="false";O.loadXML(n)}else{O=(new DOMParser()).parseFromString(n,"text/xml")}return(O&&O.documentElement&&O.documentElement.nodeName!="parsererror")?O:null};var q=b.parseJSON||function(n){return window["eval"]("("+n+")")};var k=function(S,Q,P){var O=S.getResponseHeader("content-type")||"",n=Q==="xml"||!Q&&O.indexOf("xml")>=0,R=n?S.responseXML:S.responseText;if(n&&R.documentElement.nodeName==="parsererror"){b.error&&b.error("parsererror")}if(P&&P.dataFilter){R=P.dataFilter(R,Q)}if(typeof R==="string"){if(Q==="json"||!Q&&O.indexOf("json")>=0){R=q(R)}else{if(Q==="script"||!Q&&O.indexOf("javascript")>=0){b.globalEval(R)}}}return R}}};b.fn.ajaxForm=function(c){if(this.length===0){var d={s:this.selector,c:this.context};if(!b.isReady&&d.s){a("DOM not ready, queuing ajaxForm");b(function(){b(d.s,d.c).ajaxForm(c)});return this}a("terminating; zero elements found by selector"+(b.isReady?"":" (DOM not ready)"));return this}return this.ajaxFormUnbind().bind("submit.form-plugin",function(f){if(!f.isDefaultPrevented()){f.preventDefault();b(this).ajaxSubmit(c)}}).bind("click.form-plugin",function(j){var i=j.target;var g=b(i);if(!(g.is(":submit,input:image"))){var f=g.closest(":submit");if(f.length==0){return}i=f[0]}var h=this;h.clk=i;if(i.type=="image"){if(j.offsetX!=undefined){h.clk_x=j.offsetX;h.clk_y=j.offsetY}else{if(typeof b.fn.offset=="function"){var k=g.offset();h.clk_x=j.pageX-k.left;h.clk_y=j.pageY-k.top}else{h.clk_x=j.pageX-i.offsetLeft;h.clk_y=j.pageY-i.offsetTop}}}setTimeout(function(){h.clk=h.clk_x=h.clk_y=null},100)})};b.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};b.fn.formToArray=function(q){var p=[];if(this.length===0){return p}var d=this[0];var g=q?d.getElementsByTagName("*"):d.elements;if(!g){return p}var k,h,f,r,e,m,c;for(k=0,m=g.length;k<m;k++){e=g[k];f=e.name;if(!f){continue}if(q&&d.clk&&e.type=="image"){if(!e.disabled&&d.clk==e){p.push({name:f,value:b(e).val()});p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})}continue}r=b.fieldValue(e,true);if(r&&r.constructor==Array){for(h=0,c=r.length;h<c;h++){p.push({name:f,value:r[h]})}}else{if(r!==null&&typeof r!="undefined"){p.push({name:f,value:r})}}}if(!q&&d.clk){var l=b(d.clk),o=l[0];f=o.name;if(f&&!o.disabled&&o.type=="image"){p.push({name:f,value:l.val()});p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})}}return p};b.fn.formSerialize=function(c){return b.param(this.formToArray(c))};b.fn.fieldSerialize=function(d){var c=[];this.each(function(){var h=this.name;if(!h){return}var f=b.fieldValue(this,d);if(f&&f.constructor==Array){for(var g=0,e=f.length;g<e;g++){c.push({name:h,value:f[g]})}}else{if(f!==null&&typeof f!="undefined"){c.push({name:this.name,value:f})}}});return b.param(c)};b.fn.fieldValue=function(h){for(var g=[],e=0,c=this.length;e<c;e++){var f=this[e];var d=b.fieldValue(f,h);if(d===null||typeof d=="undefined"||(d.constructor==Array&&!d.length)){continue}d.constructor==Array?b.merge(g,d):g.push(d)}return g};b.fieldValue=function(c,j){var e=c.name,p=c.type,q=c.tagName.toLowerCase();if(j===undefined){j=true}if(j&&(!e||c.disabled||p=="reset"||p=="button"||(p=="checkbox"||p=="radio")&&!c.checked||(p=="submit"||p=="image")&&c.form&&c.form.clk!=c||q=="select"&&c.selectedIndex==-1)){return null}if(q=="select"){var k=c.selectedIndex;if(k<0){return null}var m=[],d=c.options;var g=(p=="select-one");var l=(g?k+1:d.length);for(var f=(g?k:0);f<l;f++){var h=d[f];if(h.selected){var o=h.value;if(!o){o=(h.attributes&&h.attributes.value&&!(h.attributes.value.specified))?h.text:h.value}if(g){return o}m.push(o)}}return m}return b(c).val()};b.fn.clearForm=function(){return this.each(function(){b("input,select,textarea",this).clearFields()})};b.fn.clearFields=b.fn.clearInputs=function(){return this.each(function(){var d=this.type,c=this.tagName.toLowerCase();if(d=="text"||d=="password"||c=="textarea"){this.value=""}else{if(d=="checkbox"||d=="radio"){this.checked=false}else{if(c=="select"){this.selectedIndex=-1}}}})};b.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};b.fn.enable=function(c){if(c===undefined){c=true}return this.each(function(){this.disabled=!c})};b.fn.selected=function(c){if(c===undefined){c=true}return this.each(function(){var d=this.type;if(d=="checkbox"||d=="radio"){this.checked=c}else{if(this.tagName.toLowerCase()=="option"){var e=b(this).parent("select");if(c&&e[0]&&e[0].type=="select-one"){e.find("option").selected(false)}this.selected=c}}})};function a(){if(b.fn.ajaxSubmit.debug){var c="[jquery.form] "+Array.prototype.join.call(arguments,"");if(window.console&&window.console.log){window.console.log(c)}else{if(window.opera&&window.opera.postError){window.opera.postError(c)}}}}})(jQuery);
\ No newline at end of file
+;(function($) {
+
+/*
+       Usage Note:
+       -----------
+       Do not use both ajaxSubmit and ajaxForm on the same form.  These
+       functions are intended to be exclusive.  Use ajaxSubmit if you want
+       to bind your own submit handler to the form.  For example,
+
+       $(document).ready(function() {
+               $('#myForm').bind('submit', function(e) {
+                       e.preventDefault(); // <-- important
+                       $(this).ajaxSubmit({
+                               target: '#output'
+                       });
+               });
+       });
+
+       Use ajaxForm when you want the plugin to manage all the event binding
+       for you.  For example,
+
+       $(document).ready(function() {
+               $('#myForm').ajaxForm({
+                       target: '#output'
+               });
+       });
+
+       When using ajaxForm, the ajaxSubmit function will be invoked for you
+       at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+       // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+       if (!this.length) {
+               log('ajaxSubmit: skipping submit process - no element selected');
+               return this;
+       }
+
+       if (typeof options == 'function') {
+               options = { success: options };
+       }
+
+       var action = this.attr('action');
+       var url = (typeof action === 'string') ? $.trim(action) : '';
+       if (url) {
+               // clean url (don't include hash vaue)
+               url = (url.match(/^([^#]+)/)||[])[1];
+       }
+       url = url || window.location.href || '';
+
+       options = $.extend(true, {
+               url:  url,
+               success: $.ajaxSettings.success,
+               type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57)
+               iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+       }, options);
+
+       // hook for manipulating the form data before it is extracted;
+       // convenient for use with rich editors like tinyMCE or FCKEditor
+       var veto = {};
+       this.trigger('form-pre-serialize', [this, options, veto]);
+       if (veto.veto) {
+               log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+               return this;
+       }
+
+       // provide opportunity to alter form data before it is serialized
+       if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+               log('ajaxSubmit: submit aborted via beforeSerialize callback');
+               return this;
+       }
+
+       var n,v,a = this.formToArray(options.semantic);
+       if (options.data) {
+               options.extraData = options.data;
+               for (n in options.data) {
+                       if(options.data[n] instanceof Array) {
+                               for (var k in options.data[n]) {
+                                       a.push( { name: n, value: options.data[n][k] } );
+                               }
+                       }
+                       else {
+                               v = options.data[n];
+                               v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
+                               a.push( { name: n, value: v } );
+                       }
+               }
+       }
+
+       // give pre-submit callback an opportunity to abort the submit
+       if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+               log('ajaxSubmit: submit aborted via beforeSubmit callback');
+               return this;
+       }
+
+       // fire vetoable 'validate' event
+       this.trigger('form-submit-validate', [a, this, options, veto]);
+       if (veto.veto) {
+               log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+               return this;
+       }
+
+       var q = $.param(a);
+
+       if (options.type.toUpperCase() == 'GET') {
+               options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+               options.data = null;  // data is null for 'get'
+       }
+       else {
+               options.data = q; // data is the query string for 'post'
+       }
+
+       var $form = this, callbacks = [];
+       if (options.resetForm) {
+               callbacks.push(function() { $form.resetForm(); });
+       }
+       if (options.clearForm) {
+               callbacks.push(function() { $form.clearForm(); });
+       }
+
+       // perform a load on the target only if dataType is not provided
+       if (!options.dataType && options.target) {
+               var oldSuccess = options.success || function(){};
+               callbacks.push(function(data) {
+                       var fn = options.replaceTarget ? 'replaceWith' : 'html';
+                       $(options.target)[fn](data).each(oldSuccess, arguments);
+               });
+       }
+       else if (options.success) {
+               callbacks.push(options.success);
+       }
+
+       options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+               var context = options.context || options;   // jQuery 1.4+ supports scope context
+               for (var i=0, max=callbacks.length; i < max; i++) {
+                       callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+               }
+       };
+
+       // are there files to upload?
+       var fileInputs = $('input:file', this).length > 0;
+       var mp = 'multipart/form-data';
+       var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+       // options.iframe allows user to force iframe mode
+       // 06-NOV-09: now defaulting to iframe mode if file input is detected
+   if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
+          // 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);
+               }
+          else {
+                  fileUpload();
+               }
+   }
+   else {
+               $.ajax(options);
+   }
+
+       // fire 'notify' event
+       this.trigger('form-submit-notify', [this, options]);
+       return this;
+
+
+       // private function for handling file uploads (hat tip to YAHOO!)
+       function fileUpload() {
+               var form = $form[0];
+
+               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
+                       // able to invoke the submit fn on the form (at least not x-browser)
+                       alert('Error: Form elements must not have name or id of "submit".');
+                       return;
+               }
+
+               var s = $.extend(true, {}, $.ajaxSettings, options);
+               s.context = s.context || s;
+               var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id;
+               var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ s.iframeSrc +'" />');
+               var io = $io[0];
+
+               $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+               var xhr = { // mock object
+                       aborted: 0,
+                       responseText: null,
+                       responseXML: null,
+                       status: 0,
+                       statusText: 'n/a',
+                       getAllResponseHeaders: function() {},
+                       getResponseHeader: function() {},
+                       setRequestHeader: function() {},
+                       abort: function(status) {
+                               var e = (status === 'timeout' ? 'timeout' : 'aborted');
+                               log('aborting upload... ' + e);
+                               this.aborted = 1;
+                               $io.attr('src', s.iframeSrc); // abort op in progress
+                               xhr.error = e;
+                               s.error && s.error.call(s.context, xhr, e, e);
+                               g && $.event.trigger("ajaxError", [xhr, s, e]);
+                               s.complete && s.complete.call(s.context, xhr, e);
+                       }
+               };
+
+               var g = s.global;
+               // trigger ajax global events so that activity/block indicators work like normal
+               if (g && ! $.active++) {
+                       $.event.trigger("ajaxStart");
+               }
+               if (g) {
+                       $.event.trigger("ajaxSend", [xhr, s]);
+               }
+
+               if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+                       if (s.global) {
+                               $.active--;
+                       }
+                       return;
+               }
+               if (xhr.aborted) {
+                       return;
+               }
+
+               var timedOut = 0, timeoutHandle;
+
+               // add submitting element to data if we know it
+               var sub = form.clk;
+               if (sub) {
+                       var n = sub.name;
+                       if (n && !sub.disabled) {
+                               s.extraData = s.extraData || {};
+                               s.extraData[n] = sub.value;
+                               if (sub.type == "image") {
+                                       s.extraData[n+'.x'] = form.clk_x;
+                                       s.extraData[n+'.y'] = form.clk_y;
+                               }
+                       }
+               }
+
+               // take a breath so that pending repaints get some cpu time before the upload starts
+               function doSubmit() {
+                       // make sure form attrs are set
+                       var t = $form.attr('target'), a = $form.attr('action');
+
+                       // update form attrs in IE friendly way
+                       form.setAttribute('target',id);
+                       if (form.getAttribute('method') != 'POST') {
+                               form.setAttribute('method', 'POST');
+                       }
+                       if (form.getAttribute('action') != s.url) {
+                               form.setAttribute('action', s.url);
+                       }
+
+                       // ie borks in some cases when setting encoding
+                       if (! s.skipEncodingOverride) {
+                               $form.attr({
+                                       encoding: 'multipart/form-data',
+                                       enctype:  'multipart/form-data'
+                               });
+                       }
+
+                       // support timout
+                       if (s.timeout) {
+                               timeoutHandle = setTimeout(function() { timedOut = true; cb(true); }, s.timeout);
+                       }
+
+                       // add "extra" data to form if provided in options
+                       var extraInputs = [];
+                       try {
+                               if (s.extraData) {
+                                       for (var n in s.extraData) {
+                                               extraInputs.push(
+                                                       $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
+                                                               .appendTo(form)[0]);
+                                       }
+                               }
+
+                               // add iframe to doc and submit the form
+                               $io.appendTo('body');
+                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+                               form.submit();
+                       }
+                       finally {
+                               // reset attrs and remove "extra" input elements
+                               form.setAttribute('action',a);
+                               if(t) {
+                                       form.setAttribute('target', t);
+                               } else {
+                                       $form.removeAttr('target');
+                               }
+                               $(extraInputs).remove();
+                       }
+               }
+
+               if (s.forceSync) {
+                       doSubmit();
+               }
+               else {
+                       setTimeout(doSubmit, 10); // this lets dom updates render
+               }
+
+               var data, doc, domCheckCount = 50, callbackProcessed;
+
+               function cb(e) {
+                       if (xhr.aborted || callbackProcessed) {
+                               return;
+                       }
+                       if (e === true && xhr) {
+                               xhr.abort('timeout');
+                               return;
+                       }
+
+                       var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+                       if (!doc || doc.location.href == s.iframeSrc) {
+                               // response not received yet
+                               if (!timedOut)
+                                       return;
+                       }
+            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+                       var ok = true;
+                       try {
+                               if (timedOut) {
+                                       throw 'timeout';
+                               }
+
+                               var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+                               log('isXml='+isXml);
+                               if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
+                                       if (--domCheckCount) {
+                                               // in some browsers (Opera) the iframe DOM is not always traversable when
+                                               // the onload callback fires, so we loop a bit to accommodate
+                                               log('requeing onLoad callback, DOM not available');
+                                               setTimeout(cb, 250);
+                                               return;
+                                       }
+                                       // let this fall through because server response could be an empty document
+                                       //log('Could not access iframe DOM after mutiple tries.');
+                                       //throw 'DOMException: not available';
+                               }
+
+                               //log('response detected');
+                               xhr.responseText = doc.body ? doc.body.innerHTML : doc.documentElement ? doc.documentElement.innerHTML : null;
+                               xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+                               if (isXml)
+                                       s.dataType = 'xml';
+                               xhr.getResponseHeader = function(header){
+                                       var headers = {'content-type': s.dataType};
+                                       return headers[header];
+                               };
+
+                               var scr = /(json|script|text)/.test(s.dataType);
+                               if (scr || s.textarea) {
+                                       // see if user embedded response in textarea
+                                       var ta = doc.getElementsByTagName('textarea')[0];
+                                       if (ta) {
+                                               xhr.responseText = ta.value;
+                                       }
+                                       else if (scr) {
+                                               // account for browsers injecting pre around json response
+                                               var pre = doc.getElementsByTagName('pre')[0];
+                                               var b = doc.getElementsByTagName('body')[0];
+                                               if (pre) {
+                                                       xhr.responseText = pre.textContent;
+                                               }
+                                               else if (b) {
+                                                       xhr.responseText = b.innerHTML;
+                                               }
+                                       }
+                               }
+                               else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+                                       xhr.responseXML = toXml(xhr.responseText);
+                               }
+
+                               data = httpData(xhr, s.dataType, s);
+                       }
+                       catch(e){
+                               log('error caught:',e);
+                               ok = false;
+                               xhr.error = e;
+                               s.error && s.error.call(s.context, xhr, 'error', e);
+                               g && $.event.trigger("ajaxError", [xhr, s, e]);
+                       }
+
+                       if (xhr.aborted) {
+                               log('upload aborted');
+                               ok = false;
+                       }
+
+                       // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+                       if (ok) {
+                               s.success && s.success.call(s.context, data, 'success', xhr);
+                               g && $.event.trigger("ajaxSuccess", [xhr, s]);
+                       }
+
+                       g && $.event.trigger("ajaxComplete", [xhr, s]);
+
+                       if (g && ! --$.active) {
+                               $.event.trigger("ajaxStop");
+                       }
+
+                       s.complete && s.complete.call(s.context, xhr, ok ? 'success' : 'error');
+
+                       callbackProcessed = true;
+                       if (s.timeout)
+                               clearTimeout(timeoutHandle);
+
+                       // clean up
+                       setTimeout(function() {
+                               $io.removeData('form-plugin-onload');
+                               $io.remove();
+                               xhr.responseXML = null;
+                       }, 100);
+               }
+
+               var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+                       if (window.ActiveXObject) {
+                               doc = new ActiveXObject('Microsoft.XMLDOM');
+                               doc.async = 'false';
+                               doc.loadXML(s);
+                       }
+                       else {
+                               doc = (new DOMParser()).parseFromString(s, 'text/xml');
+                       }
+                       return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+               };
+               var parseJSON = $.parseJSON || function(s) {
+                       return window['eval']('(' + s + ')');
+               };
+
+               var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+                       var ct = xhr.getResponseHeader('content-type') || '',
+                               xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+                               data = xml ? xhr.responseXML : xhr.responseText;
+
+                       if (xml && data.documentElement.nodeName === 'parsererror') {
+                               $.error && $.error('parsererror');
+                       }
+                       if (s && s.dataFilter) {
+                               data = s.dataFilter(data, type);
+                       }
+                       if (typeof data === 'string') {
+                               if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+                                       data = parseJSON(data);
+                               } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+                                       $.globalEval(data);
+                               }
+                       }
+                       return data;
+               };
+       }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *     is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *     used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+       // in jQuery 1.3+ we can fix mistakes with the ready state
+       if (this.length === 0) {
+               var o = { s: this.selector, c: this.context };
+               if (!$.isReady && o.s) {
+                       log('DOM not ready, queuing ajaxForm');
+                       $(function() {
+                               $(o.s,o.c).ajaxForm(options);
+                       });
+                       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;
+       }
+
+       return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
+               if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+                       e.preventDefault();
+                       $(this).ajaxSubmit(options);
+               }
+       }).bind('click.form-plugin', function(e) {
+               var target = e.target;
+               var $el = $(target);
+               if (!($el.is(":submit,input:image"))) {
+                       // is this a child element of the submit el?  (ex: a span within a button)
+                       var t = $el.closest(':submit');
+                       if (t.length == 0) {
+                               return;
+                       }
+                       target = t[0];
+               }
+               var form = this;
+               form.clk = target;
+               if (target.type == 'image') {
+                       if (e.offsetX != undefined) {
+                               form.clk_x = e.offsetX;
+                               form.clk_y = e.offsetY;
+                       } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+                               var offset = $el.offset();
+                               form.clk_x = e.pageX - offset.left;
+                               form.clk_y = e.pageY - offset.top;
+                       } else {
+                               form.clk_x = e.pageX - target.offsetLeft;
+                               form.clk_y = e.pageY - target.offsetTop;
+                       }
+               }
+               // clear form vars
+               setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+       });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+       return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+       var a = [];
+       if (this.length === 0) {
+               return a;
+       }
+
+       var form = this[0];
+       var els = semantic ? form.getElementsByTagName('*') : form.elements;
+       if (!els) {
+               return a;
+       }
+
+       var i,j,n,v,el,max,jmax;
+       for(i=0, max=els.length; i < max; i++) {
+               el = els[i];
+               n = el.name;
+               if (!n) {
+                       continue;
+               }
+
+               if (semantic && form.clk && el.type == "image") {
+                       // handle image inputs on the fly when semantic == true
+                       if(!el.disabled && form.clk == el) {
+                               a.push({name: n, value: $(el).val()});
+                               a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+                       }
+                       continue;
+               }
+
+               v = $.fieldValue(el, true);
+               if (v && v.constructor == Array) {
+                       for(j=0, jmax=v.length; j < jmax; j++) {
+                               a.push({name: n, value: v[j]});
+                       }
+               }
+               else if (v !== null && typeof v != 'undefined') {
+                       a.push({name: n, value: v});
+               }
+       }
+
+       if (!semantic && form.clk) {
+               // input type=='image' are not found in elements array! handle it here
+               var $input = $(form.clk), input = $input[0];
+               n = input.name;
+               if (n && !input.disabled && input.type == 'image') {
+                       a.push({name: n, value: $input.val()});
+                       a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+               }
+       }
+       return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+       //hand off to jQuery.param for proper encoding
+       return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+       var a = [];
+       this.each(function() {
+               var n = this.name;
+               if (!n) {
+                       return;
+               }
+               var v = $.fieldValue(this, successful);
+               if (v && v.constructor == Array) {
+                       for (var i=0,max=v.length; i < max; i++) {
+                               a.push({name: n, value: v[i]});
+                       }
+               }
+               else if (v !== null && typeof v != 'undefined') {
+                       a.push({name: this.name, value: v});
+               }
+       });
+       //hand off to jQuery.param for proper encoding
+       return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *       <input name="A" type="text" />
+ *       <input name="A" type="text" />
+ *       <input name="B" type="checkbox" value="B1" />
+ *       <input name="B" type="checkbox" value="B2"/>
+ *       <input name="C" type="radio" value="C1" />
+ *       <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $(':text').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $(':checkbox').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $(':radio').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *        array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+       for (var val=[], i=0, max=this.length; i < max; i++) {
+               var el = this[i];
+               var v = $.fieldValue(el, successful);
+               if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+                       continue;
+               }
+               v.constructor == Array ? $.merge(val, v) : val.push(v);
+       }
+       return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+       var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+       if (successful === undefined) {
+               successful = true;
+       }
+
+       if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+               (t == 'checkbox' || t == 'radio') && !el.checked ||
+               (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+               tag == 'select' && el.selectedIndex == -1)) {
+                       return null;
+       }
+
+       if (tag == 'select') {
+               var index = el.selectedIndex;
+               if (index < 0) {
+                       return null;
+               }
+               var a = [], ops = el.options;
+               var one = (t == 'select-one');
+               var max = (one ? index+1 : ops.length);
+               for(var i=(one ? index : 0); i < max; i++) {
+                       var op = ops[i];
+                       if (op.selected) {
+                               var v = op.value;
+                               if (!v) { // extra pain for IE...
+                                       v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+                               }
+                               if (one) {
+                                       return v;
+                               }
+                               a.push(v);
+                       }
+               }
+               return a;
+       }
+       return $(el).val();
+};
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+       return this.each(function() {
+               $('input,select,textarea', this).clearFields();
+       });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+       return this.each(function() {
+               var t = this.type, tag = this.tagName.toLowerCase();
+               if (t == 'text' || t == 'password' || tag == 'textarea') {
+                       this.value = '';
+               }
+               else if (t == 'checkbox' || t == 'radio') {
+                       this.checked = false;
+               }
+               else if (tag == 'select') {
+                       this.selectedIndex = -1;
+               }
+       });
+};
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+       return this.each(function() {
+               // guard against an input with the name of 'reset'
+               // note that IE reports the reset function as an 'object'
+               if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+                       this.reset();
+               }
+       });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+       if (b === undefined) {
+               b = true;
+       }
+       return this.each(function() {
+               this.disabled = !b;
+       });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+       if (select === undefined) {
+               select = true;
+       }
+       return this.each(function() {
+               var t = this.type;
+               if (t == 'checkbox' || t == 'radio') {
+                       this.checked = select;
+               }
+               else if (this.tagName.toLowerCase() == 'option') {
+                       var $sel = $(this).parent('select');
+                       if (select && $sel[0] && $sel[0].type == 'select-one') {
+                               // deselect all other options
+                               $sel.find('option').selected(false);
+                       }
+                       this.selected = select;
+               }
+       });
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+       if ($.fn.ajaxSubmit.debug) {
+               var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+               if (window.console && window.console.log) {
+                       window.console.log(msg);
+               }
+               else if (window.opera && window.opera.postError) {
+                       window.opera.postError(msg);
+               }
+       }
+};
+
+})(jQuery);
diff --git a/wp-includes/js/jquery/jquery.form.min.js b/wp-includes/js/jquery/jquery.form.min.js
new file mode 100644 (file)
index 0000000..45ddd2f
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+ * jQuery Form Plugin
+ * version: 2.73 (03-MAY-2011)
+ * @requires jQuery v1.3.2 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+(function(b){b.fn.ajaxSubmit=function(t){if(!this.length){a("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof t=="function"){t={success:t}}var h=this.attr("action");var d=(typeof h==="string")?b.trim(h):"";if(d){d=(d.match(/^([^#]+)/)||[])[1]}d=d||window.location.href||"";t=b.extend(true,{url:d,success:b.ajaxSettings.success,type:this[0].getAttribute("method")||"GET",iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},t);var u={};this.trigger("form-pre-serialize",[this,t,u]);if(u.veto){a("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(t.beforeSerialize&&t.beforeSerialize(this,t)===false){a("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var f,p,m=this.formToArray(t.semantic);if(t.data){t.extraData=t.data;for(f in t.data){if(t.data[f] instanceof Array){for(var i in t.data[f]){m.push({name:f,value:t.data[f][i]})}}else{p=t.data[f];p=b.isFunction(p)?p():p;m.push({name:f,value:p})}}}if(t.beforeSubmit&&t.beforeSubmit(m,this,t)===false){a("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[m,this,t,u]);if(u.veto){a("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var c=b.param(m);if(t.type.toUpperCase()=="GET"){t.url+=(t.url.indexOf("?")>=0?"&":"?")+c;t.data=null}else{t.data=c}var s=this,l=[];if(t.resetForm){l.push(function(){s.resetForm()})}if(t.clearForm){l.push(function(){s.clearForm()})}if(!t.dataType&&t.target){var r=t.success||function(){};l.push(function(n){var k=t.replaceTarget?"replaceWith":"html";b(t.target)[k](n).each(r,arguments)})}else{if(t.success){l.push(t.success)}}t.success=function(w,n,x){var v=t.context||t;for(var q=0,k=l.length;q<k;q++){l[q].apply(v,[w,n,x||s,s])}};var g=b("input:file",this).length>0;var e="multipart/form-data";var j=(s.attr("enctype")==e||s.attr("encoding")==e);if(t.iframe!==false&&(g||t.iframe||j)){if(t.closeKeepAlive){b.get(t.closeKeepAlive,o)}else{o()}}else{b.ajax(t)}this.trigger("form-submit-notify",[this,t]);return this;function o(){var v=s[0];if(b(":input[name=submit],:input[id=submit]",v).length){alert('Error: Form elements must not have name or id of "submit".');return}var D=b.extend(true,{},b.ajaxSettings,t);D.context=D.context||D;var G="jqFormIO"+(new Date().getTime()),A="_"+G;var x=b('<iframe id="'+G+'" name="'+G+'" src="'+D.iframeSrc+'" />');var B=x[0];x.css({position:"absolute",top:"-1000px",left:"-1000px"});var y={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(n){var O=(n==="timeout"?"timeout":"aborted");a("aborting upload... "+O);this.aborted=1;x.attr("src",D.iframeSrc);y.error=O;D.error&&D.error.call(D.context,y,O,O);K&&b.event.trigger("ajaxError",[y,D,O]);D.complete&&D.complete.call(D.context,y,O)}};var K=D.global;if(K&&!b.active++){b.event.trigger("ajaxStart")}if(K){b.event.trigger("ajaxSend",[y,D])}if(D.beforeSend&&D.beforeSend.call(D.context,y,D)===false){if(D.global){b.active--}return}if(y.aborted){return}var J=0,C;var z=v.clk;if(z){var H=z.name;if(H&&!z.disabled){D.extraData=D.extraData||{};D.extraData[H]=z.value;if(z.type=="image"){D.extraData[H+".x"]=v.clk_x;D.extraData[H+".y"]=v.clk_y}}}function I(){var Q=s.attr("target"),O=s.attr("action");v.setAttribute("target",G);if(v.getAttribute("method")!="POST"){v.setAttribute("method","POST")}if(v.getAttribute("action")!=D.url){v.setAttribute("action",D.url)}if(!D.skipEncodingOverride){s.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"})}if(D.timeout){C=setTimeout(function(){J=true;F(true)},D.timeout)}var P=[];try{if(D.extraData){for(var R in D.extraData){P.push(b('<input type="hidden" name="'+R+'" value="'+D.extraData[R]+'" />').appendTo(v)[0])}}x.appendTo("body");B.attachEvent?B.attachEvent("onload",F):B.addEventListener("load",F,false);v.submit()}finally{v.setAttribute("action",O);if(Q){v.setAttribute("target",Q)}else{s.removeAttr("target")}b(P).remove()}}if(D.forceSync){I()}else{setTimeout(I,10)}var M,N,L=50,w;function F(T){if(y.aborted||w){return}if(T===true&&y){y.abort("timeout");return}var S=B.contentWindow?B.contentWindow.document:B.contentDocument?B.contentDocument:B.document;if(!S||S.location.href==D.iframeSrc){if(!J){return}}B.detachEvent?B.detachEvent("onload",F):B.removeEventListener("load",F,false);var P=true;try{if(J){throw"timeout"}var U=D.dataType=="xml"||S.XMLDocument||b.isXMLDoc(S);a("isXml="+U);if(!U&&window.opera&&(S.body==null||S.body.innerHTML=="")){if(--L){a("requeing onLoad callback, DOM not available");setTimeout(F,250);return}}y.responseText=S.body?S.body.innerHTML:S.documentElement?S.documentElement.innerHTML:null;y.responseXML=S.XMLDocument?S.XMLDocument:S;if(U){D.dataType="xml"}y.getResponseHeader=function(W){var V={"content-type":D.dataType};return V[W]};var R=/(json|script|text)/.test(D.dataType);if(R||D.textarea){var O=S.getElementsByTagName("textarea")[0];if(O){y.responseText=O.value}else{if(R){var Q=S.getElementsByTagName("pre")[0];var n=S.getElementsByTagName("body")[0];if(Q){y.responseText=Q.textContent}else{if(n){y.responseText=n.innerHTML}}}}}else{if(D.dataType=="xml"&&!y.responseXML&&y.responseText!=null){y.responseXML=E(y.responseText)}}M=k(y,D.dataType,D)}catch(T){a("error caught:",T);P=false;y.error=T;D.error&&D.error.call(D.context,y,"error",T);K&&b.event.trigger("ajaxError",[y,D,T])}if(y.aborted){a("upload aborted");P=false}if(P){D.success&&D.success.call(D.context,M,"success",y);K&&b.event.trigger("ajaxSuccess",[y,D])}K&&b.event.trigger("ajaxComplete",[y,D]);if(K&&!--b.active){b.event.trigger("ajaxStop")}D.complete&&D.complete.call(D.context,y,P?"success":"error");w=true;if(D.timeout){clearTimeout(C)}setTimeout(function(){x.removeData("form-plugin-onload");x.remove();y.responseXML=null},100)}var E=b.parseXML||function(n,O){if(window.ActiveXObject){O=new ActiveXObject("Microsoft.XMLDOM");O.async="false";O.loadXML(n)}else{O=(new DOMParser()).parseFromString(n,"text/xml")}return(O&&O.documentElement&&O.documentElement.nodeName!="parsererror")?O:null};var q=b.parseJSON||function(n){return window["eval"]("("+n+")")};var k=function(S,Q,P){var O=S.getResponseHeader("content-type")||"",n=Q==="xml"||!Q&&O.indexOf("xml")>=0,R=n?S.responseXML:S.responseText;if(n&&R.documentElement.nodeName==="parsererror"){b.error&&b.error("parsererror")}if(P&&P.dataFilter){R=P.dataFilter(R,Q)}if(typeof R==="string"){if(Q==="json"||!Q&&O.indexOf("json")>=0){R=q(R)}else{if(Q==="script"||!Q&&O.indexOf("javascript")>=0){b.globalEval(R)}}}return R}}};b.fn.ajaxForm=function(c){if(this.length===0){var d={s:this.selector,c:this.context};if(!b.isReady&&d.s){a("DOM not ready, queuing ajaxForm");b(function(){b(d.s,d.c).ajaxForm(c)});return this}a("terminating; zero elements found by selector"+(b.isReady?"":" (DOM not ready)"));return this}return this.ajaxFormUnbind().bind("submit.form-plugin",function(f){if(!f.isDefaultPrevented()){f.preventDefault();b(this).ajaxSubmit(c)}}).bind("click.form-plugin",function(j){var i=j.target;var g=b(i);if(!(g.is(":submit,input:image"))){var f=g.closest(":submit");if(f.length==0){return}i=f[0]}var h=this;h.clk=i;if(i.type=="image"){if(j.offsetX!=undefined){h.clk_x=j.offsetX;h.clk_y=j.offsetY}else{if(typeof b.fn.offset=="function"){var k=g.offset();h.clk_x=j.pageX-k.left;h.clk_y=j.pageY-k.top}else{h.clk_x=j.pageX-i.offsetLeft;h.clk_y=j.pageY-i.offsetTop}}}setTimeout(function(){h.clk=h.clk_x=h.clk_y=null},100)})};b.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};b.fn.formToArray=function(q){var p=[];if(this.length===0){return p}var d=this[0];var g=q?d.getElementsByTagName("*"):d.elements;if(!g){return p}var k,h,f,r,e,m,c;for(k=0,m=g.length;k<m;k++){e=g[k];f=e.name;if(!f){continue}if(q&&d.clk&&e.type=="image"){if(!e.disabled&&d.clk==e){p.push({name:f,value:b(e).val()});p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})}continue}r=b.fieldValue(e,true);if(r&&r.constructor==Array){for(h=0,c=r.length;h<c;h++){p.push({name:f,value:r[h]})}}else{if(r!==null&&typeof r!="undefined"){p.push({name:f,value:r})}}}if(!q&&d.clk){var l=b(d.clk),o=l[0];f=o.name;if(f&&!o.disabled&&o.type=="image"){p.push({name:f,value:l.val()});p.push({name:f+".x",value:d.clk_x},{name:f+".y",value:d.clk_y})}}return p};b.fn.formSerialize=function(c){return b.param(this.formToArray(c))};b.fn.fieldSerialize=function(d){var c=[];this.each(function(){var h=this.name;if(!h){return}var f=b.fieldValue(this,d);if(f&&f.constructor==Array){for(var g=0,e=f.length;g<e;g++){c.push({name:h,value:f[g]})}}else{if(f!==null&&typeof f!="undefined"){c.push({name:this.name,value:f})}}});return b.param(c)};b.fn.fieldValue=function(h){for(var g=[],e=0,c=this.length;e<c;e++){var f=this[e];var d=b.fieldValue(f,h);if(d===null||typeof d=="undefined"||(d.constructor==Array&&!d.length)){continue}d.constructor==Array?b.merge(g,d):g.push(d)}return g};b.fieldValue=function(c,j){var e=c.name,p=c.type,q=c.tagName.toLowerCase();if(j===undefined){j=true}if(j&&(!e||c.disabled||p=="reset"||p=="button"||(p=="checkbox"||p=="radio")&&!c.checked||(p=="submit"||p=="image")&&c.form&&c.form.clk!=c||q=="select"&&c.selectedIndex==-1)){return null}if(q=="select"){var k=c.selectedIndex;if(k<0){return null}var m=[],d=c.options;var g=(p=="select-one");var l=(g?k+1:d.length);for(var f=(g?k:0);f<l;f++){var h=d[f];if(h.selected){var o=h.value;if(!o){o=(h.attributes&&h.attributes.value&&!(h.attributes.value.specified))?h.text:h.value}if(g){return o}m.push(o)}}return m}return b(c).val()};b.fn.clearForm=function(){return this.each(function(){b("input,select,textarea",this).clearFields()})};b.fn.clearFields=b.fn.clearInputs=function(){return this.each(function(){var d=this.type,c=this.tagName.toLowerCase();if(d=="text"||d=="password"||c=="textarea"){this.value=""}else{if(d=="checkbox"||d=="radio"){this.checked=false}else{if(c=="select"){this.selectedIndex=-1}}}})};b.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};b.fn.enable=function(c){if(c===undefined){c=true}return this.each(function(){this.disabled=!c})};b.fn.selected=function(c){if(c===undefined){c=true}return this.each(function(){var d=this.type;if(d=="checkbox"||d=="radio"){this.checked=c}else{if(this.tagName.toLowerCase()=="option"){var e=b(this).parent("select");if(c&&e[0]&&e[0].type=="select-one"){e.find("option").selected(false)}this.selected=c}}})};function a(){if(b.fn.ajaxSubmit.debug){var c="[jquery.form] "+Array.prototype.join.call(arguments,"");if(window.console&&window.console.log){window.console.log(c)}else{if(window.opera&&window.opera.postError){window.opera.postError(c)}}}}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.hotkeys.dev.js b/wp-includes/js/jquery/jquery.hotkeys.dev.js
deleted file mode 100644 (file)
index 85fa1ff..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/******************************************************************************************************************************
-
- * @ Original idea by by Binny V A, Original version: 2.00.A 
- * @ http://www.openjs.com/scripts/events/keyboard_shortcuts/
- * @ Original License : BSD
- * @ jQuery Plugin by Tzury Bar Yochay 
-        mail: tzury.by@gmail.com
-        blog: evalinux.wordpress.com
-        face: facebook.com/profile.php?id=513676303
-        
-        (c) Copyrights 2007
-        
- * @ jQuery Plugin version Beta (0.0.2)
- * @ License: jQuery-License.
-TODO:
-    add queue support (as in gmail) e.g. 'x' then 'y', etc.
-    add mouse + mouse wheel events.
-
-USAGE:
-    $.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
-    $.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
-    $.hotkeys.remove('Ctrl+c'); 
-    $.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'}); 
-    
-******************************************************************************************************************************/
-(function (jQuery){
-    this.version = '(beta)(0.0.3)';
-       this.all = {};
-    this.special_keys = {
-        27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 
-        144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 
-        34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 
-        115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
-        
-    this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", 
-        "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", 
-        ".":">",  "/":"?",  "\\":"|" };
-        
-    this.add = function(combi, options, callback) {
-        if (jQuery.isFunction(options)){
-            callback = options;
-            options = {};
-        }
-        var opt = {},
-            defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]},
-            that = this;
-        opt = jQuery.extend( opt , defaults, options || {} );
-        combi = combi.toLowerCase();        
-        
-        // inspect if keystroke matches
-        var inspector = function(event) {
-            // WP: not needed with newer jQuery
-            // event = jQuery.event.fix(event); // jQuery event normalization.
-            var element = event.target;
-            // @ TextNode -> nodeType == 3
-            // WP: not needed with newer jQuery
-            // element = (element.nodeType==3) ? element.parentNode : element;
-            
-            if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
-                var target = jQuery(element);
-                if( target.is("input") || target.is("textarea")){
-                    return;
-                }
-            }
-            var code = event.which,
-                type = event.type,
-                character = String.fromCharCode(code).toLowerCase(),
-                special = that.special_keys[code],
-                shift = event.shiftKey,
-                ctrl = event.ctrlKey,
-                alt= event.altKey,
-                meta = event.metaKey,
-                propagate = true, // default behaivour
-                mapPoint = null;
-            
-            // in opera + safari, the event.target is unpredictable.
-            // for example: 'keydown' might be associated with HtmlBodyElement 
-            // or the element where you last clicked with your mouse.
-            // WP: needed for all browsers 
-            // if (jQuery.browser.opera || jQuery.browser.safari){
-                while (!that.all[element] && element.parentNode){
-                    element = element.parentNode;
-                }
-            // }
-            var cbMap = that.all[element].events[type].callbackMap;
-            if(!shift && !ctrl && !alt && !meta) { // No Modifiers
-                mapPoint = cbMap[special] ||  cbMap[character]
-                       }
-            // deals with combinaitons (alt|ctrl|shift+anything)
-            else{
-                var modif = '';
-                if(alt) modif +='alt+';
-                if(ctrl) modif+= 'ctrl+';
-                if(shift) modif += 'shift+';
-                if(meta) modif += 'meta+';
-                // modifiers + special keys or modifiers + characters or modifiers + shift characters
-                mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
-            }
-            if (mapPoint){
-                mapPoint.cb(event);
-                if(!mapPoint.propagate) {
-                    event.stopPropagation();
-                    event.preventDefault();
-                    return false;
-                }
-            }
-               };        
-        // first hook for this element
-        if (!this.all[opt.target]){
-            this.all[opt.target] = {events:{}};
-        }
-        if (!this.all[opt.target].events[opt.type]){
-            this.all[opt.target].events[opt.type] = {callbackMap: {}}
-            jQuery.event.add(opt.target, opt.type, inspector);
-        }        
-        this.all[opt.target].events[opt.type].callbackMap[combi] =  {cb: callback, propagate:opt.propagate};                
-        return jQuery;
-       };    
-    this.remove = function(exp, opt) {
-        opt = opt || {};
-        target = opt.target || jQuery('html')[0];
-        type = opt.type || 'keydown';
-               exp = exp.toLowerCase();        
-        delete this.all[target].events[type].callbackMap[exp]        
-        return jQuery;
-       };
-    jQuery.hotkeys = this;
-    return jQuery;    
-})(jQuery);
\ No newline at end of file
index 3c2f66aa62d9b7be7bcaf25170613475757638da..85fa1ffcb9d86325383d6911b444710cfd39bf3b 100644 (file)
@@ -1 +1,131 @@
-(function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){var o=j.target;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;while(!e.all[o]&&o.parentNode){o=o.parentNode}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery);
\ No newline at end of file
+/******************************************************************************************************************************
+
+ * @ Original idea by by Binny V A, Original version: 2.00.A 
+ * @ http://www.openjs.com/scripts/events/keyboard_shortcuts/
+ * @ Original License : BSD
+ * @ jQuery Plugin by Tzury Bar Yochay 
+        mail: tzury.by@gmail.com
+        blog: evalinux.wordpress.com
+        face: facebook.com/profile.php?id=513676303
+        
+        (c) Copyrights 2007
+        
+ * @ jQuery Plugin version Beta (0.0.2)
+ * @ License: jQuery-License.
+TODO:
+    add queue support (as in gmail) e.g. 'x' then 'y', etc.
+    add mouse + mouse wheel events.
+
+USAGE:
+    $.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
+    $.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
+    $.hotkeys.remove('Ctrl+c'); 
+    $.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'}); 
+    
+******************************************************************************************************************************/
+(function (jQuery){
+    this.version = '(beta)(0.0.3)';
+       this.all = {};
+    this.special_keys = {
+        27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 
+        144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 
+        34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 
+        115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
+        
+    this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", 
+        "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", 
+        ".":">",  "/":"?",  "\\":"|" };
+        
+    this.add = function(combi, options, callback) {
+        if (jQuery.isFunction(options)){
+            callback = options;
+            options = {};
+        }
+        var opt = {},
+            defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]},
+            that = this;
+        opt = jQuery.extend( opt , defaults, options || {} );
+        combi = combi.toLowerCase();        
+        
+        // inspect if keystroke matches
+        var inspector = function(event) {
+            // WP: not needed with newer jQuery
+            // event = jQuery.event.fix(event); // jQuery event normalization.
+            var element = event.target;
+            // @ TextNode -> nodeType == 3
+            // WP: not needed with newer jQuery
+            // element = (element.nodeType==3) ? element.parentNode : element;
+            
+            if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
+                var target = jQuery(element);
+                if( target.is("input") || target.is("textarea")){
+                    return;
+                }
+            }
+            var code = event.which,
+                type = event.type,
+                character = String.fromCharCode(code).toLowerCase(),
+                special = that.special_keys[code],
+                shift = event.shiftKey,
+                ctrl = event.ctrlKey,
+                alt= event.altKey,
+                meta = event.metaKey,
+                propagate = true, // default behaivour
+                mapPoint = null;
+            
+            // in opera + safari, the event.target is unpredictable.
+            // for example: 'keydown' might be associated with HtmlBodyElement 
+            // or the element where you last clicked with your mouse.
+            // WP: needed for all browsers 
+            // if (jQuery.browser.opera || jQuery.browser.safari){
+                while (!that.all[element] && element.parentNode){
+                    element = element.parentNode;
+                }
+            // }
+            var cbMap = that.all[element].events[type].callbackMap;
+            if(!shift && !ctrl && !alt && !meta) { // No Modifiers
+                mapPoint = cbMap[special] ||  cbMap[character]
+                       }
+            // deals with combinaitons (alt|ctrl|shift+anything)
+            else{
+                var modif = '';
+                if(alt) modif +='alt+';
+                if(ctrl) modif+= 'ctrl+';
+                if(shift) modif += 'shift+';
+                if(meta) modif += 'meta+';
+                // modifiers + special keys or modifiers + characters or modifiers + shift characters
+                mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
+            }
+            if (mapPoint){
+                mapPoint.cb(event);
+                if(!mapPoint.propagate) {
+                    event.stopPropagation();
+                    event.preventDefault();
+                    return false;
+                }
+            }
+               };        
+        // first hook for this element
+        if (!this.all[opt.target]){
+            this.all[opt.target] = {events:{}};
+        }
+        if (!this.all[opt.target].events[opt.type]){
+            this.all[opt.target].events[opt.type] = {callbackMap: {}}
+            jQuery.event.add(opt.target, opt.type, inspector);
+        }        
+        this.all[opt.target].events[opt.type].callbackMap[combi] =  {cb: callback, propagate:opt.propagate};                
+        return jQuery;
+       };    
+    this.remove = function(exp, opt) {
+        opt = opt || {};
+        target = opt.target || jQuery('html')[0];
+        type = opt.type || 'keydown';
+               exp = exp.toLowerCase();        
+        delete this.all[target].events[type].callbackMap[exp]        
+        return jQuery;
+       };
+    jQuery.hotkeys = this;
+    return jQuery;    
+})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.hotkeys.min.js b/wp-includes/js/jquery/jquery.hotkeys.min.js
new file mode 100644 (file)
index 0000000..3c2f66a
--- /dev/null
@@ -0,0 +1 @@
+(function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){var o=j.target;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;while(!e.all[o]&&o.parentNode){o=o.parentNode}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery);
\ No newline at end of file
index 8348c97816676150813eecac8daf58621eef25e0..6db2afa8cd84be34f98bc12657411c7e6c9ff1f0 100644 (file)
@@ -1,5 +1,3 @@
-/*! jQuery v1.7.2 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
-a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
-.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
 jQuery.noConflict();
diff --git a/wp-includes/js/jquery/jquery.masonry.min.js b/wp-includes/js/jquery/jquery.masonry.min.js
new file mode 100644 (file)
index 0000000..67be988
--- /dev/null
@@ -0,0 +1,10 @@
+/**
+ * jQuery Masonry v2.1.05
+ * A dynamic layout plugin for jQuery
+ * The flip-side of CSS Floats
+ * http://masonry.desandro.com
+ *
+ * Licensed under the MIT license.
+ * Copyright 2012 David DeSandro
+ */
+(function(a,b,c){"use strict";var d=b.event,e;d.special.smartresize={setup:function(){b(this).bind("resize",d.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",d.special.smartresize.handler)},handler:function(a,c){var d=this,f=arguments;a.type="smartresize",e&&clearTimeout(e),e=setTimeout(function(){b.event.handle.apply(d,f)},c==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Mason=function(a,c){this.element=b(c),this._create(a),this._init()},b.Mason.settings={isResizable:!0,isAnimated:!1,animationOptions:{queue:!1,duration:500},gutterWidth:0,isRTL:!1,isFitWidth:!1,containerStyle:{position:"relative"}},b.Mason.prototype={_filterFindBricks:function(a){var b=this.options.itemSelector;return b?a.filter(b).add(a.find(b)):a},_getBricks:function(a){var b=this._filterFindBricks(a).css({position:"absolute"}).addClass("masonry-brick");return b},_create:function(c){this.options=b.extend(!0,{},b.Mason.settings,c),this.styleQueue=[];var d=this.element[0].style;this.originalStyle={height:d.height||""};var e=this.options.containerStyle;for(var f in e)this.originalStyle[f]=d[f]||"";this.element.css(e),this.horizontalDirection=this.options.isRTL?"right":"left",this.offset={x:parseInt(this.element.css("padding-"+this.horizontalDirection),10),y:parseInt(this.element.css("padding-top"),10)},this.isFluid=this.options.columnWidth&&typeof this.options.columnWidth=="function";var g=this;setTimeout(function(){g.element.addClass("masonry")},0),this.options.isResizable&&b(a).bind("smartresize.masonry",function(){g.resize()}),this.reloadItems()},_init:function(a){this._getColumns(),this._reLayout(a)},option:function(a,c){b.isPlainObject(a)&&(this.options=b.extend(!0,this.options,a))},layout:function(a,b){for(var c=0,d=a.length;c<d;c++)this._placeBrick(a[c]);var e={};e.height=Math.max.apply(Math,this.colYs);if(this.options.isFitWidth){var f=0;c=this.cols;while(--c){if(this.colYs[c]!==0)break;f++}e.width=(this.cols-f)*this.columnWidth-this.options.gutterWidth}this.styleQueue.push({$el:this.element,style:e});var g=this.isLaidOut?this.options.isAnimated?"animate":"css":"css",h=this.options.animationOptions,i;for(c=0,d=this.styleQueue.length;c<d;c++)i=this.styleQueue[c],i.$el[g](i.style,h);this.styleQueue=[],b&&b.call(a),this.isLaidOut=!0},_getColumns:function(){var a=this.options.isFitWidth?this.element.parent():this.element,b=a.width();this.columnWidth=this.isFluid?this.options.columnWidth(b):this.options.columnWidth||this.$bricks.outerWidth(!0)||b,this.columnWidth+=this.options.gutterWidth,this.cols=Math.floor((b+this.options.gutterWidth)/this.columnWidth),this.cols=Math.max(this.cols,1)},_placeBrick:function(a){var c=b(a),d,e,f,g,h;d=Math.ceil(c.outerWidth(!0)/this.columnWidth),d=Math.min(d,this.cols);if(d===1)f=this.colYs;else{e=this.cols+1-d,f=[];for(h=0;h<e;h++)g=this.colYs.slice(h,h+d),f[h]=Math.max.apply(Math,g)}var i=Math.min.apply(Math,f),j=0;for(var k=0,l=f.length;k<l;k++)if(f[k]===i){j=k;break}var m={top:i+this.offset.y};m[this.horizontalDirection]=this.columnWidth*j+this.offset.x,this.styleQueue.push({$el:c,style:m});var n=i+c.outerHeight(!0),o=this.cols+1-l;for(k=0;k<o;k++)this.colYs[j+k]=n},resize:function(){var a=this.cols;this._getColumns(),(this.isFluid||this.cols!==a)&&this._reLayout()},_reLayout:function(a){var b=this.cols;this.colYs=[];while(b--)this.colYs.push(0);this.layout(this.$bricks,a)},reloadItems:function(){this.$bricks=this._getBricks(this.element.children())},reload:function(a){this.reloadItems(),this._init(a)},appended:function(a,b,c){if(b){this._filterFindBricks(a).css({top:this.element.height()});var d=this;setTimeout(function(){d._appended(a,c)},1)}else this._appended(a,c)},_appended:function(a,b){var c=this._getBricks(a);this.$bricks=this.$bricks.add(c),this.layout(c,b)},remove:function(a){this.$bricks=this.$bricks.not(a),a.remove()},destroy:function(){this.$bricks.removeClass("masonry-brick").each(function(){this.style.position="",this.style.top="",this.style.left=""});var c=this.element[0].style;for(var d in this.originalStyle)c[d]=this.originalStyle[d];this.element.unbind(".masonry").removeClass("masonry").removeData("masonry"),b(a).unbind(".masonry")}},b.fn.imagesLoaded=function(a){function h(){a.call(c,d)}function i(a){var c=a.target;c.src!==f&&b.inArray(c,g)===-1&&(g.push(c),--e<=0&&(setTimeout(h),d.unbind(".imagesLoaded",i)))}var c=this,d=c.find("img").add(c.filter("img")),e=d.length,f="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",g=[];return e||h(),d.bind("load.imagesLoaded error.imagesLoaded",i).each(function(){var a=this.src;this.src=f,this.src=a}),c};var f=function(b){a.console&&a.console.error(b)};b.fn.masonry=function(a){if(typeof a=="string"){var c=Array.prototype.slice.call(arguments,1);this.each(function(){var d=b.data(this,"masonry");if(!d){f("cannot call methods on masonry prior to initialization; attempted to call method '"+a+"'");return}if(!b.isFunction(d[a])||a.charAt(0)==="_"){f("no such method '"+a+"' for masonry instance");return}d[a].apply(d,c)})}else this.each(function(){var c=b.data(this,"masonry");c?(c.option(a||{}),c._init()):b.data(this,"masonry",new b.Mason(a,this))});return this}})(window,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.table-hotkeys.dev.js b/wp-includes/js/jquery/jquery.table-hotkeys.dev.js
deleted file mode 100644 (file)
index f8b1760..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-(function($){
-       $.fn.filter_visible = function(depth) {
-               depth = depth || 3;
-               var is_visible = function() {
-                       var p = $(this), i;
-                       for(i=0; i<depth-1; ++i) {
-                               if (!p.is(':visible')) return false;
-                               p = p.parent();
-                       }
-                       return true;
-               }
-               return this.filter(is_visible);
-       };
-       $.table_hotkeys = function(table, keys, opts) {
-               opts = $.extend($.table_hotkeys.defaults, opts);
-               var selected_class, destructive_class, set_current_row, adjacent_row_callback, get_adjacent_row, adjacent_row, prev_row, next_row, check, get_first_row, get_last_row, make_key_callback, first_row;
-               
-               selected_class = opts.class_prefix + opts.selected_suffix;
-               destructive_class = opts.class_prefix + opts.destructive_suffix
-               set_current_row = function (tr) {
-                       if ($.table_hotkeys.current_row) $.table_hotkeys.current_row.removeClass(selected_class);
-                       tr.addClass(selected_class);
-                       tr[0].scrollIntoView(false);
-                       $.table_hotkeys.current_row = tr;
-               };
-               adjacent_row_callback = function(which) {
-                       if (!adjacent_row(which) && $.isFunction(opts[which+'_page_link_cb'])) {
-                               opts[which+'_page_link_cb']();
-                       }
-               };
-               get_adjacent_row = function(which) {
-                       var first_row, method;
-                       
-                       if (!$.table_hotkeys.current_row) {
-                               first_row = get_first_row();
-                               $.table_hotkeys.current_row = first_row;
-                               return first_row[0];
-                       }
-                       method = 'prev' == which? $.fn.prevAll : $.fn.nextAll;
-                       return method.call($.table_hotkeys.current_row, opts.cycle_expr).filter_visible()[0];
-               };
-               adjacent_row = function(which) {
-                       var adj = get_adjacent_row(which);
-                       if (!adj) return false;
-                       set_current_row($(adj));
-                       return true;
-               };
-               prev_row = function() { return adjacent_row('prev'); };
-               next_row = function() { return adjacent_row('next'); };
-               check = function() {
-                       $(opts.checkbox_expr, $.table_hotkeys.current_row).each(function() {
-                               this.checked = !this.checked;
-                       });
-               };
-               get_first_row = function() {
-                       return $(opts.cycle_expr, table).filter_visible().eq(opts.start_row_index);
-               };
-               get_last_row = function() {
-                       var rows = $(opts.cycle_expr, table).filter_visible();
-                       return rows.eq(rows.length-1);
-               };
-               make_key_callback = function(expr) {
-                       return function() {
-                               if ( null == $.table_hotkeys.current_row ) return false;
-                               var clickable = $(expr, $.table_hotkeys.current_row);
-                               if (!clickable.length) return false;
-                               if (clickable.is('.'+destructive_class)) next_row() || prev_row();
-                               clickable.click();
-                       }
-               };
-               first_row = get_first_row();
-               if (!first_row.length) return;
-               if (opts.highlight_first)
-                       set_current_row(first_row);
-               else if (opts.highlight_last)
-                       set_current_row(get_last_row());
-               $.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev')});
-               $.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next')});
-               $.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check);
-               $.each(keys, function() {
-                       var callback, key;
-                       
-                       if ($.isFunction(this[1])) {
-                               callback = this[1];
-                               key = this[0];
-                               $.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); });
-                       } else {
-                               key = this;
-                               $.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key));
-                       }
-               });
-
-       };
-       $.table_hotkeys.current_row = null;
-       $.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current',
-               destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'},
-               checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x',
-               start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false};
-})(jQuery);
index b4aa238ebbe727672967af035b9ac2c4c176e0ce..f8b17602e31fe5e7bf9e9bed2dcd763afae51a27 100644 (file)
@@ -1 +1,99 @@
-(function(a){a.fn.filter_visible=function(c){c=c||3;var b=function(){var e=a(this),d;for(d=0;d<c-1;++d){if(!e.is(":visible")){return false}e=e.parent()}return true};return this.filter(b)};a.table_hotkeys=function(p,q,b){b=a.extend(a.table_hotkeys.defaults,b);var i,l,e,f,m,d,k,o,c,h,g,n,j;i=b.class_prefix+b.selected_suffix;l=b.class_prefix+b.destructive_suffix;e=function(r){if(a.table_hotkeys.current_row){a.table_hotkeys.current_row.removeClass(i)}r.addClass(i);r[0].scrollIntoView(false);a.table_hotkeys.current_row=r};f=function(r){if(!d(r)&&a.isFunction(b[r+"_page_link_cb"])){b[r+"_page_link_cb"]()}};m=function(s){var r,t;if(!a.table_hotkeys.current_row){r=h();a.table_hotkeys.current_row=r;return r[0]}t="prev"==s?a.fn.prevAll:a.fn.nextAll;return t.call(a.table_hotkeys.current_row,b.cycle_expr).filter_visible()[0]};d=function(s){var r=m(s);if(!r){return false}e(a(r));return true};k=function(){return d("prev")};o=function(){return d("next")};c=function(){a(b.checkbox_expr,a.table_hotkeys.current_row).each(function(){this.checked=!this.checked})};h=function(){return a(b.cycle_expr,p).filter_visible().eq(b.start_row_index)};g=function(){var r=a(b.cycle_expr,p).filter_visible();return r.eq(r.length-1)};n=function(r){return function(){if(null==a.table_hotkeys.current_row){return false}var s=a(r,a.table_hotkeys.current_row);if(!s.length){return false}if(s.is("."+l)){o()||k()}s.click()}};j=h();if(!j.length){return}if(b.highlight_first){e(j)}else{if(b.highlight_last){e(g())}}a.hotkeys.add(b.prev_key,b.hotkeys_opts,function(){return f("prev")});a.hotkeys.add(b.next_key,b.hotkeys_opts,function(){return f("next")});a.hotkeys.add(b.mark_key,b.hotkeys_opts,c);a.each(q,function(){var s,r;if(a.isFunction(this[1])){s=this[1];r=this[0];a.hotkeys.add(r,b.hotkeys_opts,function(t){return s(t,a.table_hotkeys.current_row)})}else{r=this;a.hotkeys.add(r,b.hotkeys_opts,n("."+b.class_prefix+r))}})};a.table_hotkeys.current_row=null;a.table_hotkeys.defaults={cycle_expr:"tr",class_prefix:"vim-",selected_suffix:"current",destructive_suffix:"destructive",hotkeys_opts:{disableInInput:true,type:"keypress"},checkbox_expr:":checkbox",next_key:"j",prev_key:"k",mark_key:"x",start_row_index:2,highlight_first:false,highlight_last:false,next_page_link_cb:false,prev_page_link_cb:false}})(jQuery);
\ No newline at end of file
+(function($){
+       $.fn.filter_visible = function(depth) {
+               depth = depth || 3;
+               var is_visible = function() {
+                       var p = $(this), i;
+                       for(i=0; i<depth-1; ++i) {
+                               if (!p.is(':visible')) return false;
+                               p = p.parent();
+                       }
+                       return true;
+               }
+               return this.filter(is_visible);
+       };
+       $.table_hotkeys = function(table, keys, opts) {
+               opts = $.extend($.table_hotkeys.defaults, opts);
+               var selected_class, destructive_class, set_current_row, adjacent_row_callback, get_adjacent_row, adjacent_row, prev_row, next_row, check, get_first_row, get_last_row, make_key_callback, first_row;
+               
+               selected_class = opts.class_prefix + opts.selected_suffix;
+               destructive_class = opts.class_prefix + opts.destructive_suffix
+               set_current_row = function (tr) {
+                       if ($.table_hotkeys.current_row) $.table_hotkeys.current_row.removeClass(selected_class);
+                       tr.addClass(selected_class);
+                       tr[0].scrollIntoView(false);
+                       $.table_hotkeys.current_row = tr;
+               };
+               adjacent_row_callback = function(which) {
+                       if (!adjacent_row(which) && $.isFunction(opts[which+'_page_link_cb'])) {
+                               opts[which+'_page_link_cb']();
+                       }
+               };
+               get_adjacent_row = function(which) {
+                       var first_row, method;
+                       
+                       if (!$.table_hotkeys.current_row) {
+                               first_row = get_first_row();
+                               $.table_hotkeys.current_row = first_row;
+                               return first_row[0];
+                       }
+                       method = 'prev' == which? $.fn.prevAll : $.fn.nextAll;
+                       return method.call($.table_hotkeys.current_row, opts.cycle_expr).filter_visible()[0];
+               };
+               adjacent_row = function(which) {
+                       var adj = get_adjacent_row(which);
+                       if (!adj) return false;
+                       set_current_row($(adj));
+                       return true;
+               };
+               prev_row = function() { return adjacent_row('prev'); };
+               next_row = function() { return adjacent_row('next'); };
+               check = function() {
+                       $(opts.checkbox_expr, $.table_hotkeys.current_row).each(function() {
+                               this.checked = !this.checked;
+                       });
+               };
+               get_first_row = function() {
+                       return $(opts.cycle_expr, table).filter_visible().eq(opts.start_row_index);
+               };
+               get_last_row = function() {
+                       var rows = $(opts.cycle_expr, table).filter_visible();
+                       return rows.eq(rows.length-1);
+               };
+               make_key_callback = function(expr) {
+                       return function() {
+                               if ( null == $.table_hotkeys.current_row ) return false;
+                               var clickable = $(expr, $.table_hotkeys.current_row);
+                               if (!clickable.length) return false;
+                               if (clickable.is('.'+destructive_class)) next_row() || prev_row();
+                               clickable.click();
+                       }
+               };
+               first_row = get_first_row();
+               if (!first_row.length) return;
+               if (opts.highlight_first)
+                       set_current_row(first_row);
+               else if (opts.highlight_last)
+                       set_current_row(get_last_row());
+               $.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev')});
+               $.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next')});
+               $.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check);
+               $.each(keys, function() {
+                       var callback, key;
+                       
+                       if ($.isFunction(this[1])) {
+                               callback = this[1];
+                               key = this[0];
+                               $.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); });
+                       } else {
+                               key = this;
+                               $.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key));
+                       }
+               });
+
+       };
+       $.table_hotkeys.current_row = null;
+       $.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current',
+               destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'},
+               checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x',
+               start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false};
+})(jQuery);
diff --git a/wp-includes/js/jquery/jquery.table-hotkeys.min.js b/wp-includes/js/jquery/jquery.table-hotkeys.min.js
new file mode 100644 (file)
index 0000000..b4aa238
--- /dev/null
@@ -0,0 +1 @@
+(function(a){a.fn.filter_visible=function(c){c=c||3;var b=function(){var e=a(this),d;for(d=0;d<c-1;++d){if(!e.is(":visible")){return false}e=e.parent()}return true};return this.filter(b)};a.table_hotkeys=function(p,q,b){b=a.extend(a.table_hotkeys.defaults,b);var i,l,e,f,m,d,k,o,c,h,g,n,j;i=b.class_prefix+b.selected_suffix;l=b.class_prefix+b.destructive_suffix;e=function(r){if(a.table_hotkeys.current_row){a.table_hotkeys.current_row.removeClass(i)}r.addClass(i);r[0].scrollIntoView(false);a.table_hotkeys.current_row=r};f=function(r){if(!d(r)&&a.isFunction(b[r+"_page_link_cb"])){b[r+"_page_link_cb"]()}};m=function(s){var r,t;if(!a.table_hotkeys.current_row){r=h();a.table_hotkeys.current_row=r;return r[0]}t="prev"==s?a.fn.prevAll:a.fn.nextAll;return t.call(a.table_hotkeys.current_row,b.cycle_expr).filter_visible()[0]};d=function(s){var r=m(s);if(!r){return false}e(a(r));return true};k=function(){return d("prev")};o=function(){return d("next")};c=function(){a(b.checkbox_expr,a.table_hotkeys.current_row).each(function(){this.checked=!this.checked})};h=function(){return a(b.cycle_expr,p).filter_visible().eq(b.start_row_index)};g=function(){var r=a(b.cycle_expr,p).filter_visible();return r.eq(r.length-1)};n=function(r){return function(){if(null==a.table_hotkeys.current_row){return false}var s=a(r,a.table_hotkeys.current_row);if(!s.length){return false}if(s.is("."+l)){o()||k()}s.click()}};j=h();if(!j.length){return}if(b.highlight_first){e(j)}else{if(b.highlight_last){e(g())}}a.hotkeys.add(b.prev_key,b.hotkeys_opts,function(){return f("prev")});a.hotkeys.add(b.next_key,b.hotkeys_opts,function(){return f("next")});a.hotkeys.add(b.mark_key,b.hotkeys_opts,c);a.each(q,function(){var s,r;if(a.isFunction(this[1])){s=this[1];r=this[0];a.hotkeys.add(r,b.hotkeys_opts,function(t){return s(t,a.table_hotkeys.current_row)})}else{r=this;a.hotkeys.add(r,b.hotkeys_opts,n("."+b.class_prefix+r))}})};a.table_hotkeys.current_row=null;a.table_hotkeys.defaults={cycle_expr:"tr",class_prefix:"vim-",selected_suffix:"current",destructive_suffix:"destructive",hotkeys_opts:{disableInInput:true,type:"keypress"},checkbox_expr:":checkbox",next_key:"j",prev_key:"k",mark_key:"x",start_row_index:2,highlight_first:false,highlight_last:false,next_page_link_cb:false,prev_page_link_cb:false}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/suggest.dev.js b/wp-includes/js/jquery/suggest.dev.js
deleted file mode 100644 (file)
index 7f46cbc..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- *     jquery.suggest 1.1b - 2007-08-06
- * Patched by Mark Jaquith with Alexander Dick's "multiple items" patch to allow for auto-suggesting of more than one tag before submitting
- * See: http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/#comment-7228
- *
- *     Uses code and techniques from following libraries:
- *     1. http://www.dyve.net/jquery/?autocomplete
- *     2. http://dev.jquery.com/browser/trunk/plugins/interface/iautocompleter.js
- *
- *     All the new stuff written by Peter Vulgaris (www.vulgarisoip.com)
- *     Feel free to do whatever you want with this file
- *
- */
-
-(function($) {
-
-       $.suggest = function(input, options) {
-               var $input, $results, timeout, prevLength, cache, cacheSize;
-
-               $input = $(input).attr("autocomplete", "off");
-               $results = $(document.createElement("ul"));
-
-               timeout = false;                // hold timeout ID for suggestion results to appear
-               prevLength = 0;                 // last recorded length of $input.val()
-               cache = [];                             // cache MRU list
-               cacheSize = 0;                  // size of cache in chars (bytes?)
-
-               $results.addClass(options.resultsClass).appendTo('body');
-
-
-               resetPosition();
-               $(window)
-                       .load(resetPosition)            // just in case user is changing size of page while loading
-                       .resize(resetPosition);
-
-               $input.blur(function() {
-                       setTimeout(function() { $results.hide() }, 200);
-               });
-
-
-               // help IE users if possible
-               if ( $.browser.msie ) {
-                       try {
-                               $results.bgiframe();
-                       } catch(e) { }
-               }
-
-               // I really hate browser detection, but I don't see any other way
-               if ($.browser.mozilla)
-                       $input.keypress(processKey);    // onkeypress repeats arrow keys in Mozilla/Opera
-               else
-                       $input.keydown(processKey);             // onkeydown repeats arrow keys in IE/Safari
-
-
-
-
-               function resetPosition() {
-                       // requires jquery.dimension plugin
-                       var offset = $input.offset();
-                       $results.css({
-                               top: (offset.top + input.offsetHeight) + 'px',
-                               left: offset.left + 'px'
-                       });
-               }
-
-
-               function processKey(e) {
-
-                       // handling up/down/escape requires results to be visible
-                       // handling enter/tab requires that AND a result to be selected
-                       if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||
-                               (/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {
-
-                               if (e.preventDefault)
-                                       e.preventDefault();
-                               if (e.stopPropagation)
-                                       e.stopPropagation();
-
-                               e.cancelBubble = true;
-                               e.returnValue = false;
-
-                               switch(e.keyCode) {
-
-                                       case 38: // up
-                                               prevResult();
-                                               break;
-
-                                       case 40: // down
-                                               nextResult();
-                                               break;
-
-                                       case 9:  // tab
-                                       case 13: // return
-                                               selectCurrentResult();
-                                               break;
-
-                                       case 27: //     escape
-                                               $results.hide();
-                                               break;
-
-                               }
-
-                       } else if ($input.val().length != prevLength) {
-
-                               if (timeout)
-                                       clearTimeout(timeout);
-                               timeout = setTimeout(suggest, options.delay);
-                               prevLength = $input.val().length;
-
-                       }
-
-
-               }
-
-
-               function suggest() {
-
-                       var q = $.trim($input.val()), multipleSepPos, items;
-
-                       if ( options.multiple ) {
-                               multipleSepPos = q.lastIndexOf(options.multipleSep);
-                               if ( multipleSepPos != -1 ) {
-                                       q = $.trim(q.substr(multipleSepPos + options.multipleSep.length));
-                               }
-                       }
-                       if (q.length >= options.minchars) {
-
-                               cached = checkCache(q);
-
-                               if (cached) {
-
-                                       displayItems(cached['items']);
-
-                               } else {
-
-                                       $.get(options.source, {q: q}, function(txt) {
-
-                                               $results.hide();
-
-                                               items = parseTxt(txt, q);
-
-                                               displayItems(items);
-                                               addToCache(q, items, txt.length);
-
-                                       });
-
-                               }
-
-                       } else {
-
-                               $results.hide();
-
-                       }
-
-               }
-
-
-               function checkCache(q) {
-                       var i;
-                       for (i = 0; i < cache.length; i++)
-                               if (cache[i]['q'] == q) {
-                                       cache.unshift(cache.splice(i, 1)[0]);
-                                       return cache[0];
-                               }
-
-                       return false;
-
-               }
-
-               function addToCache(q, items, size) {
-                       var cached;
-                       while (cache.length && (cacheSize + size > options.maxCacheSize)) {
-                               cached = cache.pop();
-                               cacheSize -= cached['size'];
-                       }
-
-                       cache.push({
-                               q: q,
-                               size: size,
-                               items: items
-                               });
-
-                       cacheSize += size;
-
-               }
-
-               function displayItems(items) {
-                       var html = '', i;
-                       if (!items)
-                               return;
-
-                       if (!items.length) {
-                               $results.hide();
-                               return;
-                       }
-
-                       resetPosition(); // when the form moves after the page has loaded
-
-                       for (i = 0; i < items.length; i++)
-                               html += '<li>' + items[i] + '</li>';
-
-                       $results.html(html).show();
-
-                       $results
-                               .children('li')
-                               .mouseover(function() {
-                                       $results.children('li').removeClass(options.selectClass);
-                                       $(this).addClass(options.selectClass);
-                               })
-                               .click(function(e) {
-                                       e.preventDefault();
-                                       e.stopPropagation();
-                                       selectCurrentResult();
-                               });
-
-               }
-
-               function parseTxt(txt, q) {
-
-                       var items = [], tokens = txt.split(options.delimiter), i, token;
-
-                       // parse returned data for non-empty items
-                       for (i = 0; i < tokens.length; i++) {
-                               token = $.trim(tokens[i]);
-                               if (token) {
-                                       token = token.replace(
-                                               new RegExp(q, 'ig'),
-                                               function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' }
-                                               );
-                                       items[items.length] = token;
-                               }
-                       }
-
-                       return items;
-               }
-
-               function getCurrentResult() {
-                       var $currentResult;
-                       if (!$results.is(':visible'))
-                               return false;
-
-                       $currentResult = $results.children('li.' + options.selectClass);
-
-                       if (!$currentResult.length)
-                               $currentResult = false;
-
-                       return $currentResult;
-
-               }
-
-               function selectCurrentResult() {
-
-                       $currentResult = getCurrentResult();
-
-                       if ($currentResult) {
-                               if ( options.multiple ) {
-                                       if ( $input.val().indexOf(options.multipleSep) != -1 ) {
-                                               $currentVal = $input.val().substr( 0, ( $input.val().lastIndexOf(options.multipleSep) + options.multipleSep.length ) );
-                                       } else {
-                                               $currentVal = "";
-                                       }
-                                       $input.val( $currentVal + $currentResult.text() + options.multipleSep);
-                                       $input.focus();
-                               } else {
-                                       $input.val($currentResult.text());
-                               }
-                               $results.hide();
-
-                               if (options.onSelect)
-                                       options.onSelect.apply($input[0]);
-
-                       }
-
-               }
-
-               function nextResult() {
-
-                       $currentResult = getCurrentResult();
-
-                       if ($currentResult)
-                               $currentResult
-                                       .removeClass(options.selectClass)
-                                       .next()
-                                               .addClass(options.selectClass);
-                       else
-                               $results.children('li:first-child').addClass(options.selectClass);
-
-               }
-
-               function prevResult() {
-                       var $currentResult = getCurrentResult();
-
-                       if ($currentResult)
-                               $currentResult
-                                       .removeClass(options.selectClass)
-                                       .prev()
-                                               .addClass(options.selectClass);
-                       else
-                               $results.children('li:last-child').addClass(options.selectClass);
-
-               }
-       }
-
-       $.fn.suggest = function(source, options) {
-
-               if (!source)
-                       return;
-
-               options = options || {};
-               options.multiple = options.multiple || false;
-               options.multipleSep = options.multipleSep || ", ";
-               options.source = source;
-               options.delay = options.delay || 100;
-               options.resultsClass = options.resultsClass || 'ac_results';
-               options.selectClass = options.selectClass || 'ac_over';
-               options.matchClass = options.matchClass || 'ac_match';
-               options.minchars = options.minchars || 2;
-               options.delimiter = options.delimiter || '\n';
-               options.onSelect = options.onSelect || false;
-               options.maxCacheSize = options.maxCacheSize || 65536;
-
-               this.each(function() {
-                       new $.suggest(this, options);
-               });
-
-               return this;
-
-       };
-
-})(jQuery);
\ No newline at end of file
index 904936f3de5491ba8b484db8ea24adfb82257b30..7f46cbc643f4b1e070489082025d2762482a16e0 100644 (file)
@@ -1 +1,330 @@
-(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=a.trim(x.substr(w+g.multipleSep.length))}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
+/*
+ *     jquery.suggest 1.1b - 2007-08-06
+ * Patched by Mark Jaquith with Alexander Dick's "multiple items" patch to allow for auto-suggesting of more than one tag before submitting
+ * See: http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/#comment-7228
+ *
+ *     Uses code and techniques from following libraries:
+ *     1. http://www.dyve.net/jquery/?autocomplete
+ *     2. http://dev.jquery.com/browser/trunk/plugins/interface/iautocompleter.js
+ *
+ *     All the new stuff written by Peter Vulgaris (www.vulgarisoip.com)
+ *     Feel free to do whatever you want with this file
+ *
+ */
+
+(function($) {
+
+       $.suggest = function(input, options) {
+               var $input, $results, timeout, prevLength, cache, cacheSize;
+
+               $input = $(input).attr("autocomplete", "off");
+               $results = $(document.createElement("ul"));
+
+               timeout = false;                // hold timeout ID for suggestion results to appear
+               prevLength = 0;                 // last recorded length of $input.val()
+               cache = [];                             // cache MRU list
+               cacheSize = 0;                  // size of cache in chars (bytes?)
+
+               $results.addClass(options.resultsClass).appendTo('body');
+
+
+               resetPosition();
+               $(window)
+                       .load(resetPosition)            // just in case user is changing size of page while loading
+                       .resize(resetPosition);
+
+               $input.blur(function() {
+                       setTimeout(function() { $results.hide() }, 200);
+               });
+
+
+               // help IE users if possible
+               if ( $.browser.msie ) {
+                       try {
+                               $results.bgiframe();
+                       } catch(e) { }
+               }
+
+               // I really hate browser detection, but I don't see any other way
+               if ($.browser.mozilla)
+                       $input.keypress(processKey);    // onkeypress repeats arrow keys in Mozilla/Opera
+               else
+                       $input.keydown(processKey);             // onkeydown repeats arrow keys in IE/Safari
+
+
+
+
+               function resetPosition() {
+                       // requires jquery.dimension plugin
+                       var offset = $input.offset();
+                       $results.css({
+                               top: (offset.top + input.offsetHeight) + 'px',
+                               left: offset.left + 'px'
+                       });
+               }
+
+
+               function processKey(e) {
+
+                       // handling up/down/escape requires results to be visible
+                       // handling enter/tab requires that AND a result to be selected
+                       if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||
+                               (/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {
+
+                               if (e.preventDefault)
+                                       e.preventDefault();
+                               if (e.stopPropagation)
+                                       e.stopPropagation();
+
+                               e.cancelBubble = true;
+                               e.returnValue = false;
+
+                               switch(e.keyCode) {
+
+                                       case 38: // up
+                                               prevResult();
+                                               break;
+
+                                       case 40: // down
+                                               nextResult();
+                                               break;
+
+                                       case 9:  // tab
+                                       case 13: // return
+                                               selectCurrentResult();
+                                               break;
+
+                                       case 27: //     escape
+                                               $results.hide();
+                                               break;
+
+                               }
+
+                       } else if ($input.val().length != prevLength) {
+
+                               if (timeout)
+                                       clearTimeout(timeout);
+                               timeout = setTimeout(suggest, options.delay);
+                               prevLength = $input.val().length;
+
+                       }
+
+
+               }
+
+
+               function suggest() {
+
+                       var q = $.trim($input.val()), multipleSepPos, items;
+
+                       if ( options.multiple ) {
+                               multipleSepPos = q.lastIndexOf(options.multipleSep);
+                               if ( multipleSepPos != -1 ) {
+                                       q = $.trim(q.substr(multipleSepPos + options.multipleSep.length));
+                               }
+                       }
+                       if (q.length >= options.minchars) {
+
+                               cached = checkCache(q);
+
+                               if (cached) {
+
+                                       displayItems(cached['items']);
+
+                               } else {
+
+                                       $.get(options.source, {q: q}, function(txt) {
+
+                                               $results.hide();
+
+                                               items = parseTxt(txt, q);
+
+                                               displayItems(items);
+                                               addToCache(q, items, txt.length);
+
+                                       });
+
+                               }
+
+                       } else {
+
+                               $results.hide();
+
+                       }
+
+               }
+
+
+               function checkCache(q) {
+                       var i;
+                       for (i = 0; i < cache.length; i++)
+                               if (cache[i]['q'] == q) {
+                                       cache.unshift(cache.splice(i, 1)[0]);
+                                       return cache[0];
+                               }
+
+                       return false;
+
+               }
+
+               function addToCache(q, items, size) {
+                       var cached;
+                       while (cache.length && (cacheSize + size > options.maxCacheSize)) {
+                               cached = cache.pop();
+                               cacheSize -= cached['size'];
+                       }
+
+                       cache.push({
+                               q: q,
+                               size: size,
+                               items: items
+                               });
+
+                       cacheSize += size;
+
+               }
+
+               function displayItems(items) {
+                       var html = '', i;
+                       if (!items)
+                               return;
+
+                       if (!items.length) {
+                               $results.hide();
+                               return;
+                       }
+
+                       resetPosition(); // when the form moves after the page has loaded
+
+                       for (i = 0; i < items.length; i++)
+                               html += '<li>' + items[i] + '</li>';
+
+                       $results.html(html).show();
+
+                       $results
+                               .children('li')
+                               .mouseover(function() {
+                                       $results.children('li').removeClass(options.selectClass);
+                                       $(this).addClass(options.selectClass);
+                               })
+                               .click(function(e) {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+                                       selectCurrentResult();
+                               });
+
+               }
+
+               function parseTxt(txt, q) {
+
+                       var items = [], tokens = txt.split(options.delimiter), i, token;
+
+                       // parse returned data for non-empty items
+                       for (i = 0; i < tokens.length; i++) {
+                               token = $.trim(tokens[i]);
+                               if (token) {
+                                       token = token.replace(
+                                               new RegExp(q, 'ig'),
+                                               function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' }
+                                               );
+                                       items[items.length] = token;
+                               }
+                       }
+
+                       return items;
+               }
+
+               function getCurrentResult() {
+                       var $currentResult;
+                       if (!$results.is(':visible'))
+                               return false;
+
+                       $currentResult = $results.children('li.' + options.selectClass);
+
+                       if (!$currentResult.length)
+                               $currentResult = false;
+
+                       return $currentResult;
+
+               }
+
+               function selectCurrentResult() {
+
+                       $currentResult = getCurrentResult();
+
+                       if ($currentResult) {
+                               if ( options.multiple ) {
+                                       if ( $input.val().indexOf(options.multipleSep) != -1 ) {
+                                               $currentVal = $input.val().substr( 0, ( $input.val().lastIndexOf(options.multipleSep) + options.multipleSep.length ) );
+                                       } else {
+                                               $currentVal = "";
+                                       }
+                                       $input.val( $currentVal + $currentResult.text() + options.multipleSep);
+                                       $input.focus();
+                               } else {
+                                       $input.val($currentResult.text());
+                               }
+                               $results.hide();
+
+                               if (options.onSelect)
+                                       options.onSelect.apply($input[0]);
+
+                       }
+
+               }
+
+               function nextResult() {
+
+                       $currentResult = getCurrentResult();
+
+                       if ($currentResult)
+                               $currentResult
+                                       .removeClass(options.selectClass)
+                                       .next()
+                                               .addClass(options.selectClass);
+                       else
+                               $results.children('li:first-child').addClass(options.selectClass);
+
+               }
+
+               function prevResult() {
+                       var $currentResult = getCurrentResult();
+
+                       if ($currentResult)
+                               $currentResult
+                                       .removeClass(options.selectClass)
+                                       .prev()
+                                               .addClass(options.selectClass);
+                       else
+                               $results.children('li:last-child').addClass(options.selectClass);
+
+               }
+       }
+
+       $.fn.suggest = function(source, options) {
+
+               if (!source)
+                       return;
+
+               options = options || {};
+               options.multiple = options.multiple || false;
+               options.multipleSep = options.multipleSep || ", ";
+               options.source = source;
+               options.delay = options.delay || 100;
+               options.resultsClass = options.resultsClass || 'ac_results';
+               options.selectClass = options.selectClass || 'ac_over';
+               options.matchClass = options.matchClass || 'ac_match';
+               options.minchars = options.minchars || 2;
+               options.delimiter = options.delimiter || '\n';
+               options.onSelect = options.onSelect || false;
+               options.maxCacheSize = options.maxCacheSize || 65536;
+
+               this.each(function() {
+                       new $.suggest(this, options);
+               });
+
+               return this;
+
+       };
+
+})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/suggest.min.js b/wp-includes/js/jquery/suggest.min.js
new file mode 100644 (file)
index 0000000..904936f
--- /dev/null
@@ -0,0 +1 @@
+(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=a.trim(x.substr(w+g.multipleSep.length))}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.blind.min.js b/wp-includes/js/jquery/ui/jquery.effects.blind.min.js
deleted file mode 100644 (file)
index 4182718..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.blind.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.bounce.min.js b/wp-includes/js/jquery/ui/jquery.effects.bounce.min.js
deleted file mode 100644 (file)
index 008892b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.bounce.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.clip.min.js b/wp-includes/js/jquery/ui/jquery.effects.clip.min.js
deleted file mode 100644 (file)
index aedbc11..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.clip.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.core.min.js b/wp-includes/js/jquery/ui/jquery.effects.core.min.js
deleted file mode 100644 (file)
index 5d7766d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.core.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-jQuery.effects||function(a,b){function c(b){var c;return b&&b.constructor==Array&&b.length==3?b:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))?[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:(c=/rgba\(0, 0, 0, 0\)/.exec(b))?e.transparent:e[a.trim(b).toLowerCase()]}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};return a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete,[b,c,d,e]}function l(b){return!b||typeof b=="number"||a.fx.speeds[b]?!0:typeof b=="string"&&!a.effects[b]?!0:!1}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){return a.isFunction(d)&&(e=d,d=null),this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class")||"";a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.20",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){return b=="toggle"&&(b=a.is(":hidden")?"show":"hide"),b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;return b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="show",this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="hide",this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return b==0?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return b<1?-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),(c/=f/2)<1?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){return c<f/2?a.easing.easeInBounce(b,c*2,0,e,f)*.5+d:a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.drop.min.js b/wp-includes/js/jquery/ui/jquery.effects.drop.min.js
deleted file mode 100644 (file)
index e440577..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.drop.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.explode.min.js b/wp-includes/js/jquery/ui/jquery.effects.explode.min.js
deleted file mode 100644 (file)
index 06f53c7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.explode.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.fade.min.js b/wp-includes/js/jquery/ui/jquery.effects.fade.min.js
deleted file mode 100644 (file)
index d36845b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.fade.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.fold.min.js b/wp-includes/js/jquery/ui/jquery.effects.fold.min.js
deleted file mode 100644 (file)
index ecc9d0a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.fold.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.highlight.min.js b/wp-includes/js/jquery/ui/jquery.effects.highlight.min.js
deleted file mode 100644 (file)
index 8cf0a25..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.highlight.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js b/wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js
deleted file mode 100644 (file)
index 41e07ba..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.pulsate.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i<e;i++)c.animate({opacity:h},f,b.options.easing),h=(h+1)%2;c.animate({opacity:h},f,b.options.easing,function(){h==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.scale.min.js b/wp-includes/js/jquery/ui/jquery.effects.scale.min.js
deleted file mode 100644 (file)
index 955a51f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.scale.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){var c=a(this);k&&a.effects.save(c,f);var d={height:c.height(),width:c.width()};c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.options.easing,function(){k&&a.effects.restore(c,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.shake.min.js b/wp-includes/js/jquery/ui/jquery.effects.shake.min.js
deleted file mode 100644 (file)
index 2c83b7a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.shake.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.slide.min.js b/wp-includes/js/jquery/ui/jquery.effects.slide.min.js
deleted file mode 100644 (file)
index 4275a59..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.slide.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.effects.transfer.min.js b/wp-includes/js/jquery/ui/jquery.effects.transfer.min.js
deleted file mode 100644 (file)
index b823184..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.transfer.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
index 3679011ebaea3da32f0146561570f86ef355e45b..1777b0afcb49f1e64acfd1275b00b8409c952b0b 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.accordion.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");return(b.autoHeight||b.fillHeight)&&c.css("height",""),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(this.options.disabled||b.altKey||b.ctrlKey)return;var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}return f?(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),!1):!0},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];return this._clickHandler({target:b},b),this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(d.disabled)return;if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!g)return;return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(this.running)return;this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data)}}),a.extend(a.ui.accordion,{version:"1.8.20",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size()){b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);return}if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&(r.active===!1||r.active==null)&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);
\ No newline at end of file
index 689479c9fb2dfc2df6487b0a5b6c8488107a0eed..eab1ac644266406da43eb319f954c46b02fcff61 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.autocomplete.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);
\ No newline at end of file
index 8e560a2e29b296016d38a6874b0cd0bea93fb9a1..9a3c257934fd31b32021ed298713d1f1b1090940 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.button.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="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",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);return c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form})),e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){if(h.disabled)return;a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active")}).bind("mouseleave.button",function(){if(h.disabled)return;a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){if(f)return;b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){if(h.disabled)return;f=!1,d=a.pageX,e=a.pageY}).bind("mouseup.button",function(a){if(h.disabled)return;if(d!==a.pageX||e!==a.pageY)f=!0})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled"){c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1);return}this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="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",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);
\ No newline at end of file
index dc41e58145f24947cccdf414fd05060d3129b622..e23ab4c4c2dd7cea9812fd78bcaade6ea0357515 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.core.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.20",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);
\ No newline at end of file
index 745616865972fa8a501c83036e124c877dacdec9..79564b572c3e40d871bfd4015b831b19cbb7336f 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.datepicker.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover")})}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.20"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);if(c.hasClass(this.markerClassName))return;this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a)},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block")},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);return c&&!c.inline&&this._setDateFromField(c,b),c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(d){$.datepicker.log(d)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if($.datepicker._isDisabledDatepicker(a)||$.datepicker._lastInput==a)return;var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){return e|=$(this).css("position")=="fixed",!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();return b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0),b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!$.datepicker._curInst)return;var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);if(this._isDisabledDatepicker(d[0]))return;this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e)},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if($(d).hasClass(this._unselectableClass)||this._isDisabledDatepicker(e[0]))return;var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;return c&&s++,c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;return r+=f[0].length,parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase())return f=c[0],r+=d.length,!1});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;return c&&m++,c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;return c&&e++,c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()==a.lastVal)return;var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;return b.setDate(b.getDate()+a),b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());return f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0)),this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){return a?(a.setHours(a.getHours()>12?a.getHours()+2:0),a):null},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}return K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),a._keyEvent=!1,K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>",l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;return e=d&&e>d?d:e,e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.20",window["DP_jQuery_"+dpuuid]=$})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?"&#xa0;":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?"&#xa0;":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);
\ No newline at end of file
index 2d8a7f0d9d28ce42ab1da212c30d80f85d5a5ff7..2b7310100291feb322e1bda10ff324cebcd5e6ae 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.dialog.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||"&#160;",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){return b.close(a),!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;return a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle),a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1===c._trigger("beforeClose",b))return;return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d),c},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;return e.modal&&!b||!e.stack&&!e.modal?d._trigger("focus",c):(e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c),d)},open:function(){if(this._isOpen)return;var b=this,c=b.options,d=b.uiDialog;return b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode!==a.ui.keyCode.TAB)return;var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey)return d.focus(1),!1;if(b.target===d[0]&&b.shiftKey)return e.focus(1),!1}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open"),b},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('<button type="button"></button>').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){if(a==="click")return;a in f?e[a](b):e.attr(a,b)}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||"&#160;"))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.20",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");return b||(this.uuid+=1,b=this.uuid),"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});return a.fn.bgiframe&&c.bgiframe(),this.instances.push(c),c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;return a.browser.msie&&a.browser.version<7?(b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),b<c?a(window).height()+"px":b+"px"):a(document).height()+"px"},width:function(){var b,c;return a.browser.msie?(b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),b<c?a(window).width()+"px":b+"px"):a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.2",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||"&#160;",s,o,u,a,f;s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),o=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar  ui-widget-header  ui-corner-all  ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close  ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(f),s.attr({role:"dialog","aria-labelledby":a.attr("id")}),o.find("*").add(o).disableSelection(),this._hoverable(u),this._focusable(u),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n=this,r=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(r=!0)}),r?(e.each(t,function(t,r){var i,s;r=e.isFunction(r)?{click:r,text:t}:r,r=e.extend({type:"button"},r),s=r.click,r.click=function(){s.apply(n.element[0],arguments)},i=e("<button></button>",r).appendTo(n.uiButtonSet),e.fn.button&&i.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||"&#160;"))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
\ No newline at end of file
index 8a4b4cfc129aac2397fe495b86e3983afe901bdf..69f6ff2cab0872c09122b79d79212eeba1cbe1c8 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.draggable.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!this.element.data("draggable"))return;return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(b),this.handle?(c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){return d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.20"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!e.length)return;var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){var o=!1,u=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!=u&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(u.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);
\ No newline at end of file
index 5d51ce3468153133e908e91f05e04998af9cab56..a759e7e78ea3bb1e9310f1cf8d7a4f7929de0e1f 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.droppable.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);return this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable"),this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance))return e=!0,!1}),e?!1:this.accept.call(this.element[0],d.currentItem||d.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d)),this.element):!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.20"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();g:for(var h=0;h<d.length;h++){if(d[h].options.disabled||b&&!d[h].accept.call(d[h].element[0],b.currentItem||b.element))continue;for(var i=0;i<f.length;i++)if(f[i]==d[h].element[0]){d[h].proportions.height=0;continue g}d[h].visible=d[h].element.css("display")!="none";if(!d[h].visible)continue;e=="mousedown"&&d[h]._activate.call(d[h],c),d[h].offset=d[h].element.offset(),d[h].proportions={width:d[h].element[0].offsetWidth,height:d[h].element[0].offsetHeight}}},drop:function(b,c){var d=!1;return a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c))}),d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.droppable",{version:"1.9.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js
new file mode 100644 (file)
index 0000000..9a40194
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-blind.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js
new file mode 100644 (file)
index 0000000..4edb4eb
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-bounce.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js
new file mode 100644 (file)
index 0000000..e84de1e
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-clip.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js
new file mode 100644 (file)
index 0000000..c4d1be8
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-drop.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js
new file mode 100644 (file)
index 0000000..81db79c
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-explode.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js
new file mode 100644 (file)
index 0000000..f5d93d2
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-fade.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js
new file mode 100644 (file)
index 0000000..dd37ef0
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-fold.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js
new file mode 100644 (file)
index 0000000..88a27b7
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-highlight.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js
new file mode 100644 (file)
index 0000000..362f067
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-pulsate.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js
new file mode 100644 (file)
index 0000000..8edb3da
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-scale.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js
new file mode 100644 (file)
index 0000000..dcbf83e
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-shake.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js
new file mode 100644 (file)
index 0000000..d93f843
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-slide.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js
new file mode 100644 (file)
index 0000000..4cd52a4
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect-transfer.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect.min.js
new file mode 100644 (file)
index 0000000..e1c87a7
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.effect.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[];i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(l){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i;if(t&&t.length&&t[0]&&t[t[0]]){i=t.length;while(i--)r=t[i],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function a(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,s=t.mode;(r.is(":hidden")?s==="hide":s==="show")?u():o.call(r[0],t,u)}var t=i.apply(this,arguments),r=t.mode,s=t.queue,o=e.effects.effect[t.effect],u=!o&&n&&e.effects[t.effect];return e.fx.off||!o&&!u?r?this[r](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):o?s===!1?this.each(a):this.queue(s||"fx",a):u.call(this,{options:t,duration:t.duration,callback:t.complete,mode:t.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.menu.min.js b/wp-includes/js/jquery/ui/jquery.ui.menu.min.js
new file mode 100644 (file)
index 0000000..b6aef93
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.menu.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);
\ No newline at end of file
index 84a616db10cd72a2abb1ef8533b839885994b56c..1ef86b0cd36747b2cca51c564562ed70ee2c4021 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.mouse.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);
\ No newline at end of file
index 4f40f96a61c2892ab173eca57cb3ab602be169aa..115a1bc474cbdbf4bfd45f500c0dff9f5ea7dd48 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.position.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);
\ No newline at end of file
index 9b5c68c5a15d1007a1dd48cd0f261da079769e4f..855b23bb762e91a36550437c663efe218888072b 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.progressbar.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.progressbar",{version:"1.9.2",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);
\ No newline at end of file
index 62f7bce6b3e4eb90bd232435409545ae6ce5936a..560c422e884c985671e3f97f6c5ab9dd7b2e1239 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.resizable.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');h.css({zIndex:c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);return l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui()),!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;return d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width)),a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(!a.browser.msie||!a(c).is(":hidden")&&!a(c).parents(":hidden").length)e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0});else continue}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.20"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!i)return;e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/d.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*d.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e('<div class="ui-resizable-handle '+o+'"></div>');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")}).insertAfter(n),n.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var r=e.ui.ie6?1:0,i=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+i,height:this.element.outerHeight()+i,position:"absolute",left:this.elementOffset.left-r+"px",top:this.elementOffset.top-r+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);
\ No newline at end of file
index 500c8a89a05f87aef5ca5d63713e2aad5f9d0290..1d433bb0e66a91c7727692a40f9a830bc75008ad 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.selectable.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){return this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy(),this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(this.options.disabled)return;var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");return d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element}),!1}})},_mouseDrag:function(b){var c=this;this.dragged=!0;if(this.options.disabled)return;var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}return this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!i||i.element==c.element[0])return;var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}),!1},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;return a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove(),!1}}),a.extend(a.ui.selectable,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);
\ No newline at end of file
index ec8700a02f5869eae950d81f90ab2a335f07343f..92327a9a9879c4d5bf5fbbb7fdccee1ab7e27004 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.slider.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=a(this).data("index.ui-slider-handle"),f,g,h,i;if(b.options.disabled)return;switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){return this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a),a},_values:function(a){var b,c,d;if(arguments.length)return b=this.options.values[a],b=this._trimAlignValue(b),b;c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);
\ No newline at end of file
index 593dfb964f929f560927a160ad59945ad0935824..963c4de25f7aaa18e8268cb1f3530a57e34afe81 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.sortable.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f)return e=a(this),!1});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}return this.currentItem=e,this._removeCurrentsFromItems(),!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(!b)return;a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=this.options.axis==="x"||a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=this.options.axis==="y"||a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return e?this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1):!1},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return e||(b.style.visibility="hidden"),b},update:function(a,b){if(e&&!d.forcePlaceholderSize)return;b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;return d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height()),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js b/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js
new file mode 100644 (file)
index 0000000..d294272
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.spinner.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);
\ No newline at end of file
index a4c6e9d4eb8a8d65e19e9aa3fbbd23954f147c38..bb6a64000c058a75dd86510a3f4e1fa4e9dfad04 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.tabs.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js b/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js
new file mode 100644 (file)
index 0000000..5077d91
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.tooltip.js
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
\ No newline at end of file
index 32362074490f3f016f29c7ef4862a728c8848732..865bc98d42b4648d766787ec83b36fa9d8720706 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
 * Includes: jquery.ui.widget.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);
\ No newline at end of file
+* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/json2.dev.js b/wp-includes/js/json2.dev.js
deleted file mode 100644 (file)
index b4c02d3..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
-    http://www.JSON.org/json2.js
-    2011-02-23
-
-    Public Domain.
-
-    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
-    See http://www.JSON.org/js.html
-
-
-    This code should be minified before deployment.
-    See http://javascript.crockford.com/jsmin.html
-
-    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
-    NOT CONTROL.
-
-
-    This file creates a global JSON object containing two methods: stringify
-    and parse.
-
-        JSON.stringify(value, replacer, space)
-            value       any JavaScript value, usually an object or array.
-
-            replacer    an optional parameter that determines how object
-                        values are stringified for objects. It can be a
-                        function or an array of strings.
-
-            space       an optional parameter that specifies the indentation
-                        of nested structures. If it is omitted, the text will
-                        be packed without extra whitespace. If it is a number,
-                        it will specify the number of spaces to indent at each
-                        level. If it is a string (such as '\t' or '&nbsp;'),
-                        it contains the characters used to indent at each level.
-
-            This method produces a JSON text from a JavaScript value.
-
-            When an object value is found, if the object contains a toJSON
-            method, its toJSON method will be called and the result will be
-            stringified. A toJSON method does not serialize: it returns the
-            value represented by the name/value pair that should be serialized,
-            or undefined if nothing should be serialized. The toJSON method
-            will be passed the key associated with the value, and this will be
-            bound to the value
-
-            For example, this would serialize Dates as ISO strings.
-
-                Date.prototype.toJSON = function (key) {
-                    function f(n) {
-                        // Format integers to have at least two digits.
-                        return n < 10 ? '0' + n : n;
-                    }
-
-                    return this.getUTCFullYear()   + '-' +
-                         f(this.getUTCMonth() + 1) + '-' +
-                         f(this.getUTCDate())      + 'T' +
-                         f(this.getUTCHours())     + ':' +
-                         f(this.getUTCMinutes())   + ':' +
-                         f(this.getUTCSeconds())   + 'Z';
-                };
-
-            You can provide an optional replacer method. It will be passed the
-            key and value of each member, with this bound to the containing
-            object. The value that is returned from your method will be
-            serialized. If your method returns undefined, then the member will
-            be excluded from the serialization.
-
-            If the replacer parameter is an array of strings, then it will be
-            used to select the members to be serialized. It filters the results
-            such that only members with keys listed in the replacer array are
-            stringified.
-
-            Values that do not have JSON representations, such as undefined or
-            functions, will not be serialized. Such values in objects will be
-            dropped; in arrays they will be replaced with null. You can use
-            a replacer function to replace those with JSON values.
-            JSON.stringify(undefined) returns undefined.
-
-            The optional space parameter produces a stringification of the
-            value that is filled with line breaks and indentation to make it
-            easier to read.
-
-            If the space parameter is a non-empty string, then that string will
-            be used for indentation. If the space parameter is a number, then
-            the indentation will be that many spaces.
-
-            Example:
-
-            text = JSON.stringify(['e', {pluribus: 'unum'}]);
-            // text is '["e",{"pluribus":"unum"}]'
-
-
-            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
-            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
-
-            text = JSON.stringify([new Date()], function (key, value) {
-                return this[key] instanceof Date ?
-                    'Date(' + this[key] + ')' : value;
-            });
-            // text is '["Date(---current time---)"]'
-
-
-        JSON.parse(text, reviver)
-            This method parses a JSON text to produce an object or array.
-            It can throw a SyntaxError exception.
-
-            The optional reviver parameter is a function that can filter and
-            transform the results. It receives each of the keys and values,
-            and its return value is used instead of the original value.
-            If it returns what it received, then the structure is not modified.
-            If it returns undefined then the member is deleted.
-
-            Example:
-
-            // Parse the text. Values that look like ISO date strings will
-            // be converted to Date objects.
-
-            myData = JSON.parse(text, function (key, value) {
-                var a;
-                if (typeof value === 'string') {
-                    a =
-/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
-                    if (a) {
-                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
-                            +a[5], +a[6]));
-                    }
-                }
-                return value;
-            });
-
-            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
-                var d;
-                if (typeof value === 'string' &&
-                        value.slice(0, 5) === 'Date(' &&
-                        value.slice(-1) === ')') {
-                    d = new Date(value.slice(5, -1));
-                    if (d) {
-                        return d;
-                    }
-                }
-                return value;
-            });
-
-
-    This is a reference implementation. You are free to copy, modify, or
-    redistribute.
-*/
-
-/*jslint evil: true, strict: false, regexp: false */
-
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
-    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
-    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
-    lastIndex, length, parse, prototype, push, replace, slice, stringify,
-    test, toJSON, toString, valueOf
-*/
-
-
-// Create a JSON object only if one does not already exist. We create the
-// methods in a closure to avoid creating global variables.
-
-var JSON;
-if (!JSON) {
-    JSON = {};
-}
-
-(function () {
-    "use strict";
-
-    function f(n) {
-        // Format integers to have at least two digits.
-        return n < 10 ? '0' + n : n;
-    }
-
-    if (typeof Date.prototype.toJSON !== 'function') {
-
-        Date.prototype.toJSON = function (key) {
-
-            return isFinite(this.valueOf()) ?
-                this.getUTCFullYear()     + '-' +
-                f(this.getUTCMonth() + 1) + '-' +
-                f(this.getUTCDate())      + 'T' +
-                f(this.getUTCHours())     + ':' +
-                f(this.getUTCMinutes())   + ':' +
-                f(this.getUTCSeconds())   + 'Z' : null;
-        };
-
-        String.prototype.toJSON      =
-            Number.prototype.toJSON  =
-            Boolean.prototype.toJSON = function (key) {
-                return this.valueOf();
-            };
-    }
-
-    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        gap,
-        indent,
-        meta = {    // table of character substitutions
-            '\b': '\\b',
-            '\t': '\\t',
-            '\n': '\\n',
-            '\f': '\\f',
-            '\r': '\\r',
-            '"' : '\\"',
-            '\\': '\\\\'
-        },
-        rep;
-
-
-    function quote(string) {
-
-// If the string contains no control characters, no quote characters, and no
-// backslash characters, then we can safely slap some quotes around it.
-// Otherwise we must also replace the offending characters with safe escape
-// sequences.
-
-        escapable.lastIndex = 0;
-        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
-            var c = meta[a];
-            return typeof c === 'string' ? c :
-                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-        }) + '"' : '"' + string + '"';
-    }
-
-
-    function str(key, holder) {
-
-// Produce a string from holder[key].
-
-        var i,          // The loop counter.
-            k,          // The member key.
-            v,          // The member value.
-            length,
-            mind = gap,
-            partial,
-            value = holder[key];
-
-// If the value has a toJSON method, call it to obtain a replacement value.
-
-        if (value && typeof value === 'object' &&
-                typeof value.toJSON === 'function') {
-            value = value.toJSON(key);
-        }
-
-// If we were called with a replacer function, then call the replacer to
-// obtain a replacement value.
-
-        if (typeof rep === 'function') {
-            value = rep.call(holder, key, value);
-        }
-
-// What happens next depends on the value's type.
-
-        switch (typeof value) {
-        case 'string':
-            return quote(value);
-
-        case 'number':
-
-// JSON numbers must be finite. Encode non-finite numbers as null.
-
-            return isFinite(value) ? String(value) : 'null';
-
-        case 'boolean':
-        case 'null':
-
-// If the value is a boolean or null, convert it to a string. Note:
-// typeof null does not produce 'null'. The case is included here in
-// the remote chance that this gets fixed someday.
-
-            return String(value);
-
-// If the type is 'object', we might be dealing with an object or an array or
-// null.
-
-        case 'object':
-
-// Due to a specification blunder in ECMAScript, typeof null is 'object',
-// so watch out for that case.
-
-            if (!value) {
-                return 'null';
-            }
-
-// Make an array to hold the partial results of stringifying this object value.
-
-            gap += indent;
-            partial = [];
-
-// Is the value an array?
-
-            if (Object.prototype.toString.apply(value) === '[object Array]') {
-
-// The value is an array. Stringify every element. Use null as a placeholder
-// for non-JSON values.
-
-                length = value.length;
-                for (i = 0; i < length; i += 1) {
-                    partial[i] = str(i, value) || 'null';
-                }
-
-// Join all of the elements together, separated with commas, and wrap them in
-// brackets.
-
-                v = partial.length === 0 ? '[]' : gap ?
-                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
-                    '[' + partial.join(',') + ']';
-                gap = mind;
-                return v;
-            }
-
-// If the replacer is an array, use it to select the members to be stringified.
-
-            if (rep && typeof rep === 'object') {
-                length = rep.length;
-                for (i = 0; i < length; i += 1) {
-                    if (typeof rep[i] === 'string') {
-                        k = rep[i];
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            } else {
-
-// Otherwise, iterate through all of the keys in the object.
-
-                for (k in value) {
-                    if (Object.prototype.hasOwnProperty.call(value, k)) {
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            }
-
-// Join all of the member texts together, separated with commas,
-// and wrap them in braces.
-
-            v = partial.length === 0 ? '{}' : gap ?
-                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
-                '{' + partial.join(',') + '}';
-            gap = mind;
-            return v;
-        }
-    }
-
-// If the JSON object does not yet have a stringify method, give it one.
-
-    if (typeof JSON.stringify !== 'function') {
-        JSON.stringify = function (value, replacer, space) {
-
-// The stringify method takes a value and an optional replacer, and an optional
-// space parameter, and returns a JSON text. The replacer can be a function
-// that can replace values, or an array of strings that will select the keys.
-// A default replacer method can be provided. Use of the space parameter can
-// produce text that is more easily readable.
-
-            var i;
-            gap = '';
-            indent = '';
-
-// If the space parameter is a number, make an indent string containing that
-// many spaces.
-
-            if (typeof space === 'number') {
-                for (i = 0; i < space; i += 1) {
-                    indent += ' ';
-                }
-
-// If the space parameter is a string, it will be used as the indent string.
-
-            } else if (typeof space === 'string') {
-                indent = space;
-            }
-
-// If there is a replacer, it must be a function or an array.
-// Otherwise, throw an error.
-
-            rep = replacer;
-            if (replacer && typeof replacer !== 'function' &&
-                    (typeof replacer !== 'object' ||
-                    typeof replacer.length !== 'number')) {
-                throw new Error('JSON.stringify');
-            }
-
-// Make a fake root object containing our value under the key of ''.
-// Return the result of stringifying the value.
-
-            return str('', {'': value});
-        };
-    }
-
-
-// If the JSON object does not yet have a parse method, give it one.
-
-    if (typeof JSON.parse !== 'function') {
-        JSON.parse = function (text, reviver) {
-
-// The parse method takes a text and an optional reviver function, and returns
-// a JavaScript value if the text is a valid JSON text.
-
-            var j;
-
-            function walk(holder, key) {
-
-// The walk method is used to recursively walk the resulting structure so
-// that modifications can be made.
-
-                var k, v, value = holder[key];
-                if (value && typeof value === 'object') {
-                    for (k in value) {
-                        if (Object.prototype.hasOwnProperty.call(value, k)) {
-                            v = walk(value, k);
-                            if (v !== undefined) {
-                                value[k] = v;
-                            } else {
-                                delete value[k];
-                            }
-                        }
-                    }
-                }
-                return reviver.call(holder, key, value);
-            }
-
-
-// Parsing happens in four stages. In the first stage, we replace certain
-// Unicode characters with escape sequences. JavaScript handles many characters
-// incorrectly, either silently deleting them, or treating them as line endings.
-
-            text = String(text);
-            cx.lastIndex = 0;
-            if (cx.test(text)) {
-                text = text.replace(cx, function (a) {
-                    return '\\u' +
-                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-                });
-            }
-
-// In the second stage, we run the text against regular expressions that look
-// for non-JSON patterns. We are especially concerned with '()' and 'new'
-// because they can cause invocation, and '=' because it can cause mutation.
-// But just to be safe, we want to reject all unexpected forms.
-
-// We split the second stage into 4 regexp operations in order to work around
-// crippling inefficiencies in IE's and Safari's regexp engines. First we
-// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
-// replace all simple value tokens with ']' characters. Third, we delete all
-// open brackets that follow a colon or comma or that begin the text. Finally,
-// we look to see that the remaining characters are only whitespace or ']' or
-// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
-
-            if (/^[\],:{}\s]*$/
-                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
-                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
-                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
-
-// In the third stage we use the eval function to compile the text into a
-// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
-// in JavaScript: it can begin a block or an object literal. We wrap the text
-// in parens to eliminate the ambiguity.
-
-                j = eval('(' + text + ')');
-
-// In the optional fourth stage, we recursively walk the new structure, passing
-// each name/value pair to a reviver function for possible transformation.
-
-                return typeof reviver === 'function' ?
-                    walk({'': j}, '') : j;
-            }
-
-// If the text is not JSON parseable, then a SyntaxError is thrown.
-
-            throw new SyntaxError('JSON.parse');
-        };
-    }
-}());
index 0bdcc5ec972638073e627ef3e06233660afa15df..b4c02d3f08be98fc3bf745bc4382bc886c27ce1a 100644 (file)
@@ -1 +1,480 @@
-var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
\ No newline at end of file
+/*
+    http://www.JSON.org/json2.js
+    2011-02-23
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.
+
+
+    This file creates a global JSON object containing two methods: stringify
+    and parse.
+
+        JSON.stringify(value, replacer, space)
+            value       any JavaScript value, usually an object or array.
+
+            replacer    an optional parameter that determines how object
+                        values are stringified for objects. It can be a
+                        function or an array of strings.
+
+            space       an optional parameter that specifies the indentation
+                        of nested structures. If it is omitted, the text will
+                        be packed without extra whitespace. If it is a number,
+                        it will specify the number of spaces to indent at each
+                        level. If it is a string (such as '\t' or '&nbsp;'),
+                        it contains the characters used to indent at each level.
+
+            This method produces a JSON text from a JavaScript value.
+
+            When an object value is found, if the object contains a toJSON
+            method, its toJSON method will be called and the result will be
+            stringified. A toJSON method does not serialize: it returns the
+            value represented by the name/value pair that should be serialized,
+            or undefined if nothing should be serialized. The toJSON method
+            will be passed the key associated with the value, and this will be
+            bound to the value
+
+            For example, this would serialize Dates as ISO strings.
+
+                Date.prototype.toJSON = function (key) {
+                    function f(n) {
+                        // Format integers to have at least two digits.
+                        return n < 10 ? '0' + n : n;
+                    }
+
+                    return this.getUTCFullYear()   + '-' +
+                         f(this.getUTCMonth() + 1) + '-' +
+                         f(this.getUTCDate())      + 'T' +
+                         f(this.getUTCHours())     + ':' +
+                         f(this.getUTCMinutes())   + ':' +
+                         f(this.getUTCSeconds())   + 'Z';
+                };
+
+            You can provide an optional replacer method. It will be passed the
+            key and value of each member, with this bound to the containing
+            object. The value that is returned from your method will be
+            serialized. If your method returns undefined, then the member will
+            be excluded from the serialization.
+
+            If the replacer parameter is an array of strings, then it will be
+            used to select the members to be serialized. It filters the results
+            such that only members with keys listed in the replacer array are
+            stringified.
+
+            Values that do not have JSON representations, such as undefined or
+            functions, will not be serialized. Such values in objects will be
+            dropped; in arrays they will be replaced with null. You can use
+            a replacer function to replace those with JSON values.
+            JSON.stringify(undefined) returns undefined.
+
+            The optional space parameter produces a stringification of the
+            value that is filled with line breaks and indentation to make it
+            easier to read.
+
+            If the space parameter is a non-empty string, then that string will
+            be used for indentation. If the space parameter is a number, then
+            the indentation will be that many spaces.
+
+            Example:
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}]);
+            // text is '["e",{"pluribus":"unum"}]'
+
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+            text = JSON.stringify([new Date()], function (key, value) {
+                return this[key] instanceof Date ?
+                    'Date(' + this[key] + ')' : value;
+            });
+            // text is '["Date(---current time---)"]'
+
+
+        JSON.parse(text, reviver)
+            This method parses a JSON text to produce an object or array.
+            It can throw a SyntaxError exception.
+
+            The optional reviver parameter is a function that can filter and
+            transform the results. It receives each of the keys and values,
+            and its return value is used instead of the original value.
+            If it returns what it received, then the structure is not modified.
+            If it returns undefined then the member is deleted.
+
+            Example:
+
+            // Parse the text. Values that look like ISO date strings will
+            // be converted to Date objects.
+
+            myData = JSON.parse(text, function (key, value) {
+                var a;
+                if (typeof value === 'string') {
+                    a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+                    if (a) {
+                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+                            +a[5], +a[6]));
+                    }
+                }
+                return value;
+            });
+
+            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+                var d;
+                if (typeof value === 'string' &&
+                        value.slice(0, 5) === 'Date(' &&
+                        value.slice(-1) === ')') {
+                    d = new Date(value.slice(5, -1));
+                    if (d) {
+                        return d;
+                    }
+                }
+                return value;
+            });
+
+
+    This is a reference implementation. You are free to copy, modify, or
+    redistribute.
+*/
+
+/*jslint evil: true, strict: false, regexp: false */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+    lastIndex, length, parse, prototype, push, replace, slice, stringify,
+    test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+var JSON;
+if (!JSON) {
+    JSON = {};
+}
+
+(function () {
+    "use strict";
+
+    function f(n) {
+        // Format integers to have at least two digits.
+        return n < 10 ? '0' + n : n;
+    }
+
+    if (typeof Date.prototype.toJSON !== 'function') {
+
+        Date.prototype.toJSON = function (key) {
+
+            return isFinite(this.valueOf()) ?
+                this.getUTCFullYear()     + '-' +
+                f(this.getUTCMonth() + 1) + '-' +
+                f(this.getUTCDate())      + 'T' +
+                f(this.getUTCHours())     + ':' +
+                f(this.getUTCMinutes())   + ':' +
+                f(this.getUTCSeconds())   + 'Z' : null;
+        };
+
+        String.prototype.toJSON      =
+            Number.prototype.toJSON  =
+            Boolean.prototype.toJSON = function (key) {
+                return this.valueOf();
+            };
+    }
+
+    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        gap,
+        indent,
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"' : '\\"',
+            '\\': '\\\\'
+        },
+        rep;
+
+
+    function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+        escapable.lastIndex = 0;
+        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+            var c = meta[a];
+            return typeof c === 'string' ? c :
+                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '"' : '"' + string + '"';
+    }
+
+
+    function str(key, holder) {
+
+// Produce a string from holder[key].
+
+        var i,          // The loop counter.
+            k,          // The member key.
+            v,          // The member value.
+            length,
+            mind = gap,
+            partial,
+            value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+        if (value && typeof value === 'object' &&
+                typeof value.toJSON === 'function') {
+            value = value.toJSON(key);
+        }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+        if (typeof rep === 'function') {
+            value = rep.call(holder, key, value);
+        }
+
+// What happens next depends on the value's type.
+
+        switch (typeof value) {
+        case 'string':
+            return quote(value);
+
+        case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+            return isFinite(value) ? String(value) : 'null';
+
+        case 'boolean':
+        case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+            return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+        case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+            if (!value) {
+                return 'null';
+            }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+            gap += indent;
+            partial = [];
+
+// Is the value an array?
+
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+                v = partial.length === 0 ? '[]' : gap ?
+                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+                    '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    if (typeof rep[i] === 'string') {
+                        k = rep[i];
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+            v = partial.length === 0 ? '{}' : gap ?
+                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+                '{' + partial.join(',') + '}';
+            gap = mind;
+            return v;
+        }
+    }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+    if (typeof JSON.stringify !== 'function') {
+        JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+            var i;
+            gap = '';
+            indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+            if (typeof space === 'number') {
+                for (i = 0; i < space; i += 1) {
+                    indent += ' ';
+                }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+            } else if (typeof space === 'string') {
+                indent = space;
+            }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+            rep = replacer;
+            if (replacer && typeof replacer !== 'function' &&
+                    (typeof replacer !== 'object' ||
+                    typeof replacer.length !== 'number')) {
+                throw new Error('JSON.stringify');
+            }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+            return str('', {'': value});
+        };
+    }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+    if (typeof JSON.parse !== 'function') {
+        JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+            var j;
+
+            function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+                var k, v, value = holder[key];
+                if (value && typeof value === 'object') {
+                    for (k in value) {
+                        if (Object.prototype.hasOwnProperty.call(value, k)) {
+                            v = walk(value, k);
+                            if (v !== undefined) {
+                                value[k] = v;
+                            } else {
+                                delete value[k];
+                            }
+                        }
+                    }
+                }
+                return reviver.call(holder, key, value);
+            }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+            text = String(text);
+            cx.lastIndex = 0;
+            if (cx.test(text)) {
+                text = text.replace(cx, function (a) {
+                    return '\\u' +
+                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                });
+            }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+            if (/^[\],:{}\s]*$/
+                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+                j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+                return typeof reviver === 'function' ?
+                    walk({'': j}, '') : j;
+            }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+            throw new SyntaxError('JSON.parse');
+        };
+    }
+}());
diff --git a/wp-includes/js/json2.min.js b/wp-includes/js/json2.min.js
new file mode 100644 (file)
index 0000000..0bdcc5e
--- /dev/null
@@ -0,0 +1 @@
+var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
\ No newline at end of file
diff --git a/wp-includes/js/mce-view.js b/wp-includes/js/mce-view.js
new file mode 100644 (file)
index 0000000..912c4c7
--- /dev/null
@@ -0,0 +1,349 @@
+// Ensure the global `wp` object exists.
+window.wp = window.wp || {};
+
+(function($){
+       var views = {},
+               instances = {};
+
+       // Create the `wp.mce` object if necessary.
+       wp.mce = wp.mce || {};
+
+       // wp.mce.view
+       // -----------
+       // A set of utilities that simplifies adding custom UI within a TinyMCE editor.
+       // At its core, it serves as a series of converters, transforming text to a
+       // custom UI, and back again.
+       wp.mce.view = {
+               // ### defaults
+               defaults: {
+                       // The default properties used for objects with the `pattern` key in
+                       // `wp.mce.view.add()`.
+                       pattern: {
+                               view: Backbone.View,
+                               text: function( instance ) {
+                                       return instance.options.original;
+                               },
+
+                               toView: function( content ) {
+                                       if ( ! this.pattern )
+                                               return;
+
+                                       this.pattern.lastIndex = 0;
+                                       var match = this.pattern.exec( content );
+
+                                       if ( ! match )
+                                               return;
+
+                                       return {
+                                               index:   match.index,
+                                               content: match[0],
+                                               options: {
+                                                       original: match[0],
+                                                       results:  match
+                                               }
+                                       };
+                               }
+                       },
+
+                       // The default properties used for objects with the `shortcode` key in
+                       // `wp.mce.view.add()`.
+                       shortcode: {
+                               view: Backbone.View,
+                               text: function( instance ) {
+                                       return instance.options.shortcode.string();
+                               },
+
+                               toView: function( content ) {
+                                       var match = wp.shortcode.next( this.shortcode, content );
+
+                                       if ( ! match )
+                                               return;
+
+                                       return {
+                                               index:   match.index,
+                                               content: match.content,
+                                               options: {
+                                                       shortcode: match.shortcode
+                                               }
+                                       };
+                               }
+                       }
+               },
+
+               // ### add( id, options )
+               // Registers a new TinyMCE view.
+               //
+               // Accepts a unique `id` and an `options` object.
+               //
+               // `options` accepts the following properties:
+               //
+               // * `pattern` is the regular expression used to scan the content and
+               // detect matching views.
+               //
+               // * `view` is a `Backbone.View` constructor. If a plain object is
+               // provided, it will automatically extend the parent constructor
+               // (usually `Backbone.View`). Views are instantiated when the `pattern`
+               // is successfully matched. The instance's `options` object is provided
+               // with the `original` matched value, the match `results` including
+               // capture groups, and the `viewType`, which is the constructor's `id`.
+               //
+               // * `extend` an existing view by passing in its `id`. The current
+               // view will inherit all properties from the parent view, and if
+               // `view` is set to a plain object, it will extend the parent `view`
+               // constructor.
+               //
+               // * `text` is a method that accepts an instance of the `view`
+               // constructor and transforms it into a text representation.
+               add: function( id, options ) {
+                       var parent, remove, base, properties;
+
+                       // Fetch the parent view or the default options.
+                       if ( options.extend )
+                               parent = wp.mce.view.get( options.extend );
+                       else if ( options.shortcode )
+                               parent = wp.mce.view.defaults.shortcode;
+                       else
+                               parent = wp.mce.view.defaults.pattern;
+
+                       // Extend the `options` object with the parent's properties.
+                       _.defaults( options, parent );
+                       options.id = id;
+
+                       // Create properties used to enhance the view for use in TinyMCE.
+                       properties = {
+                               // Ensure the wrapper element and references to the view are
+                               // removed. Otherwise, removed views could randomly restore.
+                               remove: function() {
+                                       delete instances[ this.el.id ];
+                                       this.$el.parent().remove();
+
+                                       // Trigger the inherited `remove` method.
+                                       if ( remove )
+                                               remove.apply( this, arguments );
+
+                                       return this;
+                               }
+                       };
+
+                       // If the `view` provided was an object, use the parent's
+                       // `view` constructor as a base. If a `view` constructor
+                       // was provided, treat that as the base.
+                       if ( _.isFunction( options.view ) ) {
+                               base = options.view;
+                       } else {
+                               base   = parent.view;
+                               remove = options.view.remove;
+                               _.defaults( properties, options.view );
+                       }
+
+                       // If there's a `remove` method on the `base` view that wasn't
+                       // created by this method, inherit it.
+                       if ( ! remove && ! base._mceview )
+                               remove = base.prototype.remove;
+
+                       // Automatically create the new `Backbone.View` constructor.
+                       options.view = base.extend( properties, {
+                               // Flag that the new view has been created by `wp.mce.view`.
+                               _mceview: true
+                       });
+
+                       views[ id ] = options;
+               },
+
+               // ### get( id )
+               // Returns a TinyMCE view options object.
+               get: function( id ) {
+                       return views[ id ];
+               },
+
+               // ### remove( id )
+               // Unregisters a TinyMCE view.
+               remove: function( id ) {
+                       delete views[ id ];
+               },
+
+               // ### toViews( content )
+               // Scans a `content` string for each view's pattern, replacing any
+               // matches with wrapper elements, and creates a new view instance for
+               // every match.
+               //
+               // To render the views, call `wp.mce.view.render( scope )`.
+               toViews: function( content ) {
+                       var pieces = [ { content: content } ],
+                               current;
+
+                       _.each( views, function( view, viewType ) {
+                               current = pieces.slice();
+                               pieces  = [];
+
+                               _.each( current, function( piece ) {
+                                       var remaining = piece.content,
+                                               result;
+
+                                       // Ignore processed pieces, but retain their location.
+                                       if ( piece.processed ) {
+                                               pieces.push( piece );
+                                               return;
+                                       }
+
+                                       // Iterate through the string progressively matching views
+                                       // and slicing the string as we go.
+                                       while ( remaining && (result = view.toView( remaining )) ) {
+                                               // Any text before the match becomes an unprocessed piece.
+                                               if ( result.index )
+                                                       pieces.push({ content: remaining.substring( 0, result.index ) });
+
+                                               // Add the processed piece for the match.
+                                               pieces.push({
+                                                       content:   wp.mce.view.toView( viewType, result.options ),
+                                                       processed: true
+                                               });
+
+                                               // Update the remaining content.
+                                               remaining = remaining.slice( result.index + result.content.length );
+                                       }
+
+                                       // There are no additional matches. If any content remains,
+                                       // add it as an unprocessed piece.
+                                       if ( remaining )
+                                               pieces.push({ content: remaining });
+                               });
+                       });
+
+                       return _.pluck( pieces, 'content' ).join('');
+               },
+
+               toView: function( viewType, options ) {
+                       var view = wp.mce.view.get( viewType ),
+                               instance, id;
+
+                       if ( ! view )
+                               return '';
+
+                       // Create a new view instance.
+                       instance = new view.view( _.extend( options || {}, {
+                               viewType: viewType
+                       }) );
+
+                       // Use the view's `id` if it already exists. Otherwise,
+                       // create a new `id`.
+                       id = instance.el.id = instance.el.id || _.uniqueId('__wpmce-');
+                       instances[ id ] = instance;
+
+                       // Create a dummy `$wrapper` property to allow `$wrapper` to be
+                       // called in the view's `render` method without a conditional.
+                       instance.$wrapper = $();
+
+                       return wp.html.string({
+                               // If the view is a span, wrap it in a span.
+                               tag: 'span' === instance.tagName ? 'span' : 'div',
+
+                               attrs: {
+                                       'class':           'wp-view-wrap wp-view-type-' + viewType,
+                                       'data-wp-view':    id,
+                                       'contenteditable': false
+                               }
+                       });
+               },
+
+               // ### render( scope )
+               // Renders any view instances inside a DOM node `scope`.
+               //
+               // View instances are detected by the presence of wrapper elements.
+               // To generate wrapper elements, pass your content through
+               // `wp.mce.view.toViews( content )`.
+               render: function( scope ) {
+                       $( '.wp-view-wrap', scope ).each( function() {
+                               var wrapper = $(this),
+                                       view = wp.mce.view.instance( this );
+
+                               if ( ! view )
+                                       return;
+
+                               // Link the real wrapper to the view.
+                               view.$wrapper = wrapper;
+                               // Render the view.
+                               view.render();
+                               // Detach the view element to ensure events are not unbound.
+                               view.$el.detach();
+
+                               // Empty the wrapper, attach the view element to the wrapper,
+                               // and add an ending marker to the wrapper to help regexes
+                               // scan the HTML string.
+                               wrapper.empty().append( view.el ).append('<span data-wp-view-end class="wp-view-end"></span>');
+                       });
+               },
+
+               // ### toText( content )
+               // Scans an HTML `content` string and replaces any view instances with
+               // their respective text representations.
+               toText: function( content ) {
+                       return content.replace( /<(?:div|span)[^>]+data-wp-view="([^"]+)"[^>]*>.*?<span[^>]+data-wp-view-end[^>]*><\/span><\/(?:div|span)>/g, function( match, id ) {
+                               var instance = instances[ id ],
+                                       view;
+
+                               if ( instance )
+                                       view = wp.mce.view.get( instance.options.viewType );
+
+                               return instance && view ? view.text( instance ) : '';
+                       });
+               },
+
+               // ### Remove internal TinyMCE attributes.
+               removeInternalAttrs: function( attrs ) {
+                       var result = {};
+                       _.each( attrs, function( value, attr ) {
+                               if ( -1 === attr.indexOf('data-mce') )
+                                       result[ attr ] = value;
+                       });
+                       return result;
+               },
+
+               // ### Parse an attribute string and removes internal TinyMCE attributes.
+               attrs: function( content ) {
+                       return wp.mce.view.removeInternalAttrs( wp.html.attrs( content ) );
+               },
+
+               // ### instance( scope )
+               //
+               // Accepts a MCE view wrapper `node` (i.e. a node with the
+               // `wp-view-wrap` class).
+               instance: function( node ) {
+                       var id = $( node ).data('wp-view');
+
+                       if ( id )
+                               return instances[ id ];
+               },
+
+               // ### Select a view.
+               //
+               // Accepts a MCE view wrapper `node` (i.e. a node with the
+               // `wp-view-wrap` class).
+               select: function( node ) {
+                       var $node = $(node);
+
+                       // Bail if node is already selected.
+                       if ( $node.hasClass('selected') )
+                               return;
+
+                       $node.addClass('selected');
+                       $( node.firstChild ).trigger('select');
+               },
+
+               // ### Deselect a view.
+               //
+               // Accepts a MCE view wrapper `node` (i.e. a node with the
+               // `wp-view-wrap` class).
+               deselect: function( node ) {
+                       var $node = $(node);
+
+                       // Bail if node is already selected.
+                       if ( ! $node.hasClass('selected') )
+                               return;
+
+                       $node.removeClass('selected');
+                       $( node.firstChild ).trigger('deselect');
+               }
+       };
+
+}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/mce-view.min.js b/wp-includes/js/mce-view.min.js
new file mode 100644 (file)
index 0000000..53e236a
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(b){var a={},c={};wp.mce=wp.mce||{};wp.mce.view={defaults:{pattern:{view:Backbone.View,text:function(d){return d.options.original},toView:function(e){if(!this.pattern){return}this.pattern.lastIndex=0;var d=this.pattern.exec(e);if(!d){return}return{index:d.index,content:d[0],options:{original:d[0],results:d}}}},shortcode:{view:Backbone.View,text:function(d){return d.options.shortcode.string()},toView:function(e){var d=wp.shortcode.next(this.shortcode,e);if(!d){return}return{index:d.index,content:d.content,options:{shortcode:d.shortcode}}}}},add:function(i,e){var g,d,h,f;if(e.extend){g=wp.mce.view.get(e.extend)}else{if(e.shortcode){g=wp.mce.view.defaults.shortcode}else{g=wp.mce.view.defaults.pattern}}_.defaults(e,g);e.id=i;f={remove:function(){delete c[this.el.id];this.$el.parent().remove();if(d){d.apply(this,arguments)}return this}};if(_.isFunction(e.view)){h=e.view}else{h=g.view;d=e.view.remove;_.defaults(f,e.view)}if(!d&&!h._mceview){d=h.prototype.remove}e.view=h.extend(f,{_mceview:true});a[i]=e},get:function(d){return a[d]},remove:function(d){delete a[d]},toViews:function(e){var d=[{content:e}],f;_.each(a,function(h,g){f=d.slice();d=[];_.each(f,function(k){var j=k.content,i;if(k.processed){d.push(k);return}while(j&&(i=h.toView(j))){if(i.index){d.push({content:j.substring(0,i.index)})}d.push({content:wp.mce.view.toView(g,i.options),processed:true});j=j.slice(i.index+i.content.length)}if(j){d.push({content:j})}})});return _.pluck(d,"content").join("")},toView:function(e,g){var f=wp.mce.view.get(e),d,h;if(!f){return""}d=new f.view(_.extend(g||{},{viewType:e}));h=d.el.id=d.el.id||_.uniqueId("__wpmce-");c[h]=d;d.$wrapper=b();return wp.html.string({tag:"span"===d.tagName?"span":"div",attrs:{"class":"wp-view-wrap wp-view-type-"+e,"data-wp-view":h,contenteditable:false}})},render:function(d){b(".wp-view-wrap",d).each(function(){var f=b(this),e=wp.mce.view.instance(this);if(!e){return}e.$wrapper=f;e.render();e.$el.detach();f.empty().append(e.el).append('<span data-wp-view-end class="wp-view-end"></span>')})},toText:function(d){return d.replace(/<(?:div|span)[^>]+data-wp-view="([^"]+)"[^>]*>.*?<span[^>]+data-wp-view-end[^>]*><\/span><\/(?:div|span)>/g,function(g,h){var e=c[h],f;if(e){f=wp.mce.view.get(e.options.viewType)}return e&&f?f.text(e):""})},removeInternalAttrs:function(e){var d={};_.each(e,function(g,f){if(-1===f.indexOf("data-mce")){d[f]=g}});return d},attrs:function(d){return wp.mce.view.removeInternalAttrs(wp.html.attrs(d))},instance:function(d){var e=b(d).data("wp-view");if(e){return c[e]}},select:function(e){var d=b(e);if(d.hasClass("selected")){return}d.addClass("selected");b(e.firstChild).trigger("select")},deselect:function(e){var d=b(e);if(!d.hasClass("selected")){return}d.removeClass("selected");b(e.firstChild).trigger("deselect")}}}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-editor.js b/wp-includes/js/media-editor.js
new file mode 100644 (file)
index 0000000..3477767
--- /dev/null
@@ -0,0 +1,646 @@
+// WordPress, TinyMCE, and Media
+// -----------------------------
+(function($){
+       // Stores the editors' `wp.media.controller.Frame` instances.
+       var workflows = {};
+
+       wp.media.string = {
+               // Joins the `props` and `attachment` objects,
+               // outputting the proper object format based on the
+               // attachment's type.
+               props: function( props, attachment ) {
+                       var link, linkUrl, size, sizes, fallbacks;
+
+                       // Final fallbacks run after all processing has been completed.
+                       fallbacks = function( props ) {
+                               // Generate alt fallbacks and strip tags.
+                               if ( 'image' === props.type && ! props.alt ) {
+                                       props.alt = props.caption || props.title || '';
+                                       props.alt = props.alt.replace( /<\/?[^>]+>/g, '' );
+                               }
+
+                               return props;
+                       };
+
+                       props = props ? _.clone( props ) : {};
+
+                       if ( attachment && attachment.type )
+                               props.type = attachment.type;
+
+                       if ( 'image' === props.type ) {
+                               props = _.defaults( props || {}, {
+                                       align:   getUserSetting( 'align', 'none' ),
+                                       size:    getUserSetting( 'imgsize', 'medium' ),
+                                       url:     '',
+                                       classes: []
+                               });
+                       }
+
+                       // All attachment-specific settings follow.
+                       if ( ! attachment )
+                               return fallbacks( props );
+
+                       props.title = props.title || attachment.title;
+
+                       link = props.link || getUserSetting( 'urlbutton', 'post' );
+                       if ( 'file' === link )
+                               linkUrl = attachment.url;
+                       else if ( 'post' === link )
+                               linkUrl = attachment.link;
+                       else if ( 'custom' === link )
+                               linkUrl = props.linkUrl;
+                       props.linkUrl = linkUrl || '';
+
+                       // Format properties for images.
+                       if ( 'image' === attachment.type ) {
+                               props.classes.push( 'wp-image-' + attachment.id );
+
+                               sizes = attachment.sizes;
+                               size = sizes && sizes[ props.size ] ? sizes[ props.size ] : attachment;
+
+                               _.extend( props, _.pick( attachment, 'align', 'caption', 'alt' ), {
+                                       width:     size.width,
+                                       height:    size.height,
+                                       src:       size.url,
+                                       captionId: 'attachment_' + attachment.id
+                               });
+
+                       // Format properties for non-images.
+                       } else {
+                               props.title = props.title || attachment.filename;
+                               props.rel = props.rel || 'attachment wp-att-' + attachment.id;
+                       }
+
+                       return fallbacks( props );
+               },
+
+               link: function( props, attachment ) {
+                       var options;
+
+                       props = wp.media.string.props( props, attachment );
+
+                       options = {
+                               tag:     'a',
+                               content: props.title,
+                               attrs:   {
+                                       href: props.linkUrl
+                               }
+                       };
+
+                       if ( props.rel )
+                               options.attrs.rel = props.rel;
+
+                       return wp.html.string( options );
+               },
+
+               image: function( props, attachment ) {
+                       var img = {},
+                               options, classes, shortcode, html;
+
+                       props = wp.media.string.props( props, attachment );
+                       classes = props.classes || [];
+
+                       img.src = props.url;
+                       _.extend( img, _.pick( props, 'width', 'height', 'alt' ) );
+
+                       // Only assign the align class to the image if we're not printing
+                       // a caption, since the alignment is sent to the shortcode.
+                       if ( props.align && ! props.caption )
+                               classes.push( 'align' + props.align );
+
+                       if ( props.size )
+                               classes.push( 'size-' + props.size );
+
+                       img['class'] = _.compact( classes ).join(' ');
+
+                       // Generate `img` tag options.
+                       options = {
+                               tag:    'img',
+                               attrs:  img,
+                               single: true
+                       };
+
+                       // Generate the `a` element options, if they exist.
+                       if ( props.linkUrl ) {
+                               options = {
+                                       tag:   'a',
+                                       attrs: {
+                                               href: props.linkUrl
+                                       },
+                                       content: options
+                               };
+                       }
+
+                       html = wp.html.string( options );
+
+                       // Generate the caption shortcode.
+                       if ( props.caption ) {
+                               shortcode = {};
+
+                               if ( img.width )
+                                       shortcode.width = img.width;
+
+                               if ( props.captionId )
+                                       shortcode.id = props.captionId;
+
+                               if ( props.align )
+                                       shortcode.align = 'align' + props.align;
+
+                               html = wp.shortcode.string({
+                                       tag:     'caption',
+                                       attrs:   shortcode,
+                                       content: html + ' ' + props.caption
+                               });
+                       }
+
+                       return html;
+               }
+       };
+
+       wp.media.gallery = (function() {
+               var galleries = {};
+
+               return {
+                       defaults: {
+                               order:      'ASC',
+                               id:         wp.media.view.settings.post.id,
+                               itemtag:    'dl',
+                               icontag:    'dt',
+                               captiontag: 'dd',
+                               columns:    3,
+                               size:       'thumbnail',
+                               orderby:    'menu_order ID'
+                       },
+
+                       attachments: function( shortcode ) {
+                               var shortcodeString = shortcode.string(),
+                                       result = galleries[ shortcodeString ],
+                                       attrs, args, query, others;
+
+                               delete galleries[ shortcodeString ];
+
+                               if ( result )
+                                       return result;
+
+                               // Fill the default shortcode attributes.
+                               attrs = _.defaults( shortcode.attrs.named, wp.media.gallery.defaults );
+                               args  = _.pick( attrs, 'orderby', 'order' );
+
+                               args.type    = 'image';
+                               args.perPage = -1;
+
+                               // Mark the `orderby` override attribute.
+                               if ( 'rand' === attrs.orderby )
+                                       attrs._orderbyRandom = true;
+
+                               // Map the `orderby` attribute to the corresponding model property.
+                               if ( ! attrs.orderby || /^menu_order(?: ID)?$/i.test( attrs.orderby ) )
+                                       args.orderby = 'menuOrder';
+
+                               // Map the `ids` param to the correct query args.
+                               if ( attrs.ids ) {
+                                       args.post__in = attrs.ids.split(',');
+                                       args.orderby  = 'post__in';
+                               } else if ( attrs.include ) {
+                                       args.post__in = attrs.include.split(',');
+                               }
+
+                               if ( attrs.exclude )
+                                       args.post__not_in = attrs.exclude.split(',');
+
+                               if ( ! args.post__in )
+                                       args.uploadedTo = attrs.id;
+
+                               // Collect the attributes that were not included in `args`.
+                               others = _.omit( attrs, 'id', 'ids', 'include', 'exclude', 'orderby', 'order' );
+
+                               query = wp.media.query( args );
+                               query.gallery = new Backbone.Model( others );
+                               return query;
+                       },
+
+                       shortcode: function( attachments ) {
+                               var props = attachments.props.toJSON(),
+                                       attrs = _.pick( props, 'orderby', 'order' ),
+                                       shortcode, clone;
+
+                               if ( attachments.gallery )
+                                       _.extend( attrs, attachments.gallery.toJSON() );
+
+                               // Convert all gallery shortcodes to use the `ids` property.
+                               // Ignore `post__in` and `post__not_in`; the attachments in
+                               // the collection will already reflect those properties.
+                               attrs.ids = attachments.pluck('id');
+
+                               // Copy the `uploadedTo` post ID.
+                               if ( props.uploadedTo )
+                                       attrs.id = props.uploadedTo;
+
+                               // Check if the gallery is randomly ordered.
+                               if ( attrs._orderbyRandom )
+                                       attrs.orderby = 'rand';
+                               delete attrs._orderbyRandom;
+
+                               // If the `ids` attribute is set and `orderby` attribute
+                               // is the default value, clear it for cleaner output.
+                               if ( attrs.ids && 'post__in' === attrs.orderby )
+                                       delete attrs.orderby;
+
+                               // Remove default attributes from the shortcode.
+                               _.each( wp.media.gallery.defaults, function( value, key ) {
+                                       if ( value === attrs[ key ] )
+                                               delete attrs[ key ];
+                               });
+
+                               shortcode = new wp.shortcode({
+                                       tag:    'gallery',
+                                       attrs:  attrs,
+                                       type:   'single'
+                               });
+
+                               // Use a cloned version of the gallery.
+                               clone = new wp.media.model.Attachments( attachments.models, {
+                                       props: props
+                               });
+                               clone.gallery = attachments.gallery;
+                               galleries[ shortcode.string() ] = clone;
+
+                               return shortcode;
+                       },
+
+                       edit: function( content ) {
+                               var shortcode = wp.shortcode.next( 'gallery', content ),
+                                       defaultPostId = wp.media.gallery.defaults.id,
+                                       attachments, selection;
+
+                               // Bail if we didn't match the shortcode or all of the content.
+                               if ( ! shortcode || shortcode.content !== content )
+                                       return;
+
+                               // Ignore the rest of the match object.
+                               shortcode = shortcode.shortcode;
+
+                               if ( _.isUndefined( shortcode.get('id') ) && ! _.isUndefined( defaultPostId ) )
+                                       shortcode.set( 'id', defaultPostId );
+
+                               attachments = wp.media.gallery.attachments( shortcode );
+
+                               selection = new wp.media.model.Selection( attachments.models, {
+                                       props:    attachments.props.toJSON(),
+                                       multiple: true
+                               });
+
+                               selection.gallery = attachments.gallery;
+
+                               // Fetch the query's attachments, and then break ties from the
+                               // query to allow for sorting.
+                               selection.more().done( function() {
+                                       // Break ties with the query.
+                                       selection.props.set({ query: false });
+                                       selection.unmirror();
+                                       selection.props.unset('orderby');
+                               });
+
+                               // Destroy the previous gallery frame.
+                               if ( this.frame )
+                                       this.frame.dispose();
+
+                               // Store the current gallery frame.
+                               this.frame = wp.media({
+                                       frame:     'post',
+                                       state:     'gallery-edit',
+                                       title:     wp.media.view.l10n.editGalleryTitle,
+                                       editing:   true,
+                                       multiple:  true,
+                                       selection: selection
+                               }).open();
+
+                               return this.frame;
+                       }
+               };
+       }());
+
+       wp.media.featuredImage = {
+               get: function() {
+                       return wp.media.view.settings.post.featuredImageId;
+               },
+
+               set: function( id ) {
+                       var settings = wp.media.view.settings;
+
+                       settings.post.featuredImageId = id;
+
+                       wp.media.post( 'set-post-thumbnail', {
+                               json:         true,
+                               post_id:      settings.post.id,
+                               thumbnail_id: settings.post.featuredImageId,
+                               _wpnonce:     settings.post.nonce
+                       }).done( function( html ) {
+                               $( '.inside', '#postimagediv' ).html( html );
+                       });
+               },
+
+               frame: function() {
+                       if ( this._frame )
+                               return this._frame;
+
+                       this._frame = wp.media({
+                               state: 'featured-image',
+                               states: [ new wp.media.controller.FeaturedImage() ]
+                       });
+
+                       this._frame.on( 'toolbar:create:featured-image', function( toolbar ) {
+                               this.createSelectToolbar( toolbar, {
+                                       text: wp.media.view.l10n.setFeaturedImage
+                               });
+                       }, this._frame );
+
+                       this._frame.state('featured-image').on( 'select', this.select );
+                       return this._frame;
+               },
+
+               select: function() {
+                       var settings = wp.media.view.settings,
+                               selection = this.get('selection').single();
+
+                       if ( ! settings.post.featuredImageId )
+                               return;
+
+                       wp.media.featuredImage.set( selection ? selection.id : -1 );
+               },
+
+               init: function() {
+                       // Open the content media manager to the 'featured image' tab when
+                       // the post thumbnail is clicked.
+                       $('#postimagediv').on( 'click', '#set-post-thumbnail', function( event ) {
+                               event.preventDefault();
+                               // Stop propagation to prevent thickbox from activating.
+                               event.stopPropagation();
+
+                               wp.media.featuredImage.frame().open();
+
+                       // Update the featured image id when the 'remove' link is clicked.
+                       }).on( 'click', '#remove-post-thumbnail', function() {
+                               wp.media.view.settings.post.featuredImageId = -1;
+                       });
+               }
+       };
+
+       $( wp.media.featuredImage.init );
+
+       wp.media.editor = {
+               insert: function( h ) {
+                       var mce = typeof(tinymce) != 'undefined',
+                               qt = typeof(QTags) != 'undefined',
+                               wpActiveEditor = window.wpActiveEditor,
+                               ed;
+
+                       // Delegate to the global `send_to_editor` if it exists.
+                       // This attempts to play nice with any themes/plugins that have
+                       // overridden the insert functionality.
+                       if ( window.send_to_editor )
+                               return window.send_to_editor.apply( this, arguments );
+
+                       if ( ! wpActiveEditor ) {
+                               if ( mce && tinymce.activeEditor ) {
+                                       ed = tinymce.activeEditor;
+                                       wpActiveEditor = window.wpActiveEditor = ed.id;
+                               } else if ( !qt ) {
+                                       return false;
+                               }
+                       } else if ( mce ) {
+                               if ( tinymce.activeEditor && (tinymce.activeEditor.id == 'mce_fullscreen' || tinymce.activeEditor.id == 'wp_mce_fullscreen') )
+                                       ed = tinymce.activeEditor;
+                               else
+                                       ed = tinymce.get(wpActiveEditor);
+                       }
+
+                       if ( ed && !ed.isHidden() ) {
+                               // restore caret position on IE
+                               if ( tinymce.isIE && ed.windowManager.insertimagebookmark )
+                                       ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
+
+                               if ( h.indexOf('[caption') !== -1 ) {
+                                       if ( ed.wpSetImgCaption )
+                                               h = ed.wpSetImgCaption(h);
+                               } else if ( h.indexOf('[gallery') !== -1 ) {
+                                       if ( ed.plugins.wpgallery )
+                                               h = ed.plugins.wpgallery._do_gallery(h);
+                               } else if ( h.indexOf('[embed') === 0 ) {
+                                       if ( ed.plugins.wordpress )
+                                               h = ed.plugins.wordpress._setEmbed(h);
+                               }
+
+                               ed.execCommand('mceInsertContent', false, h);
+                       } else if ( qt ) {
+                               QTags.insertContent(h);
+                       } else {
+                               document.getElementById(wpActiveEditor).value += h;
+                       }
+
+                       // If the old thickbox remove function exists, call it in case
+                       // a theme/plugin overloaded it.
+                       if ( window.tb_remove )
+                               try { window.tb_remove(); } catch( e ) {}
+               },
+
+               add: function( id, options ) {
+                       var workflow = this.get( id );
+
+                       if ( workflow )
+                               return workflow;
+
+                       workflow = workflows[ id ] = wp.media( _.defaults( options || {}, {
+                               frame:    'post',
+                               state:    'insert',
+                               title:    wp.media.view.l10n.addMedia,
+                               multiple: true
+                       } ) );
+
+                       workflow.on( 'insert', function( selection ) {
+                               var state = workflow.state();
+
+                               selection = selection || state.get('selection');
+
+                               if ( ! selection )
+                                       return;
+
+                               $.when.apply( $, selection.map( function( attachment ) {
+                                       var display = state.display( attachment ).toJSON();
+                                       return this.send.attachment( display, attachment.toJSON() );
+                               }, this ) ).done( function() {
+                                       wp.media.editor.insert( _.toArray( arguments ).join("\n\n") );
+                               });
+                       }, this );
+
+                       workflow.state('gallery-edit').on( 'update', function( selection ) {
+                               this.insert( wp.media.gallery.shortcode( selection ).string() );
+                       }, this );
+
+                       workflow.state('embed').on( 'select', function() {
+                               var state = workflow.state(),
+                                       type = state.get('type'),
+                                       embed = state.props.toJSON();
+
+                               embed.url = embed.url || '';
+
+                               if ( 'link' === type ) {
+                                       _.defaults( embed, {
+                                               title:   embed.url,
+                                               linkUrl: embed.url
+                                       });
+
+                                       this.send.link( embed ).done( function( resp ) {
+                                               wp.media.editor.insert( resp );
+                                       });
+
+                               } else if ( 'image' === type ) {
+                                       _.defaults( embed, {
+                                               title:   embed.url,
+                                               linkUrl: '',
+                                               align:   'none',
+                                               link:    'none'
+                                       });
+
+                                       if ( 'none' === embed.link )
+                                               embed.linkUrl = '';
+                                       else if ( 'file' === embed.link )
+                                               embed.linkUrl = embed.url;
+
+                                       this.insert( wp.media.string.image( embed ) );
+                               }
+                       }, this );
+
+                       workflow.state('featured-image').on( 'select', wp.media.featuredImage.select );
+                       workflow.setState( workflow.options.state );
+                       return workflow;
+               },
+
+               id: function( id ) {
+                       if ( id )
+                               return id;
+
+                       // If an empty `id` is provided, default to `wpActiveEditor`.
+                       id = wpActiveEditor;
+
+                       // If that doesn't work, fall back to `tinymce.activeEditor.id`.
+                       if ( ! id && typeof tinymce !== 'undefined' && tinymce.activeEditor )
+                               id = tinymce.activeEditor.id;
+
+                       // Last but not least, fall back to the empty string.
+                       id = id || '';
+                       return id;
+               },
+
+               get: function( id ) {
+                       id = this.id( id );
+                       return workflows[ id ];
+               },
+
+               remove: function( id ) {
+                       id = this.id( id );
+                       delete workflows[ id ];
+               },
+
+               send: {
+                       attachment: function( props, attachment ) {
+                               var caption = attachment.caption,
+                                       options, html;
+
+                               // If captions are disabled, clear the caption.
+                               if ( ! wp.media.view.settings.captions )
+                                       delete attachment.caption;
+
+                               props = wp.media.string.props( props, attachment );
+
+                               options = {
+                                       id:           attachment.id,
+                                       post_content: attachment.description,
+                                       post_excerpt: caption
+                               };
+
+                               if ( props.linkUrl )
+                                       options.url = props.linkUrl;
+
+                               if ( 'image' === attachment.type ) {
+                                       html = wp.media.string.image( props );
+
+                                       _.each({
+                                               align: 'align',
+                                               size:  'image-size',
+                                               alt:   'image_alt'
+                                       }, function( option, prop ) {
+                                               if ( props[ prop ] )
+                                                       options[ option ] = props[ prop ];
+                                       });
+
+                               } else {
+                                       html = wp.media.string.link( props );
+                                       options.post_title = props.title;
+                               }
+
+                               return wp.media.post( 'send-attachment-to-editor', {
+                                       nonce:      wp.media.view.settings.nonce.sendToEditor,
+                                       attachment: options,
+                                       html:       html,
+                                       post_id:    wp.media.view.settings.post.id
+                               });
+                       },
+
+                       link: function( embed ) {
+                               return wp.media.post( 'send-link-to-editor', {
+                                       nonce:   wp.media.view.settings.nonce.sendToEditor,
+                                       src:     embed.linkUrl,
+                                       title:   embed.title,
+                                       html:    wp.media.string.link( embed ),
+                                       post_id: wp.media.view.settings.post.id
+                               });
+                       }
+               },
+
+               open: function( id ) {
+                       var workflow, editor;
+
+                       id = this.id( id );
+
+                       // Save a bookmark of the caret position in IE.
+                       if ( typeof tinymce !== 'undefined' ) {
+                               editor = tinymce.get( id );
+
+                               if ( tinymce.isIE && editor && ! editor.isHidden() ) {
+                                       editor.focus();
+                                       editor.windowManager.insertimagebookmark = editor.selection.getBookmark();
+                               }
+                       }
+
+                       workflow = this.get( id );
+
+                       // Initialize the editor's workflow if we haven't yet.
+                       if ( ! workflow )
+                               workflow = this.add( id );
+
+                       return workflow.open();
+               },
+
+               init: function() {
+                       $(document.body).on( 'click', '.insert-media', function( event ) {
+                               var $this = $(this),
+                                       editor = $this.data('editor');
+
+                               event.preventDefault();
+
+                               // Remove focus from the `.insert-media` button.
+                               // Prevents Opera from showing the outline of the button
+                               // above the modal.
+                               //
+                               // See: http://core.trac.wordpress.org/ticket/22445
+                               $this.blur();
+
+                               wp.media.editor.open( editor );
+                       });
+               }
+       };
+
+       _.bindAll( wp.media.editor, 'open' );
+       $( wp.media.editor.init );
+}(jQuery));
diff --git a/wp-includes/js/media-editor.min.js b/wp-includes/js/media-editor.min.js
new file mode 100644 (file)
index 0000000..1598ba2
--- /dev/null
@@ -0,0 +1 @@
+(function(b){var a={};wp.media.string={props:function(f,i){var h,c,e,g,d;d=function(j){if("image"===j.type&&!j.alt){j.alt=j.caption||j.title||"";j.alt=j.alt.replace(/<\/?[^>]+>/g,"")}return j};f=f?_.clone(f):{};if(i&&i.type){f.type=i.type}if("image"===f.type){f=_.defaults(f||{},{align:getUserSetting("align","none"),size:getUserSetting("imgsize","medium"),url:"",classes:[]})}if(!i){return d(f)}f.title=f.title||i.title;h=f.link||getUserSetting("urlbutton","post");if("file"===h){c=i.url}else{if("post"===h){c=i.link}else{if("custom"===h){c=f.linkUrl}}}f.linkUrl=c||"";if("image"===i.type){f.classes.push("wp-image-"+i.id);g=i.sizes;e=g&&g[f.size]?g[f.size]:i;_.extend(f,_.pick(i,"align","caption","alt"),{width:e.width,height:e.height,src:e.url,captionId:"attachment_"+i.id})}else{f.title=f.title||i.filename;f.rel=f.rel||"attachment wp-att-"+i.id}return d(f)},link:function(d,e){var c;d=wp.media.string.props(d,e);c={tag:"a",content:d.title,attrs:{href:d.linkUrl}};if(d.rel){c.attrs.rel=d.rel}return wp.html.string(c)},image:function(g,i){var c={},d,f,h,e;g=wp.media.string.props(g,i);f=g.classes||[];c.src=g.url;_.extend(c,_.pick(g,"width","height","alt"));if(g.align&&!g.caption){f.push("align"+g.align)}if(g.size){f.push("size-"+g.size)}c["class"]=_.compact(f).join(" ");d={tag:"img",attrs:c,single:true};if(g.linkUrl){d={tag:"a",attrs:{href:g.linkUrl},content:d}}e=wp.html.string(d);if(g.caption){h={};if(c.width){h.width=c.width}if(g.captionId){h.id=g.captionId}if(g.align){h.align="align"+g.align}e=wp.shortcode.string({tag:"caption",attrs:h,content:e+" "+g.caption})}return e}};wp.media.gallery=(function(){var c={};return{defaults:{order:"ASC",id:wp.media.view.settings.post.id,itemtag:"dl",icontag:"dt",captiontag:"dd",columns:3,size:"thumbnail",orderby:"menu_order ID"},attachments:function(h){var j=h.string(),d=c[j],f,e,i,g;delete c[j];if(d){return d}f=_.defaults(h.attrs.named,wp.media.gallery.defaults);e=_.pick(f,"orderby","order");e.type="image";e.perPage=-1;if("rand"===f.orderby){f._orderbyRandom=true}if(!f.orderby||/^menu_order(?: ID)?$/i.test(f.orderby)){e.orderby="menuOrder"}if(f.ids){e.post__in=f.ids.split(",");e.orderby="post__in"}else{if(f.include){e.post__in=f.include.split(",")}}if(f.exclude){e.post__not_in=f.exclude.split(",")}if(!e.post__in){e.uploadedTo=f.id}g=_.omit(f,"id","ids","include","exclude","orderby","order");i=wp.media.query(e);i.gallery=new Backbone.Model(g);return i},shortcode:function(d){var f=d.props.toJSON(),e=_.pick(f,"orderby","order"),g,h;if(d.gallery){_.extend(e,d.gallery.toJSON())}e.ids=d.pluck("id");if(f.uploadedTo){e.id=f.uploadedTo}if(e._orderbyRandom){e.orderby="rand"}delete e._orderbyRandom;if(e.ids&&"post__in"===e.orderby){delete e.orderby}_.each(wp.media.gallery.defaults,function(j,i){if(j===e[i]){delete e[i]}});g=new wp.shortcode({tag:"gallery",attrs:e,type:"single"});h=new wp.media.model.Attachments(d.models,{props:f});h.gallery=d.gallery;c[g.string()]=h;return g},edit:function(g){var f=wp.shortcode.next("gallery",g),h=wp.media.gallery.defaults.id,d,e;if(!f||f.content!==g){return}f=f.shortcode;if(_.isUndefined(f.get("id"))&&!_.isUndefined(h)){f.set("id",h)}d=wp.media.gallery.attachments(f);e=new wp.media.model.Selection(d.models,{props:d.props.toJSON(),multiple:true});e.gallery=d.gallery;e.more().done(function(){e.props.set({query:false});e.unmirror();e.props.unset("orderby")});if(this.frame){this.frame.dispose()}this.frame=wp.media({frame:"post",state:"gallery-edit",title:wp.media.view.l10n.editGalleryTitle,editing:true,multiple:true,selection:e}).open();return this.frame}}}());wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(d){var c=wp.media.view.settings;c.post.featuredImageId=d;wp.media.post("set-post-thumbnail",{json:true,post_id:c.post.id,thumbnail_id:c.post.featuredImageId,_wpnonce:c.post.nonce}).done(function(e){b(".inside","#postimagediv").html(e)})},frame:function(){if(this._frame){return this._frame}this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage()]});this._frame.on("toolbar:create:featured-image",function(c){this.createSelectToolbar(c,{text:wp.media.view.l10n.setFeaturedImage})},this._frame);this._frame.state("featured-image").on("select",this.select);return this._frame},select:function(){var d=wp.media.view.settings,c=this.get("selection").single();if(!d.post.featuredImageId){return}wp.media.featuredImage.set(c?c.id:-1)},init:function(){b("#postimagediv").on("click","#set-post-thumbnail",function(c){c.preventDefault();c.stopPropagation();wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){wp.media.view.settings.post.featuredImageId=-1})}};b(wp.media.featuredImage.init);wp.media.editor={insert:function(g){var d=typeof(tinymce)!="undefined",j=typeof(QTags)!="undefined",c=window.wpActiveEditor,f;if(window.send_to_editor){return window.send_to_editor.apply(this,arguments)}if(!c){if(d&&tinymce.activeEditor){f=tinymce.activeEditor;c=window.wpActiveEditor=f.id}else{if(!j){return false}}}else{if(d){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){f=tinymce.activeEditor}else{f=tinymce.get(c)}}}if(f&&!f.isHidden()){if(tinymce.isIE&&f.windowManager.insertimagebookmark){f.selection.moveToBookmark(f.windowManager.insertimagebookmark)}if(g.indexOf("[caption")!==-1){if(f.wpSetImgCaption){g=f.wpSetImgCaption(g)}}else{if(g.indexOf("[gallery")!==-1){if(f.plugins.wpgallery){g=f.plugins.wpgallery._do_gallery(g)}}else{if(g.indexOf("[embed")===0){if(f.plugins.wordpress){g=f.plugins.wordpress._setEmbed(g)}}}}f.execCommand("mceInsertContent",false,g)}else{if(j){QTags.insertContent(g)}else{document.getElementById(c).value+=g}}if(window.tb_remove){try{window.tb_remove()}catch(i){}}},add:function(e,c){var d=this.get(e);if(d){return d}d=a[e]=wp.media(_.defaults(c||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:true}));d.on("insert",function(f){var g=d.state();f=f||g.get("selection");if(!f){return}b.when.apply(b,f.map(function(i){var h=g.display(i).toJSON();return this.send.attachment(h,i.toJSON())},this)).done(function(){wp.media.editor.insert(_.toArray(arguments).join("\n\n"))})},this);d.state("gallery-edit").on("update",function(f){this.insert(wp.media.gallery.shortcode(f).string())},this);d.state("embed").on("select",function(){var g=d.state(),f=g.get("type"),h=g.props.toJSON();h.url=h.url||"";if("link"===f){_.defaults(h,{title:h.url,linkUrl:h.url});this.send.link(h).done(function(i){wp.media.editor.insert(i)})}else{if("image"===f){_.defaults(h,{title:h.url,linkUrl:"",align:"none",link:"none"});if("none"===h.link){h.linkUrl=""}else{if("file"===h.link){h.linkUrl=h.url}}this.insert(wp.media.string.image(h))}}},this);d.state("featured-image").on("select",wp.media.featuredImage.select);d.setState(d.options.state);return d},id:function(c){if(c){return c}c=wpActiveEditor;if(!c&&typeof tinymce!=="undefined"&&tinymce.activeEditor){c=tinymce.activeEditor.id}c=c||"";return c},get:function(c){c=this.id(c);return a[c]},remove:function(c){c=this.id(c);delete a[c]},send:{attachment:function(f,g){var c=g.caption,d,e;if(!wp.media.view.settings.captions){delete g.caption}f=wp.media.string.props(f,g);d={id:g.id,post_content:g.description,post_excerpt:c};if(f.linkUrl){d.url=f.linkUrl}if("image"===g.type){e=wp.media.string.image(f);_.each({align:"align",size:"image-size",alt:"image_alt"},function(h,i){if(f[i]){d[h]=f[i]}})}else{e=wp.media.string.link(f);d.post_title=f.title}return wp.media.post("send-attachment-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,attachment:d,html:e,post_id:wp.media.view.settings.post.id})},link:function(c){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:c.linkUrl,title:c.title,html:wp.media.string.link(c),post_id:wp.media.view.settings.post.id})}},open:function(e){var d,c;e=this.id(e);if(typeof tinymce!=="undefined"){c=tinymce.get(e);if(tinymce.isIE&&c&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}}d=this.get(e);if(!d){d=this.add(e)}return d.open()},init:function(){b(document.body).on("click",".insert-media",function(d){var e=b(this),c=e.data("editor");d.preventDefault();e.blur();wp.media.editor.open(c)})}};_.bindAll(wp.media.editor,"open");b(wp.media.editor.init)}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-models.js b/wp-includes/js/media-models.js
new file mode 100644 (file)
index 0000000..34cce0b
--- /dev/null
@@ -0,0 +1,908 @@
+window.wp = window.wp || {};
+
+(function($){
+       var Attachment, Attachments, Query, compare, l10n, media;
+
+       /**
+        * wp.media( attributes )
+        *
+        * Handles the default media experience. Automatically creates
+        * and opens a media frame, and returns the result.
+        * Does nothing if the controllers do not exist.
+        *
+        * @param  {object} attributes The properties passed to the main media controller.
+        * @return {object}            A media workflow.
+        */
+       media = wp.media = function( attributes ) {
+               var MediaFrame = media.view.MediaFrame,
+                       frame;
+
+               if ( ! MediaFrame )
+                       return;
+
+               attributes = _.defaults( attributes || {}, {
+                       frame: 'select'
+               });
+
+               if ( 'select' === attributes.frame && MediaFrame.Select )
+                       frame = new MediaFrame.Select( attributes );
+               else if ( 'post' === attributes.frame && MediaFrame.Post )
+                       frame = new MediaFrame.Post( attributes );
+
+               delete attributes.frame;
+
+               return frame;
+       };
+
+       _.extend( media, { model: {}, view: {}, controller: {}, frames: {} });
+
+       // Link any localized strings.
+       l10n = media.model.l10n = typeof _wpMediaModelsL10n === 'undefined' ? {} : _wpMediaModelsL10n;
+
+       // Link any settings.
+       media.model.settings = l10n.settings || {};
+       delete l10n.settings;
+
+       /**
+        * ========================================================================
+        * UTILITIES
+        * ========================================================================
+        */
+
+       /**
+        * A basic comparator.
+        *
+        * @param  {mixed}  a  The primary parameter to compare.
+        * @param  {mixed}  b  The primary parameter to compare.
+        * @param  {string} ac The fallback parameter to compare, a's cid.
+        * @param  {string} bc The fallback parameter to compare, b's cid.
+        * @return {number}    -1: a should come before b.
+        *                      0: a and b are of the same rank.
+        *                      1: b should come before a.
+        */
+       compare = function( a, b, ac, bc ) {
+               if ( _.isEqual( a, b ) )
+                       return ac === bc ? 0 : (ac > bc ? -1 : 1);
+               else
+                       return a > b ? -1 : 1;
+       };
+
+       _.extend( media, {
+               /**
+                * media.template( id )
+                *
+                * Fetches a template by id.
+                *
+                * @param  {string} id   A string that corresponds to a DOM element with an id prefixed with "tmpl-".
+                *                       For example, "attachment" maps to "tmpl-attachment".
+                * @return {function}    A function that lazily-compiles the template requested.
+                */
+               template: _.memoize( function( id ) {
+                       var compiled,
+                               options = {
+                                       evaluate:    /<#([\s\S]+?)#>/g,
+                                       interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
+                                       escape:      /\{\{([^\}]+?)\}\}(?!\})/g,
+                                       variable:    'data'
+                               };
+
+                       return function( data ) {
+                               compiled = compiled || _.template( $( '#tmpl-' + id ).html(), null, options );
+                               return compiled( data );
+                       };
+               }),
+
+               /**
+                * media.post( [action], [data] )
+                *
+                * Sends a POST request to WordPress.
+                *
+                * @param  {string} action The slug of the action to fire in WordPress.
+                * @param  {object} data   The data to populate $_POST with.
+                * @return {$.promise}     A jQuery promise that represents the request.
+                */
+               post: function( action, data ) {
+                       return media.ajax({
+                               data: _.isObject( action ) ? action : _.extend( data || {}, { action: action })
+                       });
+               },
+
+               /**
+                * media.ajax( [action], [options] )
+                *
+                * Sends a POST request to WordPress.
+                *
+                * @param  {string} action  The slug of the action to fire in WordPress.
+                * @param  {object} options The options passed to jQuery.ajax.
+                * @return {$.promise}      A jQuery promise that represents the request.
+                */
+               ajax: function( action, options ) {
+                       if ( _.isObject( action ) ) {
+                               options = action;
+                       } else {
+                               options = options || {};
+                               options.data = _.extend( options.data || {}, { action: action });
+                       }
+
+                       options = _.defaults( options || {}, {
+                               type:    'POST',
+                               url:     media.model.settings.ajaxurl,
+                               context: this
+                       });
+
+                       return $.Deferred( function( deferred ) {
+                               // Transfer success/error callbacks.
+                               if ( options.success )
+                                       deferred.done( options.success );
+                               if ( options.error )
+                                       deferred.fail( options.error );
+
+                               delete options.success;
+                               delete options.error;
+
+                               // Use with PHP's wp_send_json_success() and wp_send_json_error()
+                               $.ajax( options ).done( function( response ) {
+                                       // Treat a response of `1` as successful for backwards
+                                       // compatibility with existing handlers.
+                                       if ( response === '1' || response === 1 )
+                                               response = { success: true };
+
+                                       if ( _.isObject( response ) && ! _.isUndefined( response.success ) )
+                                               deferred[ response.success ? 'resolveWith' : 'rejectWith' ]( this, [response.data] );
+                                       else
+                                               deferred.rejectWith( this, [response] );
+                               }).fail( function() {
+                                       deferred.rejectWith( this, arguments );
+                               });
+                       }).promise();
+               },
+
+               // Scales a set of dimensions to fit within bounding dimensions.
+               fit: function( dimensions ) {
+                       var width     = dimensions.width,
+                               height    = dimensions.height,
+                               maxWidth  = dimensions.maxWidth,
+                               maxHeight = dimensions.maxHeight,
+                               constraint;
+
+                       // Compare ratios between the two values to determine which
+                       // max to constrain by. If a max value doesn't exist, then the
+                       // opposite side is the constraint.
+                       if ( ! _.isUndefined( maxWidth ) && ! _.isUndefined( maxHeight ) ) {
+                               constraint = ( width / height > maxWidth / maxHeight ) ? 'width' : 'height';
+                       } else if ( _.isUndefined( maxHeight ) ) {
+                               constraint = 'width';
+                       } else if (  _.isUndefined( maxWidth ) && height > maxHeight ) {
+                               constraint = 'height';
+                       }
+
+                       // If the value of the constrained side is larger than the max,
+                       // then scale the values. Otherwise return the originals; they fit.
+                       if ( 'width' === constraint && width > maxWidth ) {
+                               return {
+                                       width : maxWidth,
+                                       height: Math.round( maxWidth * height / width )
+                               };
+                       } else if ( 'height' === constraint && height > maxHeight ) {
+                               return {
+                                       width : Math.round( maxHeight * width / height ),
+                                       height: maxHeight
+                               };
+                       } else {
+                               return {
+                                       width : width,
+                                       height: height
+                               };
+                       }
+               },
+
+               // Truncates a string by injecting an ellipsis into the middle.
+               // Useful for filenames.
+               truncate: function( string, length, replacement ) {
+                       length = length || 30;
+                       replacement = replacement || '&hellip;';
+
+                       if ( string.length <= length )
+                               return string;
+
+                       return string.substr( 0, length / 2 ) + replacement + string.substr( -1 * length / 2 );
+               }
+       });
+
+
+       /**
+        * ========================================================================
+        * MODELS
+        * ========================================================================
+        */
+
+        /**
+         * wp.media.attachment
+         */
+        media.attachment = function( id ) {
+               return Attachment.get( id );
+        };
+
+       /**
+        * wp.media.model.Attachment
+        */
+       Attachment = media.model.Attachment = Backbone.Model.extend({
+               sync: function( method, model, options ) {
+                       // If the attachment does not yet have an `id`, return an instantly
+                       // rejected promise. Otherwise, all of our requests will fail.
+                       if ( _.isUndefined( this.id ) )
+                               return $.Deferred().rejectWith( this ).promise();
+
+                       // Overload the `read` request so Attachment.fetch() functions correctly.
+                       if ( 'read' === method ) {
+                               options = options || {};
+                               options.context = this;
+                               options.data = _.extend( options.data || {}, {
+                                       action: 'get-attachment',
+                                       id: this.id
+                               });
+                               return media.ajax( options );
+
+                       // Overload the `update` request so properties can be saved.
+                       } else if ( 'update' === method ) {
+                               // If we do not have the necessary nonce, fail immeditately.
+                               if ( ! this.get('nonces') || ! this.get('nonces').update )
+                                       return $.Deferred().rejectWith( this ).promise();
+
+                               options = options || {};
+                               options.context = this;
+
+                               // Set the action and ID.
+                               options.data = _.extend( options.data || {}, {
+                                       action:  'save-attachment',
+                                       id:      this.id,
+                                       nonce:   this.get('nonces').update,
+                                       post_id: media.model.settings.post.id
+                               });
+
+                               // Record the values of the changed attributes.
+                               if ( options.changes ) {
+                                       _.each( options.changes, function( value, key ) {
+                                               options.changes[ key ] = this.get( key );
+                                       }, this );
+
+                                       options.data.changes = options.changes;
+                                       delete options.changes;
+                               }
+
+                               return media.ajax( options );
+
+                       // Overload the `delete` request so attachments can be removed.
+                       // This will permanently delete an attachment.
+                       } else if ( 'delete' === method ) {
+                               options = options || {};
+
+                               if ( ! options.wait )
+                                       this.destroyed = true;
+
+                               options.context = this;
+                               options.data = _.extend( options.data || {}, {
+                                       action:   'delete-post',
+                                       id:       this.id,
+                                       _wpnonce: this.get('nonces')['delete']
+                               });
+
+                               return media.ajax( options ).done( function() {
+                                       this.destroyed = true;
+                               }).fail( function() {
+                                       this.destroyed = false;
+                               });
+                       }
+               },
+
+               parse: function( resp, xhr ) {
+                       if ( ! resp )
+                               return resp;
+
+                       // Convert date strings into Date objects.
+                       resp.date = new Date( resp.date );
+                       resp.modified = new Date( resp.modified );
+                       return resp;
+               },
+
+               saveCompat: function( data, options ) {
+                       var model = this;
+
+                       // If we do not have the necessary nonce, fail immeditately.
+                       if ( ! this.get('nonces') || ! this.get('nonces').update )
+                               return $.Deferred().rejectWith( this ).promise();
+
+                       return media.post( 'save-attachment-compat', _.defaults({
+                               id:      this.id,
+                               nonce:   this.get('nonces').update,
+                               post_id: media.model.settings.post.id
+                       }, data ) ).done( function( resp, status, xhr ) {
+                               model.set( model.parse( resp, xhr ), options );
+                       });
+               }
+       }, {
+               create: function( attrs ) {
+                       return Attachments.all.push( attrs );
+               },
+
+               get: _.memoize( function( id, attachment ) {
+                       return Attachments.all.push( attachment || { id: id } );
+               })
+       });
+
+       /**
+        * wp.media.model.Attachments
+        */
+       Attachments = media.model.Attachments = Backbone.Collection.extend({
+               model: Attachment,
+
+               initialize: function( models, options ) {
+                       options = options || {};
+
+                       this.props   = new Backbone.Model();
+                       this.filters = options.filters || {};
+
+                       // Bind default `change` events to the `props` model.
+                       this.props.on( 'change', this._changeFilteredProps, this );
+
+                       this.props.on( 'change:order',   this._changeOrder,   this );
+                       this.props.on( 'change:orderby', this._changeOrderby, this );
+                       this.props.on( 'change:query',   this._changeQuery,   this );
+
+                       // Set the `props` model and fill the default property values.
+                       this.props.set( _.defaults( options.props || {} ) );
+
+                       // Observe another `Attachments` collection if one is provided.
+                       if ( options.observe )
+                               this.observe( options.observe );
+               },
+
+               // Automatically sort the collection when the order changes.
+               _changeOrder: function( model, order ) {
+                       if ( this.comparator )
+                               this.sort();
+               },
+
+               // Set the default comparator only when the `orderby` property is set.
+               _changeOrderby: function( model, orderby ) {
+                       // If a different comparator is defined, bail.
+                       if ( this.comparator && this.comparator !== Attachments.comparator )
+                               return;
+
+                       if ( orderby && 'post__in' !== orderby )
+                               this.comparator = Attachments.comparator;
+                       else
+                               delete this.comparator;
+               },
+
+               // If the `query` property is set to true, query the server using
+               // the `props` values, and sync the results to this collection.
+               _changeQuery: function( model, query ) {
+                       if ( query ) {
+                               this.props.on( 'change', this._requery, this );
+                               this._requery();
+                       } else {
+                               this.props.off( 'change', this._requery, this );
+                       }
+               },
+
+               _changeFilteredProps: function( model, options ) {
+                       // If this is a query, updating the collection will be handled by
+                       // `this._requery()`.
+                       if ( this.props.get('query') )
+                               return;
+
+                       var changed = _.chain( options.changes ).map( function( t, prop ) {
+                               var filter = Attachments.filters[ prop ],
+                                       term = model.get( prop );
+
+                               if ( ! filter )
+                                       return;
+
+                               if ( term && ! this.filters[ prop ] )
+                                       this.filters[ prop ] = filter;
+                               else if ( ! term && this.filters[ prop ] === filter )
+                                       delete this.filters[ prop ];
+                               else
+                                       return;
+
+                               // Record the change.
+                               return true;
+                       }, this ).any().value();
+
+                       if ( ! changed )
+                               return;
+
+                       // If no `Attachments` model is provided to source the searches
+                       // from, then automatically generate a source from the existing
+                       // models.
+                       if ( ! this._source )
+                               this._source = new Attachments( this.models );
+
+                       this.reset( this._source.filter( this.validator, this ) );
+               },
+
+               validateDestroyed: false,
+
+               validator: function( attachment ) {
+                       if ( ! this.validateDestroyed && attachment.destroyed )
+                               return false;
+                       return _.all( this.filters, function( filter, key ) {
+                               return !! filter.call( this, attachment );
+                       }, this );
+               },
+
+               validate: function( attachment, options ) {
+                       var valid = this.validator( attachment ),
+                               hasAttachment = !! this.getByCid( attachment.cid );
+
+                       if ( ! valid && hasAttachment )
+                               this.remove( attachment, options );
+                       else if ( valid && ! hasAttachment )
+                               this.add( attachment, options );
+
+                       return this;
+               },
+
+               validateAll: function( attachments, options ) {
+                       options = options || {};
+
+                       _.each( attachments.models, function( attachment ) {
+                               this.validate( attachment, { silent: true });
+                       }, this );
+
+                       if ( ! options.silent )
+                               this.trigger( 'reset', this, options );
+
+                       return this;
+               },
+
+               observe: function( attachments ) {
+                       this.observers = this.observers || [];
+                       this.observers.push( attachments );
+
+                       attachments.on( 'add change remove', this._validateHandler, this );
+                       attachments.on( 'reset', this._validateAllHandler, this );
+
+                       this.validateAll( attachments );
+                       return this;
+               },
+
+               unobserve: function( attachments ) {
+                       if ( attachments ) {
+                               attachments.off( null, null, this );
+                               this.observers = _.without( this.observers, attachments );
+
+                       } else {
+                               _.each( this.observers, function( attachments ) {
+                                       attachments.off( null, null, this );
+                               }, this );
+                               delete this.observers;
+                       }
+
+                       return this;
+               },
+
+               _validateHandler: function( attachment, attachments, options ) {
+                       // If we're not mirroring this `attachments` collection,
+                       // only retain the `silent` option.
+                       options = attachments === this.mirroring ? options : {
+                               silent: options && options.silent
+                       };
+
+                       return this.validate( attachment, options );
+               },
+
+               _validateAllHandler: function( attachments, options ) {
+                       return this.validateAll( attachments, options );
+               },
+
+               mirror: function( attachments ) {
+                       if ( this.mirroring && this.mirroring === attachments )
+                               return this;
+
+                       this.unmirror();
+                       this.mirroring = attachments;
+
+                       // Clear the collection silently. A `reset` event will be fired
+                       // when `observe()` calls `validateAll()`.
+                       this.reset( [], { silent: true } );
+                       this.observe( attachments );
+
+                       return this;
+               },
+
+               unmirror: function() {
+                       if ( ! this.mirroring )
+                               return;
+
+                       this.unobserve( this.mirroring );
+                       delete this.mirroring;
+               },
+
+               more: function( options ) {
+                       var deferred = $.Deferred(),
+                               mirroring = this.mirroring,
+                               attachments = this;
+
+                       if ( ! mirroring || ! mirroring.more )
+                               return deferred.resolveWith( this ).promise();
+
+                       // If we're mirroring another collection, forward `more` to
+                       // the mirrored collection. Account for a race condition by
+                       // checking if we're still mirroring that collection when
+                       // the request resolves.
+                       mirroring.more( options ).done( function() {
+                               if ( this === attachments.mirroring )
+                                       deferred.resolveWith( this );
+                       });
+
+                       return deferred.promise();
+               },
+
+               hasMore: function() {
+                       return this.mirroring ? this.mirroring.hasMore() : false;
+               },
+
+               parse: function( resp, xhr ) {
+                       return _.map( resp, function( attrs ) {
+                               var attachment = Attachment.get( attrs.id );
+                               return attachment.set( attachment.parse( attrs, xhr ) );
+                       });
+               },
+
+               _requery: function() {
+                       if ( this.props.get('query') )
+                               this.mirror( Query.get( this.props.toJSON() ) );
+               },
+
+               // If this collection is sorted by `menuOrder`, recalculates and saves
+               // the menu order to the database.
+               saveMenuOrder: function() {
+                       if ( 'menuOrder' !== this.props.get('orderby') )
+                               return;
+
+                       // Removes any uploading attachments, updates each attachment's
+                       // menu order, and returns an object with an { id: menuOrder }
+                       // mapping to pass to the request.
+                       var attachments = this.chain().filter( function( attachment ) {
+                               return ! _.isUndefined( attachment.id );
+                       }).map( function( attachment, index ) {
+                               // Indices start at 1.
+                               index = index + 1;
+                               attachment.set( 'menuOrder', index );
+                               return [ attachment.id, index ];
+                       }).object().value();
+
+                       if ( _.isEmpty( attachments ) )
+                               return;
+
+                       return media.post( 'save-attachment-order', {
+                               nonce:       media.model.settings.post.nonce,
+                               post_id:     media.model.settings.post.id,
+                               attachments: attachments
+                       });
+               }
+       }, {
+               comparator: function( a, b, options ) {
+                       var key   = this.props.get('orderby'),
+                               order = this.props.get('order') || 'DESC',
+                               ac    = a.cid,
+                               bc    = b.cid;
+
+                       a = a.get( key );
+                       b = b.get( key );
+
+                       if ( 'date' === key || 'modified' === key ) {
+                               a = a || new Date();
+                               b = b || new Date();
+                       }
+
+                       // If `options.ties` is set, don't enforce the `cid` tiebreaker.
+                       if ( options && options.ties )
+                               ac = bc = null;
+
+                       return ( 'DESC' === order ) ? compare( a, b, ac, bc ) : compare( b, a, bc, ac );
+               },
+
+               filters: {
+                       // Note that this client-side searching is *not* equivalent
+                       // to our server-side searching.
+                       search: function( attachment ) {
+                               if ( ! this.props.get('search') )
+                                       return true;
+
+                               return _.any(['title','filename','description','caption','name'], function( key ) {
+                                       var value = attachment.get( key );
+                                       return value && -1 !== value.search( this.props.get('search') );
+                               }, this );
+                       },
+
+                       type: function( attachment ) {
+                               var type = this.props.get('type');
+                               return ! type || -1 !== type.indexOf( attachment.get('type') );
+                       },
+
+                       uploadedTo: function( attachment ) {
+                               var uploadedTo = this.props.get('uploadedTo');
+                               if ( _.isUndefined( uploadedTo ) )
+                                       return true;
+
+                               return uploadedTo === attachment.get('uploadedTo');
+                       }
+               }
+       });
+
+       Attachments.all = new Attachments();
+
+       /**
+        * wp.media.query
+        */
+       media.query = function( props ) {
+               return new Attachments( null, {
+                       props: _.extend( _.defaults( props || {}, { orderby: 'date' } ), { query: true } )
+               });
+       };
+
+       /**
+        * wp.media.model.Query
+        *
+        * A set of attachments that corresponds to a set of consecutively paged
+        * queries on the server.
+        *
+        * Note: Do NOT change this.args after the query has been initialized.
+        *       Things will break.
+        */
+       Query = media.model.Query = Attachments.extend({
+               initialize: function( models, options ) {
+                       var allowed;
+
+                       options = options || {};
+                       Attachments.prototype.initialize.apply( this, arguments );
+
+                       this.args     = options.args;
+                       this._hasMore = true;
+                       this.created  = new Date();
+
+                       this.filters.order = function( attachment ) {
+                               var orderby = this.props.get('orderby'),
+                                       order = this.props.get('order');
+
+                               if ( ! this.comparator )
+                                       return true;
+
+                               // We want any items that can be placed before the last
+                               // item in the set. If we add any items after the last
+                               // item, then we can't guarantee the set is complete.
+                               if ( this.length ) {
+                                       return 1 !== this.comparator( attachment, this.last(), { ties: true });
+
+                               // Handle the case where there are no items yet and
+                               // we're sorting for recent items. In that case, we want
+                               // changes that occurred after we created the query.
+                               } else if ( 'DESC' === order && ( 'date' === orderby || 'modified' === orderby ) ) {
+                                       return attachment.get( orderby ) >= this.created;
+
+                               // If we're sorting by menu order and we have no items,
+                               // accept any items that have the default menu order (0).
+                               } else if ( 'ASC' === order && 'menuOrder' === orderby ) {
+                                       return attachment.get( orderby ) === 0;
+                               }
+
+                               // Otherwise, we don't want any items yet.
+                               return false;
+                       };
+
+                       // Observe the central `wp.Uploader.queue` collection to watch for
+                       // new matches for the query.
+                       //
+                       // Only observe when a limited number of query args are set. There
+                       // are no filters for other properties, so observing will result in
+                       // false positives in those queries.
+                       allowed = [ 's', 'order', 'orderby', 'posts_per_page', 'post_mime_type', 'post_parent' ];
+                       if ( wp.Uploader && _( this.args ).chain().keys().difference( allowed ).isEmpty().value() )
+                               this.observe( wp.Uploader.queue );
+               },
+
+               hasMore: function() {
+                       return this._hasMore;
+               },
+
+               more: function( options ) {
+                       var query = this;
+
+                       if ( this._more && 'pending' === this._more.state() )
+                               return this._more;
+
+                       if ( ! this.hasMore() )
+                               return $.Deferred().resolveWith( this ).promise();
+
+                       options = options || {};
+                       options.add = true;
+
+                       return this._more = this.fetch( options ).done( function( resp ) {
+                               if ( _.isEmpty( resp ) || -1 === this.args.posts_per_page || resp.length < this.args.posts_per_page )
+                                       query._hasMore = false;
+                       });
+               },
+
+               sync: function( method, model, options ) {
+                       var fallback;
+
+                       // Overload the read method so Attachment.fetch() functions correctly.
+                       if ( 'read' === method ) {
+                               options = options || {};
+                               options.context = this;
+                               options.data = _.extend( options.data || {}, {
+                                       action:  'query-attachments',
+                                       post_id: media.model.settings.post.id
+                               });
+
+                               // Clone the args so manipulation is non-destructive.
+                               args = _.clone( this.args );
+
+                               // Determine which page to query.
+                               if ( -1 !== args.posts_per_page )
+                                       args.paged = Math.floor( this.length / args.posts_per_page ) + 1;
+
+                               options.data.query = args;
+                               return media.ajax( options );
+
+                       // Otherwise, fall back to Backbone.sync()
+                       } else {
+                               fallback = Attachments.prototype.sync ? Attachments.prototype : Backbone;
+                               return fallback.sync.apply( this, arguments );
+                       }
+               }
+       }, {
+               defaultProps: {
+                       orderby: 'date',
+                       order:   'DESC'
+               },
+
+               defaultArgs: {
+                       posts_per_page: 40
+               },
+
+               orderby: {
+                       allowed:  [ 'name', 'author', 'date', 'title', 'modified', 'uploadedTo', 'id', 'post__in', 'menuOrder' ],
+                       valuemap: {
+                               'id':         'ID',
+                               'uploadedTo': 'parent',
+                               'menuOrder':  'menu_order ID'
+                       }
+               },
+
+               propmap: {
+                       'search':    's',
+                       'type':      'post_mime_type',
+                       'perPage':   'posts_per_page',
+                       'menuOrder': 'menu_order',
+                       'uploadedTo': 'post_parent'
+               },
+
+               // Caches query objects so queries can be easily reused.
+               get: (function(){
+                       var queries = [];
+
+                       return function( props, options ) {
+                               var args     = {},
+                                       orderby  = Query.orderby,
+                                       defaults = Query.defaultProps,
+                                       query;
+
+                               // Remove the `query` property. This isn't linked to a query,
+                               // this *is* the query.
+                               delete props.query;
+
+                               // Fill default args.
+                               _.defaults( props, defaults );
+
+                               // Normalize the order.
+                               props.order = props.order.toUpperCase();
+                               if ( 'DESC' !== props.order && 'ASC' !== props.order )
+                                       props.order = defaults.order.toUpperCase();
+
+                               // Ensure we have a valid orderby value.
+                               if ( ! _.contains( orderby.allowed, props.orderby ) )
+                                       props.orderby = defaults.orderby;
+
+                               // Generate the query `args` object.
+                               // Correct any differing property names.
+                               _.each( props, function( value, prop ) {
+                                       if ( _.isNull( value ) )
+                                               return;
+
+                                       args[ Query.propmap[ prop ] || prop ] = value;
+                               });
+
+                               // Fill any other default query args.
+                               _.defaults( args, Query.defaultArgs );
+
+                               // `props.orderby` does not always map directly to `args.orderby`.
+                               // Substitute exceptions specified in orderby.keymap.
+                               args.orderby = orderby.valuemap[ props.orderby ] || props.orderby;
+
+                               // Search the query cache for matches.
+                               query = _.find( queries, function( query ) {
+                                       return _.isEqual( query.args, args );
+                               });
+
+                               // Otherwise, create a new query and add it to the cache.
+                               if ( ! query ) {
+                                       query = new Query( [], _.extend( options || {}, {
+                                               props: props,
+                                               args:  args
+                                       } ) );
+                                       queries.push( query );
+                               }
+
+                               return query;
+                       };
+               }())
+       });
+
+       /**
+        * wp.media.model.Selection
+        *
+        * Used to manage a selection of attachments in the views.
+        */
+       media.model.Selection = Attachments.extend({
+               initialize: function( models, options ) {
+                       Attachments.prototype.initialize.apply( this, arguments );
+                       this.multiple = options && options.multiple;
+
+                       // Refresh the `single` model whenever the selection changes.
+                       // Binds `single` instead of using the context argument to ensure
+                       // it receives no parameters.
+                       this.on( 'add remove reset', _.bind( this.single, this, false ) );
+               },
+
+               // Override the selection's add method.
+               // If the workflow does not support multiple
+               // selected attachments, reset the selection.
+               add: function( models, options ) {
+                       if ( ! this.multiple )
+                               this.remove( this.models );
+
+                       return Attachments.prototype.add.call( this, models, options );
+               },
+
+               single: function( model ) {
+                       var previous = this._single;
+
+                       // If a `model` is provided, use it as the single model.
+                       if ( model )
+                               this._single = model;
+
+                       // If the single model isn't in the selection, remove it.
+                       if ( this._single && ! this.getByCid( this._single.cid ) )
+                               delete this._single;
+
+                       this._single = this._single || this.last();
+
+                       // If single has changed, fire an event.
+                       if ( this._single !== previous ) {
+                               if ( previous ) {
+                                       previous.trigger( 'selection:unsingle', previous, this );
+
+                                       // If the model was already removed, trigger the collection
+                                       // event manually.
+                                       if ( ! this.getByCid( previous.cid ) )
+                                               this.trigger( 'selection:unsingle', previous, this );
+                               }
+                               if ( this._single )
+                                       this._single.trigger( 'selection:single', this._single, this );
+                       }
+
+                       // Return the single model, or the last model as a fallback.
+                       return this._single;
+               }
+       });
+
+       // Clean up. Prevents mobile browsers caching
+       $(window).on('unload', function(){
+               window.wp = null;
+       });
+
+}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-models.min.js b/wp-includes/js/media-models.min.js
new file mode 100644 (file)
index 0000000..9acf775
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(f){var d,c,a,e,b,g;g=wp.media=function(h){var i=g.view.MediaFrame,j;if(!i){return}h=_.defaults(h||{},{frame:"select"});if("select"===h.frame&&i.Select){j=new i.Select(h)}else{if("post"===h.frame&&i.Post){j=new i.Post(h)}}delete h.frame;return j};_.extend(g,{model:{},view:{},controller:{},frames:{}});b=g.model.l10n=typeof _wpMediaModelsL10n==="undefined"?{}:_wpMediaModelsL10n;g.model.settings=b.settings||{};delete b.settings;e=function(i,h,j,k){if(_.isEqual(i,h)){return j===k?0:(j>k?-1:1)}else{return i>h?-1:1}};_.extend(g,{template:_.memoize(function(j){var i,h={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(k){i=i||_.template(f("#tmpl-"+j).html(),null,h);return i(k)}}),post:function(i,h){return g.ajax({data:_.isObject(i)?i:_.extend(h||{},{action:i})})},ajax:function(i,h){if(_.isObject(i)){h=i}else{h=h||{};h.data=_.extend(h.data||{},{action:i})}h=_.defaults(h||{},{type:"POST",url:g.model.settings.ajaxurl,context:this});return f.Deferred(function(j){if(h.success){j.done(h.success)}if(h.error){j.fail(h.error)}delete h.success;delete h.error;f.ajax(h).done(function(k){if(k==="1"||k===1){k={success:true}}if(_.isObject(k)&&!_.isUndefined(k.success)){j[k.success?"resolveWith":"rejectWith"](this,[k.data])}else{j.rejectWith(this,[k])}}).fail(function(){j.rejectWith(this,arguments)})}).promise()},fit:function(l){var i=l.width,h=l.height,k=l.maxWidth,j=l.maxHeight,m;if(!_.isUndefined(k)&&!_.isUndefined(j)){m=(i/h>k/j)?"width":"height"}else{if(_.isUndefined(j)){m="width"}else{if(_.isUndefined(k)&&h>j){m="height"}}}if("width"===m&&i>k){return{width:k,height:Math.round(k*h/i)}}else{if("height"===m&&h>j){return{width:Math.round(j*i/h),height:j}}else{return{width:i,height:h}}}},truncate:function(h,j,i){j=j||30;i=i||"&hellip;";if(h.length<=j){return h}return h.substr(0,j/2)+i+h.substr(-1*j/2)}});g.attachment=function(h){return d.get(h)};d=g.model.Attachment=Backbone.Model.extend({sync:function(j,i,h){if(_.isUndefined(this.id)){return f.Deferred().rejectWith(this).promise()}if("read"===j){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"get-attachment",id:this.id});return g.ajax(h)}else{if("update"===j){if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"save-attachment",id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id});if(h.changes){_.each(h.changes,function(l,k){h.changes[k]=this.get(k)},this);h.data.changes=h.changes;delete h.changes}return g.ajax(h)}else{if("delete"===j){h=h||{};if(!h.wait){this.destroyed=true}h.context=this;h.data=_.extend(h.data||{},{action:"delete-post",id:this.id,_wpnonce:this.get("nonces")["delete"]});return g.ajax(h).done(function(){this.destroyed=true}).fail(function(){this.destroyed=false})}}}},parse:function(i,h){if(!i){return i}i.date=new Date(i.date);i.modified=new Date(i.modified);return i},saveCompat:function(j,i){var h=this;if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}return g.post("save-attachment-compat",_.defaults({id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id},j)).done(function(m,k,l){h.set(h.parse(m,l),i)})}},{create:function(h){return c.all.push(h)},get:_.memoize(function(i,h){return c.all.push(h||{id:i})})});c=g.model.Attachments=Backbone.Collection.extend({model:d,initialize:function(i,h){h=h||{};this.props=new Backbone.Model();this.filters=h.filters||{};this.props.on("change",this._changeFilteredProps,this);this.props.on("change:order",this._changeOrder,this);this.props.on("change:orderby",this._changeOrderby,this);this.props.on("change:query",this._changeQuery,this);this.props.set(_.defaults(h.props||{}));if(h.observe){this.observe(h.observe)}},_changeOrder:function(i,h){if(this.comparator){this.sort()}},_changeOrderby:function(h,i){if(this.comparator&&this.comparator!==c.comparator){return}if(i&&"post__in"!==i){this.comparator=c.comparator}else{delete this.comparator}},_changeQuery:function(h,i){if(i){this.props.on("change",this._requery,this);this._requery()}else{this.props.off("change",this._requery,this)}},_changeFilteredProps:function(i,h){if(this.props.get("query")){return}var j=_.chain(h.changes).map(function(l,n){var m=c.filters[n],k=i.get(n);if(!m){return}if(k&&!this.filters[n]){this.filters[n]=m}else{if(!k&&this.filters[n]===m){delete this.filters[n]}else{return}}return true},this).any().value();if(!j){return}if(!this._source){this._source=new c(this.models)}this.reset(this._source.filter(this.validator,this))},validateDestroyed:false,validator:function(h){if(!this.validateDestroyed&&h.destroyed){return false}return _.all(this.filters,function(j,i){return !!j.call(this,h)},this)},validate:function(k,i){var j=this.validator(k),h=!!this.getByCid(k.cid);if(!j&&h){this.remove(k,i)}else{if(j&&!h){this.add(k,i)}}return this},validateAll:function(h,i){i=i||{};_.each(h.models,function(j){this.validate(j,{silent:true})},this);if(!i.silent){this.trigger("reset",this,i)}return this},observe:function(h){this.observers=this.observers||[];this.observers.push(h);h.on("add change remove",this._validateHandler,this);h.on("reset",this._validateAllHandler,this);this.validateAll(h);return this},unobserve:function(h){if(h){h.off(null,null,this);this.observers=_.without(this.observers,h)}else{_.each(this.observers,function(i){i.off(null,null,this)},this);delete this.observers}return this},_validateHandler:function(j,h,i){i=h===this.mirroring?i:{silent:i&&i.silent};return this.validate(j,i)},_validateAllHandler:function(h,i){return this.validateAll(h,i)},mirror:function(h){if(this.mirroring&&this.mirroring===h){return this}this.unmirror();this.mirroring=h;this.reset([],{silent:true});this.observe(h);return this},unmirror:function(){if(!this.mirroring){return}this.unobserve(this.mirroring);delete this.mirroring},more:function(j){var i=f.Deferred(),k=this.mirroring,h=this;if(!k||!k.more){return i.resolveWith(this).promise()}k.more(j).done(function(){if(this===h.mirroring){i.resolveWith(this)}});return i.promise()},hasMore:function(){return this.mirroring?this.mirroring.hasMore():false},parse:function(i,h){return _.map(i,function(j){var k=d.get(j.id);return k.set(k.parse(j,h))})},_requery:function(){if(this.props.get("query")){this.mirror(a.get(this.props.toJSON()))}},saveMenuOrder:function(){if("menuOrder"!==this.props.get("orderby")){return}var h=this.chain().filter(function(i){return !_.isUndefined(i.id)}).map(function(j,i){i=i+1;j.set("menuOrder",i);return[j.id,i]}).object().value();if(_.isEmpty(h)){return}return g.post("save-attachment-order",{nonce:g.model.settings.post.nonce,post_id:g.model.settings.post.id,attachments:h})}},{comparator:function(j,i,k){var l=this.props.get("orderby"),h=this.props.get("order")||"DESC",m=j.cid,n=i.cid;j=j.get(l);i=i.get(l);if("date"===l||"modified"===l){j=j||new Date();i=i||new Date()}if(k&&k.ties){m=n=null}return("DESC"===h)?e(j,i,m,n):e(i,j,n,m)},filters:{search:function(h){if(!this.props.get("search")){return true}return _.any(["title","filename","description","caption","name"],function(i){var j=h.get(i);return j&&-1!==j.search(this.props.get("search"))},this)},type:function(i){var h=this.props.get("type");return !h||-1!==h.indexOf(i.get("type"))},uploadedTo:function(i){var h=this.props.get("uploadedTo");if(_.isUndefined(h)){return true}return h===i.get("uploadedTo")}}});c.all=new c();g.query=function(h){return new c(null,{props:_.extend(_.defaults(h||{},{orderby:"date"}),{query:true})})};a=g.model.Query=c.extend({initialize:function(j,h){var i;h=h||{};c.prototype.initialize.apply(this,arguments);this.args=h.args;this._hasMore=true;this.created=new Date();this.filters.order=function(m){var l=this.props.get("orderby"),k=this.props.get("order");if(!this.comparator){return true}if(this.length){return 1!==this.comparator(m,this.last(),{ties:true})}else{if("DESC"===k&&("date"===l||"modified"===l)){return m.get(l)>=this.created}else{if("ASC"===k&&"menuOrder"===l){return m.get(l)===0}}}return false};i=["s","order","orderby","posts_per_page","post_mime_type","post_parent"];if(wp.Uploader&&_(this.args).chain().keys().difference(i).isEmpty().value()){this.observe(wp.Uploader.queue)}},hasMore:function(){return this._hasMore},more:function(h){var i=this;if(this._more&&"pending"===this._more.state()){return this._more}if(!this.hasMore()){return f.Deferred().resolveWith(this).promise()}h=h||{};h.add=true;return this._more=this.fetch(h).done(function(j){if(_.isEmpty(j)||-1===this.args.posts_per_page||j.length<this.args.posts_per_page){i._hasMore=false}})},sync:function(k,i,h){var j;if("read"===k){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"query-attachments",post_id:g.model.settings.post.id});args=_.clone(this.args);if(-1!==args.posts_per_page){args.paged=Math.floor(this.length/args.posts_per_page)+1}h.data.query=args;return g.ajax(h)}else{j=c.prototype.sync?c.prototype:Backbone;return j.sync.apply(this,arguments)}}},{defaultProps:{orderby:"date",order:"DESC"},defaultArgs:{posts_per_page:40},orderby:{allowed:["name","author","date","title","modified","uploadedTo","id","post__in","menuOrder"],valuemap:{id:"ID",uploadedTo:"parent",menuOrder:"menu_order ID"}},propmap:{search:"s",type:"post_mime_type",perPage:"posts_per_page",menuOrder:"menu_order",uploadedTo:"post_parent"},get:(function(){var h=[];return function(k,j){var i={},m=a.orderby,n=a.defaultProps,l;delete k.query;_.defaults(k,n);k.order=k.order.toUpperCase();if("DESC"!==k.order&&"ASC"!==k.order){k.order=n.order.toUpperCase()}if(!_.contains(m.allowed,k.orderby)){k.orderby=n.orderby}_.each(k,function(o,p){if(_.isNull(o)){return}i[a.propmap[p]||p]=o});_.defaults(i,a.defaultArgs);i.orderby=m.valuemap[k.orderby]||k.orderby;l=_.find(h,function(o){return _.isEqual(o.args,i)});if(!l){l=new a([],_.extend(j||{},{props:k,args:i}));h.push(l)}return l}}())});g.model.Selection=c.extend({initialize:function(i,h){c.prototype.initialize.apply(this,arguments);this.multiple=h&&h.multiple;this.on("add remove reset",_.bind(this.single,this,false))},add:function(i,h){if(!this.multiple){this.remove(this.models)}return c.prototype.add.call(this,i,h)},single:function(h){var i=this._single;if(h){this._single=h}if(this._single&&!this.getByCid(this._single.cid)){delete this._single}this._single=this._single||this.last();if(this._single!==i){if(i){i.trigger("selection:unsingle",i,this);if(!this.getByCid(i.cid)){this.trigger("selection:unsingle",i,this)}}if(this._single){this._single.trigger("selection:single",this._single,this)}}return this._single}});f(window).on("unload",function(){window.wp=null})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-views.js b/wp-includes/js/media-views.js
new file mode 100644 (file)
index 0000000..6ce8470
--- /dev/null
@@ -0,0 +1,4289 @@
+(function($){
+       var media       = wp.media,
+               Attachment  = media.model.Attachment,
+               Attachments = media.model.Attachments,
+               Query       = media.model.Query,
+               l10n;
+
+       // Link any localized strings.
+       l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
+
+       // Link any settings.
+       media.view.settings = l10n.settings || {};
+       delete l10n.settings;
+
+       // Copy the `post` setting over to the model settings.
+       media.model.settings.post = media.view.settings.post;
+
+       // Check if the browser supports CSS 3.0 transitions
+       $.support.transition = (function(){
+               var style = document.documentElement.style,
+                       transitions = {
+                               WebkitTransition: 'webkitTransitionEnd',
+                               MozTransition:    'transitionend',
+                               OTransition:      'oTransitionEnd otransitionend',
+                               transition:       'transitionend'
+                       }, transition;
+
+               transition = _.find( _.keys( transitions ), function( transition ) {
+                       return ! _.isUndefined( style[ transition ] );
+               });
+
+               return transition && {
+                       end: transitions[ transition ]
+               };
+       }());
+
+       // Makes it easier to bind events using transitions.
+       media.transition = function( selector, sensitivity ) {
+               var deferred = $.Deferred();
+
+               sensitivity = sensitivity || 2000;
+
+               if ( $.support.transition ) {
+                       if ( ! (selector instanceof $) )
+                               selector = $( selector );
+
+                       // Resolve the deferred when the first element finishes animating.
+                       selector.first().one( $.support.transition.end, deferred.resolve );
+
+                       // Just in case the event doesn't trigger, fire a callback.
+                       _.delay( deferred.resolve, sensitivity );
+
+               // Otherwise, execute on the spot.
+               } else {
+                       deferred.resolve();
+               }
+
+               return deferred.promise();
+       };
+
+       /**
+        * ========================================================================
+        * CONTROLLERS
+        * ========================================================================
+        */
+
+       /**
+        * wp.media.controller.Region
+        */
+       media.controller.Region = function( options ) {
+               _.extend( this, _.pick( options || {}, 'id', 'view', 'selector' ) );
+       };
+
+       // Use Backbone's self-propagating `extend` inheritance method.
+       media.controller.Region.extend = Backbone.Model.extend;
+
+       _.extend( media.controller.Region.prototype, {
+               mode: function( mode ) {
+                       if ( ! mode )
+                               return this._mode;
+
+                       // Bail if we're trying to change to the current mode.
+                       if ( mode === this._mode )
+                               return this;
+
+                       this.trigger('deactivate');
+                       this._mode = mode;
+                       this.render( mode );
+                       this.trigger('activate');
+                       return this;
+               },
+
+               render: function( mode ) {
+                       // If no mode is provided, just re-render the current mode.
+                       // If the provided mode isn't active, perform a full switch.
+                       if ( mode && mode !== this._mode )
+                               return this.mode( mode );
+
+                       var set = { view: null },
+                               view;
+
+                       this.trigger( 'create', set );
+                       view = set.view;
+                       this.trigger( 'render', view );
+                       if ( view )
+                               this.set( view );
+                       return this;
+               },
+
+               get: function() {
+                       return this.view.views.first( this.selector );
+               },
+
+               set: function( views, options ) {
+                       if ( options )
+                               options.add = false;
+                       return this.view.views.set( this.selector, views, options );
+               },
+
+               trigger: function( event ) {
+                       var base;
+                       if ( ! this._mode )
+                               return;
+
+                       var args = _.toArray( arguments );
+                       base = this.id + ':' + event;
+
+                       // Trigger `region:action:mode` event.
+                       args[0] = base + ':' + this._mode;
+                       this.view.trigger.apply( this.view, args );
+
+                       // Trigger `region:action` event.
+                       args[0] = base;
+                       this.view.trigger.apply( this.view, args );
+                       return this;
+               }
+       });
+
+       /**
+        * wp.media.controller.StateMachine
+        */
+       media.controller.StateMachine = function( states ) {
+               this.states = new Backbone.Collection( states );
+       };
+
+       // Use Backbone's self-propagating `extend` inheritance method.
+       media.controller.StateMachine.extend = Backbone.Model.extend;
+
+       // Add events to the `StateMachine`.
+       _.extend( media.controller.StateMachine.prototype, Backbone.Events, {
+
+               // Fetch a state.
+               //
+               // If no `id` is provided, returns the active state.
+               //
+               // Implicitly creates states.
+               state: function( id ) {
+                       // Ensure that the `states` collection exists so the `StateMachine`
+                       // can be used as a mixin.
+                       this.states = this.states || new Backbone.Collection();
+
+                       // Default to the active state.
+                       id = id || this._state;
+
+                       if ( id && ! this.states.get( id ) )
+                               this.states.add({ id: id });
+                       return this.states.get( id );
+               },
+
+               // Sets the active state.
+               setState: function( id ) {
+                       var previous = this.state();
+
+                       // Bail if we're trying to select the current state, if we haven't
+                       // created the `states` collection, or are trying to select a state
+                       // that does not exist.
+                       if ( ( previous && id === previous.id ) || ! this.states || ! this.states.get( id ) )
+                               return this;
+
+                       if ( previous ) {
+                               previous.trigger('deactivate');
+                               this._lastState = previous.id;
+                       }
+
+                       this._state = id;
+                       this.state().trigger('activate');
+
+                       return this;
+               },
+
+               // Returns the previous active state.
+               //
+               // Call the `state()` method with no parameters to retrieve the current
+               // active state.
+               lastState: function() {
+                       if ( this._lastState )
+                               return this.state( this._lastState );
+               }
+       });
+
+       // Map methods from the `states` collection to the `StateMachine` itself.
+       _.each([ 'on', 'off', 'trigger' ], function( method ) {
+               media.controller.StateMachine.prototype[ method ] = function() {
+                       // Ensure that the `states` collection exists so the `StateMachine`
+                       // can be used as a mixin.
+                       this.states = this.states || new Backbone.Collection();
+                       // Forward the method to the `states` collection.
+                       this.states[ method ].apply( this.states, arguments );
+                       return this;
+               };
+       });
+
+
+       // wp.media.controller.State
+       // ---------------------------
+       media.controller.State = Backbone.Model.extend({
+               constructor: function() {
+                       this.on( 'activate', this._preActivate, this );
+                       this.on( 'activate', this.activate, this );
+                       this.on( 'activate', this._postActivate, this );
+                       this.on( 'deactivate', this._deactivate, this );
+                       this.on( 'deactivate', this.deactivate, this );
+                       this.on( 'reset', this.reset, this );
+                       this.on( 'ready', this._ready, this );
+                       this.on( 'ready', this.ready, this );
+
+                       this.on( 'change:menu', this._updateMenu, this );
+
+                       Backbone.Model.apply( this, arguments );
+               },
+
+               ready: function() {},
+               activate: function() {},
+               deactivate: function() {},
+               reset: function() {},
+
+               _ready: function() {
+                       this._updateMenu();
+               },
+
+               _preActivate: function() {
+                       this.active = true;
+               },
+
+               _postActivate: function() {
+                       this.on( 'change:menu', this._menu, this );
+                       this.on( 'change:titleMode', this._title, this );
+                       this.on( 'change:content', this._content, this );
+                       this.on( 'change:toolbar', this._toolbar, this );
+
+                       this.frame.on( 'title:render:default', this._renderTitle, this );
+
+                       this._title();
+                       this._menu();
+                       this._toolbar();
+                       this._content();
+                       this._router();
+               },
+
+
+               _deactivate: function() {
+                       this.active = false;
+
+                       this.frame.off( 'title:render:default', this._renderTitle, this );
+
+                       this.off( 'change:menu', this._menu, this );
+                       this.off( 'change:titleMode', this._title, this );
+                       this.off( 'change:content', this._content, this );
+                       this.off( 'change:toolbar', this._toolbar, this );
+               },
+
+               _title: function() {
+                       this.frame.title.render( this.get('titleMode') || 'default' );
+               },
+
+               _renderTitle: function( view ) {
+                       view.$el.text( this.get('title') || '' );
+               },
+
+               _router: function() {
+                       var router = this.frame.router,
+                               mode = this.get('router'),
+                               view;
+
+                       this.frame.$el.toggleClass( 'hide-router', ! mode );
+                       if ( ! mode )
+                               return;
+
+                       this.frame.router.render( mode );
+
+                       view = router.get();
+                       if ( view && view.select )
+                               view.select( this.frame.content.mode() );
+               },
+
+               _menu: function() {
+                       var menu = this.frame.menu,
+                               mode = this.get('menu'),
+                               view;
+
+                       if ( ! mode )
+                               return;
+
+                       menu.mode( mode );
+
+                       view = menu.get();
+                       if ( view && view.select )
+                               view.select( this.id );
+               },
+
+               _updateMenu: function() {
+                       var previous = this.previous('menu'),
+                               menu = this.get('menu');
+
+                       if ( previous )
+                               this.frame.off( 'menu:render:' + previous, this._renderMenu, this );
+
+                       if ( menu )
+                               this.frame.on( 'menu:render:' + menu, this._renderMenu, this );
+               },
+
+               _renderMenu: function( view ) {
+                       var menuItem = this.get('menuItem'),
+                               title = this.get('title'),
+                               priority = this.get('priority');
+
+                       if ( ! menuItem && title ) {
+                               menuItem = { text: title };
+
+                               if ( priority )
+                                       menuItem.priority = priority;
+                       }
+
+                       if ( ! menuItem )
+                               return;
+
+                       view.set( this.id, menuItem );
+               }
+       });
+
+       _.each(['toolbar','content'], function( region ) {
+               media.controller.State.prototype[ '_' + region ] = function() {
+                       var mode = this.get( region );
+                       if ( mode )
+                               this.frame[ region ].render( mode );
+               };
+       });
+
+       // wp.media.controller.Library
+       // ---------------------------
+       media.controller.Library = media.controller.State.extend({
+               defaults: {
+                       id:         'library',
+                       multiple:   false, // false, 'add', 'reset'
+                       describe:   false,
+                       toolbar:    'select',
+                       sidebar:    'settings',
+                       content:    'upload',
+                       router:     'browse',
+                       menu:       'default',
+                       searchable: true,
+                       filterable: false,
+                       sortable:   true,
+                       title:      l10n.mediaLibraryTitle,
+
+                       // Uses a user setting to override the content mode.
+                       contentUserSetting: true,
+
+                       // Sync the selection from the last state when 'multiple' matches.
+                       syncSelection: true
+               },
+
+               initialize: function() {
+                       var selection = this.get('selection'),
+                               props;
+
+                       // If a library isn't provided, query all media items.
+                       if ( ! this.get('library') )
+                               this.set( 'library', media.query() );
+
+                       // If a selection instance isn't provided, create one.
+                       if ( ! (selection instanceof media.model.Selection) ) {
+                               props = selection;
+
+                               if ( ! props ) {
+                                       props = this.get('library').props.toJSON();
+                                       props = _.omit( props, 'orderby', 'query' );
+                               }
+
+                               // If the `selection` attribute is set to an object,
+                               // it will use those values as the selection instance's
+                               // `props` model. Otherwise, it will copy the library's
+                               // `props` model.
+                               this.set( 'selection', new media.model.Selection( null, {
+                                       multiple: this.get('multiple'),
+                                       props: props
+                               }) );
+                       }
+
+                       if ( ! this.get('edge') )
+                               this.set( 'edge', 120 );
+
+                       if ( ! this.get('gutter') )
+                               this.set( 'gutter', 8 );
+
+                       this.resetDisplays();
+               },
+
+               activate: function() {
+                       this.syncSelection();
+
+                       wp.Uploader.queue.on( 'add', this.uploading, this );
+
+                       this.get('selection').on( 'add remove reset', this.refreshContent, this );
+
+                       this.on( 'insert', this._insertDisplaySettings, this );
+
+                       if ( this.get('contentUserSetting') ) {
+                               this.frame.on( 'content:activate', this.saveContentMode, this );
+                               this.set( 'content', getUserSetting( 'libraryContent', this.get('content') ) );
+                       }
+               },
+
+               deactivate: function() {
+                       this.recordSelection();
+
+                       this.frame.off( 'content:activate', this.saveContentMode, this );
+
+                       // Unbind all event handlers that use this state as the context
+                       // from the selection.
+                       this.get('selection').off( null, null, this );
+
+                       wp.Uploader.queue.off( null, null, this );
+               },
+
+               reset: function() {
+                       this.get('selection').reset();
+                       this.resetDisplays();
+                       this.refreshContent();
+               },
+
+               resetDisplays: function() {
+                       this._displays = [];
+                       this._defaultDisplaySettings = {
+                               align: getUserSetting( 'align', 'none' ),
+                               size:  getUserSetting( 'imgsize', 'medium' ),
+                               link:  getUserSetting( 'urlbutton', 'post' )
+                       };
+               },
+
+               display: function( attachment ) {
+                       var displays = this._displays;
+
+                       if ( ! displays[ attachment.cid ] )
+                               displays[ attachment.cid ] = new Backbone.Model( this._defaultDisplaySettings );
+
+                       return displays[ attachment.cid ];
+               },
+
+               _insertDisplaySettings: function() {
+                       var selection = this.get('selection'),
+                               display;
+
+                       // If inserting one image, set those display properties as the
+                       // default user setting.
+                       if ( selection.length !== 1 )
+                               return;
+
+                       display = this.display( selection.first() ).toJSON();
+
+                       setUserSetting( 'align', display.align );
+                       setUserSetting( 'imgsize', display.size );
+                       setUserSetting( 'urlbutton', display.link );
+               },
+
+               syncSelection: function() {
+                       var selection = this.get('selection'),
+                               manager = this.frame._selection;
+
+                       if ( ! this.get('syncSelection') || ! manager || ! selection )
+                               return;
+
+                       // If the selection supports multiple items, validate the stored
+                       // attachments based on the new selection's conditions. Record
+                       // the attachments that are not included; we'll maintain a
+                       // reference to those. Other attachments are considered in flux.
+                       if ( selection.multiple ) {
+                               selection.reset( [], { silent: true });
+                               selection.validateAll( manager.attachments );
+                               manager.difference = _.difference( manager.attachments.models, selection.models );
+                       }
+
+                       // Sync the selection's single item with the master.
+                       selection.single( manager.single );
+               },
+
+               recordSelection: function() {
+                       var selection = this.get('selection'),
+                               manager = this.frame._selection,
+                               filtered;
+
+                       if ( ! this.get('syncSelection') || ! manager || ! selection )
+                               return;
+
+                       // Record the currently active attachments, which is a combination
+                       // of the selection's attachments and the set of selected
+                       // attachments that this specific selection considered invalid.
+                       // Reset the difference and record the single attachment.
+                       if ( selection.multiple ) {
+                               manager.attachments.reset( selection.toArray().concat( manager.difference ) );
+                               manager.difference = [];
+                       } else {
+                               manager.attachments.add( selection.toArray() );
+                       }
+
+                       manager.single = selection._single;
+               },
+
+               refreshContent: function() {
+                       var selection = this.get('selection'),
+                               frame = this.frame,
+                               router = frame.router.get(),
+                               mode = frame.content.mode();
+
+                       if ( this.active && ! selection.length && ! router.get( mode ) )
+                               this.frame.content.render( this.get('content') );
+               },
+
+               uploading: function( attachment ) {
+                       var content = this.frame.content;
+
+                       // If the uploader was selected, navigate to the browser.
+                       if ( 'upload' === content.mode() )
+                               this.frame.content.mode('browse');
+
+                       // If we're in a workflow that supports multiple attachments,
+                       // automatically select any uploading attachments.
+                       if ( this.get('multiple') )
+                               this.get('selection').add( attachment );
+               },
+
+               saveContentMode: function() {
+                       // Only track the browse router on library states.
+                       if ( 'browse' !== this.get('router') )
+                               return;
+
+                       var mode = this.frame.content.mode(),
+                               view = this.frame.router.get();
+
+                       if ( view && view.get( mode ) )
+                               setUserSetting( 'libraryContent', mode );
+               }
+       });
+
+       // wp.media.controller.GalleryEdit
+       // -------------------------------
+       media.controller.GalleryEdit = media.controller.Library.extend({
+               defaults: {
+                       id:         'gallery-edit',
+                       multiple:   false,
+                       describe:   true,
+                       edge:       199,
+                       editing:    false,
+                       sortable:   true,
+                       searchable: false,
+                       toolbar:    'gallery-edit',
+                       content:    'browse',
+                       title:      l10n.editGalleryTitle,
+                       priority:   60,
+                       dragInfo:   true,
+
+                       // Don't sync the selection, as the Edit Gallery library
+                       // *is* the selection.
+                       syncSelection: false
+               },
+
+               initialize: function() {
+                       // If we haven't been provided a `library`, create a `Selection`.
+                       if ( ! this.get('library') )
+                               this.set( 'library', new media.model.Selection() );
+
+                       // The single `Attachment` view to be used in the `Attachments` view.
+                       if ( ! this.get('AttachmentView') )
+                               this.set( 'AttachmentView', media.view.Attachment.EditLibrary );
+                       media.controller.Library.prototype.initialize.apply( this, arguments );
+               },
+
+               activate: function() {
+                       var library = this.get('library');
+
+                       // Limit the library to images only.
+                       library.props.set( 'type', 'image' );
+
+                       // Watch for uploaded attachments.
+                       this.get('library').observe( wp.Uploader.queue );
+
+                       this.frame.on( 'content:render:browse', this.gallerySettings, this );
+
+                       media.controller.Library.prototype.activate.apply( this, arguments );
+               },
+
+               deactivate: function() {
+                       // Stop watching for uploaded attachments.
+                       this.get('library').unobserve( wp.Uploader.queue );
+
+                       this.frame.off( 'content:render:browse', this.gallerySettings, this );
+
+                       media.controller.Library.prototype.deactivate.apply( this, arguments );
+               },
+
+               gallerySettings: function( browser ) {
+                       var library = this.get('library');
+
+                       if ( ! library || ! browser )
+                               return;
+
+                       library.gallery = library.gallery || new Backbone.Model();
+
+                       browser.sidebar.set({
+                               gallery: new media.view.Settings.Gallery({
+                                       controller: this,
+                                       model:      library.gallery,
+                                       priority:   40
+                               })
+                       });
+
+                       browser.toolbar.set( 'reverse', {
+                               text:     l10n.reverseOrder,
+                               priority: 80,
+
+                               click: function() {
+                                       library.reset( library.toArray().reverse() );
+                               }
+                       });
+               }
+       });
+
+       // wp.media.controller.GalleryAdd
+       // ---------------------------------
+       media.controller.GalleryAdd = media.controller.Library.extend({
+               defaults: _.defaults({
+                       id:           'gallery-library',
+                       filterable:   'uploaded',
+                       multiple:     'add',
+                       menu:         'gallery',
+                       toolbar:      'gallery-add',
+                       title:        l10n.addToGalleryTitle,
+                       priority:     100,
+
+                       // Don't sync the selection, as the Edit Gallery library
+                       // *is* the selection.
+                       syncSelection: false
+               }, media.controller.Library.prototype.defaults ),
+
+               initialize: function() {
+                       // If we haven't been provided a `library`, create a `Selection`.
+                       if ( ! this.get('library') )
+                               this.set( 'library', media.query({ type: 'image' }) );
+
+                       media.controller.Library.prototype.initialize.apply( this, arguments );
+               },
+
+               activate: function() {
+                       var library = this.get('library'),
+                               edit    = this.frame.state('gallery-edit').get('library');
+
+                       if ( this.editLibrary && this.editLibrary !== edit )
+                               library.unobserve( this.editLibrary );
+
+                       // Accepts attachments that exist in the original library and
+                       // that do not exist in gallery's library.
+                       library.validator = function( attachment ) {
+                               return !! this.mirroring.getByCid( attachment.cid ) && ! edit.getByCid( attachment.cid ) && media.model.Selection.prototype.validator.apply( this, arguments );
+                       };
+
+                       library.observe( edit );
+                       this.editLibrary = edit;
+
+                       media.controller.Library.prototype.activate.apply( this, arguments );
+               }
+       });
+
+       // wp.media.controller.FeaturedImage
+       // ---------------------------------
+       media.controller.FeaturedImage = media.controller.Library.extend({
+               defaults: _.defaults({
+                       id:         'featured-image',
+                       filterable: 'uploaded',
+                       multiple:   false,
+                       toolbar:    'featured-image',
+                       title:      l10n.setFeaturedImageTitle,
+                       priority:   60,
+
+                       syncSelection: false
+               }, media.controller.Library.prototype.defaults ),
+
+               initialize: function() {
+                       var library, comparator;
+
+                       // If we haven't been provided a `library`, create a `Selection`.
+                       if ( ! this.get('library') )
+                               this.set( 'library', media.query({ type: 'image' }) );
+
+                       media.controller.Library.prototype.initialize.apply( this, arguments );
+
+                       library    = this.get('library');
+                       comparator = library.comparator;
+
+                       // Overload the library's comparator to push items that are not in
+                       // the mirrored query to the front of the aggregate collection.
+                       library.comparator = function( a, b ) {
+                               var aInQuery = !! this.mirroring.getByCid( a.cid ),
+                                       bInQuery = !! this.mirroring.getByCid( b.cid );
+
+                               if ( ! aInQuery && bInQuery )
+                                       return -1;
+                               else if ( aInQuery && ! bInQuery )
+                                       return 1;
+                               else
+                                       return comparator.apply( this, arguments );
+                       };
+
+                       // Add all items in the selection to the library, so any featured
+                       // images that are not initially loaded still appear.
+                       library.observe( this.get('selection') );
+               },
+
+               activate: function() {
+                       this.updateSelection();
+                       this.frame.on( 'open', this.updateSelection, this );
+                       media.controller.Library.prototype.activate.apply( this, arguments );
+               },
+
+               deactivate: function() {
+                       this.frame.off( 'open', this.updateSelection, this );
+                       media.controller.Library.prototype.deactivate.apply( this, arguments );
+               },
+
+               updateSelection: function() {
+                       var selection = this.get('selection'),
+                               id = media.view.settings.post.featuredImageId,
+                               attachment;
+
+                       if ( '' !== id && -1 !== id ) {
+                               attachment = Attachment.get( id );
+                               attachment.fetch();
+                       }
+
+                       selection.reset( attachment ? [ attachment ] : [] );
+               }
+       });
+
+
+       // wp.media.controller.Embed
+       // -------------------------
+       media.controller.Embed = media.controller.State.extend({
+               defaults: {
+                       id:      'embed',
+                       url:     '',
+                       menu:    'default',
+                       content: 'embed',
+                       toolbar: 'main-embed',
+                       type:    'link',
+
+                       title:    l10n.insertFromUrlTitle,
+                       priority: 120
+               },
+
+               // The amount of time used when debouncing the scan.
+               sensitivity: 200,
+
+               initialize: function() {
+                       this.debouncedScan = _.debounce( _.bind( this.scan, this ), this.sensitivity );
+                       this.props = new Backbone.Model({ url: '' });
+                       this.props.on( 'change:url', this.debouncedScan, this );
+                       this.props.on( 'change:url', this.refresh, this );
+                       this.on( 'scan', this.scanImage, this );
+               },
+
+               scan: function() {
+                       var scanners,
+                               embed = this,
+                               attributes = {
+                                       type: 'link',
+                                       scanners: []
+                               };
+
+                       // Scan is triggered with the list of `attributes` to set on the
+                       // state, useful for the 'type' attribute and 'scanners' attribute,
+                       // an array of promise objects for asynchronous scan operations.
+                       if ( this.props.get('url') )
+                               this.trigger( 'scan', attributes );
+
+                       if ( attributes.scanners.length ) {
+                               scanners = attributes.scanners = $.when.apply( $, attributes.scanners );
+                               scanners.always( function() {
+                                       if ( embed.get('scanners') === scanners )
+                                               embed.set( 'loading', false );
+                               });
+                       } else {
+                               attributes.scanners = null;
+                       }
+
+                       attributes.loading = !! attributes.scanners;
+                       this.set( attributes );
+               },
+
+               scanImage: function( attributes ) {
+                       var frame = this.frame,
+                               state = this,
+                               url = this.props.get('url'),
+                               image = new Image(),
+                               deferred = $.Deferred();
+
+                       attributes.scanners.push( deferred.promise() );
+
+                       // Try to load the image and find its width/height.
+                       image.onload = function() {
+                               deferred.resolve();
+
+                               if ( state !== frame.state() || url !== state.props.get('url') )
+                                       return;
+
+                               state.set({
+                                       type: 'image'
+                               });
+
+                               state.props.set({
+                                       width:  image.width,
+                                       height: image.height
+                               });
+                       };
+
+                       image.onerror = deferred.reject;
+                       image.src = url;
+               },
+
+               refresh: function() {
+                       this.frame.toolbar.get().refresh();
+               },
+
+               reset: function() {
+                       this.props.clear().set({ url: '' });
+
+                       if ( this.active )
+                               this.refresh();
+               }
+       });
+
+       /**
+        * ========================================================================
+        * VIEWS
+        * ========================================================================
+        */
+
+       // wp.media.Views
+       // -------------
+       //
+       // A subview manager.
+
+       media.Views = function( view, views ) {
+               this.view = view;
+               this._views = _.isArray( views ) ? { '': views } : views || {};
+       };
+
+       media.Views.extend = Backbone.Model.extend;
+
+       _.extend( media.Views.prototype, {
+               // ### Fetch all of the subviews
+               //
+               // Returns an array of all subviews.
+               all: function() {
+                       return _.flatten( this._views );
+               },
+
+               // ### Get a selector's subviews
+               //
+               // Fetches all subviews that match a given `selector`.
+               //
+               // If no `selector` is provided, it will grab all subviews attached
+               // to the view's root.
+               get: function( selector ) {
+                       selector = selector || '';
+                       return this._views[ selector ];
+               },
+
+               // ### Get a selector's first subview
+               //
+               // Fetches the first subview that matches a given `selector`.
+               //
+               // If no `selector` is provided, it will grab the first subview
+               // attached to the view's root.
+               //
+               // Useful when a selector only has one subview at a time.
+               first: function( selector ) {
+                       var views = this.get( selector );
+                       return views && views.length ? views[0] : null;
+               },
+
+               // ### Register subview(s)
+               //
+               // Registers any number of `views` to a `selector`.
+               //
+               // When no `selector` is provided, the root selector (the empty string)
+               // is used. `views` accepts a `Backbone.View` instance or an array of
+               // `Backbone.View` instances.
+               //
+               // ---
+               //
+               // Accepts an `options` object, which has a significant effect on the
+               // resulting behavior.
+               //
+               // `options.silent` &ndash; *boolean, `false`*
+               // > If `options.silent` is true, no DOM modifications will be made.
+               //
+               // `options.add` &ndash; *boolean, `false`*
+               // > Use `Views.add()` as a shortcut for setting `options.add` to true.
+               //
+               // > By default, the provided `views` will replace
+               // any existing views associated with the selector. If `options.add`
+               // is true, the provided `views` will be added to the existing views.
+               //
+               // `options.at` &ndash; *integer, `undefined`*
+               // > When adding, to insert `views` at a specific index, use
+               // `options.at`. By default, `views` are added to the end of the array.
+               set: function( selector, views, options ) {
+                       var existing, next;
+
+                       if ( ! _.isString( selector ) ) {
+                               options  = views;
+                               views    = selector;
+                               selector = '';
+                       }
+
+                       options  = options || {};
+                       views    = _.isArray( views ) ? views : [ views ];
+                       existing = this.get( selector );
+                       next     = views;
+
+                       if ( existing ) {
+                               if ( options.add ) {
+                                       if ( _.isUndefined( options.at ) ) {
+                                               next = existing.concat( views );
+                                       } else {
+                                               next = existing;
+                                               next.splice.apply( next, [ options.at, 0 ].concat( views ) );
+                                       }
+                               } else {
+                                       _.each( next, function( view ) {
+                                               view.__detach = true;
+                                       });
+
+                                       _.each( existing, function( view ) {
+                                               if ( view.__detach )
+                                                       view.$el.detach();
+                                               else
+                                                       view.dispose();
+                                       });
+
+                                       _.each( next, function( view ) {
+                                               delete view.__detach;
+                                       });
+                               }
+                       }
+
+                       this._views[ selector ] = next;
+
+                       _.each( views, function( subview ) {
+                               var constructor = subview.Views || media.Views,
+                                       subviews = subview.views = subview.views || new constructor( subview );
+                               subviews.parent   = this.view;
+                               subviews.selector = selector;
+                       }, this );
+
+                       if ( ! options.silent )
+                               this._attach( selector, views, _.extend({ ready: this._isReady() }, options ) );
+
+                       return this;
+               },
+
+               // ### Add subview(s) to existing subviews
+               //
+               // An alias to `Views.set()`, which defaults `options.add` to true.
+               //
+               // Adds any number of `views` to a `selector`.
+               //
+               // When no `selector` is provided, the root selector (the empty string)
+               // is used. `views` accepts a `Backbone.View` instance or an array of
+               // `Backbone.View` instances.
+               //
+               // Use `Views.set()` when setting `options.add` to `false`.
+               //
+               // Accepts an `options` object. By default, provided `views` will be
+               // inserted at the end of the array of existing views. To insert
+               // `views` at a specific index, use `options.at`. If `options.silent`
+               // is true, no DOM modifications will be made.
+               //
+               // For more information on the `options` object, see `Views.set()`.
+               add: function( selector, views, options ) {
+                       if ( ! _.isString( selector ) ) {
+                               options  = views;
+                               views    = selector;
+                               selector = '';
+                       }
+
+                       return this.set( selector, views, _.extend({ add: true }, options ) );
+               },
+
+               // ### Stop tracking subviews
+               //
+               // Stops tracking `views` registered to a `selector`. If no `views` are
+               // set, then all of the `selector`'s subviews will be unregistered and
+               // disposed.
+               //
+               // Accepts an `options` object. If `options.silent` is set, `dispose`
+               // will *not* be triggered on the unregistered views.
+               unset: function( selector, views, options ) {
+                       var existing;
+
+                       if ( ! _.isString( selector ) ) {
+                               options = views;
+                               views = selector;
+                               selector = '';
+                       }
+
+                       views = views || [];
+
+                       if ( existing = this.get( selector ) ) {
+                               views = _.isArray( views ) ? views : [ views ];
+                               this._views[ selector ] = views.length ? _.difference( existing, views ) : [];
+                       }
+
+                       if ( ! options || ! options.silent )
+                               _.invoke( views, 'dispose' );
+
+                       return this;
+               },
+
+               // ### Detach all subviews
+               //
+               // Detaches all subviews from the DOM.
+               //
+               // Helps to preserve all subview events when re-rendering the master
+               // view. Used in conjunction with `Views.render()`.
+               detach: function() {
+                       $( _.pluck( this.all(), 'el' ) ).detach();
+                       return this;
+               },
+
+               // ### Render all subviews
+               //
+               // Renders all subviews. Used in conjunction with `Views.detach()`.
+               render: function() {
+                       var options = {
+                                       ready: this._isReady()
+                               };
+
+                       _.each( this._views, function( views, selector ) {
+                               this._attach( selector, views, options );
+                       }, this );
+
+                       this.rendered = true;
+                       return this;
+               },
+
+               // ### Dispose all subviews
+               //
+               // Triggers the `dispose()` method on all subviews. Detaches the master
+               // view from its parent. Resets the internals of the views manager.
+               //
+               // Accepts an `options` object. If `options.silent` is set, `unset`
+               // will *not* be triggered on the master view's parent.
+               dispose: function( options ) {
+                       if ( ! options || ! options.silent ) {
+                               if ( this.parent && this.parent.views )
+                                       this.parent.views.unset( this.selector, this.view, { silent: true });
+                               delete this.parent;
+                               delete this.selector;
+                       }
+
+                       _.invoke( this.all(), 'dispose' );
+                       this._views = [];
+                       return this;
+               },
+
+               // ### Replace a selector's subviews
+               //
+               // By default, sets the `$target` selector's html to the subview `els`.
+               //
+               // Can be overridden in subclasses.
+               replace: function( $target, els ) {
+                       $target.html( els );
+                       return this;
+               },
+
+               // ### Insert subviews into a selector
+               //
+               // By default, appends the subview `els` to the end of the `$target`
+               // selector. If `options.at` is set, inserts the subview `els` at the
+               // provided index.
+               //
+               // Can be overridden in subclasses.
+               insert: function( $target, els, options ) {
+                       var at = options && options.at,
+                               $children;
+
+                       if ( _.isNumber( at ) && ($children = $target.children()).length > at )
+                               $children.eq( at ).before( els );
+                       else
+                               $target.append( els );
+
+                       return this;
+               },
+
+               // ### Trigger the ready event
+               //
+               // **Only use this method if you know what you're doing.**
+               // For performance reasons, this method does not check if the view is
+               // actually attached to the DOM. It's taking your word for it.
+               //
+               // Fires the ready event on the current view and all attached subviews.
+               ready: function() {
+                       this.view.trigger('ready');
+
+                       // Find all attached subviews, and call ready on them.
+                       _.chain( this.all() ).map( function( view ) {
+                               return view.views;
+                       }).flatten().where({ attached: true }).invoke('ready');
+               },
+
+               // #### Internal. Attaches a series of views to a selector.
+               //
+               // Checks to see if a matching selector exists, renders the views,
+               // performs the proper DOM operation, and then checks if the view is
+               // attached to the document.
+               _attach: function( selector, views, options ) {
+                       var $selector = selector ? this.view.$( selector ) : this.view.$el,
+                               managers;
+
+                       // Check if we found a location to attach the views.
+                       if ( ! $selector.length )
+                               return this;
+
+                       managers = _.chain( views ).pluck('views').flatten().value();
+
+                       // Render the views if necessary.
+                       _.each( managers, function( manager ) {
+                               if ( manager.rendered )
+                                       return;
+
+                               manager.view.render();
+                               manager.rendered = true;
+                       }, this );
+
+                       // Insert or replace the views.
+                       this[ options.add ? 'insert' : 'replace' ]( $selector, _.pluck( views, 'el' ), options );
+
+                       // Set attached and trigger ready if the current view is already
+                       // attached to the DOM.
+                       _.each( managers, function( manager ) {
+                               manager.attached = true;
+
+                               if ( options.ready )
+                                       manager.ready();
+                       }, this );
+
+                       return this;
+               },
+
+               // #### Internal. Checks if the current view is in the DOM.
+               _isReady: function() {
+                       var node = this.view.el;
+                       while ( node ) {
+                               if ( node === document.body )
+                                       return true;
+                               node = node.parentNode;
+                       }
+
+                       return false;
+               }
+       });
+
+       // wp.media.View
+       // -------------
+       //
+       // The base view class.
+       media.View = Backbone.View.extend({
+               // The constructor for the `Views` manager.
+               Views: media.Views,
+
+               constructor: function( options ) {
+                       this.views = new this.Views( this, this.views );
+                       this.on( 'ready', this.ready, this );
+
+                       if ( options && options.controller )
+                               this.controller = options.controller;
+
+                       Backbone.View.apply( this, arguments );
+               },
+
+               dispose: function() {
+                       // Undelegating events, removing events from the model, and
+                       // removing events from the controller mirror the code for
+                       // `Backbone.View.dispose` in Backbone master.
+                       this.undelegateEvents();
+
+                       if ( this.model && this.model.off )
+                               this.model.off( null, null, this );
+
+                       if ( this.collection && this.collection.off )
+                               this.collection.off( null, null, this );
+
+                       // Unbind controller events.
+                       if ( this.controller && this.controller.off )
+                               this.controller.off( null, null, this );
+
+                       // Recursively dispose child views.
+                       if ( this.views )
+                               this.views.dispose();
+
+                       return this;
+               },
+
+               remove: function() {
+                       this.dispose();
+                       return Backbone.View.prototype.remove.apply( this, arguments );
+               },
+
+               render: function() {
+                       var options;
+
+                       if ( this.prepare )
+                               options = this.prepare();
+
+                       this.views.detach();
+
+                       if ( this.template ) {
+                               options = options || {};
+                               this.trigger( 'prepare', options );
+                               this.$el.html( this.template( options ) );
+                       }
+
+                       this.views.render();
+                       return this;
+               },
+
+               prepare: function() {
+                       return this.options;
+               },
+
+               ready: function() {}
+       });
+
+       /**
+        * wp.media.view.Frame
+        */
+       media.view.Frame = media.View.extend({
+               initialize: function() {
+                       this._createRegions();
+                       this._createStates();
+               },
+
+               _createRegions: function() {
+                       // Clone the regions array.
+                       this.regions = this.regions ? this.regions.slice() : [];
+
+                       // Initialize regions.
+                       _.each( this.regions, function( region ) {
+                               this[ region ] = new media.controller.Region({
+                                       view:     this,
+                                       id:       region,
+                                       selector: '.media-frame-' + region
+                               });
+                       }, this );
+               },
+
+               _createStates: function() {
+                       // Create the default `states` collection.
+                       this.states = new Backbone.Collection( null, {
+                               model: media.controller.State
+                       });
+
+                       // Ensure states have a reference to the frame.
+                       this.states.on( 'add', function( model ) {
+                               model.frame = this;
+                               model.trigger('ready');
+                       }, this );
+
+                       if ( this.options.states )
+                               this.states.add( this.options.states );
+               },
+
+               reset: function() {
+                       this.states.invoke( 'trigger', 'reset' );
+                       return this;
+               }
+       });
+
+       // Make the `Frame` a `StateMachine`.
+       _.extend( media.view.Frame.prototype, media.controller.StateMachine.prototype );
+
+       /**
+        * wp.media.view.MediaFrame
+        */
+       media.view.MediaFrame = media.view.Frame.extend({
+               className: 'media-frame',
+               template:  media.template('media-frame'),
+               regions:   ['menu','title','content','toolbar','router'],
+
+               initialize: function() {
+                       media.view.Frame.prototype.initialize.apply( this, arguments );
+
+                       _.defaults( this.options, {
+                               title:    '',
+                               modal:    true,
+                               uploader: true
+                       });
+
+                       // Ensure core UI is enabled.
+                       this.$el.addClass('wp-core-ui');
+
+                       // Initialize modal container view.
+                       if ( this.options.modal ) {
+                               this.modal = new media.view.Modal({
+                                       controller: this,
+                                       title:      this.options.title
+                               });
+
+                               this.modal.content( this );
+                       }
+
+                       // Force the uploader off if the upload limit has been exceeded or
+                       // if the browser isn't supported.
+                       if ( wp.Uploader.limitExceeded || ! wp.Uploader.browser.supported )
+                               this.options.uploader = false;
+
+                       // Initialize window-wide uploader.
+                       if ( this.options.uploader ) {
+                               this.uploader = new media.view.UploaderWindow({
+                                       controller: this,
+                                       uploader: {
+                                               dropzone:  this.modal ? this.modal.$el : this.$el,
+                                               container: this.$el
+                                       }
+                               });
+                               this.views.set( '.media-frame-uploader', this.uploader );
+                       }
+
+                       this.on( 'attach', _.bind( this.views.ready, this.views ), this );
+
+                       // Bind default title creation.
+                       this.on( 'title:create:default', this.createTitle, this );
+                       this.title.mode('default');
+
+                       // Bind default menu.
+                       this.on( 'menu:create:default', this.createMenu, this );
+               },
+
+               render: function() {
+                       // Activate the default state if no active state exists.
+                       if ( ! this.state() && this.options.state )
+                               this.setState( this.options.state );
+
+                       return media.view.Frame.prototype.render.apply( this, arguments );
+               },
+
+               createTitle: function( title ) {
+                       title.view = new media.View({
+                               controller: this,
+                               tagName: 'h1'
+                       });
+               },
+
+               createMenu: function( menu ) {
+                       menu.view = new media.view.Menu({
+                               controller: this
+                       });
+               },
+
+               createToolbar: function( toolbar ) {
+                       toolbar.view = new media.view.Toolbar({
+                               controller: this
+                       });
+               },
+
+               createRouter: function( router ) {
+                       router.view = new media.view.Router({
+                               controller: this
+                       });
+               },
+
+               createIframeStates: function( options ) {
+                       var settings = media.view.settings,
+                               tabs = settings.tabs,
+                               tabUrl = settings.tabUrl,
+                               $postId;
+
+                       if ( ! tabs || ! tabUrl )
+                               return;
+
+                       // Add the post ID to the tab URL if it exists.
+                       $postId = $('#post_ID');
+                       if ( $postId.length )
+                               tabUrl += '&post_id=' + $postId.val();
+
+                       // Generate the tab states.
+                       _.each( tabs, function( title, id ) {
+                               var frame = this.state( 'iframe:' + id ).set( _.defaults({
+                                       tab:     id,
+                                       src:     tabUrl + '&tab=' + id,
+                                       title:   title,
+                                       content: 'iframe',
+                                       menu:    'default'
+                               }, options ) );
+                       }, this );
+
+                       this.on( 'content:create:iframe', this.iframeContent, this );
+                       this.on( 'menu:render:default', this.iframeMenu, this );
+                       this.on( 'open', this.hijackThickbox, this );
+                       this.on( 'close', this.restoreThickbox, this );
+               },
+
+               iframeContent: function( content ) {
+                       this.$el.addClass('hide-toolbar');
+                       content.view = new media.view.Iframe({
+                               controller: this
+                       });
+               },
+
+               iframeMenu: function( view ) {
+                       var views = {};
+
+                       if ( ! view )
+                               return;
+
+                       _.each( media.view.settings.tabs, function( title, id ) {
+                               views[ 'iframe:' + id ] = {
+                                       text: this.state( 'iframe:' + id ).get('title'),
+                                       priority: 200
+                               };
+                       }, this );
+
+                       view.set( views );
+               },
+
+               hijackThickbox: function() {
+                       var frame = this;
+
+                       if ( ! window.tb_remove || this._tb_remove )
+                               return;
+
+                       this._tb_remove = window.tb_remove;
+                       window.tb_remove = function() {
+                               frame.close();
+                               frame.reset();
+                               frame.setState( frame.options.state );
+                               frame._tb_remove.call( window );
+                       };
+               },
+
+               restoreThickbox: function() {
+                       if ( ! this._tb_remove )
+                               return;
+
+                       window.tb_remove = this._tb_remove;
+                       delete this._tb_remove;
+               }
+       });
+
+       // Map some of the modal's methods to the frame.
+       _.each(['open','close','attach','detach','escape'], function( method ) {
+               media.view.MediaFrame.prototype[ method ] = function( view ) {
+                       if ( this.modal )
+                               this.modal[ method ].apply( this.modal, arguments );
+                       return this;
+               };
+       });
+
+       /**
+        * wp.media.view.MediaFrame.Select
+        */
+       media.view.MediaFrame.Select = media.view.MediaFrame.extend({
+               initialize: function() {
+                       media.view.MediaFrame.prototype.initialize.apply( this, arguments );
+
+                       _.defaults( this.options, {
+                               selection: [],
+                               library:   {},
+                               multiple:  false,
+                               state:    'library'
+                       });
+
+                       this.createSelection();
+                       this.createStates();
+                       this.bindHandlers();
+               },
+
+               createSelection: function() {
+                       var controller = this,
+                               selection = this.options.selection;
+
+                       if ( ! (selection instanceof media.model.Selection) ) {
+                               this.options.selection = new media.model.Selection( selection, {
+                                       multiple: this.options.multiple
+                               });
+                       }
+
+                       this._selection = {
+                               attachments: new Attachments(),
+                               difference: []
+                       };
+               },
+
+               createStates: function() {
+                       var options = this.options;
+
+                       if ( this.options.states )
+                               return;
+
+                       // Add the default states.
+                       this.states.add([
+                               // Main states.
+                               new media.controller.Library({
+                                       library:   media.query( options.library ),
+                                       multiple:  options.multiple,
+                                       title:     options.title,
+                                       priority:  20
+                               })
+                       ]);
+               },
+
+               bindHandlers: function() {
+                       this.on( 'router:create:browse', this.createRouter, this );
+                       this.on( 'router:render:browse', this.browseRouter, this );
+                       this.on( 'content:create:browse', this.browseContent, this );
+                       this.on( 'content:render:upload', this.uploadContent, this );
+                       this.on( 'toolbar:create:select', this.createSelectToolbar, this );
+               },
+
+               // Routers
+               browseRouter: function( view ) {
+                       view.set({
+                               upload: {
+                                       text:     l10n.uploadFilesTitle,
+                                       priority: 20
+                               },
+                               browse: {
+                                       text:     l10n.mediaLibraryTitle,
+                                       priority: 40
+                               }
+                       });
+               },
+
+               // Content
+               browseContent: function( content ) {
+                       var state = this.state();
+
+                       this.$el.removeClass('hide-toolbar');
+
+                       // Browse our library of attachments.
+                       content.view = new media.view.AttachmentsBrowser({
+                               controller: this,
+                               collection: state.get('library'),
+                               selection:  state.get('selection'),
+                               model:      state,
+                               sortable:   state.get('sortable'),
+                               search:     state.get('searchable'),
+                               filters:    state.get('filterable'),
+                               display:    state.get('displaySettings'),
+                               dragInfo:   state.get('dragInfo'),
+
+                               AttachmentView: state.get('AttachmentView')
+                       });
+               },
+
+               uploadContent: function() {
+                       this.$el.removeClass('hide-toolbar');
+                       this.content.set( new media.view.UploaderInline({
+                               controller: this
+                       }) );
+               },
+
+               // Toolbars
+               createSelectToolbar: function( toolbar, options ) {
+                       options = options || this.options.button || {};
+                       options.controller = this;
+
+                       toolbar.view = new media.view.Toolbar.Select( options );
+               }
+       });
+
+       /**
+        * wp.media.view.MediaFrame.Post
+        */
+       media.view.MediaFrame.Post = media.view.MediaFrame.Select.extend({
+               initialize: function() {
+                       _.defaults( this.options, {
+                               multiple:  true,
+                               editing:   false,
+                               state:    'insert'
+                       });
+
+                       media.view.MediaFrame.Select.prototype.initialize.apply( this, arguments );
+                       this.createIframeStates();
+               },
+
+               createStates: function() {
+                       var options = this.options;
+
+                       // Add the default states.
+                       this.states.add([
+                               // Main states.
+                               new media.controller.Library({
+                                       id:         'insert',
+                                       title:      l10n.insertMediaTitle,
+                                       priority:   20,
+                                       toolbar:    'main-insert',
+                                       filterable: 'all',
+                                       library:    media.query( options.library ),
+                                       multiple:   options.multiple ? 'reset' : false,
+                                       editable:   true,
+
+                                       // If the user isn't allowed to edit fields,
+                                       // can they still edit it locally?
+                                       allowLocalEdits: true,
+
+                                       // Show the attachment display settings.
+                                       displaySettings: true,
+                                       // Update user settings when users adjust the
+                                       // attachment display settings.
+                                       displayUserSettings: true
+                               }),
+
+                               new media.controller.Library({
+                                       id:         'gallery',
+                                       title:      l10n.createGalleryTitle,
+                                       priority:   40,
+                                       toolbar:    'main-gallery',
+                                       filterable: 'uploaded',
+                                       multiple:   'add',
+                                       editable:   false,
+
+                                       library:  media.query( _.defaults({
+                                               type: 'image'
+                                       }, options.library ) )
+                               }),
+
+                               // Embed states.
+                               new media.controller.Embed(),
+
+                               // Gallery states.
+                               new media.controller.GalleryEdit({
+                                       library: options.selection,
+                                       editing: options.editing,
+                                       menu:    'gallery'
+                               }),
+
+                               new media.controller.GalleryAdd()
+                       ]);
+
+
+                       if ( media.view.settings.post.featuredImageId ) {
+                               this.states.add( new media.controller.FeaturedImage() );
+                       }
+               },
+
+               bindHandlers: function() {
+                       media.view.MediaFrame.Select.prototype.bindHandlers.apply( this, arguments );
+                       this.on( 'menu:create:gallery', this.createMenu, this );
+                       this.on( 'toolbar:create:main-insert', this.createToolbar, this );
+                       this.on( 'toolbar:create:main-gallery', this.createToolbar, this );
+                       this.on( 'toolbar:create:featured-image', this.featuredImageToolbar, this );
+                       this.on( 'toolbar:create:main-embed', this.mainEmbedToolbar, this );
+
+                       var handlers = {
+                                       menu: {
+                                               'default': 'mainMenu',
+                                               'gallery': 'galleryMenu'
+                                       },
+
+                                       content: {
+                                               'embed':          'embedContent',
+                                               'edit-selection': 'editSelectionContent'
+                                       },
+
+                                       toolbar: {
+                                               'main-insert':      'mainInsertToolbar',
+                                               'main-gallery':     'mainGalleryToolbar',
+                                               'gallery-edit':     'galleryEditToolbar',
+                                               'gallery-add':      'galleryAddToolbar'
+                                       }
+                               };
+
+                       _.each( handlers, function( regionHandlers, region ) {
+                               _.each( regionHandlers, function( callback, handler ) {
+                                       this.on( region + ':render:' + handler, this[ callback ], this );
+                               }, this );
+                       }, this );
+               },
+
+               // Menus
+               mainMenu: function( view ) {
+                       view.set({
+                               'library-separator': new media.View({
+                                       className: 'separator',
+                                       priority: 100
+                               })
+                       });
+               },
+
+               galleryMenu: function( view ) {
+                       var lastState = this.lastState(),
+                               previous = lastState && lastState.id,
+                               frame = this;
+
+                       view.set({
+                               cancel: {
+                                       text:     l10n.cancelGalleryTitle,
+                                       priority: 20,
+                                       click:    function() {
+                                               if ( previous )
+                                                       frame.setState( previous );
+                                               else
+                                                       frame.close();
+                                       }
+                               },
+                               separateCancel: new media.View({
+                                       className: 'separator',
+                                       priority: 40
+                               })
+                       });
+               },
+
+               // Content
+               embedContent: function() {
+                       var view = new media.view.Embed({
+                               controller: this,
+                               model:      this.state()
+                       }).render();
+
+                       this.content.set( view );
+                       view.url.focus();
+               },
+
+               editSelectionContent: function() {
+                       var state = this.state(),
+                               selection = state.get('selection'),
+                               view;
+
+                       view = new media.view.AttachmentsBrowser({
+                               controller: this,
+                               collection: selection,
+                               selection:  selection,
+                               model:      state,
+                               sortable:   true,
+                               search:     false,
+                               dragInfo:   true,
+
+                               AttachmentView: media.view.Attachment.EditSelection
+                       }).render();
+
+                       view.toolbar.set( 'backToLibrary', {
+                               text:     l10n.returnToLibrary,
+                               priority: -100,
+
+                               click: function() {
+                                       this.controller.content.mode('browse');
+                               }
+                       });
+
+                       // Browse our library of attachments.
+                       this.content.set( view );
+               },
+
+               // Toolbars
+               selectionStatusToolbar: function( view ) {
+                       var editable = this.state().get('editable');
+
+                       view.set( 'selection', new media.view.Selection({
+                               controller: this,
+                               collection: this.state().get('selection'),
+                               priority:   -40,
+
+                               // If the selection is editable, pass the callback to
+                               // switch the content mode.
+                               editable: editable && function() {
+                                       this.controller.content.mode('edit-selection');
+                               }
+                       }).render() );
+               },
+
+               mainInsertToolbar: function( view ) {
+                       var controller = this;
+
+                       this.selectionStatusToolbar( view );
+
+                       view.set( 'insert', {
+                               style:    'primary',
+                               priority: 80,
+                               text:     l10n.insertIntoPost,
+                               requires: { selection: true },
+
+                               click: function() {
+                                       var state = controller.state(),
+                                               selection = state.get('selection');
+
+                                       controller.close();
+                                       state.trigger( 'insert', selection ).reset();
+                               }
+                       });
+               },
+
+               mainGalleryToolbar: function( view ) {
+                       var controller = this;
+
+                       this.selectionStatusToolbar( view );
+
+                       view.set( 'gallery', {
+                               style:    'primary',
+                               text:     l10n.createNewGallery,
+                               priority: 60,
+                               requires: { selection: true },
+
+                               click: function() {
+                                       var selection = controller.state().get('selection'),
+                                               edit = controller.state('gallery-edit'),
+                                               models = selection.where({ type: 'image' });
+
+                                       edit.set( 'library', new media.model.Selection( models, {
+                                               props:    selection.props.toJSON(),
+                                               multiple: true
+                                       }) );
+
+                                       this.controller.setState('gallery-edit');
+                               }
+                       });
+               },
+
+               featuredImageToolbar: function( toolbar ) {
+                       this.createSelectToolbar( toolbar, {
+                               text:  l10n.setFeaturedImage,
+                               state: this.options.state || 'upload'
+                       });
+               },
+
+               mainEmbedToolbar: function( toolbar ) {
+                       toolbar.view = new media.view.Toolbar.Embed({
+                               controller: this
+                       });
+               },
+
+               galleryEditToolbar: function() {
+                       var editing = this.state().get('editing');
+                       this.toolbar.set( new media.view.Toolbar({
+                               controller: this,
+                               items: {
+                                       insert: {
+                                               style:    'primary',
+                                               text:     editing ? l10n.updateGallery : l10n.insertGallery,
+                                               priority: 80,
+                                               requires: { library: true },
+
+                                               click: function() {
+                                                       var controller = this.controller,
+                                                               state = controller.state();
+
+                                                       controller.close();
+                                                       state.trigger( 'update', state.get('library') );
+
+                                                       controller.reset();
+                                                       // @todo: Make the state activated dynamic (instead of hardcoded).
+                                                       controller.setState('upload');
+                                               }
+                                       }
+                               }
+                       }) );
+               },
+
+               galleryAddToolbar: function() {
+                       this.toolbar.set( new media.view.Toolbar({
+                               controller: this,
+                               items: {
+                                       insert: {
+                                               style:    'primary',
+                                               text:     l10n.addToGallery,
+                                               priority: 80,
+                                               requires: { selection: true },
+
+                                               click: function() {
+                                                       var controller = this.controller,
+                                                               state = controller.state(),
+                                                               edit = controller.state('gallery-edit');
+
+                                                       edit.get('library').add( state.get('selection').models );
+                                                       state.trigger('reset');
+                                                       controller.setState('gallery-edit');
+                                               }
+                                       }
+                               }
+                       }) );
+               }
+       });
+
+       /**
+        * wp.media.view.Modal
+        */
+       media.view.Modal = media.View.extend({
+               tagName:  'div',
+               template: media.template('media-modal'),
+
+               attributes: {
+                       tabindex: 0
+               },
+
+               events: {
+                       'click .media-modal-backdrop, .media-modal-close': 'escapeHandler',
+                       'keydown': 'keydown'
+               },
+
+               initialize: function() {
+                       _.defaults( this.options, {
+                               container: document.body,
+                               title:     '',
+                               propagate: true,
+                               freeze:    true
+                       });
+               },
+
+               prepare: function() {
+                       return {
+                               title: this.options.title
+                       };
+               },
+
+               attach: function() {
+                       if ( this.views.attached )
+                               return this;
+
+                       if ( ! this.views.rendered )
+                               this.render();
+
+                       this.$el.appendTo( this.options.container );
+
+                       // Manually mark the view as attached and trigger ready.
+                       this.views.attached = true;
+                       this.views.ready();
+
+                       return this.propagate('attach');
+               },
+
+               detach: function() {
+                       if ( this.$el.is(':visible') )
+                               this.close();
+
+                       this.$el.detach();
+                       this.views.attached = false;
+                       return this.propagate('detach');
+               },
+
+               open: function() {
+                       var $el = this.$el,
+                               options = this.options;
+
+                       if ( $el.is(':visible') )
+                               return this;
+
+                       if ( ! this.views.attached )
+                               this.attach();
+
+                       // If the `freeze` option is set, record the window's scroll position.
+                       if ( options.freeze ) {
+                               this._freeze = {
+                                       scrollTop: $( window ).scrollTop()
+                               };
+                       }
+
+                       $el.show().focus();
+                       return this.propagate('open');
+               },
+
+               close: function( options ) {
+                       var freeze = this._freeze;
+
+                       if ( ! this.views.attached || ! this.$el.is(':visible') )
+                               return this;
+
+                       this.$el.hide();
+                       this.propagate('close');
+
+                       // If the `freeze` option is set, restore the container's scroll position.
+                       if ( freeze ) {
+                               $( window ).scrollTop( freeze.scrollTop );
+                       }
+
+                       if ( options && options.escape )
+                               this.propagate('escape');
+
+                       return this;
+               },
+
+               escape: function() {
+                       return this.close({ escape: true });
+               },
+
+               escapeHandler: function( event ) {
+                       event.preventDefault();
+                       this.escape();
+               },
+
+               content: function( content ) {
+                       this.views.set( '.media-modal-content', content );
+                       return this;
+               },
+
+               // Triggers a modal event and if the `propagate` option is set,
+               // forwards events to the modal's controller.
+               propagate: function( id ) {
+                       this.trigger( id );
+
+                       if ( this.options.propagate )
+                               this.controller.trigger( id );
+
+                       return this;
+               },
+
+               keydown: function( event ) {
+                       // Close the modal when escape is pressed.
+                       if ( 27 === event.which ) {
+                               event.preventDefault();
+                               this.escape();
+                               return;
+                       }
+               }
+       });
+
+       // wp.media.view.FocusManager
+       // ----------------------------
+       media.view.FocusManager = media.View.extend({
+               events: {
+                       keydown: 'recordTab',
+                       focusin: 'updateIndex'
+               },
+
+               focus: function() {
+                       if ( _.isUndefined( this.index ) )
+                               return;
+
+                       // Update our collection of `$tabbables`.
+                       this.$tabbables = this.$(':tabbable');
+
+                       // If tab is saved, focus it.
+                       this.$tabbables.eq( this.index ).focus();
+               },
+
+               recordTab: function( event ) {
+                       // Look for the tab key.
+                       if ( 9 !== event.keyCode )
+                               return;
+
+                       // First try to update the index.
+                       if ( _.isUndefined( this.index ) )
+                               this.updateIndex( event );
+
+                       // If we still don't have an index, bail.
+                       if ( _.isUndefined( this.index ) )
+                               return;
+
+                       var index = this.index + ( event.shiftKey ? -1 : 1 );
+
+                       if ( index >= 0 && index < this.$tabbables.length )
+                               this.index = index;
+                       else
+                               delete this.index;
+               },
+
+               updateIndex: function( event ) {
+                       this.$tabbables = this.$(':tabbable');
+
+                       var index = this.$tabbables.index( event.target );
+
+                       if ( -1 === index )
+                               delete this.index;
+                       else
+                               this.index = index;
+               }
+       });
+
+       // wp.media.view.UploaderWindow
+       // ----------------------------
+       media.view.UploaderWindow = media.View.extend({
+               tagName:   'div',
+               className: 'uploader-window',
+               template:  media.template('uploader-window'),
+
+               initialize: function() {
+                       var uploader;
+
+                       this.$browser = $('<a href="#" class="browser" />').hide().appendTo('body');
+
+                       uploader = this.options.uploader = _.defaults( this.options.uploader || {}, {
+                               dropzone:  this.$el,
+                               browser:   this.$browser,
+                               params:    {}
+                       });
+
+                       // Ensure the dropzone is a jQuery collection.
+                       if ( uploader.dropzone && ! (uploader.dropzone instanceof $) )
+                               uploader.dropzone = $( uploader.dropzone );
+
+                       this.controller.on( 'activate', this.refresh, this );
+               },
+
+               refresh: function() {
+                       if ( this.uploader )
+                               this.uploader.refresh();
+               },
+
+               ready: function() {
+                       var postId = media.view.settings.post.id,
+                               dropzone;
+
+                       // If the uploader already exists, bail.
+                       if ( this.uploader )
+                               return;
+
+                       if ( postId )
+                               this.options.uploader.params.post_id = postId;
+
+                       this.uploader = new wp.Uploader( this.options.uploader );
+
+                       dropzone = this.uploader.dropzone;
+                       dropzone.on( 'dropzone:enter', _.bind( this.show, this ) );
+                       dropzone.on( 'dropzone:leave', _.bind( this.hide, this ) );
+               },
+
+               show: function() {
+                       var $el = this.$el.show();
+
+                       // Ensure that the animation is triggered by waiting until
+                       // the transparent element is painted into the DOM.
+                       _.defer( function() {
+                               $el.css({ opacity: 1 });
+                       });
+               },
+
+               hide: function() {
+                       var $el = this.$el.css({ opacity: 0 });
+
+                       media.transition( $el ).done( function() {
+                               // Transition end events are subject to race conditions.
+                               // Make sure that the value is set as intended.
+                               if ( '0' === $el.css('opacity') )
+                                       $el.hide();
+                       });
+               }
+       });
+
+       media.view.UploaderInline = media.View.extend({
+               tagName:   'div',
+               className: 'uploader-inline',
+               template:  media.template('uploader-inline'),
+
+               initialize: function() {
+                       _.defaults( this.options, {
+                               message: '',
+                               status:  true
+                       });
+
+                       if ( ! this.options.$browser && this.controller.uploader )
+                               this.options.$browser = this.controller.uploader.$browser;
+
+                       if ( _.isUndefined( this.options.postId ) )
+                               this.options.postId = media.view.settings.post.id;
+
+                       if ( this.options.status ) {
+                               this.views.set( '.upload-inline-status', new media.view.UploaderStatus({
+                                       controller: this.controller
+                               }) );
+                       }
+               },
+
+               dispose: function() {
+                       if ( this.disposing )
+                               return media.View.prototype.dispose.apply( this, arguments );
+
+                       // Run remove on `dispose`, so we can be sure to refresh the
+                       // uploader with a view-less DOM. Track whether we're disposing
+                       // so we don't trigger an infinite loop.
+                       this.disposing = true;
+                       return this.remove();
+               },
+
+               remove: function() {
+                       var result = media.View.prototype.remove.apply( this, arguments );
+
+                       _.defer( _.bind( this.refresh, this ) );
+                       return result;
+               },
+
+               refresh: function() {
+                       var uploader = this.controller.uploader;
+
+                       if ( uploader )
+                               uploader.refresh();
+               },
+
+               ready: function() {
+                       var $browser = this.options.$browser,
+                               $placeholder;
+
+                       if ( this.controller.uploader ) {
+                               $placeholder = this.$('.browser');
+
+                               // Check if we've already replaced the placeholder.
+                               if ( $placeholder[0] === $browser[0] )
+                                       return;
+
+                               $browser.detach().text( $placeholder.text() );
+                               $browser[0].className = $placeholder[0].className;
+                               $placeholder.replaceWith( $browser.show() );
+                       }
+
+                       this.refresh();
+                       return this;
+               }
+       });
+
+       /**
+        * wp.media.view.UploaderStatus
+        */
+       media.view.UploaderStatus = media.View.extend({
+               className: 'media-uploader-status',
+               template:  media.template('uploader-status'),
+
+               events: {
+                       'click .upload-dismiss-errors': 'dismiss'
+               },
+
+               initialize: function() {
+                       this.queue = wp.Uploader.queue;
+                       this.queue.on( 'add remove reset', this.visibility, this );
+                       this.queue.on( 'add remove reset change:percent', this.progress, this );
+                       this.queue.on( 'add remove reset change:uploading', this.info, this );
+
+                       this.errors = wp.Uploader.errors;
+                       this.errors.reset();
+                       this.errors.on( 'add remove reset', this.visibility, this );
+                       this.errors.on( 'add', this.error, this );
+               },
+
+               dispose: function() {
+                       wp.Uploader.queue.off( null, null, this );
+                       media.View.prototype.dispose.apply( this, arguments );
+                       return this;
+               },
+
+               visibility: function() {
+                       this.$el.toggleClass( 'uploading', !! this.queue.length );
+                       this.$el.toggleClass( 'errors', !! this.errors.length );
+                       this.$el.toggle( !! this.queue.length || !! this.errors.length );
+               },
+
+               ready: function() {
+                       _.each({
+                               '$bar':      '.media-progress-bar div',
+                               '$index':    '.upload-index',
+                               '$total':    '.upload-total',
+                               '$filename': '.upload-filename'
+                       }, function( selector, key ) {
+                               this[ key ] = this.$( selector );
+                       }, this );
+
+                       this.visibility();
+                       this.progress();
+                       this.info();
+               },
+
+               progress: function() {
+                       var queue = this.queue,
+                               $bar = this.$bar,
+                               memo = 0;
+
+                       if ( ! $bar || ! queue.length )
+                               return;
+
+                       $bar.width( ( queue.reduce( function( memo, attachment ) {
+                               if ( ! attachment.get('uploading') )
+                                       return memo + 100;
+
+                               var percent = attachment.get('percent');
+                               return memo + ( _.isNumber( percent ) ? percent : 100 );
+                       }, 0 ) / queue.length ) + '%' );
+               },
+
+               info: function() {
+                       var queue = this.queue,
+                               index = 0, active;
+
+                       if ( ! queue.length )
+                               return;
+
+                       active = this.queue.find( function( attachment, i ) {
+                               index = i;
+                               return attachment.get('uploading');
+                       });
+
+                       this.$index.text( index + 1 );
+                       this.$total.text( queue.length );
+                       this.$filename.html( active ? this.filename( active.get('filename') ) : '' );
+               },
+
+               filename: function( filename ) {
+                       return media.truncate( _.escape( filename ), 24 );
+               },
+
+               error: function( error ) {
+                       this.views.add( '.upload-errors', new media.view.UploaderStatusError({
+                               filename: this.filename( error.get('file').name ),
+                               message:  error.get('message')
+                       }), { at: 0 });
+               },
+
+               dismiss: function( event ) {
+                       var errors = this.views.get('.upload-errors');
+
+                       event.preventDefault();
+
+                       if ( errors )
+                               _.invoke( errors, 'remove' );
+                       wp.Uploader.errors.reset();
+               }
+       });
+
+       media.view.UploaderStatusError = media.View.extend({
+               className: 'upload-error',
+               template:  media.template('uploader-status-error')
+       });
+
+       /**
+        * wp.media.view.Toolbar
+        */
+       media.view.Toolbar = media.View.extend({
+               tagName:   'div',
+               className: 'media-toolbar',
+
+               initialize: function() {
+                       var state = this.controller.state(),
+                               selection = this.selection = state.get('selection'),
+                               library = this.library = state.get('library');
+
+                       this._views = {};
+
+                       // The toolbar is composed of two `PriorityList` views.
+                       this.primary   = new media.view.PriorityList();
+                       this.secondary = new media.view.PriorityList();
+                       this.primary.$el.addClass('media-toolbar-primary');
+                       this.secondary.$el.addClass('media-toolbar-secondary');
+
+                       this.views.set([ this.secondary, this.primary ]);
+
+                       if ( this.options.items )
+                               this.set( this.options.items, { silent: true });
+
+                       if ( ! this.options.silent )
+                               this.render();
+
+                       if ( selection )
+                               selection.on( 'add remove reset', this.refresh, this );
+                       if ( library )
+                               library.on( 'add remove reset', this.refresh, this );
+               },
+
+               dispose: function() {
+                       if ( this.selection )
+                               this.selection.off( null, null, this );
+                       if ( this.library )
+                               this.library.off( null, null, this );
+                       return media.View.prototype.dispose.apply( this, arguments );
+               },
+
+               ready: function() {
+                       this.refresh();
+               },
+
+               set: function( id, view, options ) {
+                       var list;
+                       options = options || {};
+
+                       // Accept an object with an `id` : `view` mapping.
+                       if ( _.isObject( id ) ) {
+                               _.each( id, function( view, id ) {
+                                       this.set( id, view, { silent: true });
+                               }, this );
+
+                       } else {
+                               if ( ! ( view instanceof Backbone.View ) ) {
+                                       view.classes = [ 'media-button-' + id ].concat( view.classes || [] );
+                                       view = new media.view.Button( view ).render();
+                               }
+
+                               view.controller = view.controller || this.controller;
+
+                               this._views[ id ] = view;
+
+                               list = view.options.priority < 0 ? 'secondary' : 'primary';
+                               this[ list ].set( id, view, options );
+                       }
+
+                       if ( ! options.silent )
+                               this.refresh();
+
+                       return this;
+               },
+
+               get: function( id ) {
+                       return this._views[ id ];
+               },
+
+               unset: function( id, options ) {
+                       delete this._views[ id ];
+                       this.primary.unset( id, options );
+                       this.secondary.unset( id, options );
+
+                       if ( ! options || ! options.silent )
+                               this.refresh();
+                       return this;
+               },
+
+               refresh: function() {
+                       var state = this.controller.state(),
+                               library = state.get('library'),
+                               selection = state.get('selection');
+
+                       _.each( this._views, function( button ) {
+                               if ( ! button.model || ! button.options || ! button.options.requires )
+                                       return;
+
+                               var requires = button.options.requires,
+                                       disabled = false;
+
+                               if ( requires.selection && selection && ! selection.length )
+                                       disabled = true;
+                               else if ( requires.library && library && ! library.length )
+                                       disabled = true;
+
+                               button.model.set( 'disabled', disabled );
+                       });
+               }
+       });
+
+       // wp.media.view.Toolbar.Select
+       // ----------------------------
+       media.view.Toolbar.Select = media.view.Toolbar.extend({
+               initialize: function() {
+                       var options = this.options,
+                               controller = options.controller,
+                               selection = controller.state().get('selection');
+
+                       _.bindAll( this, 'clickSelect' );
+
+                       _.defaults( options, {
+                               event: 'select',
+                               state: false,
+                               reset: true,
+                               close: true,
+                               text:  l10n.select,
+
+                               // Does the button rely on the selection?
+                               requires: {
+                                       selection: true
+                               }
+                       });
+
+                       options.items = _.defaults( options.items || {}, {
+                               select: {
+                                       style:    'primary',
+                                       text:     options.text,
+                                       priority: 80,
+                                       click:    this.clickSelect,
+                                       requires: options.requires
+                               }
+                       });
+
+                       media.view.Toolbar.prototype.initialize.apply( this, arguments );
+               },
+
+               clickSelect: function() {
+                       var options = this.options,
+                               controller = this.controller;
+
+                       if ( options.close )
+                               controller.close();
+
+                       if ( options.event )
+                               controller.state().trigger( options.event );
+
+                       if ( options.reset )
+                               controller.reset();
+
+                       if ( options.state )
+                               controller.setState( options.state );
+               }
+       });
+
+       // wp.media.view.Toolbar.Embed
+       // ---------------------------
+       media.view.Toolbar.Embed = media.view.Toolbar.Select.extend({
+               initialize: function() {
+                       _.defaults( this.options, {
+                               text: l10n.insertIntoPost,
+                               requires: false
+                       });
+
+                       media.view.Toolbar.Select.prototype.initialize.apply( this, arguments );
+               },
+
+               refresh: function() {
+                       var url = this.controller.state().props.get('url');
+                       this.get('select').model.set( 'disabled', ! url || url === 'http://' );
+
+                       media.view.Toolbar.Select.prototype.refresh.apply( this, arguments );
+               }
+       });
+
+       /**
+        * wp.media.view.Button
+        */
+       media.view.Button = media.View.extend({
+               tagName:    'a',
+               className:  'media-button',
+               attributes: { href: '#' },
+
+               events: {
+                       'click': 'click'
+               },
+
+               defaults: {
+                       text:     '',
+                       style:    '',
+                       size:     'large',
+                       disabled: false
+               },
+
+               initialize: function() {
+                       // Create a model with the provided `defaults`.
+                       this.model = new Backbone.Model( this.defaults );
+
+                       // If any of the `options` have a key from `defaults`, apply its
+                       // value to the `model` and remove it from the `options object.
+                       _.each( this.defaults, function( def, key ) {
+                               var value = this.options[ key ];
+                               if ( _.isUndefined( value ) )
+                                       return;
+
+                               this.model.set( key, value );
+                               delete this.options[ key ];
+                       }, this );
+
+                       this.model.on( 'change', this.render, this );
+               },
+
+               render: function() {
+                       var classes = [ 'button', this.className ],
+                               model = this.model.toJSON();
+
+                       if ( model.style )
+                               classes.push( 'button-' + model.style );
+
+                       if ( model.size )
+                               classes.push( 'button-' + model.size );
+
+                       classes = _.uniq( classes.concat( this.options.classes ) );
+                       this.el.className = classes.join(' ');
+
+                       this.$el.attr( 'disabled', model.disabled );
+                       this.$el.text( this.model.get('text') );
+
+                       return this;
+               },
+
+               click: function( event ) {
+                       if ( '#' === this.attributes.href )
+                               event.preventDefault();
+
+                       if ( this.options.click && ! this.model.get('disabled') )
+                               this.options.click.apply( this, arguments );
+               }
+       });
+
+       /**
+        * wp.media.view.ButtonGroup
+        */
+       media.view.ButtonGroup = media.View.extend({
+               tagName:   'div',
+               className: 'button-group button-large media-button-group',
+
+               initialize: function() {
+                       this.buttons = _.map( this.options.buttons || [], function( button ) {
+                               if ( button instanceof Backbone.View )
+                                       return button;
+                               else
+                                       return new media.view.Button( button ).render();
+                       });
+
+                       delete this.options.buttons;
+
+                       if ( this.options.classes )
+                               this.$el.addClass( this.options.classes );
+               },
+
+               render: function() {
+                       this.$el.html( $( _.pluck( this.buttons, 'el' ) ).detach() );
+                       return this;
+               }
+       });
+
+       /**
+        * wp.media.view.PriorityList
+        */
+
+       media.view.PriorityList = media.View.extend({
+               tagName:   'div',
+
+               initialize: function() {
+                       this._views = {};
+
+                       this.set( _.extend( {}, this._views, this.options.views ), { silent: true });
+                       delete this.options.views;
+
+                       if ( ! this.options.silent )
+                               this.render();
+               },
+
+               set: function( id, view, options ) {
+                       var priority, views, index;
+
+                       options = options || {};
+
+                       // Accept an object with an `id` : `view` mapping.
+                       if ( _.isObject( id ) ) {
+                               _.each( id, function( view, id ) {
+                                       this.set( id, view );
+                               }, this );
+                               return this;
+                       }
+
+                       if ( ! (view instanceof Backbone.View) )
+                               view = this.toView( view, id, options );
+
+                       view.controller = view.controller || this.controller;
+
+                       this.unset( id );
+
+                       priority = view.options.priority || 10;
+                       views = this.views.get() || [];
+
+                       _.find( views, function( existing, i ) {
+                               if ( existing.options.priority > priority ) {
+                                       index = i;
+                                       return true;
+                               }
+                       });
+
+                       this._views[ id ] = view;
+                       this.views.add( view, {
+                               at: _.isNumber( index ) ? index : views.length || 0
+                       });
+
+                       return this;
+               },
+
+               get: function( id ) {
+                       return this._views[ id ];
+               },
+
+               unset: function( id ) {
+                       var view = this.get( id );
+
+                       if ( view )
+                               view.remove();
+
+                       delete this._views[ id ];
+                       return this;
+               },
+
+               toView: function( options ) {
+                       return new media.View( options );
+               }
+       });
+
+       /**
+        * wp.media.view.MenuItem
+        */
+       media.view.MenuItem = media.View.extend({
+               tagName:   'a',
+               className: 'media-menu-item',
+
+               attributes: {
+                       href: '#'
+               },
+
+               events: {
+                       'click': '_click'
+               },
+
+               _click: function( event ) {
+                       var clickOverride = this.options.click;
+
+                       if ( event )
+                               event.preventDefault();
+
+                       if ( clickOverride )
+                               clickOverride.call( this );
+                       else
+                               this.click();
+               },
+
+               click: function() {
+                       var state = this.options.state;
+                       if ( state )
+                               this.controller.setState( state );
+               },
+
+               render: function() {
+                       var options = this.options;
+
+                       if ( options.text )
+                               this.$el.text( options.text );
+                       else if ( options.html )
+                               this.$el.html( options.html );
+
+                       return this;
+               }
+       });
+
+       /**
+        * wp.media.view.Menu
+        */
+       media.view.Menu = media.view.PriorityList.extend({
+               tagName:   'div',
+               className: 'media-menu',
+               property:  'state',
+               ItemView:  media.view.MenuItem,
+               region:    'menu',
+
+               toView: function( options, id ) {
+                       options = options || {};
+                       options[ this.property ] = options[ this.property ] || id;
+                       return new this.ItemView( options ).render();
+               },
+
+               ready: function() {
+                       media.view.PriorityList.prototype.ready.apply( this, arguments );
+                       this.visibility();
+               },
+
+               set: function() {
+                       media.view.PriorityList.prototype.set.apply( this, arguments );
+                       this.visibility();
+               },
+
+               unset: function() {
+                       media.view.PriorityList.prototype.unset.apply( this, arguments );
+                       this.visibility();
+               },
+
+               visibility: function() {
+                       var region = this.region,
+                               view = this.controller[ region ].get(),
+                               views = this.views.get(),
+                               hide = ! views || views.length < 2;
+
+                       if ( this === view )
+                               this.controller.$el.toggleClass( 'hide-' + region, hide );
+               },
+
+               select: function( id ) {
+                       var view = this.get( id );
+
+                       if ( ! view )
+                               return;
+
+                       this.deselect();
+                       view.$el.addClass('active');
+               },
+
+               deselect: function() {
+                       this.$el.children().removeClass('active');
+               }
+       });
+
+       /**
+        * wp.media.view.RouterItem
+        */
+       media.view.RouterItem = media.view.MenuItem.extend({
+               click: function() {
+                       var contentMode = this.options.contentMode;
+                       if ( contentMode )
+                               this.controller.content.mode( contentMode );
+               }
+       });
+
+       /**
+        * wp.media.view.Router
+        */
+       media.view.Router = media.view.Menu.extend({
+               tagName:   'div',
+               className: 'media-router',
+               property:  'contentMode',
+               ItemView:  media.view.RouterItem,
+               region:    'router',
+
+               initialize: function() {
+                       this.controller.on( 'content:render', this.update, this );
+                       media.view.Menu.prototype.initialize.apply( this, arguments );
+               },
+
+               update: function() {
+                       var mode = this.controller.content.mode();
+                       if ( mode )
+                               this.select( mode );
+               }
+       });
+
+
+       /**
+        * wp.media.view.Sidebar
+        */
+       media.view.Sidebar = media.view.PriorityList.extend({
+               className: 'media-sidebar'
+       });
+
+       /**
+        * wp.media.view.Attachment
+        */
+       media.view.Attachment = media.View.extend({
+               tagName:   'li',
+               className: 'attachment',
+               template:  media.template('attachment'),
+
+               events: {
+                       'click .attachment-preview':      'toggleSelectionHandler',
+                       'change [data-setting]':          'updateSetting',
+                       'change [data-setting] input':    'updateSetting',
+                       'change [data-setting] select':   'updateSetting',
+                       'change [data-setting] textarea': 'updateSetting',
+                       'click .close':                   'removeFromLibrary',
+                       'click .check':                   'removeFromSelection',
+                       'click a':                        'preventDefault'
+               },
+
+               buttons: {},
+
+               initialize: function() {
+                       var selection = this.options.selection;
+
+                       this.model.on( 'change:sizes change:uploading change:caption change:title', this.render, this );
+                       this.model.on( 'change:percent', this.progress, this );
+
+                       // Update the selection.
+                       this.model.on( 'add', this.select, this );
+                       this.model.on( 'remove', this.deselect, this );
+                       if ( selection )
+                               selection.on( 'reset', this.updateSelect, this );
+
+                       // Update the model's details view.
+                       this.model.on( 'selection:single selection:unsingle', this.details, this );
+                       this.details( this.model, this.controller.state().get('selection') );
+               },
+
+               dispose: function() {
+                       var selection = this.options.selection;
+
+                       // Make sure all settings are saved before removing the view.
+                       this.updateAll();
+
+                       if ( selection )
+                               selection.off( null, null, this );
+
+                       media.View.prototype.dispose.apply( this, arguments );
+                       return this;
+               },
+
+               render: function() {
+                       var options = _.defaults( this.model.toJSON(), {
+                                       orientation:   'landscape',
+                                       uploading:     false,
+                                       type:          '',
+                                       subtype:       '',
+                                       icon:          '',
+                                       filename:      '',
+                                       caption:       '',
+                                       title:         '',
+                                       dateFormatted: '',
+                                       width:         '',
+                                       height:        '',
+                                       compat:        false,
+                                       alt:           '',
+                                       description:   ''
+                               });
+
+                       options.buttons  = this.buttons;
+                       options.describe = this.controller.state().get('describe');
+
+                       if ( 'image' === options.type )
+                               options.size = this.imageSize();
+
+                       options.can = {};
+                       if ( options.nonces ) {
+                               options.can.remove = !! options.nonces['delete'];
+                               options.can.save = !! options.nonces.update;
+                       }
+
+                       if ( this.controller.state().get('allowLocalEdits') )
+                               options.allowLocalEdits = true;
+
+                       this.views.detach();
+                       this.$el.html( this.template( options ) );
+
+                       this.$el.toggleClass( 'uploading', options.uploading );
+                       if ( options.uploading )
+                               this.$bar = this.$('.media-progress-bar div');
+                       else
+                               delete this.$bar;
+
+                       // Check if the model is selected.
+                       this.updateSelect();
+
+                       // Update the save status.
+                       this.updateSave();
+
+                       this.views.render();
+
+                       return this;
+               },
+
+               progress: function() {
+                       if ( this.$bar && this.$bar.length )
+                               this.$bar.width( this.model.get('percent') + '%' );
+               },
+
+               toggleSelectionHandler: function( event ) {
+                       var method;
+
+                       if ( event.shiftKey )
+                               method = 'between';
+                       else if ( event.ctrlKey || event.metaKey )
+                               method = 'toggle';
+
+                       this.toggleSelection({
+                               method: method
+                       });
+               },
+
+               toggleSelection: function( options ) {
+                       var collection = this.collection,
+                               selection = this.options.selection,
+                               model = this.model,
+                               method = options && options.method,
+                               single, between, models, singleIndex, modelIndex;
+
+                       if ( ! selection )
+                               return;
+
+                       single = selection.single();
+                       method = _.isUndefined( method ) ? selection.multiple : method;
+
+                       // If the `method` is set to `between`, select all models that
+                       // exist between the current and the selected model.
+                       if ( 'between' === method && single && selection.multiple ) {
+                               // If the models are the same, short-circuit.
+                               if ( single === model )
+                                       return;
+
+                               singleIndex = collection.indexOf( single );
+                               modelIndex  = collection.indexOf( this.model );
+
+                               if ( singleIndex < modelIndex )
+                                       models = collection.models.slice( singleIndex, modelIndex + 1 );
+                               else
+                                       models = collection.models.slice( modelIndex, singleIndex + 1 );
+
+                               selection.add( models ).single( model );
+                               return;
+
+                       // If the `method` is set to `toggle`, just flip the selection
+                       // status, regardless of whether the model is the single model.
+                       } else if ( 'toggle' === method ) {
+                               selection[ this.selected() ? 'remove' : 'add' ]( model ).single( model );
+                               return;
+                       }
+
+                       if ( method !== 'add' )
+                               method = 'reset';
+
+                       if ( this.selected() ) {
+                               // If the model is the single model, remove it.
+                               // If it is not the same as the single model,
+                               // it now becomes the single model.
+                               selection[ single === model ? 'remove' : 'single' ]( model );
+                       } else {
+                               // If the model is not selected, run the `method` on the
+                               // selection. By default, we `reset` the selection, but the
+                               // `method` can be set to `add` the model to the selection.
+                               selection[ method ]( model ).single( model );
+                       }
+               },
+
+               updateSelect: function() {
+                       this[ this.selected() ? 'select' : 'deselect' ]();
+               },
+
+               selected: function() {
+                       var selection = this.options.selection;
+                       if ( selection )
+                               return !! selection.getByCid( this.model.cid );
+               },
+
+               select: function( model, collection ) {
+                       var selection = this.options.selection;
+
+                       // Check if a selection exists and if it's the collection provided.
+                       // If they're not the same collection, bail; we're in another
+                       // selection's event loop.
+                       if ( ! selection || ( collection && collection !== selection ) )
+                               return;
+
+                       this.$el.addClass('selected');
+               },
+
+               deselect: function( model, collection ) {
+                       var selection = this.options.selection;
+
+                       // Check if a selection exists and if it's the collection provided.
+                       // If they're not the same collection, bail; we're in another
+                       // selection's event loop.
+                       if ( ! selection || ( collection && collection !== selection ) )
+                               return;
+
+                       this.$el.removeClass('selected');
+               },
+
+               details: function( model, collection ) {
+                       var selection = this.options.selection,
+                               details;
+
+                       if ( selection !== collection )
+                               return;
+
+                       details = selection.single();
+                       this.$el.toggleClass( 'details', details === this.model );
+               },
+
+               preventDefault: function( event ) {
+                       event.preventDefault();
+               },
+
+               imageSize: function( size ) {
+                       var sizes = this.model.get('sizes');
+
+                       size = size || 'medium';
+
+                       // Use the provided image size if possible.
+                       if ( sizes && sizes[ size ] ) {
+                               return _.clone( sizes[ size ] );
+                       } else {
+                               return {
+                                       url:         this.model.get('url'),
+                                       width:       this.model.get('width'),
+                                       height:      this.model.get('height'),
+                                       orientation: this.model.get('orientation')
+                               };
+                       }
+               },
+
+               updateSetting: function( event ) {
+                       var $setting = $( event.target ).closest('[data-setting]'),
+                               setting, value;
+
+                       if ( ! $setting.length )
+                               return;
+
+                       setting = $setting.data('setting');
+                       value   = event.target.value;
+
+                       if ( this.model.get( setting ) !== value )
+                               this.save( setting, value );
+               },
+
+               // Pass all the arguments to the model's save method.
+               //
+               // Records the aggregate status of all save requests and updates the
+               // view's classes accordingly.
+               save: function() {
+                       var view = this,
+                               save = this._save = this._save || { status: 'ready' },
+                               request = this.model.save.apply( this.model, arguments ),
+                               requests = save.requests ? $.when( request, save.requests ) : request;
+
+                       // If we're waiting to remove 'Saved.', stop.
+                       if ( save.savedTimer )
+                               clearTimeout( save.savedTimer );
+
+                       this.updateSave('waiting');
+                       save.requests = requests;
+                       requests.always( function() {
+                               // If we've performed another request since this one, bail.
+                               if ( save.requests !== requests )
+                                       return;
+
+                               view.updateSave( requests.state() === 'resolved' ? 'complete' : 'error' );
+                               save.savedTimer = setTimeout( function() {
+                                       view.updateSave('ready');
+                                       delete save.savedTimer;
+                               }, 2000 );
+                       });
+
+               },
+
+               updateSave: function( status ) {
+                       var save = this._save = this._save || { status: 'ready' };
+
+                       if ( status && status !== save.status ) {
+                               this.$el.removeClass( 'save-' + save.status );
+                               save.status = status;
+                       }
+
+                       this.$el.addClass( 'save-' + save.status );
+                       return this;
+               },
+
+               updateAll: function() {
+                       var $settings = this.$('[data-setting]'),
+                               model = this.model,
+                               changed;
+
+                       changed = _.chain( $settings ).map( function( el ) {
+                               var $input = $('input, textarea, select, [value]', el ),
+                                       setting, value;
+
+                               if ( ! $input.length )
+                                       return;
+
+                               setting = $(el).data('setting');
+                               value = $input.val();
+
+                               // Record the value if it changed.
+                               if ( model.get( setting ) !== value )
+                                       return [ setting, value ];
+                       }).compact().object().value();
+
+                       if ( ! _.isEmpty( changed ) )
+                               model.save( changed );
+               },
+
+               removeFromLibrary: function( event ) {
+                       // Stop propagation so the model isn't selected.
+                       event.stopPropagation();
+
+                       this.collection.remove( this.model );
+               },
+
+               removeFromSelection: function( event ) {
+                       var selection = this.options.selection;
+                       if ( ! selection )
+                               return;
+
+                       // Stop propagation so the model isn't selected.
+                       event.stopPropagation();
+
+                       selection.remove( this.model );
+               }
+       });
+
+       /**
+        * wp.media.view.Attachment.Library
+        */
+       media.view.Attachment.Library = media.view.Attachment.extend({
+               buttons: {
+                       check: true
+               }
+       });
+
+       /**
+        * wp.media.view.Attachment.EditLibrary
+        */
+       media.view.Attachment.EditLibrary = media.view.Attachment.extend({
+               buttons: {
+                       close: true
+               }
+       });
+
+       /**
+        * wp.media.view.Attachments
+        */
+       media.view.Attachments = media.View.extend({
+               tagName:   'ul',
+               className: 'attachments',
+
+               cssTemplate: media.template('attachments-css'),
+
+               events: {
+                       'scroll': 'scroll'
+               },
+
+               initialize: function() {
+                       this.el.id = _.uniqueId('__attachments-view-');
+
+                       _.defaults( this.options, {
+                               refreshSensitivity: 200,
+                               refreshThreshold:   3,
+                               AttachmentView:     media.view.Attachment,
+                               sortable:           false,
+                               resize:             true
+                       });
+
+                       this._viewsByCid = {};
+
+                       this.collection.on( 'add', function( attachment, attachments, options ) {
+                               this.views.add( this.createAttachmentView( attachment ), {
+                                       at: options.index
+                               });
+                       }, this );
+
+                       this.collection.on( 'remove', function( attachment, attachments, options ) {
+                               var view = this._viewsByCid[ attachment.cid ];
+                               delete this._viewsByCid[ attachment.cid ];
+
+                               if ( view )
+                                       view.remove();
+                       }, this );
+
+                       this.collection.on( 'reset', this.render, this );
+
+                       // Throttle the scroll handler.
+                       this.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();
+
+                       this.initSortable();
+
+                       _.bindAll( this, 'css' );
+                       this.model.on( 'change:edge change:gutter', this.css, this );
+                       this._resizeCss = _.debounce( _.bind( this.css, this ), this.refreshSensitivity );
+                       if ( this.options.resize )
+                               $(window).on( 'resize.attachments', this._resizeCss );
+                       this.css();
+               },
+
+               dispose: function() {
+                       this.collection.props.off( null, null, this );
+                       $(window).off( 'resize.attachments', this._resizeCss );
+                       media.View.prototype.dispose.apply( this, arguments );
+               },
+
+               css: function() {
+                       var $css = $( '#' + this.el.id + '-css' );
+
+                       if ( $css.length )
+                               $css.remove();
+
+                       media.view.Attachments.$head().append( this.cssTemplate({
+                               id:     this.el.id,
+                               edge:   this.edge(),
+                               gutter: this.model.get('gutter')
+                       }) );
+               },
+
+               edge: function() {
+                       var edge = this.model.get('edge'),
+                               gutter, width, columns;
+
+                       if ( ! this.$el.is(':visible') )
+                               return edge;
+
+                       gutter  = this.model.get('gutter') * 2;
+                       width   = this.$el.width() - gutter;
+                       columns = Math.ceil( width / ( edge + gutter ) );
+                       edge = Math.floor( ( width - ( columns * gutter ) ) / columns );
+                       return edge;
+               },
+
+               initSortable: function() {
+                       var collection = this.collection;
+
+                       if ( ! this.options.sortable || ! $.fn.sortable )
+                               return;
+
+                       this.$el.sortable( _.extend({
+                               // If the `collection` has a `comparator`, disable sorting.
+                               disabled: !! collection.comparator,
+
+                               // Prevent attachments from being dragged outside the bounding
+                               // box of the list.
+                               containment: this.$el,
+
+                               // Change the position of the attachment as soon as the
+                               // mouse pointer overlaps a thumbnail.
+                               tolerance: 'pointer',
+
+                               // Record the initial `index` of the dragged model.
+                               start: function( event, ui ) {
+                                       ui.item.data('sortableIndexStart', ui.item.index());
+                               },
+
+                               // Update the model's index in the collection.
+                               // Do so silently, as the view is already accurate.
+                               update: function( event, ui ) {
+                                       var model = collection.at( ui.item.data('sortableIndexStart') ),
+                                               comparator = collection.comparator;
+
+                                       // Temporarily disable the comparator to prevent `add`
+                                       // from re-sorting.
+                                       delete collection.comparator;
+
+                                       // Silently shift the model to its new index.
+                                       collection.remove( model, {
+                                               silent: true
+                                       }).add( model, {
+                                               silent: true,
+                                               at:     ui.item.index()
+                                       });
+
+                                       // Restore the comparator.
+                                       collection.comparator = comparator;
+
+                                       // Fire the `reset` event to ensure other collections sync.
+                                       collection.trigger( 'reset', collection );
+
+                                       // If the collection is sorted by menu order,
+                                       // update the menu order.
+                                       collection.saveMenuOrder();
+                               }
+                       }, this.options.sortable ) );
+
+                       // If the `orderby` property is changed on the `collection`,
+                       // check to see if we have a `comparator`. If so, disable sorting.
+                       collection.props.on( 'change:orderby', function() {
+                               this.$el.sortable( 'option', 'disabled', !! collection.comparator );
+                       }, this );
+
+                       this.collection.props.on( 'change:orderby', this.refreshSortable, this );
+                       this.refreshSortable();
+               },
+
+               refreshSortable: function() {
+                       if ( ! this.options.sortable || ! $.fn.sortable )
+                               return;
+
+                       // If the `collection` has a `comparator`, disable sorting.
+                       var collection = this.collection,
+                               orderby = collection.props.get('orderby'),
+                               enabled = 'menuOrder' === orderby || ! collection.comparator;
+
+                       this.$el.sortable( 'option', 'disabled', ! enabled );
+               },
+
+               createAttachmentView: function( attachment ) {
+                       var view = new this.options.AttachmentView({
+                               controller: this.controller,
+                               model:      attachment,
+                               collection: this.collection,
+                               selection:  this.options.selection
+                       });
+
+                       return this._viewsByCid[ attachment.cid ] = view;
+               },
+
+               prepare: function() {
+                       // Create all of the Attachment views, and replace
+                       // the list in a single DOM operation.
+                       if ( this.collection.length ) {
+                               this.views.set( this.collection.map( this.createAttachmentView, this ) );
+
+                       // If there are no elements, clear the views and load some.
+                       } else {
+                               this.views.unset();
+                               this.collection.more().done( this.scroll );
+                       }
+               },
+
+               ready: function() {
+                       // Trigger the scroll event to check if we're within the
+                       // threshold to query for additional attachments.
+                       this.scroll();
+               },
+
+               scroll: function( event ) {
+                       // @todo: is this still necessary?
+                       if ( ! this.$el.is(':visible') )
+                               return;
+
+                       if ( this.collection.hasMore() && this.el.scrollHeight < this.el.scrollTop + ( this.el.clientHeight * this.options.refreshThreshold ) ) {
+                               this.collection.more().done( this.scroll );
+                       }
+               }
+       }, {
+               $head: (function() {
+                       var $head;
+                       return function() {
+                               return $head = $head || $('head');
+                       };
+               }())
+       });
+
+       /**
+        * wp.media.view.Search
+        */
+       media.view.Search = media.View.extend({
+               tagName:   'input',
+               className: 'search',
+
+               attributes: {
+                       type:        'search',
+                       placeholder: l10n.search
+               },
+
+               events: {
+                       'input':  'search',
+                       'keyup':  'search',
+                       'change': 'search',
+                       'search': 'search'
+               },
+
+               render: function() {
+                       this.el.value = this.model.escape('search');
+                       return this;
+               },
+
+               search: function( event ) {
+                       if ( event.target.value )
+                               this.model.set( 'search', event.target.value );
+                       else
+                               this.model.unset('search');
+               }
+       });
+
+       /**
+        * wp.media.view.AttachmentFilters
+        */
+       media.view.AttachmentFilters = media.View.extend({
+               tagName:   'select',
+               className: 'attachment-filters',
+
+               events: {
+                       change: 'change'
+               },
+
+               keys: [],
+
+               initialize: function() {
+                       this.createFilters();
+                       _.extend( this.filters, this.options.filters );
+
+                       // Build `<option>` elements.
+                       this.$el.html( _.chain( this.filters ).map( function( filter, value ) {
+                               return {
+                                       el: this.make( 'option', { value: value }, filter.text ),
+                                       priority: filter.priority || 50
+                               };
+                       }, this ).sortBy('priority').pluck('el').value() );
+
+                       this.model.on( 'change', this.select, this );
+                       this.select();
+               },
+
+               createFilters: function() {
+                       this.filters = {};
+               },
+
+               change: function( event ) {
+                       var filter = this.filters[ this.el.value ];
+
+                       if ( filter )
+                               this.model.set( filter.props );
+               },
+
+               select: function() {
+                       var model = this.model,
+                               value = 'all',
+                               props = model.toJSON();
+
+                       _.find( this.filters, function( filter, id ) {
+                               var equal = _.all( filter.props, function( prop, key ) {
+                                       return prop === ( _.isUndefined( props[ key ] ) ? null : props[ key ] );
+                               });
+
+                               if ( equal )
+                                       return value = id;
+                       });
+
+                       this.$el.val( value );
+               }
+       });
+
+       media.view.AttachmentFilters.Uploaded = media.view.AttachmentFilters.extend({
+               createFilters: function() {
+                       var type = this.model.get('type'),
+                               types = media.view.settings.mimeTypes,
+                               text;
+
+                       if ( types && type )
+                               text = types[ type ];
+
+                       this.filters = {
+                               all: {
+                                       text:  text || l10n.allMediaItems,
+                                       props: {
+                                               uploadedTo: null,
+                                               orderby: 'date',
+                                               order:   'DESC'
+                                       },
+                                       priority: 10
+                               },
+
+                               uploaded: {
+                                       text:  l10n.uploadedToThisPost,
+                                       props: {
+                                               uploadedTo: media.view.settings.post.id,
+                                               orderby: 'menuOrder',
+                                               order:   'ASC'
+                                       },
+                                       priority: 20
+                               }
+                       };
+               }
+       });
+
+       media.view.AttachmentFilters.All = media.view.AttachmentFilters.extend({
+               createFilters: function() {
+                       var filters = {};
+
+                       _.each( media.view.settings.mimeTypes || {}, function( text, key ) {
+                               filters[ key ] = {
+                                       text: text,
+                                       props: {
+                                               type:    key,
+                                               uploadedTo: null,
+                                               orderby: 'date',
+                                               order:   'DESC'
+                                       }
+                               };
+                       });
+
+                       filters.all = {
+                               text:  l10n.allMediaItems,
+                               props: {
+                                       type:    null,
+                                       uploadedTo: null,
+                                       orderby: 'date',
+                                       order:   'DESC'
+                               },
+                               priority: 10
+                       };
+
+                       filters.uploaded = {
+                               text:  l10n.uploadedToThisPost,
+                               props: {
+                                       type:    null,
+                                       uploadedTo: media.view.settings.post.id,
+                                       orderby: 'menuOrder',
+                                       order:   'ASC'
+                               },
+                               priority: 20
+                       };
+
+                       this.filters = filters;
+               }
+       });
+
+
+
+       /**
+        * wp.media.view.AttachmentsBrowser
+        */
+       media.view.AttachmentsBrowser = media.View.extend({
+               tagName:   'div',
+               className: 'attachments-browser',
+
+               initialize: function() {
+                       _.defaults( this.options, {
+                               filters: false,
+                               search:  true,
+                               display: false,
+
+                               AttachmentView: media.view.Attachment.Library
+                       });
+
+                       this.createToolbar();
+                       this.updateContent();
+                       this.createSidebar();
+
+                       this.collection.on( 'add remove reset', this.updateContent, this );
+               },
+
+               dispose: function() {
+                       this.options.selection.off( null, null, this );
+                       media.View.prototype.dispose.apply( this, arguments );
+                       return this;
+               },
+
+               createToolbar: function() {
+                       var filters, FiltersConstructor;
+
+                       this.toolbar = new media.view.Toolbar({
+                               controller: this.controller
+                       });
+
+                       this.views.add( this.toolbar );
+
+                       filters = this.options.filters;
+                       if ( 'uploaded' === filters )
+                               FiltersConstructor = media.view.AttachmentFilters.Uploaded;
+                       else if ( 'all' === filters )
+                               FiltersConstructor = media.view.AttachmentFilters.All;
+
+                       if ( FiltersConstructor ) {
+                               this.toolbar.set( 'filters', new FiltersConstructor({
+                                       controller: this.controller,
+                                       model:      this.collection.props,
+                                       priority:   -80
+                               }).render() );
+                       }
+
+                       if ( this.options.search ) {
+                               this.toolbar.set( 'search', new media.view.Search({
+                                       controller: this.controller,
+                                       model:      this.collection.props,
+                                       priority:   60
+                               }).render() );
+                       }
+
+                       if ( this.options.dragInfo ) {
+                               this.toolbar.set( 'dragInfo', new media.View({
+                                       el: $( '<div class="instructions">' + l10n.dragInfo + '</div>' )[0],
+                                       priority: -40
+                               }) );
+                       }
+               },
+
+               updateContent: function() {
+                       var view = this;
+
+                       if( ! this.attachments )
+                               this.createAttachments();
+
+                       if ( ! this.collection.length ) {
+                               this.collection.more().done( function() {
+                                       if ( ! view.collection.length )
+                                               view.createUploader();
+                               });
+                       }
+               },
+
+               removeContent: function() {
+                       _.each(['attachments','uploader'], function( key ) {
+                               if ( this[ key ] ) {
+                                       this[ key ].remove();
+                                       delete this[ key ];
+                               }
+                       }, this );
+               },
+
+               createUploader: function() {
+                       this.removeContent();
+
+                       this.uploader = new media.view.UploaderInline({
+                               controller: this.controller,
+                               status:     false,
+                               message:    l10n.noItemsFound
+                       });
+
+                       this.views.add( this.uploader );
+               },
+
+               createAttachments: function() {
+                       this.removeContent();
+
+                       this.attachments = new media.view.Attachments({
+                               controller: this.controller,
+                               collection: this.collection,
+                               selection:  this.options.selection,
+                               model:      this.model,
+                               sortable:   this.options.sortable,
+
+                               // The single `Attachment` view to be used in the `Attachments` view.
+                               AttachmentView: this.options.AttachmentView
+                       });
+
+                       this.views.add( this.attachments );
+               },
+
+               createSidebar: function() {
+                       var options = this.options,
+                               selection = options.selection,
+                               sidebar = this.sidebar = new media.view.Sidebar({
+                                       controller: this.controller
+                               });
+
+                       this.views.add( sidebar );
+
+                       if ( this.controller.uploader ) {
+                               sidebar.set( 'uploads', new media.view.UploaderStatus({
+                                       controller: this.controller,
+                                       priority:   40
+                               }) );
+                       }
+
+                       selection.on( 'selection:single', this.createSingle, this );
+                       selection.on( 'selection:unsingle', this.disposeSingle, this );
+
+                       if ( selection.single() )
+                               this.createSingle();
+               },
+
+               createSingle: function() {
+                       var sidebar = this.sidebar,
+                               single = this.options.selection.single(),
+                               views = {};
+
+                       sidebar.set( 'details', new media.view.Attachment.Details({
+                               controller: this.controller,
+                               model:      single,
+                               priority:   80
+                       }) );
+
+                       sidebar.set( 'compat', new media.view.AttachmentCompat({
+                               controller: this.controller,
+                               model:      single,
+                               priority:   120
+                       }) );
+
+                       if ( this.options.display ) {
+                               sidebar.set( 'display', new media.view.Settings.AttachmentDisplay({
+                                       controller:   this.controller,
+                                       model:        this.model.display( single ),
+                                       attachment:   single,
+                                       priority:     160,
+                                       userSettings: this.model.get('displayUserSettings')
+                               }) );
+                       }
+               },
+
+               disposeSingle: function() {
+                       var sidebar = this.sidebar;
+                       sidebar.unset('details');
+                       sidebar.unset('compat');
+                       sidebar.unset('display');
+               }
+       });
+
+       /**
+        * wp.media.view.Selection
+        */
+       media.view.Selection = media.View.extend({
+               tagName:   'div',
+               className: 'media-selection',
+               template:  media.template('media-selection'),
+
+               events: {
+                       'click .edit-selection':  'edit',
+                       'click .clear-selection': 'clear'
+               },
+
+               initialize: function() {
+                       _.defaults( this.options, {
+                               editable:  false,
+                               clearable: true
+                       });
+
+                       this.attachments = new media.view.Attachments.Selection({
+                               controller: this.controller,
+                               collection: this.collection,
+                               selection:  this.collection,
+                               model:      new Backbone.Model({
+                                       edge:   40,
+                                       gutter: 5
+                               })
+                       });
+
+                       this.views.set( '.selection-view', this.attachments );
+                       this.collection.on( 'add remove reset', this.refresh, this );
+                       this.controller.on( 'content:activate', this.refresh, this );
+               },
+
+               ready: function() {
+                       this.refresh();
+               },
+
+               refresh: function() {
+                       // If the selection hasn't been rendered, bail.
+                       if ( ! this.$el.children().length )
+                               return;
+
+                       var collection = this.collection,
+                               editing = 'edit-selection' === this.controller.content.mode();
+
+                       // If nothing is selected, display nothing.
+                       this.$el.toggleClass( 'empty', ! collection.length );
+                       this.$el.toggleClass( 'one', 1 === collection.length );
+                       this.$el.toggleClass( 'editing', editing );
+
+                       this.$('.count').text( l10n.selected.replace('%d', collection.length) );
+               },
+
+               edit: function( event ) {
+                       event.preventDefault();
+                       if ( this.options.editable )
+                               this.options.editable.call( this, this.collection );
+               },
+
+               clear: function( event ) {
+                       event.preventDefault();
+                       this.collection.reset();
+               }
+       });
+
+
+       /**
+        * wp.media.view.Attachment.Selection
+        */
+       media.view.Attachment.Selection = media.view.Attachment.extend({
+               className: 'attachment selection',
+
+               // On click, just select the model, instead of removing the model from
+               // the selection.
+               toggleSelection: function() {
+                       this.options.selection.single( this.model );
+               }
+       });
+
+       /**
+        * wp.media.view.Attachments.Selection
+        */
+       media.view.Attachments.Selection = media.view.Attachments.extend({
+               events: {},
+               initialize: function() {
+                       _.defaults( this.options, {
+                               sortable:   true,
+                               resize:     false,
+
+                               // The single `Attachment` view to be used in the `Attachments` view.
+                               AttachmentView: media.view.Attachment.Selection
+                       });
+                       return media.view.Attachments.prototype.initialize.apply( this, arguments );
+               }
+       });
+
+       /**
+        * wp.media.view.Attachments.EditSelection
+        */
+       media.view.Attachment.EditSelection = media.view.Attachment.Selection.extend({
+               buttons: {
+                       close: true
+               }
+       });
+
+
+       /**
+        * wp.media.view.Settings
+        */
+       media.view.Settings = media.View.extend({
+               events: {
+                       'click button':    'updateHandler',
+                       'change input':    'updateHandler',
+                       'change select':   'updateHandler',
+                       'change textarea': 'updateHandler'
+               },
+
+               initialize: function() {
+                       this.model = this.model || new Backbone.Model();
+                       this.model.on( 'change', this.updateChanges, this );
+               },
+
+               prepare: function() {
+                       return _.defaults({
+                               model: this.model.toJSON()
+                       }, this.options );
+               },
+
+               render: function() {
+                       media.View.prototype.render.apply( this, arguments );
+                       // Select the correct values.
+                       _( this.model.attributes ).chain().keys().each( this.update, this );
+                       return this;
+               },
+
+               update: function( key ) {
+                       var value = this.model.get( key ),
+                               $setting = this.$('[data-setting="' + key + '"]'),
+                               $buttons, $value;
+
+                       // Bail if we didn't find a matching setting.
+                       if ( ! $setting.length )
+                               return;
+
+                       // Attempt to determine how the setting is rendered and update
+                       // the selected value.
+
+                       // Handle dropdowns.
+                       if ( $setting.is('select') ) {
+                               $value = $setting.find('[value="' + value + '"]');
+
+                               if ( $value.length ) {
+                                       $setting.find('option').prop( 'selected', false );
+                                       $value.prop( 'selected', true );
+                               } else {
+                                       // If we can't find the desired value, record what *is* selected.
+                                       this.model.set( key, $setting.find(':selected').val() );
+                               }
+
+
+                       // Handle button groups.
+                       } else if ( $setting.hasClass('button-group') ) {
+                               $buttons = $setting.find('button').removeClass('active');
+                               $buttons.filter( '[value="' + value + '"]' ).addClass('active');
+
+                       // Handle text inputs and textareas.
+                       } else if ( $setting.is('input[type="text"], textarea') ) {
+                               if ( ! $setting.is(':focus') )
+                                       $setting.val( value );
+
+                       // Handle checkboxes.
+                       } else if ( $setting.is('input[type="checkbox"]') ) {
+                               $setting.attr( 'checked', !! value );
+                       }
+               },
+
+               updateHandler: function( event ) {
+                       var $setting = $( event.target ).closest('[data-setting]'),
+                               value = event.target.value,
+                               userSetting;
+
+                       event.preventDefault();
+
+                       if ( ! $setting.length )
+                               return;
+
+                       // Use the correct value for checkboxes.
+                       if ( $setting.is('input[type="checkbox"]') )
+                               value = $setting[0].checked;
+
+                       // Update the corresponding setting.
+                       this.model.set( $setting.data('setting'), value );
+
+                       // If the setting has a corresponding user setting,
+                       // update that as well.
+                       if ( userSetting = $setting.data('userSetting') )
+                               setUserSetting( userSetting, value );
+               },
+
+               updateChanges: function( model, options ) {
+                       if ( options.changes )
+                               _( options.changes ).chain().keys().each( this.update, this );
+               }
+       });
+
+       /**
+        * wp.media.view.Settings.AttachmentDisplay
+        */
+       media.view.Settings.AttachmentDisplay = media.view.Settings.extend({
+               className: 'attachment-display-settings',
+               template:  media.template('attachment-display-settings'),
+
+               initialize: function() {
+                       var attachment = this.options.attachment;
+
+                       _.defaults( this.options, {
+                               userSettings: false
+                       });
+
+                       media.view.Settings.prototype.initialize.apply( this, arguments );
+                       this.model.on( 'change:link', this.updateLinkTo, this );
+
+                       if ( attachment )
+                               attachment.on( 'change:uploading', this.render, this );
+               },
+
+               dispose: function() {
+                       var attachment = this.options.attachment;
+                       if ( attachment )
+                               attachment.off( null, null, this );
+
+                       media.view.Settings.prototype.dispose.apply( this, arguments );
+               },
+
+               render: function() {
+                       var attachment = this.options.attachment;
+                       if ( attachment ) {
+                               _.extend( this.options, {
+                                       sizes: attachment.get('sizes'),
+                                       type:  attachment.get('type')
+                               });
+                       }
+
+                       media.view.Settings.prototype.render.call( this );
+                       this.updateLinkTo();
+                       return this;
+               },
+
+               updateLinkTo: function() {
+                       var linkTo = this.model.get('link'),
+                               $input = this.$('.link-to-custom'),
+                               attachment = this.options.attachment;
+
+                       if ( 'none' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) {
+                               $input.hide();
+                               return;
+                       }
+
+                       if ( attachment ) {
+                               if ( 'post' === linkTo ) {
+                                       $input.val( attachment.get('link') );
+                               } else if ( 'file' === linkTo ) {
+                                       $input.val( attachment.get('url') );
+                               } else if ( ! this.model.get('linkUrl') ) {
+                                       $input.val('http://');
+                               }
+
+                               $input.prop( 'readonly', 'custom' !== linkTo );
+                       }
+
+                       $input.show();
+
+                       // If the input is visible, focus and select its contents.
+                       if ( $input.is(':visible') )
+                               $input.focus()[0].select();
+               }
+       });
+
+       /**
+        * wp.media.view.Settings.Gallery
+        */
+       media.view.Settings.Gallery = media.view.Settings.extend({
+               className: 'gallery-settings',
+               template:  media.template('gallery-settings')
+       });
+
+       /**
+        * wp.media.view.Attachment.Details
+        */
+       media.view.Attachment.Details = media.view.Attachment.extend({
+               tagName:   'div',
+               className: 'attachment-details',
+               template:  media.template('attachment-details'),
+
+               events: {
+                       'change [data-setting]':          'updateSetting',
+                       'change [data-setting] input':    'updateSetting',
+                       'change [data-setting] select':   'updateSetting',
+                       'change [data-setting] textarea': 'updateSetting',
+                       'click .delete-attachment':       'deleteAttachment',
+                       'click .edit-attachment':         'editAttachment',
+                       'click .refresh-attachment':      'refreshAttachment'
+               },
+
+               initialize: function() {
+                       this.focusManager = new media.view.FocusManager({
+                               el: this.el
+                       });
+
+                       media.view.Attachment.prototype.initialize.apply( this, arguments );
+               },
+
+               render: function() {
+                       media.view.Attachment.prototype.render.apply( this, arguments );
+                       this.focusManager.focus();
+                       return this;
+               },
+
+               deleteAttachment: function( event ) {
+                       event.preventDefault();
+
+                       if ( confirm( l10n.warnDelete ) )
+                               this.model.destroy();
+               },
+
+               editAttachment: function( event ) {
+                       this.$el.addClass('needs-refresh');
+               },
+
+               refreshAttachment: function( event ) {
+                       this.$el.removeClass('needs-refresh');
+                       event.preventDefault();
+                       this.model.fetch();
+               }
+       });
+
+       /**
+        * wp.media.view.AttachmentCompat
+        */
+       media.view.AttachmentCompat = media.View.extend({
+               tagName:   'form',
+               className: 'compat-item',
+
+               events: {
+                       'submit':          'preventDefault',
+                       'change input':    'save',
+                       'change select':   'save',
+                       'change textarea': 'save'
+               },
+
+               initialize: function() {
+                       this.focusManager = new media.view.FocusManager({
+                               el: this.el
+                       });
+
+                       this.model.on( 'change:compat', this.render, this );
+               },
+
+               dispose: function() {
+                       if ( this.$(':focus').length )
+                               this.save();
+
+                       return media.View.prototype.dispose.apply( this, arguments );
+               },
+
+               render: function() {
+                       var compat = this.model.get('compat');
+                       if ( ! compat || ! compat.item )
+                               return;
+
+                       this.views.detach();
+                       this.$el.html( compat.item );
+                       this.views.render();
+
+                       this.focusManager.focus();
+                       return this;
+               },
+
+               preventDefault: function( event ) {
+                       event.preventDefault();
+               },
+
+               save: function( event ) {
+                       var data = {};
+
+                       if ( event )
+                               event.preventDefault();
+
+                       _.each( this.$el.serializeArray(), function( pair ) {
+                               data[ pair.name ] = pair.value;
+                       });
+
+                       this.model.saveCompat( data );
+               }
+       });
+
+       /**
+        * wp.media.view.Iframe
+        */
+       media.view.Iframe = media.View.extend({
+               className: 'media-iframe',
+
+               render: function() {
+                       this.views.detach();
+                       this.$el.html( '<iframe src="' + this.controller.state().get('src') + '" />' );
+                       this.views.render();
+                       return this;
+               }
+       });
+
+       /**
+        * wp.media.view.Embed
+        */
+       media.view.Embed = media.View.extend({
+               className: 'media-embed',
+
+               initialize: function() {
+                       this.url = new media.view.EmbedUrl({
+                               controller: this.controller,
+                               model:      this.model.props
+                       }).render();
+
+                       this.views.set([ this.url ]);
+                       this.refresh();
+                       this.model.on( 'change:type', this.refresh, this );
+                       this.model.on( 'change:loading', this.loading, this );
+               },
+
+               settings: function( view ) {
+                       if ( this._settings )
+                               this._settings.remove();
+                       this._settings = view;
+                       this.views.add( view );
+               },
+
+               refresh: function() {
+                       var type = this.model.get('type'),
+                               constructor;
+
+                       if ( 'image' === type )
+                               constructor = media.view.EmbedImage;
+                       else if ( 'link' === type )
+                               constructor = media.view.EmbedLink;
+                       else
+                               return;
+
+                       this.settings( new constructor({
+                               controller: this.controller,
+                               model:      this.model.props,
+                               priority:   40
+                       }) );
+               },
+
+               loading: function() {
+                       this.$el.toggleClass( 'embed-loading', this.model.get('loading') );
+               }
+       });
+
+       /**
+        * wp.media.view.EmbedUrl
+        */
+       media.view.EmbedUrl = media.View.extend({
+               tagName:   'label',
+               className: 'embed-url',
+
+               events: {
+                       'input':  'url',
+                       'keyup':  'url',
+                       'change': 'url'
+               },
+
+               initialize: function() {
+                       this.input = this.make( 'input', {
+                               type:  'text',
+                               value: this.model.get('url') || ''
+                       });
+
+                       this.spinner = this.make( 'span', {
+                               'class': 'spinner'
+                       });
+
+                       this.$input = $( this.input );
+                       this.$el.append([ this.input, this.spinner ]);
+
+                       this.model.on( 'change:url', this.render, this );
+               },
+
+               render: function() {
+                       var $input = this.$input;
+
+                       if ( $input.is(':focus') )
+                               return;
+
+                       this.input.value = this.model.get('url') || 'http://';
+                       media.View.prototype.render.apply( this, arguments );
+                       return this;
+               },
+
+               ready: function() {
+                       this.focus();
+               },
+
+               url: function( event ) {
+                       this.model.set( 'url', event.target.value );
+               },
+
+               focus: function() {
+                       var $input = this.$input;
+                       // If the input is visible, focus and select its contents.
+                       if ( $input.is(':visible') )
+                               $input.focus()[0].select();
+               }
+       });
+
+       /**
+        * wp.media.view.EmbedLink
+        */
+       media.view.EmbedLink = media.view.Settings.extend({
+               className: 'embed-link-settings',
+               template:  media.template('embed-link-settings')
+       });
+
+       /**
+        * wp.media.view.EmbedImage
+        */
+       media.view.EmbedImage =  media.view.Settings.AttachmentDisplay.extend({
+               className: 'embed-image-settings',
+               template:  media.template('embed-image-settings'),
+
+               initialize: function() {
+                       media.view.Settings.AttachmentDisplay.prototype.initialize.apply( this, arguments );
+                       this.model.on( 'change:url', this.updateImage, this );
+               },
+
+               updateImage: function() {
+                       this.$('img').attr( 'src', this.model.get('url') );
+               }
+       });
+}(jQuery));
diff --git a/wp-includes/js/media-views.min.js b/wp-includes/js/media-views.min.js
new file mode 100644 (file)
index 0000000..119b757
--- /dev/null
@@ -0,0 +1 @@
+(function(e){var f=wp.media,d=f.model.Attachment,c=f.model.Attachments,a=f.model.Query,b;b=f.view.l10n=typeof _wpMediaViewsL10n==="undefined"?{}:_wpMediaViewsL10n;f.view.settings=b.settings||{};delete b.settings;f.model.settings.post=f.view.settings.post;e.support.transition=(function(){var g=document.documentElement.style,h={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i;i=_.find(_.keys(h),function(j){return !_.isUndefined(g[j])});return i&&{end:h[i]}}());f.transition=function(g,h){var i=e.Deferred();h=h||2000;if(e.support.transition){if(!(g instanceof e)){g=e(g)}g.first().one(e.support.transition.end,i.resolve);_.delay(i.resolve,h)}else{i.resolve()}return i.promise()};f.controller.Region=function(g){_.extend(this,_.pick(g||{},"id","view","selector"))};f.controller.Region.extend=Backbone.Model.extend;_.extend(f.controller.Region.prototype,{mode:function(g){if(!g){return this._mode}if(g===this._mode){return this}this.trigger("deactivate");this._mode=g;this.render(g);this.trigger("activate");return this},render:function(h){if(h&&h!==this._mode){return this.mode(h)}var i={view:null},g;this.trigger("create",i);g=i.view;this.trigger("render",g);if(g){this.set(g)}return this},get:function(){return this.view.views.first(this.selector)},set:function(g,h){if(h){h.add=false}return this.view.views.set(this.selector,g,h)},trigger:function(h){var i;if(!this._mode){return}var g=_.toArray(arguments);i=this.id+":"+h;g[0]=i+":"+this._mode;this.view.trigger.apply(this.view,g);g[0]=i;this.view.trigger.apply(this.view,g);return this}});f.controller.StateMachine=function(g){this.states=new Backbone.Collection(g)};f.controller.StateMachine.extend=Backbone.Model.extend;_.extend(f.controller.StateMachine.prototype,Backbone.Events,{state:function(g){this.states=this.states||new Backbone.Collection();g=g||this._state;if(g&&!this.states.get(g)){this.states.add({id:g})}return this.states.get(g)},setState:function(h){var g=this.state();if((g&&h===g.id)||!this.states||!this.states.get(h)){return this}if(g){g.trigger("deactivate");this._lastState=g.id}this._state=h;this.state().trigger("activate");return this},lastState:function(){if(this._lastState){return this.state(this._lastState)}}});_.each(["on","off","trigger"],function(g){f.controller.StateMachine.prototype[g]=function(){this.states=this.states||new Backbone.Collection();this.states[g].apply(this.states,arguments);return this}});f.controller.State=Backbone.Model.extend({constructor:function(){this.on("activate",this._preActivate,this);this.on("activate",this.activate,this);this.on("activate",this._postActivate,this);this.on("deactivate",this._deactivate,this);this.on("deactivate",this.deactivate,this);this.on("reset",this.reset,this);this.on("ready",this._ready,this);this.on("ready",this.ready,this);this.on("change:menu",this._updateMenu,this);Backbone.Model.apply(this,arguments)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=true},_postActivate:function(){this.on("change:menu",this._menu,this);this.on("change:titleMode",this._title,this);this.on("change:content",this._content,this);this.on("change:toolbar",this._toolbar,this);this.frame.on("title:render:default",this._renderTitle,this);this._title();this._menu();this._toolbar();this._content();this._router()},_deactivate:function(){this.active=false;this.frame.off("title:render:default",this._renderTitle,this);this.off("change:menu",this._menu,this);this.off("change:titleMode",this._title,this);this.off("change:content",this._content,this);this.off("change:toolbar",this._toolbar,this)},_title:function(){this.frame.title.render(this.get("titleMode")||"default")},_renderTitle:function(g){g.$el.text(this.get("title")||"")},_router:function(){var h=this.frame.router,i=this.get("router"),g;this.frame.$el.toggleClass("hide-router",!i);if(!i){return}this.frame.router.render(i);g=h.get();if(g&&g.select){g.select(this.frame.content.mode())}},_menu:function(){var i=this.frame.menu,h=this.get("menu"),g;if(!h){return}i.mode(h);g=i.get();if(g&&g.select){g.select(this.id)}},_updateMenu:function(){var g=this.previous("menu"),h=this.get("menu");if(g){this.frame.off("menu:render:"+g,this._renderMenu,this)}if(h){this.frame.on("menu:render:"+h,this._renderMenu,this)}},_renderMenu:function(g){var i=this.get("menuItem"),j=this.get("title"),h=this.get("priority");if(!i&&j){i={text:j};if(h){i.priority=h}}if(!i){return}g.set(this.id,i)}});_.each(["toolbar","content"],function(g){f.controller.State.prototype["_"+g]=function(){var h=this.get(g);if(h){this.frame[g].render(h)}}});f.controller.Library=f.controller.State.extend({defaults:{id:"library",multiple:false,describe:false,toolbar:"select",sidebar:"settings",content:"upload",router:"browse",menu:"default",searchable:true,filterable:false,sortable:true,title:b.mediaLibraryTitle,contentUserSetting:true,syncSelection:true},initialize:function(){var h=this.get("selection"),g;if(!this.get("library")){this.set("library",f.query())}if(!(h instanceof f.model.Selection)){g=h;if(!g){g=this.get("library").props.toJSON();g=_.omit(g,"orderby","query")}this.set("selection",new f.model.Selection(null,{multiple:this.get("multiple"),props:g}))}if(!this.get("edge")){this.set("edge",120)}if(!this.get("gutter")){this.set("gutter",8)}this.resetDisplays()},activate:function(){this.syncSelection();wp.Uploader.queue.on("add",this.uploading,this);this.get("selection").on("add remove reset",this.refreshContent,this);this.on("insert",this._insertDisplaySettings,this);if(this.get("contentUserSetting")){this.frame.on("content:activate",this.saveContentMode,this);this.set("content",getUserSetting("libraryContent",this.get("content")))}},deactivate:function(){this.recordSelection();this.frame.off("content:activate",this.saveContentMode,this);this.get("selection").off(null,null,this);wp.Uploader.queue.off(null,null,this)},reset:function(){this.get("selection").reset();this.resetDisplays();this.refreshContent()},resetDisplays:function(){this._displays=[];this._defaultDisplaySettings={align:getUserSetting("align","none"),size:getUserSetting("imgsize","medium"),link:getUserSetting("urlbutton","post")}},display:function(h){var g=this._displays;if(!g[h.cid]){g[h.cid]=new Backbone.Model(this._defaultDisplaySettings)}return g[h.cid]},_insertDisplaySettings:function(){var g=this.get("selection"),h;if(g.length!==1){return}h=this.display(g.first()).toJSON();setUserSetting("align",h.align);setUserSetting("imgsize",h.size);setUserSetting("urlbutton",h.link)},syncSelection:function(){var h=this.get("selection"),g=this.frame._selection;if(!this.get("syncSelection")||!g||!h){return}if(h.multiple){h.reset([],{silent:true});h.validateAll(g.attachments);g.difference=_.difference(g.attachments.models,h.models)}h.single(g.single)},recordSelection:function(){var i=this.get("selection"),h=this.frame._selection,g;if(!this.get("syncSelection")||!h||!i){return}if(i.multiple){h.attachments.reset(i.toArray().concat(h.difference));h.difference=[]}else{h.attachments.add(i.toArray())}h.single=i._single},refreshContent:function(){var h=this.get("selection"),j=this.frame,g=j.router.get(),i=j.content.mode();if(this.active&&!h.length&&!g.get(i)){this.frame.content.render(this.get("content"))}},uploading:function(h){var g=this.frame.content;if("upload"===g.mode()){this.frame.content.mode("browse")}if(this.get("multiple")){this.get("selection").add(h)}},saveContentMode:function(){if("browse"!==this.get("router")){return}var h=this.frame.content.mode(),g=this.frame.router.get();if(g&&g.get(h)){setUserSetting("libraryContent",h)}}});f.controller.GalleryEdit=f.controller.Library.extend({defaults:{id:"gallery-edit",multiple:false,describe:true,edge:199,editing:false,sortable:true,searchable:false,toolbar:"gallery-edit",content:"browse",title:b.editGalleryTitle,priority:60,dragInfo:true,syncSelection:false},initialize:function(){if(!this.get("library")){this.set("library",new f.model.Selection())}if(!this.get("AttachmentView")){this.set("AttachmentView",f.view.Attachment.EditLibrary)}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library");g.props.set("type","image");this.get("library").observe(wp.Uploader.queue);this.frame.on("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue);this.frame.off("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},gallerySettings:function(h){var g=this.get("library");if(!g||!h){return}g.gallery=g.gallery||new Backbone.Model();h.sidebar.set({gallery:new f.view.Settings.Gallery({controller:this,model:g.gallery,priority:40})});h.toolbar.set("reverse",{text:b.reverseOrder,priority:80,click:function(){g.reset(g.toArray().reverse())}})}});f.controller.GalleryAdd=f.controller.Library.extend({defaults:_.defaults({id:"gallery-library",filterable:"uploaded",multiple:"add",menu:"gallery",toolbar:"gallery-add",title:b.addToGalleryTitle,priority:100,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library"),h=this.frame.state("gallery-edit").get("library");if(this.editLibrary&&this.editLibrary!==h){g.unobserve(this.editLibrary)}g.validator=function(i){return !!this.mirroring.getByCid(i.cid)&&!h.getByCid(i.cid)&&f.model.Selection.prototype.validator.apply(this,arguments)};g.observe(h);this.editLibrary=h;f.controller.Library.prototype.activate.apply(this,arguments)}});f.controller.FeaturedImage=f.controller.Library.extend({defaults:_.defaults({id:"featured-image",filterable:"uploaded",multiple:false,toolbar:"featured-image",title:b.setFeaturedImageTitle,priority:60,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){var h,g;if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments);h=this.get("library");g=h.comparator;h.comparator=function(j,i){var l=!!this.mirroring.getByCid(j.cid),k=!!this.mirroring.getByCid(i.cid);if(!l&&k){return -1}else{if(l&&!k){return 1}else{return g.apply(this,arguments)}}};h.observe(this.get("selection"))},activate:function(){this.updateSelection();this.frame.on("open",this.updateSelection,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var g=this.get("selection"),i=f.view.settings.post.featuredImageId,h;if(""!==i&&-1!==i){h=d.get(i);h.fetch()}g.reset(h?[h]:[])}});f.controller.Embed=f.controller.State.extend({defaults:{id:"embed",url:"",menu:"default",content:"embed",toolbar:"main-embed",type:"link",title:b.insertFromUrlTitle,priority:120},sensitivity:200,initialize:function(){this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity);this.props=new Backbone.Model({url:""});this.props.on("change:url",this.debouncedScan,this);this.props.on("change:url",this.refresh,this);this.on("scan",this.scanImage,this)},scan:function(){var h,i=this,g={type:"link",scanners:[]};if(this.props.get("url")){this.trigger("scan",g)}if(g.scanners.length){h=g.scanners=e.when.apply(e,g.scanners);h.always(function(){if(i.get("scanners")===h){i.set("loading",false)}})}else{g.scanners=null}g.loading=!!g.scanners;this.set(g)},scanImage:function(h){var l=this.frame,j=this,i=this.props.get("url"),k=new Image(),g=e.Deferred();h.scanners.push(g.promise());k.onload=function(){g.resolve();if(j!==l.state()||i!==j.props.get("url")){return}j.set({type:"image"});j.props.set({width:k.width,height:k.height})};k.onerror=g.reject;k.src=i},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""});if(this.active){this.refresh()}}});f.Views=function(h,g){this.view=h;this._views=_.isArray(g)?{"":g}:g||{}};f.Views.extend=Backbone.Model.extend;_.extend(f.Views.prototype,{all:function(){return _.flatten(this._views)},get:function(g){g=g||"";return this._views[g]},first:function(g){var h=this.get(g);return h&&h.length?h[0]:null},set:function(g,h,i){var k,j;if(!_.isString(g)){i=h;h=g;g=""}i=i||{};h=_.isArray(h)?h:[h];k=this.get(g);j=h;if(k){if(i.add){if(_.isUndefined(i.at)){j=k.concat(h)}else{j=k;j.splice.apply(j,[i.at,0].concat(h))}}else{_.each(j,function(l){l.__detach=true});_.each(k,function(l){if(l.__detach){l.$el.detach()}else{l.dispose()}});_.each(j,function(l){delete l.__detach})}}this._views[g]=j;_.each(h,function(n){var l=n.Views||f.Views,m=n.views=n.views||new l(n);m.parent=this.view;m.selector=g},this);if(!i.silent){this._attach(g,h,_.extend({ready:this._isReady()},i))}return this},add:function(g,h,i){if(!_.isString(g)){i=h;h=g;g=""}return this.set(g,h,_.extend({add:true},i))},unset:function(g,h,i){var j;if(!_.isString(g)){i=h;h=g;g=""}h=h||[];if(j=this.get(g)){h=_.isArray(h)?h:[h];this._views[g]=h.length?_.difference(j,h):[]}if(!i||!i.silent){_.invoke(h,"dispose")}return this},detach:function(){e(_.pluck(this.all(),"el")).detach();return this},render:function(){var g={ready:this._isReady()};_.each(this._views,function(i,h){this._attach(h,i,g)},this);this.rendered=true;return this},dispose:function(g){if(!g||!g.silent){if(this.parent&&this.parent.views){this.parent.views.unset(this.selector,this.view,{silent:true})}delete this.parent;delete this.selector}_.invoke(this.all(),"dispose");this._views=[];return this},replace:function(g,h){g.html(h);return this},insert:function(h,k,j){var g=j&&j.at,i;if(_.isNumber(g)&&(i=h.children()).length>g){i.eq(g).before(k)}else{h.append(k)}return this},ready:function(){this.view.trigger("ready");_.chain(this.all()).map(function(g){return g.views}).flatten().where({attached:true}).invoke("ready")},_attach:function(g,h,i){var k=g?this.view.$(g):this.view.$el,j;if(!k.length){return this}j=_.chain(h).pluck("views").flatten().value();_.each(j,function(l){if(l.rendered){return}l.view.render();l.rendered=true},this);this[i.add?"insert":"replace"](k,_.pluck(h,"el"),i);_.each(j,function(l){l.attached=true;if(i.ready){l.ready()}},this);return this},_isReady:function(){var g=this.view.el;while(g){if(g===document.body){return true}g=g.parentNode}return false}});f.View=Backbone.View.extend({Views:f.Views,constructor:function(g){this.views=new this.Views(this,this.views);this.on("ready",this.ready,this);if(g&&g.controller){this.controller=g.controller}Backbone.View.apply(this,arguments)},dispose:function(){this.undelegateEvents();if(this.model&&this.model.off){this.model.off(null,null,this)}if(this.collection&&this.collection.off){this.collection.off(null,null,this)}if(this.controller&&this.controller.off){this.controller.off(null,null,this)}if(this.views){this.views.dispose()}return this},remove:function(){this.dispose();return Backbone.View.prototype.remove.apply(this,arguments)},render:function(){var g;if(this.prepare){g=this.prepare()}this.views.detach();if(this.template){g=g||{};this.trigger("prepare",g);this.$el.html(this.template(g))}this.views.render();return this},prepare:function(){return this.options},ready:function(){}});f.view.Frame=f.View.extend({initialize:function(){this._createRegions();this._createStates()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[];_.each(this.regions,function(g){this[g]=new f.controller.Region({view:this,id:g,selector:".media-frame-"+g})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:f.controller.State});this.states.on("add",function(g){g.frame=this;g.trigger("ready")},this);if(this.options.states){this.states.add(this.options.states)}},reset:function(){this.states.invoke("trigger","reset");return this}});_.extend(f.view.Frame.prototype,f.controller.StateMachine.prototype);f.view.MediaFrame=f.view.Frame.extend({className:"media-frame",template:f.template("media-frame"),regions:["menu","title","content","toolbar","router"],initialize:function(){f.view.Frame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{title:"",modal:true,uploader:true});this.$el.addClass("wp-core-ui");if(this.options.modal){this.modal=new f.view.Modal({controller:this,title:this.options.title});this.modal.content(this)}if(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported){this.options.uploader=false}if(this.options.uploader){this.uploader=new f.view.UploaderWindow({controller:this,uploader:{dropzone:this.modal?this.modal.$el:this.$el,container:this.$el}});this.views.set(".media-frame-uploader",this.uploader)}this.on("attach",_.bind(this.views.ready,this.views),this);this.on("title:create:default",this.createTitle,this);this.title.mode("default");this.on("menu:create:default",this.createMenu,this)},render:function(){if(!this.state()&&this.options.state){this.setState(this.options.state)}return f.view.Frame.prototype.render.apply(this,arguments)},createTitle:function(g){g.view=new f.View({controller:this,tagName:"h1"})},createMenu:function(g){g.view=new f.view.Menu({controller:this})},createToolbar:function(g){g.view=new f.view.Toolbar({controller:this})},createRouter:function(g){g.view=new f.view.Router({controller:this})},createIframeStates:function(g){var j=f.view.settings,i=j.tabs,k=j.tabUrl,h;if(!i||!k){return}h=e("#post_ID");if(h.length){k+="&post_id="+h.val()}_.each(i,function(m,n){var l=this.state("iframe:"+n).set(_.defaults({tab:n,src:k+"&tab="+n,title:m,content:"iframe",menu:"default"},g))},this);this.on("content:create:iframe",this.iframeContent,this);this.on("menu:render:default",this.iframeMenu,this);this.on("open",this.hijackThickbox,this);this.on("close",this.restoreThickbox,this)},iframeContent:function(g){this.$el.addClass("hide-toolbar");g.view=new f.view.Iframe({controller:this})},iframeMenu:function(h){var g={};if(!h){return}_.each(f.view.settings.tabs,function(i,j){g["iframe:"+j]={text:this.state("iframe:"+j).get("title"),priority:200}},this);h.set(g)},hijackThickbox:function(){var g=this;if(!window.tb_remove||this._tb_remove){return}this._tb_remove=window.tb_remove;window.tb_remove=function(){g.close();g.reset();g.setState(g.options.state);g._tb_remove.call(window)}},restoreThickbox:function(){if(!this._tb_remove){return}window.tb_remove=this._tb_remove;delete this._tb_remove}});_.each(["open","close","attach","detach","escape"],function(g){f.view.MediaFrame.prototype[g]=function(h){if(this.modal){this.modal[g].apply(this.modal,arguments)}return this}});f.view.MediaFrame.Select=f.view.MediaFrame.extend({initialize:function(){f.view.MediaFrame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{selection:[],library:{},multiple:false,state:"library"});this.createSelection();this.createStates();this.bindHandlers()},createSelection:function(){var g=this,h=this.options.selection;if(!(h instanceof f.model.Selection)){this.options.selection=new f.model.Selection(h,{multiple:this.options.multiple})}this._selection={attachments:new c(),difference:[]}},createStates:function(){var g=this.options;if(this.options.states){return}this.states.add([new f.controller.Library({library:f.query(g.library),multiple:g.multiple,title:g.title,priority:20})])},bindHandlers:function(){this.on("router:create:browse",this.createRouter,this);this.on("router:render:browse",this.browseRouter,this);this.on("content:create:browse",this.browseContent,this);this.on("content:render:upload",this.uploadContent,this);this.on("toolbar:create:select",this.createSelectToolbar,this)},browseRouter:function(g){g.set({upload:{text:b.uploadFilesTitle,priority:20},browse:{text:b.mediaLibraryTitle,priority:40}})},browseContent:function(g){var h=this.state();this.$el.removeClass("hide-toolbar");g.view=new f.view.AttachmentsBrowser({controller:this,collection:h.get("library"),selection:h.get("selection"),model:h,sortable:h.get("sortable"),search:h.get("searchable"),filters:h.get("filterable"),display:h.get("displaySettings"),dragInfo:h.get("dragInfo"),AttachmentView:h.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar");this.content.set(new f.view.UploaderInline({controller:this}))},createSelectToolbar:function(h,g){g=g||this.options.button||{};g.controller=this;h.view=new f.view.Toolbar.Select(g)}});f.view.MediaFrame.Post=f.view.MediaFrame.Select.extend({initialize:function(){_.defaults(this.options,{multiple:true,editing:false,state:"insert"});f.view.MediaFrame.Select.prototype.initialize.apply(this,arguments);this.createIframeStates()},createStates:function(){var g=this.options;this.states.add([new f.controller.Library({id:"insert",title:b.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:f.query(g.library),multiple:g.multiple?"reset":false,editable:true,allowLocalEdits:true,displaySettings:true,displayUserSettings:true}),new f.controller.Library({id:"gallery",title:b.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:false,library:f.query(_.defaults({type:"image"},g.library))}),new f.controller.Embed(),new f.controller.GalleryEdit({library:g.selection,editing:g.editing,menu:"gallery"}),new f.controller.GalleryAdd()]);if(f.view.settings.post.featuredImageId){this.states.add(new f.controller.FeaturedImage())}},bindHandlers:function(){f.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments);this.on("menu:create:gallery",this.createMenu,this);this.on("toolbar:create:main-insert",this.createToolbar,this);this.on("toolbar:create:main-gallery",this.createToolbar,this);this.on("toolbar:create:featured-image",this.featuredImageToolbar,this);this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this);var g={menu:{"default":"mainMenu",gallery:"galleryMenu"},content:{embed:"embedContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar"}};_.each(g,function(i,h){_.each(i,function(k,j){this.on(h+":render:"+j,this[k],this)},this)},this)},mainMenu:function(g){g.set({"library-separator":new f.View({className:"separator",priority:100})})},galleryMenu:function(g){var h=this.lastState(),i=h&&h.id,j=this;g.set({cancel:{text:b.cancelGalleryTitle,priority:20,click:function(){if(i){j.setState(i)}else{j.close()}}},separateCancel:new f.View({className:"separator",priority:40})})},embedContent:function(){var g=new f.view.Embed({controller:this,model:this.state()}).render();this.content.set(g);g.url.focus()},editSelectionContent:function(){var i=this.state(),h=i.get("selection"),g;g=new f.view.AttachmentsBrowser({controller:this,collection:h,selection:h,model:i,sortable:true,search:false,dragInfo:true,AttachmentView:f.view.Attachment.EditSelection}).render();g.toolbar.set("backToLibrary",{text:b.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}});this.content.set(g)},selectionStatusToolbar:function(g){var h=this.state().get("editable");g.set("selection",new f.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:h&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("insert",{style:"primary",priority:80,text:b.insertIntoPost,requires:{selection:true},click:function(){var j=g.state(),i=j.get("selection");g.close();j.trigger("insert",i).reset()}})},mainGalleryToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("gallery",{style:"primary",text:b.createNewGallery,priority:60,requires:{selection:true},click:function(){var i=g.state().get("selection"),j=g.state("gallery-edit"),k=i.where({type:"image"});j.set("library",new f.model.Selection(k,{props:i.props.toJSON(),multiple:true}));this.controller.setState("gallery-edit")}})},featuredImageToolbar:function(g){this.createSelectToolbar(g,{text:b.setFeaturedImage,state:this.options.state||"upload"})},mainEmbedToolbar:function(g){g.view=new f.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var g=this.state().get("editing");this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g?b.updateGallery:b.insertGallery,priority:80,requires:{library:true},click:function(){var h=this.controller,i=h.state();h.close();i.trigger("update",i.get("library"));h.reset();h.setState("upload")}}}}))},galleryAddToolbar:function(){this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:b.addToGallery,priority:80,requires:{selection:true},click:function(){var g=this.controller,i=g.state(),h=g.state("gallery-edit");h.get("library").add(i.get("selection").models);i.trigger("reset");g.setState("gallery-edit")}}}}))}});f.view.Modal=f.View.extend({tagName:"div",template:f.template("media-modal"),attributes:{tabindex:0},events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler",keydown:"keydown"},initialize:function(){_.defaults(this.options,{container:document.body,title:"",propagate:true,freeze:true})},prepare:function(){return{title:this.options.title}},attach:function(){if(this.views.attached){return this}if(!this.views.rendered){this.render()}this.$el.appendTo(this.options.container);this.views.attached=true;this.views.ready();return this.propagate("attach")},detach:function(){if(this.$el.is(":visible")){this.close()}this.$el.detach();this.views.attached=false;return this.propagate("detach")},open:function(){var h=this.$el,g=this.options;if(h.is(":visible")){return this}if(!this.views.attached){this.attach()}if(g.freeze){this._freeze={scrollTop:e(window).scrollTop()}}h.show().focus();return this.propagate("open")},close:function(g){var h=this._freeze;if(!this.views.attached||!this.$el.is(":visible")){return this}this.$el.hide();this.propagate("close");if(h){e(window).scrollTop(h.scrollTop)}if(g&&g.escape){this.propagate("escape")}return this},escape:function(){return this.close({escape:true})},escapeHandler:function(g){g.preventDefault();this.escape()},content:function(g){this.views.set(".media-modal-content",g);return this},propagate:function(g){this.trigger(g);if(this.options.propagate){this.controller.trigger(g)}return this},keydown:function(g){if(27===g.which){g.preventDefault();this.escape();return}}});f.view.FocusManager=f.View.extend({events:{keydown:"recordTab",focusin:"updateIndex"},focus:function(){if(_.isUndefined(this.index)){return}this.$tabbables=this.$(":tabbable");this.$tabbables.eq(this.index).focus()},recordTab:function(h){if(9!==h.keyCode){return}if(_.isUndefined(this.index)){this.updateIndex(h)}if(_.isUndefined(this.index)){return}var g=this.index+(h.shiftKey?-1:1);if(g>=0&&g<this.$tabbables.length){this.index=g}else{delete this.index}},updateIndex:function(h){this.$tabbables=this.$(":tabbable");var g=this.$tabbables.index(h.target);if(-1===g){delete this.index}else{this.index=g}}});f.view.UploaderWindow=f.View.extend({tagName:"div",className:"uploader-window",template:f.template("uploader-window"),initialize:function(){var g;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body");g=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}});if(g.dropzone&&!(g.dropzone instanceof e)){g.dropzone=e(g.dropzone)}this.controller.on("activate",this.refresh,this)},refresh:function(){if(this.uploader){this.uploader.refresh()}},ready:function(){var h=f.view.settings.post.id,g;if(this.uploader){return}if(h){this.options.uploader.params.post_id=h}this.uploader=new wp.Uploader(this.options.uploader);g=this.uploader.dropzone;g.on("dropzone:enter",_.bind(this.show,this));g.on("dropzone:leave",_.bind(this.hide,this))},show:function(){var g=this.$el.show();_.defer(function(){g.css({opacity:1})})},hide:function(){var g=this.$el.css({opacity:0});f.transition(g).done(function(){if("0"===g.css("opacity")){g.hide()}})}});f.view.UploaderInline=f.View.extend({tagName:"div",className:"uploader-inline",template:f.template("uploader-inline"),initialize:function(){_.defaults(this.options,{message:"",status:true});if(!this.options.$browser&&this.controller.uploader){this.options.$browser=this.controller.uploader.$browser}if(_.isUndefined(this.options.postId)){this.options.postId=f.view.settings.post.id}if(this.options.status){this.views.set(".upload-inline-status",new f.view.UploaderStatus({controller:this.controller}))}},dispose:function(){if(this.disposing){return f.View.prototype.dispose.apply(this,arguments)}this.disposing=true;return this.remove()},remove:function(){var g=f.View.prototype.remove.apply(this,arguments);_.defer(_.bind(this.refresh,this));return g},refresh:function(){var g=this.controller.uploader;if(g){g.refresh()}},ready:function(){var g=this.options.$browser,h;if(this.controller.uploader){h=this.$(".browser");if(h[0]===g[0]){return}g.detach().text(h.text());g[0].className=h[0].className;h.replaceWith(g.show())}this.refresh();return this}});f.view.UploaderStatus=f.View.extend({className:"media-uploader-status",template:f.template("uploader-status"),events:{"click .upload-dismiss-errors":"dismiss"},initialize:function(){this.queue=wp.Uploader.queue;this.queue.on("add remove reset",this.visibility,this);this.queue.on("add remove reset change:percent",this.progress,this);this.queue.on("add remove reset change:uploading",this.info,this);this.errors=wp.Uploader.errors;this.errors.reset();this.errors.on("add remove reset",this.visibility,this);this.errors.on("add",this.error,this)},dispose:function(){wp.Uploader.queue.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return this},visibility:function(){this.$el.toggleClass("uploading",!!this.queue.length);this.$el.toggleClass("errors",!!this.errors.length);this.$el.toggle(!!this.queue.length||!!this.errors.length)},ready:function(){_.each({"$bar":".media-progress-bar div","$index":".upload-index","$total":".upload-total","$filename":".upload-filename"},function(g,h){this[h]=this.$(g)},this);this.visibility();this.progress();this.info()},progress:function(){var g=this.queue,i=this.$bar,h=0;if(!i||!g.length){return}i.width((g.reduce(function(j,l){if(!l.get("uploading")){return j+100}var k=l.get("percent");return j+(_.isNumber(k)?k:100)},0)/g.length)+"%")},info:function(){var g=this.queue,h=0,i;if(!g.length){return}i=this.queue.find(function(k,j){h=j;return k.get("uploading")});this.$index.text(h+1);this.$total.text(g.length);this.$filename.html(i?this.filename(i.get("filename")):"")},filename:function(g){return f.truncate(_.escape(g),24)},error:function(g){this.views.add(".upload-errors",new f.view.UploaderStatusError({filename:this.filename(g.get("file").name),message:g.get("message")}),{at:0})},dismiss:function(g){var h=this.views.get(".upload-errors");g.preventDefault();if(h){_.invoke(h,"remove")}wp.Uploader.errors.reset()}});f.view.UploaderStatusError=f.View.extend({className:"upload-error",template:f.template("uploader-status-error")});f.view.Toolbar=f.View.extend({tagName:"div",className:"media-toolbar",initialize:function(){var i=this.controller.state(),h=this.selection=i.get("selection"),g=this.library=i.get("library");this._views={};this.primary=new f.view.PriorityList();this.secondary=new f.view.PriorityList();this.primary.$el.addClass("media-toolbar-primary");this.secondary.$el.addClass("media-toolbar-secondary");this.views.set([this.secondary,this.primary]);if(this.options.items){this.set(this.options.items,{silent:true})}if(!this.options.silent){this.render()}if(h){h.on("add remove reset",this.refresh,this)}if(g){g.on("add remove reset",this.refresh,this)}},dispose:function(){if(this.selection){this.selection.off(null,null,this)}if(this.library){this.library.off(null,null,this)}return f.View.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(j,g,h){var i;h=h||{};if(_.isObject(j)){_.each(j,function(k,l){this.set(l,k,{silent:true})},this)}else{if(!(g instanceof Backbone.View)){g.classes=["media-button-"+j].concat(g.classes||[]);g=new f.view.Button(g).render()}g.controller=g.controller||this.controller;this._views[j]=g;i=g.options.priority<0?"secondary":"primary";this[i].set(j,g,h)}if(!h.silent){this.refresh()}return this},get:function(g){return this._views[g]},unset:function(h,g){delete this._views[h];this.primary.unset(h,g);this.secondary.unset(h,g);if(!g||!g.silent){this.refresh()}return this},refresh:function(){var i=this.controller.state(),g=i.get("library"),h=i.get("selection");_.each(this._views,function(j){if(!j.model||!j.options||!j.options.requires){return}var l=j.options.requires,k=false;if(l.selection&&h&&!h.length){k=true}else{if(l.library&&g&&!g.length){k=true}}j.model.set("disabled",k)})}});f.view.Toolbar.Select=f.view.Toolbar.extend({initialize:function(){var h=this.options,g=h.controller,i=g.state().get("selection");_.bindAll(this,"clickSelect");_.defaults(h,{event:"select",state:false,reset:true,close:true,text:b.select,requires:{selection:true}});h.items=_.defaults(h.items||{},{select:{style:"primary",text:h.text,priority:80,click:this.clickSelect,requires:h.requires}});f.view.Toolbar.prototype.initialize.apply(this,arguments)},clickSelect:function(){var h=this.options,g=this.controller;if(h.close){g.close()}if(h.event){g.state().trigger(h.event)}if(h.reset){g.reset()}if(h.state){g.setState(h.state)}}});f.view.Toolbar.Embed=f.view.Toolbar.Select.extend({initialize:function(){_.defaults(this.options,{text:b.insertIntoPost,requires:false});f.view.Toolbar.Select.prototype.initialize.apply(this,arguments)},refresh:function(){var g=this.controller.state().props.get("url");this.get("select").model.set("disabled",!g||g==="http://");f.view.Toolbar.Select.prototype.refresh.apply(this,arguments)}});f.view.Button=f.View.extend({tagName:"a",className:"media-button",attributes:{href:"#"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:false},initialize:function(){this.model=new Backbone.Model(this.defaults);_.each(this.defaults,function(i,g){var h=this.options[g];if(_.isUndefined(h)){return}this.model.set(g,h);delete this.options[g]},this);this.model.on("change",this.render,this)},render:function(){var h=["button",this.className],g=this.model.toJSON();if(g.style){h.push("button-"+g.style)}if(g.size){h.push("button-"+g.size)}h=_.uniq(h.concat(this.options.classes));this.el.className=h.join(" ");this.$el.attr("disabled",g.disabled);this.$el.text(this.model.get("text"));return this},click:function(g){if("#"===this.attributes.href){g.preventDefault()}if(this.options.click&&!this.model.get("disabled")){this.options.click.apply(this,arguments)}}});f.view.ButtonGroup=f.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(g){if(g instanceof Backbone.View){return g}else{return new f.view.Button(g).render()}});delete this.options.buttons;if(this.options.classes){this.$el.addClass(this.options.classes)}},render:function(){this.$el.html(e(_.pluck(this.buttons,"el")).detach());return this}});f.view.PriorityList=f.View.extend({tagName:"div",initialize:function(){this._views={};this.set(_.extend({},this._views,this.options.views),{silent:true});delete this.options.views;if(!this.options.silent){this.render()}},set:function(l,h,j){var k,g,i;j=j||{};if(_.isObject(l)){_.each(l,function(m,n){this.set(n,m)},this);return this}if(!(h instanceof Backbone.View)){h=this.toView(h,l,j)}h.controller=h.controller||this.controller;this.unset(l);k=h.options.priority||10;g=this.views.get()||[];_.find(g,function(n,m){if(n.options.priority>k){i=m;return true}});this._views[l]=h;this.views.add(h,{at:_.isNumber(i)?i:g.length||0});return this},get:function(g){return this._views[g]},unset:function(h){var g=this.get(h);if(g){g.remove()}delete this._views[h];return this},toView:function(g){return new f.View(g)}});f.view.MenuItem=f.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(g){var h=this.options.click;if(g){g.preventDefault()}if(h){h.call(this)}else{this.click()}},click:function(){var g=this.options.state;if(g){this.controller.setState(g)}},render:function(){var g=this.options;if(g.text){this.$el.text(g.text)}else{if(g.html){this.$el.html(g.html)}}return this}});f.view.Menu=f.view.PriorityList.extend({tagName:"div",className:"media-menu",property:"state",ItemView:f.view.MenuItem,region:"menu",toView:function(g,h){g=g||{};g[this.property]=g[this.property]||h;return new this.ItemView(g).render()},ready:function(){f.view.PriorityList.prototype.ready.apply(this,arguments);this.visibility()},set:function(){f.view.PriorityList.prototype.set.apply(this,arguments);this.visibility()},unset:function(){f.view.PriorityList.prototype.unset.apply(this,arguments);this.visibility()},visibility:function(){var j=this.region,h=this.controller[j].get(),g=this.views.get(),i=!g||g.length<2;if(this===h){this.controller.$el.toggleClass("hide-"+j,i)}},select:function(h){var g=this.get(h);if(!g){return}this.deselect();g.$el.addClass("active")},deselect:function(){this.$el.children().removeClass("active")}});f.view.RouterItem=f.view.MenuItem.extend({click:function(){var g=this.options.contentMode;if(g){this.controller.content.mode(g)}}});f.view.Router=f.view.Menu.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:f.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this);f.view.Menu.prototype.initialize.apply(this,arguments)},update:function(){var g=this.controller.content.mode();if(g){this.select(g)}}});f.view.Sidebar=f.view.PriorityList.extend({className:"media-sidebar"});f.view.Attachment=f.View.extend({tagName:"li",className:"attachment",template:f.template("attachment"),events:{"click .attachment-preview":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .close":"removeFromLibrary","click .check":"removeFromSelection","click a":"preventDefault"},buttons:{},initialize:function(){var g=this.options.selection;this.model.on("change:sizes change:uploading change:caption change:title",this.render,this);this.model.on("change:percent",this.progress,this);this.model.on("add",this.select,this);this.model.on("remove",this.deselect,this);if(g){g.on("reset",this.updateSelect,this)}this.model.on("selection:single selection:unsingle",this.details,this);this.details(this.model,this.controller.state().get("selection"))},dispose:function(){var g=this.options.selection;this.updateAll();if(g){g.off(null,null,this)}f.View.prototype.dispose.apply(this,arguments);return this},render:function(){var g=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:false,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:false,alt:"",description:""});g.buttons=this.buttons;g.describe=this.controller.state().get("describe");if("image"===g.type){g.size=this.imageSize()}g.can={};if(g.nonces){g.can.remove=!!g.nonces["delete"];g.can.save=!!g.nonces.update}if(this.controller.state().get("allowLocalEdits")){g.allowLocalEdits=true}this.views.detach();this.$el.html(this.template(g));this.$el.toggleClass("uploading",g.uploading);if(g.uploading){this.$bar=this.$(".media-progress-bar div")}else{delete this.$bar}this.updateSelect();this.updateSave();this.views.render();return this},progress:function(){if(this.$bar&&this.$bar.length){this.$bar.width(this.model.get("percent")+"%")}},toggleSelectionHandler:function(g){var h;if(g.shiftKey){h="between"}else{if(g.ctrlKey||g.metaKey){h="toggle"}}this.toggleSelection({method:h})},toggleSelection:function(p){var k=this.collection,l=this.options.selection,j=this.model,g=p&&p.method,m,n,h,i,o;if(!l){return}m=l.single();g=_.isUndefined(g)?l.multiple:g;if("between"===g&&m&&l.multiple){if(m===j){return}i=k.indexOf(m);o=k.indexOf(this.model);if(i<o){h=k.models.slice(i,o+1)}else{h=k.models.slice(o,i+1)}l.add(h).single(j);return}else{if("toggle"===g){l[this.selected()?"remove":"add"](j).single(j);return}}if(g!=="add"){g="reset"}if(this.selected()){l[m===j?"remove":"single"](j)}else{l[g](j).single(j)}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var g=this.options.selection;if(g){return !!g.getByCid(this.model.cid)}},select:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.addClass("selected")},deselect:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.removeClass("selected")},details:function(g,j){var i=this.options.selection,h;if(i!==j){return}h=i.single();this.$el.toggleClass("details",h===this.model)},preventDefault:function(g){g.preventDefault()},imageSize:function(g){var h=this.model.get("sizes");g=g||"medium";if(h&&h[g]){return _.clone(h[g])}else{return{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}}},updateSetting:function(i){var g=e(i.target).closest("[data-setting]"),h,j;if(!g.length){return}h=g.data("setting");j=i.target.value;if(this.model.get(h)!==j){this.save(h,j)}},save:function(){var g=this,i=this._save=this._save||{status:"ready"},h=this.model.save.apply(this.model,arguments),j=i.requests?e.when(h,i.requests):h;if(i.savedTimer){clearTimeout(i.savedTimer)}this.updateSave("waiting");i.requests=j;j.always(function(){if(i.requests!==j){return}g.updateSave(j.state()==="resolved"?"complete":"error");i.savedTimer=setTimeout(function(){g.updateSave("ready");delete i.savedTimer},2000)})},updateSave:function(g){var h=this._save=this._save||{status:"ready"};if(g&&g!==h.status){this.$el.removeClass("save-"+h.status);h.status=g}this.$el.addClass("save-"+h.status);return this},updateAll:function(){var h=this.$("[data-setting]"),g=this.model,i;i=_.chain(h).map(function(k){var m=e("input, textarea, select, [value]",k),j,l;if(!m.length){return}j=e(k).data("setting");l=m.val();if(g.get(j)!==l){return[j,l]}}).compact().object().value();if(!_.isEmpty(i)){g.save(i)}},removeFromLibrary:function(g){g.stopPropagation();this.collection.remove(this.model)},removeFromSelection:function(h){var g=this.options.selection;if(!g){return}h.stopPropagation();g.remove(this.model)}});f.view.Attachment.Library=f.view.Attachment.extend({buttons:{check:true}});f.view.Attachment.EditLibrary=f.view.Attachment.extend({buttons:{close:true}});f.view.Attachments=f.View.extend({tagName:"ul",className:"attachments",cssTemplate:f.template("attachments-css"),events:{scroll:"scroll"},initialize:function(){this.el.id=_.uniqueId("__attachments-view-");_.defaults(this.options,{refreshSensitivity:200,refreshThreshold:3,AttachmentView:f.view.Attachment,sortable:false,resize:true});this._viewsByCid={};this.collection.on("add",function(i,g,h){this.views.add(this.createAttachmentView(i),{at:h.index})},this);this.collection.on("remove",function(j,g,i){var h=this._viewsByCid[j.cid];delete this._viewsByCid[j.cid];if(h){h.remove()}},this);this.collection.on("reset",this.render,this);this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value();this.initSortable();_.bindAll(this,"css");this.model.on("change:edge change:gutter",this.css,this);this._resizeCss=_.debounce(_.bind(this.css,this),this.refreshSensitivity);if(this.options.resize){e(window).on("resize.attachments",this._resizeCss)}this.css()},dispose:function(){this.collection.props.off(null,null,this);e(window).off("resize.attachments",this._resizeCss);f.View.prototype.dispose.apply(this,arguments)},css:function(){var g=e("#"+this.el.id+"-css");if(g.length){g.remove()}f.view.Attachments.$head().append(this.cssTemplate({id:this.el.id,edge:this.edge(),gutter:this.model.get("gutter")}))},edge:function(){var i=this.model.get("edge"),j,h,g;if(!this.$el.is(":visible")){return i}j=this.model.get("gutter")*2;h=this.$el.width()-j;g=Math.ceil(h/(i+j));i=Math.floor((h-(g*j))/g);return i},initSortable:function(){var g=this.collection;if(!this.options.sortable||!e.fn.sortable){return}this.$el.sortable(_.extend({disabled:!!g.comparator,containment:this.$el,tolerance:"pointer",start:function(h,i){i.item.data("sortableIndexStart",i.item.index())},update:function(j,k){var i=g.at(k.item.data("sortableIndexStart")),h=g.comparator;delete g.comparator;g.remove(i,{silent:true}).add(i,{silent:true,at:k.item.index()});g.comparator=h;g.trigger("reset",g);g.saveMenuOrder()}},this.options.sortable));g.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!g.comparator)},this);this.collection.props.on("change:orderby",this.refreshSortable,this);this.refreshSortable()},refreshSortable:function(){if(!this.options.sortable||!e.fn.sortable){return}var i=this.collection,h=i.props.get("orderby"),g="menuOrder"===h||!i.comparator;this.$el.sortable("option","disabled",!g)},createAttachmentView:function(h){var g=new this.options.AttachmentView({controller:this.controller,model:h,collection:this.collection,selection:this.options.selection});return this._viewsByCid[h.cid]=g},prepare:function(){if(this.collection.length){this.views.set(this.collection.map(this.createAttachmentView,this))}else{this.views.unset();this.collection.more().done(this.scroll)}},ready:function(){this.scroll()},scroll:function(g){if(!this.$el.is(":visible")){return}if(this.collection.hasMore()&&this.el.scrollHeight<this.el.scrollTop+(this.el.clientHeight*this.options.refreshThreshold)){this.collection.more().done(this.scroll)}}},{$head:(function(){var g;return function(){return g=g||e("head")}}())});f.view.Search=f.View.extend({tagName:"input",className:"search",attributes:{type:"search",placeholder:b.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){this.el.value=this.model.escape("search");return this},search:function(g){if(g.target.value){this.model.set("search",g.target.value)}else{this.model.unset("search")}}});f.view.AttachmentFilters=f.View.extend({tagName:"select",className:"attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters();_.extend(this.filters,this.options.filters);this.$el.html(_.chain(this.filters).map(function(g,h){return{el:this.make("option",{value:h},g.text),priority:g.priority||50}},this).sortBy("priority").pluck("el").value());this.model.on("change",this.select,this);this.select()},createFilters:function(){this.filters={}},change:function(h){var g=this.filters[this.el.value];if(g){this.model.set(g.props)}},select:function(){var g=this.model,i="all",h=g.toJSON();_.find(this.filters,function(k,l){var j=_.all(k.props,function(n,m){return n===(_.isUndefined(h[m])?null:h[m])});if(j){return i=l}});this.$el.val(i)}});f.view.AttachmentFilters.Uploaded=f.view.AttachmentFilters.extend({createFilters:function(){var h=this.model.get("type"),g=f.view.settings.mimeTypes,i;if(g&&h){i=g[h]}this.filters={all:{text:i||b.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:b.uploadedToThisPost,props:{uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}}}});f.view.AttachmentFilters.All=f.view.AttachmentFilters.extend({createFilters:function(){var g={};_.each(f.view.settings.mimeTypes||{},function(i,h){g[h]={text:i,props:{type:h,uploadedTo:null,orderby:"date",order:"DESC"}}});g.all={text:b.allMediaItems,props:{type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10};g.uploaded={text:b.uploadedToThisPost,props:{type:null,uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20};this.filters=g}});f.view.AttachmentsBrowser=f.View.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:false,search:true,display:false,AttachmentView:f.view.Attachment.Library});this.createToolbar();this.updateContent();this.createSidebar();this.collection.on("add remove reset",this.updateContent,this)},dispose:function(){this.options.selection.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return this},createToolbar:function(){var h,g;this.toolbar=new f.view.Toolbar({controller:this.controller});this.views.add(this.toolbar);h=this.options.filters;if("uploaded"===h){g=f.view.AttachmentFilters.Uploaded}else{if("all"===h){g=f.view.AttachmentFilters.All}}if(g){this.toolbar.set("filters",new g({controller:this.controller,model:this.collection.props,priority:-80}).render())}if(this.options.search){this.toolbar.set("search",new f.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())}if(this.options.dragInfo){this.toolbar.set("dragInfo",new f.View({el:e('<div class="instructions">'+b.dragInfo+"</div>")[0],priority:-40}))}},updateContent:function(){var g=this;if(!this.attachments){this.createAttachments()}if(!this.collection.length){this.collection.more().done(function(){if(!g.collection.length){g.createUploader()}})}},removeContent:function(){_.each(["attachments","uploader"],function(g){if(this[g]){this[g].remove();delete this[g]}},this)},createUploader:function(){this.removeContent();this.uploader=new f.view.UploaderInline({controller:this.controller,status:false,message:b.noItemsFound});this.views.add(this.uploader)},createAttachments:function(){this.removeContent();this.attachments=new f.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,AttachmentView:this.options.AttachmentView});this.views.add(this.attachments)},createSidebar:function(){var g=this.options,h=g.selection,i=this.sidebar=new f.view.Sidebar({controller:this.controller});this.views.add(i);if(this.controller.uploader){i.set("uploads",new f.view.UploaderStatus({controller:this.controller,priority:40}))}h.on("selection:single",this.createSingle,this);h.on("selection:unsingle",this.disposeSingle,this);if(h.single()){this.createSingle()}},createSingle:function(){var h=this.sidebar,i=this.options.selection.single(),g={};h.set("details",new f.view.Attachment.Details({controller:this.controller,model:i,priority:80}));h.set("compat",new f.view.AttachmentCompat({controller:this.controller,model:i,priority:120}));if(this.options.display){h.set("display",new f.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(i),attachment:i,priority:160,userSettings:this.model.get("displayUserSettings")}))}},disposeSingle:function(){var g=this.sidebar;g.unset("details");g.unset("compat");g.unset("display")}});f.view.Selection=f.View.extend({tagName:"div",className:"media-selection",template:f.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:false,clearable:true});this.attachments=new f.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model({edge:40,gutter:5})});this.views.set(".selection-view",this.attachments);this.collection.on("add remove reset",this.refresh,this);this.controller.on("content:activate",this.refresh,this)},ready:function(){this.refresh()},refresh:function(){if(!this.$el.children().length){return}var h=this.collection,g="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!h.length);this.$el.toggleClass("one",1===h.length);this.$el.toggleClass("editing",g);this.$(".count").text(b.selected.replace("%d",h.length))},edit:function(g){g.preventDefault();if(this.options.editable){this.options.editable.call(this,this.collection)}},clear:function(g){g.preventDefault();this.collection.reset()}});f.view.Attachment.Selection=f.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});f.view.Attachments.Selection=f.view.Attachments.extend({events:{},initialize:function(){_.defaults(this.options,{sortable:true,resize:false,AttachmentView:f.view.Attachment.Selection});return f.view.Attachments.prototype.initialize.apply(this,arguments)}});f.view.Attachment.EditSelection=f.view.Attachment.Selection.extend({buttons:{close:true}});f.view.Settings=f.View.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model();this.model.on("change",this.updateChanges,this)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){f.View.prototype.render.apply(this,arguments);_(this.model.attributes).chain().keys().each(this.update,this);return this},update:function(j){var k=this.model.get(j),i=this.$('[data-setting="'+j+'"]'),g,h;if(!i.length){return}if(i.is("select")){h=i.find('[value="'+k+'"]');if(h.length){i.find("option").prop("selected",false);h.prop("selected",true)}else{this.model.set(j,i.find(":selected").val())}}else{if(i.hasClass("button-group")){g=i.find("button").removeClass("active");g.filter('[value="'+k+'"]').addClass("active")}else{if(i.is('input[type="text"], textarea')){if(!i.is(":focus")){i.val(k)}}else{if(i.is('input[type="checkbox"]')){i.attr("checked",!!k)}}}}},updateHandler:function(i){var h=e(i.target).closest("[data-setting]"),j=i.target.value,g;i.preventDefault();if(!h.length){return}if(h.is('input[type="checkbox"]')){j=h[0].checked}this.model.set(h.data("setting"),j);if(g=h.data("userSetting")){setUserSetting(g,j)}},updateChanges:function(h,g){if(g.changes){_(g.changes).chain().keys().each(this.update,this)}}});f.view.Settings.AttachmentDisplay=f.view.Settings.extend({className:"attachment-display-settings",template:f.template("attachment-display-settings"),initialize:function(){var g=this.options.attachment;_.defaults(this.options,{userSettings:false});f.view.Settings.prototype.initialize.apply(this,arguments);this.model.on("change:link",this.updateLinkTo,this);if(g){g.on("change:uploading",this.render,this)}},dispose:function(){var g=this.options.attachment;if(g){g.off(null,null,this)}f.view.Settings.prototype.dispose.apply(this,arguments)},render:function(){var g=this.options.attachment;if(g){_.extend(this.options,{sizes:g.get("sizes"),type:g.get("type")})}f.view.Settings.prototype.render.call(this);this.updateLinkTo();return this},updateLinkTo:function(){var h=this.model.get("link"),i=this.$(".link-to-custom"),g=this.options.attachment;if("none"===h||(!g&&"custom"!==h)){i.hide();return}if(g){if("post"===h){i.val(g.get("link"))}else{if("file"===h){i.val(g.get("url"))}else{if(!this.model.get("linkUrl")){i.val("http://")}}}i.prop("readonly","custom"!==h)}i.show();if(i.is(":visible")){i.focus()[0].select()}}});f.view.Settings.Gallery=f.view.Settings.extend({className:"gallery-settings",template:f.template("gallery-settings")});f.view.Attachment.Details=f.view.Attachment.extend({tagName:"div",className:"attachment-details",template:f.template("attachment-details"),events:{"change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .delete-attachment":"deleteAttachment","click .edit-attachment":"editAttachment","click .refresh-attachment":"refreshAttachment"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});f.view.Attachment.prototype.initialize.apply(this,arguments)},render:function(){f.view.Attachment.prototype.render.apply(this,arguments);this.focusManager.focus();return this},deleteAttachment:function(g){g.preventDefault();if(confirm(b.warnDelete)){this.model.destroy()}},editAttachment:function(g){this.$el.addClass("needs-refresh")},refreshAttachment:function(g){this.$el.removeClass("needs-refresh");g.preventDefault();this.model.fetch()}});f.view.AttachmentCompat=f.View.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});this.model.on("change:compat",this.render,this)},dispose:function(){if(this.$(":focus").length){this.save()}return f.View.prototype.dispose.apply(this,arguments)},render:function(){var g=this.model.get("compat");if(!g||!g.item){return}this.views.detach();this.$el.html(g.item);this.views.render();this.focusManager.focus();return this},preventDefault:function(g){g.preventDefault()},save:function(g){var h={};if(g){g.preventDefault()}_.each(this.$el.serializeArray(),function(i){h[i.name]=i.value});this.model.saveCompat(h)}});f.view.Iframe=f.View.extend({className:"media-iframe",render:function(){this.views.detach();this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />');this.views.render();return this}});f.view.Embed=f.View.extend({className:"media-embed",initialize:function(){this.url=new f.view.EmbedUrl({controller:this.controller,model:this.model.props}).render();this.views.set([this.url]);this.refresh();this.model.on("change:type",this.refresh,this);this.model.on("change:loading",this.loading,this)},settings:function(g){if(this._settings){this._settings.remove()}this._settings=g;this.views.add(g)},refresh:function(){var h=this.model.get("type"),g;if("image"===h){g=f.view.EmbedImage}else{if("link"===h){g=f.view.EmbedLink}else{return}}this.settings(new g({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});f.view.EmbedUrl=f.View.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.input=this.make("input",{type:"text",value:this.model.get("url")||""});this.spinner=this.make("span",{"class":"spinner"});this.$input=e(this.input);this.$el.append([this.input,this.spinner]);this.model.on("change:url",this.render,this)},render:function(){var g=this.$input;if(g.is(":focus")){return}this.input.value=this.model.get("url")||"http://";f.View.prototype.render.apply(this,arguments);return this},ready:function(){this.focus()},url:function(g){this.model.set("url",g.target.value)},focus:function(){var g=this.$input;if(g.is(":visible")){g.focus()[0].select()}}});f.view.EmbedLink=f.view.Settings.extend({className:"embed-link-settings",template:f.template("embed-link-settings")});f.view.EmbedImage=f.view.Settings.AttachmentDisplay.extend({className:"embed-image-settings",template:f.template("embed-image-settings"),initialize:function(){f.view.Settings.AttachmentDisplay.prototype.initialize.apply(this,arguments);this.model.on("change:url",this.updateImage,this)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/plupload/handlers.dev.js b/wp-includes/js/plupload/handlers.dev.js
deleted file mode 100644 (file)
index 0a631d6..0000000
+++ /dev/null
@@ -1,481 +0,0 @@
-var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init;
-
-function fileDialogStart() {
-       jQuery("#media-upload-error").empty();
-}
-
-// progress and success handlers for media multi uploads
-function fileQueued(fileObj) {
-       // Get rid of unused form
-       jQuery('.media-blank').remove();
-
-       var items = jQuery('#media-items').children(), postid = post_id || 0;
-
-       // Collapse a single item
-       if ( items.length == 1 ) {
-               items.removeClass('open').find('.slidetoggle').slideUp(200);
-       }
-       // Create a progress bar containing the filename
-       jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + postid + '"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> ' + fileObj.name + '</div></div>');
-
-       // Disable submit
-       jQuery('#insert-gallery').prop('disabled', true);
-}
-
-function uploadStart() {
-       try {
-               if ( typeof topWin.tb_remove != 'undefined' )
-                       topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove);
-       } catch(e){}
-
-       return true;
-}
-
-function uploadProgress(up, file) {
-       var item = jQuery('#media-item-' + file.id);
-
-       jQuery('.bar', item).width( (200 * file.loaded) / file.size );
-       jQuery('.percent', item).html( file.percent + '%' );
-}
-
-// check to see if a large file failed to upload
-function fileUploading(up, file) {
-       var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
-
-       if ( max > hundredmb && file.size > hundredmb ) {
-               setTimeout(function(){
-                       var done;
-
-                       if ( file.status < 3 && file.loaded == 0 ) { // not uploading
-                               wpFileError(file, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
-                               up.stop(); // stops the whole queue
-                               up.removeFile(file);
-                               up.start(); // restart the queue
-                       }
-               }, 10000); // wait for 10 sec. for the file to start uploading
-       }
-}
-
-function updateMediaForm() {
-       var items = jQuery('#media-items').children();
-
-       // Just one file, no need for collapsible part
-       if ( items.length == 1 ) {
-               items.addClass('open').find('.slidetoggle').show();
-               jQuery('.insert-gallery').hide();
-       } else if ( items.length > 1 ) {
-               items.removeClass('open');
-               // Only show Gallery button when there are at least two files.
-               jQuery('.insert-gallery').show();
-       }
-
-       // Only show Save buttons when there is at least one file.
-       if ( items.not('.media-blank').length > 0 )
-               jQuery('.savebutton').show();
-       else
-               jQuery('.savebutton').hide();
-}
-
-function uploadSuccess(fileObj, serverData) {
-       var item = jQuery('#media-item-' + fileObj.id);
-
-       // on success serverData should be numeric, fix bug in html4 runtime returning the serverData wrapped in a <pre> tag
-       serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');
-
-       // if async-upload returned an error message, place it in the media item div and return
-       if ( serverData.match(/media-upload-error|error-div/) ) {
-               item.html(serverData);
-               return;
-       } else {
-               jQuery('.percent', item).html( pluploadL10n.crunching );
-       }
-
-       prepareMediaItem(fileObj, serverData);
-       updateMediaForm();
-
-       // Increment the counter.
-       if ( post_id && item.hasClass('child-of-' + post_id) )
-               jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
-}
-
-function setResize(arg) {
-       if ( arg ) {
-               if ( uploader.features.jpgresize )
-                       uploader.settings['resize'] = { width: resize_width, height: resize_height, quality: 100 };
-               else
-                       uploader.settings.multipart_params.image_resize = true;
-       } else {
-               delete(uploader.settings.resize);
-               delete(uploader.settings.multipart_params.image_resize);
-       }
-}
-
-function prepareMediaItem(fileObj, serverData) {
-       var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
-
-       try {
-               if ( typeof topWin.tb_remove != 'undefined' )
-                       topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
-       } catch(e){}
-
-       if ( isNaN(serverData) || !serverData ) { // Old style: Append the HTML returned by the server -- thumbnail and form inputs
-               item.append(serverData);
-               prepareMediaItemInit(fileObj);
-       } else { // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
-               item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
-       }
-}
-
-function prepareMediaItemInit(fileObj) {
-       var item = jQuery('#media-item-' + fileObj.id);
-       // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
-       jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item);
-
-       // Replace the original filename with the new (unique) one assigned during upload
-       jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) );
-
-       // Bind AJAX to the new Delete button
-       jQuery('a.delete', item).click(function(){
-               // Tell the server to delete it. TODO: handle exceptions
-               jQuery.ajax({
-                       url: ajaxurl,
-                       type: 'post',
-                       success: deleteSuccess,
-                       error: deleteError,
-                       id: fileObj.id,
-                       data: {
-                               id : this.id.replace(/[^0-9]/g, ''),
-                               action : 'trash-post',
-                               _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
-                       }
-               });
-               return false;
-       });
-
-       // Bind AJAX to the new Undo button
-       jQuery('a.undo', item).click(function(){
-               // Tell the server to untrash it. TODO: handle exceptions
-               jQuery.ajax({
-                       url: ajaxurl,
-                       type: 'post',
-                       id: fileObj.id,
-                       data: {
-                               id : this.id.replace(/[^0-9]/g,''),
-                               action: 'untrash-post',
-                               _ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
-                       },
-                       success: function(data, textStatus){
-                               var item = jQuery('#media-item-' + fileObj.id);
-
-                               if ( type = jQuery('#type-of-' + fileObj.id).val() )
-                                       jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
-
-                               if ( post_id && item.hasClass('child-of-'+post_id) )
-                                       jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
-
-                               jQuery('.filename .trashnotice', item).remove();
-                               jQuery('.filename .title', item).css('font-weight','normal');
-                               jQuery('a.undo', item).addClass('hidden');
-                               jQuery('.menu_order_input', item).show();
-                               item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo');
-                       }
-               });
-               return false;
-       });
-
-       // Open this item if it says to start open (e.g. to display an error)
-       jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').addClass('open').find('slidetoggle').fadeIn();
-}
-
-// generic error message
-function wpQueueError(message) {
-       jQuery('#media-upload-error').show().html( '<div class="error"><p>' + message + '</p></div>' );
-}
-
-// file-specific error messages
-function wpFileError(fileObj, message) {
-       itemAjaxError(fileObj.id, message);
-}
-
-function itemAjaxError(id, message) {
-       var item = jQuery('#media-item-' + id), filename = item.find('.filename').text(), last_err = item.data('last-err');
-
-       if ( last_err == id ) // prevent firing an error for the same file twice
-               return;
-
-       item.html('<div class="error-div">'
-                               + '<a class="dismiss" href="#">' + pluploadL10n.dismiss + '</a>'
-                               + '<strong>' + pluploadL10n.error_uploading.replace('%s', jQuery.trim(filename)) + '</strong> '
-                               + message
-                               + '</div>').data('last-err', id);
-}
-
-function deleteSuccess(data, textStatus) {
-       if ( data == '-1' )
-               return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
-
-       if ( data == '0' )
-               return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
-
-       var id = this.id, item = jQuery('#media-item-' + id);
-
-       // Decrement the counters.
-       if ( type = jQuery('#type-of-' + id).val() )
-               jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
-
-       if ( post_id && item.hasClass('child-of-'+post_id) )
-               jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
-
-       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
-               jQuery('.toggle').toggle();
-               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
-       }
-
-       // Vanish it.
-       jQuery('.toggle', item).toggle();
-       jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
-       item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
-
-       jQuery('.filename:empty', item).remove();
-       jQuery('.filename .title', item).css('font-weight','bold');
-       jQuery('.filename', item).append('<span class="trashnotice"> ' + pluploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
-       jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
-       jQuery('.menu_order_input', item).hide();
-
-       return;
-}
-
-function deleteError(X, textStatus, errorThrown) {
-       // TODO
-}
-
-function uploadComplete() {
-       jQuery('#insert-gallery').prop('disabled', false);
-}
-
-function switchUploader(s) {
-       if ( s ) {
-               deleteUserSetting('uploader');
-               jQuery('.media-upload-form').removeClass('html-uploader');
-
-               if ( typeof(uploader) == 'object' )
-                       uploader.refresh();
-       } else {
-               setUserSetting('uploader', '1'); // 1 == html uploader
-               jQuery('.media-upload-form').addClass('html-uploader');
-       }
-}
-
-function dndHelper(s) {
-       var d = document.getElementById('dnd-helper');
-
-       if ( s ) {
-               d.style.display = 'block';
-       } else {
-               d.style.display = 'none';
-       }
-}
-
-function uploadError(fileObj, errorCode, message, uploader) {
-       var hundredmb = 100 * 1024 * 1024, max;
-
-       switch (errorCode) {
-               case plupload.FAILED:
-                       wpFileError(fileObj, pluploadL10n.upload_failed);
-                       break;
-               case plupload.FILE_EXTENSION_ERROR:
-                       wpFileError(fileObj, pluploadL10n.invalid_filetype);
-                       break;
-               case plupload.FILE_SIZE_ERROR:
-                       uploadSizeError(uploader, fileObj);
-                       break;
-               case plupload.IMAGE_FORMAT_ERROR:
-                       wpFileError(fileObj, pluploadL10n.not_an_image);
-                       break;
-               case plupload.IMAGE_MEMORY_ERROR:
-                       wpFileError(fileObj, pluploadL10n.image_memory_exceeded);
-                       break;
-               case plupload.IMAGE_DIMENSIONS_ERROR:
-                       wpFileError(fileObj, pluploadL10n.image_dimensions_exceeded);
-                       break;
-               case plupload.GENERIC_ERROR:
-                       wpQueueError(pluploadL10n.upload_failed);
-                       break;
-               case plupload.IO_ERROR:
-                       max = parseInt(uploader.settings.max_file_size, 10);
-
-                       if ( max > hundredmb && fileObj.size > hundredmb )
-                               wpFileError(fileObj, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
-                       else
-                               wpQueueError(pluploadL10n.io_error);
-                       break;
-               case plupload.HTTP_ERROR:
-                       wpQueueError(pluploadL10n.http_error);
-                       break;
-               case plupload.INIT_ERROR:
-                       jQuery('.media-upload-form').addClass('html-uploader');
-                       break;
-               case plupload.SECURITY_ERROR:
-                       wpQueueError(pluploadL10n.security_error);
-                       break;
-/*             case plupload.UPLOAD_ERROR.UPLOAD_STOPPED:
-               case plupload.UPLOAD_ERROR.FILE_CANCELLED:
-                       jQuery('#media-item-' + fileObj.id).remove();
-                       break;*/
-               default:
-                       wpFileError(fileObj, pluploadL10n.default_error);
-       }
-}
-
-function uploadSizeError( up, file, over100mb ) {
-       var message;
-
-       if ( over100mb )
-               message = pluploadL10n.big_upload_queued.replace('%s', file.name) + ' ' + pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>');
-       else
-               message = pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
-
-       jQuery('#media-items').append('<div id="media-item-' + file.id + '" class="media-item error"><p>' + message + '</p></div>');
-       up.removeFile(file);
-}
-
-jQuery(document).ready(function($){
-       $('.media-upload-form').bind('click.uploader', function(e) {
-               var target = $(e.target), tr, c;
-
-               if ( target.is('input[type="radio"]') ) { // remember the last used image size and alignment
-                       tr = target.closest('tr');
-
-                       if ( tr.hasClass('align') )
-                               setUserSetting('align', target.val());
-                       else if ( tr.hasClass('image-size') )
-                               setUserSetting('imgsize', target.val());
-
-               } else if ( target.is('button.button') ) { // remember the last used image link url
-                       c = e.target.className || '';
-                       c = c.match(/url([^ '"]+)/);
-
-                       if ( c && c[1] ) {
-                               setUserSetting('urlbutton', c[1]);
-                               target.siblings('.urlfield').val( target.data('link-url') );
-                       }
-               } else if ( target.is('a.dismiss') ) {
-                       target.parents('.media-item').fadeOut(200, function(){
-                               $(this).remove();
-                       });
-               } else if ( target.is('.upload-flash-bypass a') || target.is('a.uploader-html') ) { // switch uploader to html4
-                       $('#media-items, p.submit, span.big-file-warning').css('display', 'none');
-                       switchUploader(0);
-                       e.preventDefault();
-               } else if ( target.is('.upload-html-bypass a') ) { // switch uploader to multi-file
-                       $('#media-items, p.submit, span.big-file-warning').css('display', '');
-                       switchUploader(1);
-                       e.preventDefault();
-               } else if ( target.is('a.describe-toggle-on') ) { // Show
-                       target.parent().addClass('open');
-                       target.siblings('.slidetoggle').fadeIn(250, function(){
-                               var S = $(window).scrollTop(), H = $(window).height(), top = $(this).offset().top, h = $(this).height(), b, B;
-
-                               if ( H && top && h ) {
-                                       b = top + h;
-                                       B = S + H;
-
-                                       if ( b > B ) {
-                                               if ( b - B < top - S )
-                                                       window.scrollBy(0, (b - B) + 10);
-                                               else
-                                                       window.scrollBy(0, top - S - 40);
-                                       }
-                               }
-                       });
-                       e.preventDefault();
-               } else if ( target.is('a.describe-toggle-off') ) { // Hide
-                       target.siblings('.slidetoggle').fadeOut(250, function(){
-                               target.parent().removeClass('open');
-                       });
-                       e.preventDefault();
-               }
-       });
-
-       // init and set the uploader
-       uploader_init = function() {
-               uploader = new plupload.Uploader(wpUploaderInit);
-
-               $('#image_resize').bind('change', function() {
-                       var arg = $(this).prop('checked');
-
-                       setResize( arg );
-
-                       if ( arg )
-                               setUserSetting('upload_resize', '1');
-                       else
-                               deleteUserSetting('upload_resize');
-               });
-
-               uploader.bind('Init', function(up) {
-                       var uploaddiv = $('#plupload-upload-ui');
-
-                       setResize( getUserSetting('upload_resize', false) );
-
-                       if ( up.features.dragdrop && ! $(document.body).hasClass('mobile') ) {
-                               uploaddiv.addClass('drag-drop');
-                               $('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
-                                       uploaddiv.addClass('drag-over');
-                               }).bind('dragleave.wp-uploader, drop.wp-uploader', function(){
-                                       uploaddiv.removeClass('drag-over');
-                               });
-                       } else {
-                               uploaddiv.removeClass('drag-drop');
-                               $('#drag-drop-area').unbind('.wp-uploader');
-                       }
-               });
-
-               uploader.init();
-
-               uploader.bind('FilesAdded', function(up, files) {
-                       var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
-
-                       $('#media-upload-error').html('');
-                       uploadStart();
-
-                       plupload.each(files, function(file){
-                               if ( max > hundredmb && file.size > hundredmb && up.runtime != 'html5' )
-                                       uploadSizeError( up, file, true );
-                               else
-                                       fileQueued(file);
-                       });
-
-                       up.refresh();
-                       up.start();
-               });
-
-               uploader.bind('BeforeUpload', function(up, file) {
-                       // something
-               });
-
-               uploader.bind('UploadFile', function(up, file) {
-                       fileUploading(up, file);
-               });
-
-               uploader.bind('UploadProgress', function(up, file) {
-                       uploadProgress(up, file);
-               });
-
-               uploader.bind('Error', function(up, err) {
-                       uploadError(err.file, err.code, err.message, up);
-                       up.refresh();
-               });
-
-               uploader.bind('FileUploaded', function(up, file, response) {
-                       uploadSuccess(file, response.response);
-               });
-
-               uploader.bind('UploadComplete', function(up, files) {
-                       uploadComplete();
-               });
-       }
-
-       if ( typeof(wpUploaderInit) == 'object' )
-               uploader_init();
-
-});
index eb1787db32d5c8dcf64063ee448799385971a1ff..e903f5709e57b9c54b6023a86567b03952c66e3b 100644 (file)
@@ -1 +1,486 @@
-var topWin=window.dialogArguments||opener||parent||top,uploader,uploader_init;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(b){jQuery(".media-blank").remove();var a=jQuery("#media-items").children(),c=post_id||0;if(a.length==1){a.removeClass("open").find(".slidetoggle").slideUp(200)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item child-of-'+c+'"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> '+b.name+"</div></div>");jQuery("#insert-gallery").prop("disabled",true)}function uploadStart(){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(a){}return true}function uploadProgress(a,b){var c=jQuery("#media-item-"+b.id);jQuery(".bar",c).width((200*b.loaded)/b.size);jQuery(".percent",c).html(b.percent+"%")}function fileUploading(c,d){var b=100*1024*1024,a=parseInt(c.settings.max_file_size,10);if(a>b&&d.size>b){setTimeout(function(){var e;if(d.status<3&&d.loaded==0){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"));c.stop();c.removeFile(d);c.start()}},10000)}}function updateMediaForm(){var a=jQuery("#media-items").children();if(a.length==1){a.addClass("open").find(".slidetoggle").show();jQuery(".insert-gallery").hide()}else{if(a.length>1){a.removeClass("open");jQuery(".insert-gallery").show()}}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}}function uploadSuccess(c,a){var b=jQuery("#media-item-"+c.id);a=a.replace(/^<pre>(\d+)<\/pre>$/,"$1");if(a.match(/media-upload-error|error-div/)){b.html(a);return}else{jQuery(".percent",b).html(pluploadL10n.crunching)}prepareMediaItem(c,a);updateMediaForm();if(post_id&&b.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function setResize(a){if(a){if(uploader.features.jpgresize){uploader.settings.resize={width:resize_width,height:resize_height,quality:100}}else{uploader.settings.multipart_params.image_resize=true}}else{delete (uploader.settings.resize);delete (uploader.settings.multipart_params.image_resize)}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(post_id&&c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery(".menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").addClass("open").find("slidetoggle").fadeIn()}function wpQueueError(a){jQuery("#media-upload-error").show().html('<div class="error"><p>'+a+"</p></div>")}function wpFileError(b,a){itemAjaxError(b.id,a)}function itemAjaxError(e,c){var b=jQuery("#media-item-"+e),a=b.find(".filename").text(),d=b.data("last-err");if(d==e){return}b.html('<div class="error-div"><a class="dismiss" href="#">'+pluploadL10n.dismiss+"</a><strong>"+pluploadL10n.error_uploading.replace("%s",jQuery.trim(a))+"</strong> "+c+"</div>").data("last-err",e)}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(post_id&&a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+pluploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function uploadComplete(){jQuery("#insert-gallery").prop("disabled",false)}function switchUploader(a){if(a){deleteUserSetting("uploader");jQuery(".media-upload-form").removeClass("html-uploader");if(typeof(uploader)=="object"){uploader.refresh()}}else{setUserSetting("uploader","1");jQuery(".media-upload-form").addClass("html-uploader")}}function dndHelper(a){var b=document.getElementById("dnd-helper");if(a){b.style.display="block"}else{b.style.display="none"}}function uploadError(d,f,c,e){var b=100*1024*1024,a;switch(f){case plupload.FAILED:wpFileError(d,pluploadL10n.upload_failed);break;case plupload.FILE_EXTENSION_ERROR:wpFileError(d,pluploadL10n.invalid_filetype);break;case plupload.FILE_SIZE_ERROR:uploadSizeError(e,d);break;case plupload.IMAGE_FORMAT_ERROR:wpFileError(d,pluploadL10n.not_an_image);break;case plupload.IMAGE_MEMORY_ERROR:wpFileError(d,pluploadL10n.image_memory_exceeded);break;case plupload.IMAGE_DIMENSIONS_ERROR:wpFileError(d,pluploadL10n.image_dimensions_exceeded);break;case plupload.GENERIC_ERROR:wpQueueError(pluploadL10n.upload_failed);break;case plupload.IO_ERROR:a=parseInt(e.settings.max_file_size,10);if(a>b&&d.size>b){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"))}else{wpQueueError(pluploadL10n.io_error)}break;case plupload.HTTP_ERROR:wpQueueError(pluploadL10n.http_error);break;case plupload.INIT_ERROR:jQuery(".media-upload-form").addClass("html-uploader");break;case plupload.SECURITY_ERROR:wpQueueError(pluploadL10n.security_error);break;default:wpFileError(d,pluploadL10n.default_error)}}function uploadSizeError(a,b,d){var c;if(d){c=pluploadL10n.big_upload_queued.replace("%s",b.name)+" "+pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")}else{c=pluploadL10n.file_exceeds_size_limit.replace("%s",b.name)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item error"><p>'+c+"</p></div>");a.removeFile(b)}jQuery(document).ready(function(a){a(".media-upload-form").bind("click.uploader",function(f){var d=a(f.target),b,g;if(d.is('input[type="radio"]')){b=d.closest("tr");if(b.hasClass("align")){setUserSetting("align",d.val())}else{if(b.hasClass("image-size")){setUserSetting("imgsize",d.val())}}}else{if(d.is("button.button")){g=f.target.className||"";g=g.match(/url([^ '"]+)/);if(g&&g[1]){setUserSetting("urlbutton",g[1]);d.siblings(".urlfield").val(d.data("link-url"))}}else{if(d.is("a.dismiss")){d.parents(".media-item").fadeOut(200,function(){a(this).remove()})}else{if(d.is(".upload-flash-bypass a")||d.is("a.uploader-html")){a("#media-items, p.submit, span.big-file-warning").css("display","none");switchUploader(0);f.preventDefault()}else{if(d.is(".upload-html-bypass a")){a("#media-items, p.submit, span.big-file-warning").css("display","");switchUploader(1);f.preventDefault()}else{if(d.is("a.describe-toggle-on")){d.parent().addClass("open");d.siblings(".slidetoggle").fadeIn(250,function(){var i=a(window).scrollTop(),e=a(window).height(),k=a(this).offset().top,j=a(this).height(),c,l;if(e&&k&&j){c=k+j;l=i+e;if(c>l){if(c-l<k-i){window.scrollBy(0,(c-l)+10)}else{window.scrollBy(0,k-i-40)}}}});f.preventDefault()}else{if(d.is("a.describe-toggle-off")){d.siblings(".slidetoggle").fadeOut(250,function(){d.parent().removeClass("open")});f.preventDefault()}}}}}}}});uploader_init=function(){uploader=new plupload.Uploader(wpUploaderInit);a("#image_resize").bind("change",function(){var b=a(this).prop("checked");setResize(b);if(b){setUserSetting("upload_resize","1")}else{deleteUserSetting("upload_resize")}});uploader.bind("Init",function(b){var c=a("#plupload-upload-ui");setResize(getUserSetting("upload_resize",false));if(b.features.dragdrop&&!a(document.body).hasClass("mobile")){c.addClass("drag-drop");a("#drag-drop-area").bind("dragover.wp-uploader",function(){c.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){c.removeClass("drag-over")})}else{c.removeClass("drag-drop");a("#drag-drop-area").unbind(".wp-uploader")}});uploader.init();uploader.bind("FilesAdded",function(d,e){var c=100*1024*1024,b=parseInt(d.settings.max_file_size,10);a("#media-upload-error").html("");uploadStart();plupload.each(e,function(f){if(b>c&&f.size>c&&d.runtime!="html5"){uploadSizeError(d,f,true)}else{fileQueued(f)}});d.refresh();d.start()});uploader.bind("BeforeUpload",function(b,c){});uploader.bind("UploadFile",function(b,c){fileUploading(b,c)});uploader.bind("UploadProgress",function(b,c){uploadProgress(b,c)});uploader.bind("Error",function(b,c){uploadError(c.file,c.code,c.message,b);b.refresh()});uploader.bind("FileUploaded",function(b,d,c){uploadSuccess(d,c.response)});uploader.bind("UploadComplete",function(b,c){uploadComplete()})};if(typeof(wpUploaderInit)=="object"){uploader_init()}});
\ No newline at end of file
+var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init;
+
+function fileDialogStart() {
+       jQuery("#media-upload-error").empty();
+}
+
+// progress and success handlers for media multi uploads
+function fileQueued(fileObj) {
+       // Get rid of unused form
+       jQuery('.media-blank').remove();
+
+       var items = jQuery('#media-items').children(), postid = post_id || 0;
+
+       // Collapse a single item
+       if ( items.length == 1 ) {
+               items.removeClass('open').find('.slidetoggle').slideUp(200);
+       }
+       // Create a progress bar containing the filename
+       jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + postid + '"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> ' + fileObj.name + '</div></div>');
+
+       // Disable submit
+       jQuery('#insert-gallery').prop('disabled', true);
+}
+
+function uploadStart() {
+       try {
+               if ( typeof topWin.tb_remove != 'undefined' )
+                       topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove);
+       } catch(e){}
+
+       return true;
+}
+
+function uploadProgress(up, file) {
+       var item = jQuery('#media-item-' + file.id);
+
+       jQuery('.bar', item).width( (200 * file.loaded) / file.size );
+       jQuery('.percent', item).html( file.percent + '%' );
+}
+
+// check to see if a large file failed to upload
+function fileUploading(up, file) {
+       var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
+
+       if ( max > hundredmb && file.size > hundredmb ) {
+               setTimeout(function(){
+                       var done;
+
+                       if ( file.status < 3 && file.loaded == 0 ) { // not uploading
+                               wpFileError(file, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
+                               up.stop(); // stops the whole queue
+                               up.removeFile(file);
+                               up.start(); // restart the queue
+                       }
+               }, 10000); // wait for 10 sec. for the file to start uploading
+       }
+}
+
+function updateMediaForm() {
+       var items = jQuery('#media-items').children();
+
+       // Just one file, no need for collapsible part
+       if ( items.length == 1 ) {
+               items.addClass('open').find('.slidetoggle').show();
+               jQuery('.insert-gallery').hide();
+       } else if ( items.length > 1 ) {
+               items.removeClass('open');
+               // Only show Gallery button when there are at least two files.
+               jQuery('.insert-gallery').show();
+       }
+
+       // Only show Save buttons when there is at least one file.
+       if ( items.not('.media-blank').length > 0 )
+               jQuery('.savebutton').show();
+       else
+               jQuery('.savebutton').hide();
+}
+
+function uploadSuccess(fileObj, serverData) {
+       var item = jQuery('#media-item-' + fileObj.id);
+
+       // on success serverData should be numeric, fix bug in html4 runtime returning the serverData wrapped in a <pre> tag
+       serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');
+
+       // if async-upload returned an error message, place it in the media item div and return
+       if ( serverData.match(/media-upload-error|error-div/) ) {
+               item.html(serverData);
+               return;
+       } else {
+               jQuery('.percent', item).html( pluploadL10n.crunching );
+       }
+
+       prepareMediaItem(fileObj, serverData);
+       updateMediaForm();
+
+       // Increment the counter.
+       if ( post_id && item.hasClass('child-of-' + post_id) )
+               jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
+}
+
+function setResize(arg) {
+       if ( arg ) {
+               if ( uploader.features.jpgresize )
+                       uploader.settings['resize'] = { width: resize_width, height: resize_height, quality: 100 };
+               else
+                       uploader.settings.multipart_params.image_resize = true;
+       } else {
+               delete(uploader.settings.resize);
+               delete(uploader.settings.multipart_params.image_resize);
+       }
+}
+
+function prepareMediaItem(fileObj, serverData) {
+       var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
+       if ( f == 2 && shortform > 2 )
+               f = shortform;
+
+       try {
+               if ( typeof topWin.tb_remove != 'undefined' )
+                       topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
+       } catch(e){}
+
+       if ( isNaN(serverData) || !serverData ) { // Old style: Append the HTML returned by the server -- thumbnail and form inputs
+               item.append(serverData);
+               prepareMediaItemInit(fileObj);
+       } else { // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
+               item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
+       }
+}
+
+function prepareMediaItemInit(fileObj) {
+       var item = jQuery('#media-item-' + fileObj.id);
+       // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
+       jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item);
+
+       // Replace the original filename with the new (unique) one assigned during upload
+       jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) );
+
+       // Bind AJAX to the new Delete button
+       jQuery('a.delete', item).click(function(){
+               // Tell the server to delete it. TODO: handle exceptions
+               jQuery.ajax({
+                       url: ajaxurl,
+                       type: 'post',
+                       success: deleteSuccess,
+                       error: deleteError,
+                       id: fileObj.id,
+                       data: {
+                               id : this.id.replace(/[^0-9]/g, ''),
+                               action : 'trash-post',
+                               _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
+                       }
+               });
+               return false;
+       });
+
+       // Bind AJAX to the new Undo button
+       jQuery('a.undo', item).click(function(){
+               // Tell the server to untrash it. TODO: handle exceptions
+               jQuery.ajax({
+                       url: ajaxurl,
+                       type: 'post',
+                       id: fileObj.id,
+                       data: {
+                               id : this.id.replace(/[^0-9]/g,''),
+                               action: 'untrash-post',
+                               _ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
+                       },
+                       success: function(data, textStatus){
+                               var item = jQuery('#media-item-' + fileObj.id);
+
+                               if ( type = jQuery('#type-of-' + fileObj.id).val() )
+                                       jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
+
+                               if ( post_id && item.hasClass('child-of-'+post_id) )
+                                       jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
+
+                               jQuery('.filename .trashnotice', item).remove();
+                               jQuery('.filename .title', item).css('font-weight','normal');
+                               jQuery('a.undo', item).addClass('hidden');
+                               jQuery('.menu_order_input', item).show();
+                               item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo');
+                       }
+               });
+               return false;
+       });
+
+       // Open this item if it says to start open (e.g. to display an error)
+       jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').addClass('open').find('slidetoggle').fadeIn();
+}
+
+// generic error message
+function wpQueueError(message) {
+       jQuery('#media-upload-error').show().html( '<div class="error"><p>' + message + '</p></div>' );
+}
+
+// file-specific error messages
+function wpFileError(fileObj, message) {
+       itemAjaxError(fileObj.id, message);
+}
+
+function itemAjaxError(id, message) {
+       var item = jQuery('#media-item-' + id), filename = item.find('.filename').text(), last_err = item.data('last-err');
+
+       if ( last_err == id ) // prevent firing an error for the same file twice
+               return;
+
+       item.html('<div class="error-div">'
+                               + '<a class="dismiss" href="#">' + pluploadL10n.dismiss + '</a>'
+                               + '<strong>' + pluploadL10n.error_uploading.replace('%s', jQuery.trim(filename)) + '</strong> '
+                               + message
+                               + '</div>').data('last-err', id);
+}
+
+function deleteSuccess(data, textStatus) {
+       if ( data == '-1' )
+               return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
+
+       if ( data == '0' )
+               return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
+
+       var id = this.id, item = jQuery('#media-item-' + id);
+
+       // Decrement the counters.
+       if ( type = jQuery('#type-of-' + id).val() )
+               jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
+
+       if ( post_id && item.hasClass('child-of-'+post_id) )
+               jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
+
+       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
+               jQuery('.toggle').toggle();
+               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+       }
+
+       // Vanish it.
+       jQuery('.toggle', item).toggle();
+       jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
+       item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
+
+       jQuery('.filename:empty', item).remove();
+       jQuery('.filename .title', item).css('font-weight','bold');
+       jQuery('.filename', item).append('<span class="trashnotice"> ' + pluploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
+       jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
+       jQuery('.menu_order_input', item).hide();
+
+       return;
+}
+
+function deleteError(X, textStatus, errorThrown) {
+       // TODO
+}
+
+function uploadComplete() {
+       jQuery('#insert-gallery').prop('disabled', false);
+}
+
+function switchUploader(s) {
+       if ( s ) {
+               deleteUserSetting('uploader');
+               jQuery('.media-upload-form').removeClass('html-uploader');
+
+               if ( typeof(uploader) == 'object' )
+                       uploader.refresh();
+       } else {
+               setUserSetting('uploader', '1'); // 1 == html uploader
+               jQuery('.media-upload-form').addClass('html-uploader');
+       }
+}
+
+function dndHelper(s) {
+       var d = document.getElementById('dnd-helper');
+
+       if ( s ) {
+               d.style.display = 'block';
+       } else {
+               d.style.display = 'none';
+       }
+}
+
+function uploadError(fileObj, errorCode, message, uploader) {
+       var hundredmb = 100 * 1024 * 1024, max;
+
+       switch (errorCode) {
+               case plupload.FAILED:
+                       wpFileError(fileObj, pluploadL10n.upload_failed);
+                       break;
+               case plupload.FILE_EXTENSION_ERROR:
+                       wpFileError(fileObj, pluploadL10n.invalid_filetype);
+                       break;
+               case plupload.FILE_SIZE_ERROR:
+                       uploadSizeError(uploader, fileObj);
+                       break;
+               case plupload.IMAGE_FORMAT_ERROR:
+                       wpFileError(fileObj, pluploadL10n.not_an_image);
+                       break;
+               case plupload.IMAGE_MEMORY_ERROR:
+                       wpFileError(fileObj, pluploadL10n.image_memory_exceeded);
+                       break;
+               case plupload.IMAGE_DIMENSIONS_ERROR:
+                       wpFileError(fileObj, pluploadL10n.image_dimensions_exceeded);
+                       break;
+               case plupload.GENERIC_ERROR:
+                       wpQueueError(pluploadL10n.upload_failed);
+                       break;
+               case plupload.IO_ERROR:
+                       max = parseInt(uploader.settings.max_file_size, 10);
+
+                       if ( max > hundredmb && fileObj.size > hundredmb )
+                               wpFileError(fileObj, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
+                       else
+                               wpQueueError(pluploadL10n.io_error);
+                       break;
+               case plupload.HTTP_ERROR:
+                       wpQueueError(pluploadL10n.http_error);
+                       break;
+               case plupload.INIT_ERROR:
+                       jQuery('.media-upload-form').addClass('html-uploader');
+                       break;
+               case plupload.SECURITY_ERROR:
+                       wpQueueError(pluploadL10n.security_error);
+                       break;
+/*             case plupload.UPLOAD_ERROR.UPLOAD_STOPPED:
+               case plupload.UPLOAD_ERROR.FILE_CANCELLED:
+                       jQuery('#media-item-' + fileObj.id).remove();
+                       break;*/
+               default:
+                       wpFileError(fileObj, pluploadL10n.default_error);
+       }
+}
+
+function uploadSizeError( up, file, over100mb ) {
+       var message;
+
+       if ( over100mb )
+               message = pluploadL10n.big_upload_queued.replace('%s', file.name) + ' ' + pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>');
+       else
+               message = pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
+
+       jQuery('#media-items').append('<div id="media-item-' + file.id + '" class="media-item error"><p>' + message + '</p></div>');
+       up.removeFile(file);
+}
+
+jQuery(document).ready(function($){
+       $('.media-upload-form').bind('click.uploader', function(e) {
+               var target = $(e.target), tr, c;
+
+               if ( target.is('input[type="radio"]') ) { // remember the last used image size and alignment
+                       tr = target.closest('tr');
+
+                       if ( tr.hasClass('align') )
+                               setUserSetting('align', target.val());
+                       else if ( tr.hasClass('image-size') )
+                               setUserSetting('imgsize', target.val());
+
+               } else if ( target.is('button.button') ) { // remember the last used image link url
+                       c = e.target.className || '';
+                       c = c.match(/url([^ '"]+)/);
+
+                       if ( c && c[1] ) {
+                               setUserSetting('urlbutton', c[1]);
+                               target.siblings('.urlfield').val( target.data('link-url') );
+                       }
+               } else if ( target.is('a.dismiss') ) {
+                       target.parents('.media-item').fadeOut(200, function(){
+                               $(this).remove();
+                       });
+               } else if ( target.is('.upload-flash-bypass a') || target.is('a.uploader-html') ) { // switch uploader to html4
+                       $('#media-items, p.submit, span.big-file-warning').css('display', 'none');
+                       switchUploader(0);
+                       e.preventDefault();
+               } else if ( target.is('.upload-html-bypass a') ) { // switch uploader to multi-file
+                       $('#media-items, p.submit, span.big-file-warning').css('display', '');
+                       switchUploader(1);
+                       e.preventDefault();
+               } else if ( target.is('a.describe-toggle-on') ) { // Show
+                       target.parent().addClass('open');
+                       target.siblings('.slidetoggle').fadeIn(250, function(){
+                               var S = $(window).scrollTop(), H = $(window).height(), top = $(this).offset().top, h = $(this).height(), b, B;
+
+                               if ( H && top && h ) {
+                                       b = top + h;
+                                       B = S + H;
+
+                                       if ( b > B ) {
+                                               if ( b - B < top - S )
+                                                       window.scrollBy(0, (b - B) + 10);
+                                               else
+                                                       window.scrollBy(0, top - S - 40);
+                                       }
+                               }
+                       });
+                       e.preventDefault();
+               } else if ( target.is('a.describe-toggle-off') ) { // Hide
+                       target.siblings('.slidetoggle').fadeOut(250, function(){
+                               target.parent().removeClass('open');
+                       });
+                       e.preventDefault();
+               }
+       });
+
+       // init and set the uploader
+       uploader_init = function() {
+               uploader = new plupload.Uploader(wpUploaderInit);
+
+               $('#image_resize').bind('change', function() {
+                       var arg = $(this).prop('checked');
+
+                       setResize( arg );
+
+                       if ( arg )
+                               setUserSetting('upload_resize', '1');
+                       else
+                               deleteUserSetting('upload_resize');
+               });
+
+               uploader.bind('Init', function(up) {
+                       var uploaddiv = $('#plupload-upload-ui');
+
+                       setResize( getUserSetting('upload_resize', false) );
+
+                       if ( up.features.dragdrop && ! $(document.body).hasClass('mobile') ) {
+                               uploaddiv.addClass('drag-drop');
+                               $('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
+                                       uploaddiv.addClass('drag-over');
+                               }).bind('dragleave.wp-uploader, drop.wp-uploader', function(){
+                                       uploaddiv.removeClass('drag-over');
+                               });
+                       } else {
+                               uploaddiv.removeClass('drag-drop');
+                               $('#drag-drop-area').unbind('.wp-uploader');
+                       }
+
+                       if ( up.runtime == 'html4' )
+                               $('.upload-flash-bypass').hide();
+               });
+
+               uploader.init();
+
+               uploader.bind('FilesAdded', function(up, files) {
+                       var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
+
+                       $('#media-upload-error').html('');
+                       uploadStart();
+
+                       plupload.each(files, function(file){
+                               if ( max > hundredmb && file.size > hundredmb && up.runtime != 'html5' )
+                                       uploadSizeError( up, file, true );
+                               else
+                                       fileQueued(file);
+                       });
+
+                       up.refresh();
+                       up.start();
+               });
+
+               uploader.bind('BeforeUpload', function(up, file) {
+                       // something
+               });
+
+               uploader.bind('UploadFile', function(up, file) {
+                       fileUploading(up, file);
+               });
+
+               uploader.bind('UploadProgress', function(up, file) {
+                       uploadProgress(up, file);
+               });
+
+               uploader.bind('Error', function(up, err) {
+                       uploadError(err.file, err.code, err.message, up);
+                       up.refresh();
+               });
+
+               uploader.bind('FileUploaded', function(up, file, response) {
+                       uploadSuccess(file, response.response);
+               });
+
+               uploader.bind('UploadComplete', function(up, files) {
+                       uploadComplete();
+               });
+       }
+
+       if ( typeof(wpUploaderInit) == 'object' )
+               uploader_init();
+
+});
diff --git a/wp-includes/js/plupload/handlers.min.js b/wp-includes/js/plupload/handlers.min.js
new file mode 100644 (file)
index 0000000..d2f99a4
--- /dev/null
@@ -0,0 +1 @@
+var topWin=window.dialogArguments||opener||parent||top,uploader,uploader_init;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(b){jQuery(".media-blank").remove();var a=jQuery("#media-items").children(),c=post_id||0;if(a.length==1){a.removeClass("open").find(".slidetoggle").slideUp(200)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item child-of-'+c+'"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> '+b.name+"</div></div>");jQuery("#insert-gallery").prop("disabled",true)}function uploadStart(){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(a){}return true}function uploadProgress(a,b){var c=jQuery("#media-item-"+b.id);jQuery(".bar",c).width((200*b.loaded)/b.size);jQuery(".percent",c).html(b.percent+"%")}function fileUploading(c,d){var b=100*1024*1024,a=parseInt(c.settings.max_file_size,10);if(a>b&&d.size>b){setTimeout(function(){var e;if(d.status<3&&d.loaded==0){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"));c.stop();c.removeFile(d);c.start()}},10000)}}function updateMediaForm(){var a=jQuery("#media-items").children();if(a.length==1){a.addClass("open").find(".slidetoggle").show();jQuery(".insert-gallery").hide()}else{if(a.length>1){a.removeClass("open");jQuery(".insert-gallery").show()}}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}}function uploadSuccess(c,a){var b=jQuery("#media-item-"+c.id);a=a.replace(/^<pre>(\d+)<\/pre>$/,"$1");if(a.match(/media-upload-error|error-div/)){b.html(a);return}else{jQuery(".percent",b).html(pluploadL10n.crunching)}prepareMediaItem(c,a);updateMediaForm();if(post_id&&b.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function setResize(a){if(a){if(uploader.features.jpgresize){uploader.settings.resize={width:resize_width,height:resize_height,quality:100}}else{uploader.settings.multipart_params.image_resize=true}}else{delete (uploader.settings.resize);delete (uploader.settings.multipart_params.image_resize)}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);if(d==2&&shortform>2){d=shortform}try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(post_id&&c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery(".menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").addClass("open").find("slidetoggle").fadeIn()}function wpQueueError(a){jQuery("#media-upload-error").show().html('<div class="error"><p>'+a+"</p></div>")}function wpFileError(b,a){itemAjaxError(b.id,a)}function itemAjaxError(e,c){var b=jQuery("#media-item-"+e),a=b.find(".filename").text(),d=b.data("last-err");if(d==e){return}b.html('<div class="error-div"><a class="dismiss" href="#">'+pluploadL10n.dismiss+"</a><strong>"+pluploadL10n.error_uploading.replace("%s",jQuery.trim(a))+"</strong> "+c+"</div>").data("last-err",e)}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(post_id&&a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+pluploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function uploadComplete(){jQuery("#insert-gallery").prop("disabled",false)}function switchUploader(a){if(a){deleteUserSetting("uploader");jQuery(".media-upload-form").removeClass("html-uploader");if(typeof(uploader)=="object"){uploader.refresh()}}else{setUserSetting("uploader","1");jQuery(".media-upload-form").addClass("html-uploader")}}function dndHelper(a){var b=document.getElementById("dnd-helper");if(a){b.style.display="block"}else{b.style.display="none"}}function uploadError(d,f,c,e){var b=100*1024*1024,a;switch(f){case plupload.FAILED:wpFileError(d,pluploadL10n.upload_failed);break;case plupload.FILE_EXTENSION_ERROR:wpFileError(d,pluploadL10n.invalid_filetype);break;case plupload.FILE_SIZE_ERROR:uploadSizeError(e,d);break;case plupload.IMAGE_FORMAT_ERROR:wpFileError(d,pluploadL10n.not_an_image);break;case plupload.IMAGE_MEMORY_ERROR:wpFileError(d,pluploadL10n.image_memory_exceeded);break;case plupload.IMAGE_DIMENSIONS_ERROR:wpFileError(d,pluploadL10n.image_dimensions_exceeded);break;case plupload.GENERIC_ERROR:wpQueueError(pluploadL10n.upload_failed);break;case plupload.IO_ERROR:a=parseInt(e.settings.max_file_size,10);if(a>b&&d.size>b){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"))}else{wpQueueError(pluploadL10n.io_error)}break;case plupload.HTTP_ERROR:wpQueueError(pluploadL10n.http_error);break;case plupload.INIT_ERROR:jQuery(".media-upload-form").addClass("html-uploader");break;case plupload.SECURITY_ERROR:wpQueueError(pluploadL10n.security_error);break;default:wpFileError(d,pluploadL10n.default_error)}}function uploadSizeError(a,b,d){var c;if(d){c=pluploadL10n.big_upload_queued.replace("%s",b.name)+" "+pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")}else{c=pluploadL10n.file_exceeds_size_limit.replace("%s",b.name)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item error"><p>'+c+"</p></div>");a.removeFile(b)}jQuery(document).ready(function(a){a(".media-upload-form").bind("click.uploader",function(f){var d=a(f.target),b,g;if(d.is('input[type="radio"]')){b=d.closest("tr");if(b.hasClass("align")){setUserSetting("align",d.val())}else{if(b.hasClass("image-size")){setUserSetting("imgsize",d.val())}}}else{if(d.is("button.button")){g=f.target.className||"";g=g.match(/url([^ '"]+)/);if(g&&g[1]){setUserSetting("urlbutton",g[1]);d.siblings(".urlfield").val(d.data("link-url"))}}else{if(d.is("a.dismiss")){d.parents(".media-item").fadeOut(200,function(){a(this).remove()})}else{if(d.is(".upload-flash-bypass a")||d.is("a.uploader-html")){a("#media-items, p.submit, span.big-file-warning").css("display","none");switchUploader(0);f.preventDefault()}else{if(d.is(".upload-html-bypass a")){a("#media-items, p.submit, span.big-file-warning").css("display","");switchUploader(1);f.preventDefault()}else{if(d.is("a.describe-toggle-on")){d.parent().addClass("open");d.siblings(".slidetoggle").fadeIn(250,function(){var i=a(window).scrollTop(),e=a(window).height(),k=a(this).offset().top,j=a(this).height(),c,l;if(e&&k&&j){c=k+j;l=i+e;if(c>l){if(c-l<k-i){window.scrollBy(0,(c-l)+10)}else{window.scrollBy(0,k-i-40)}}}});f.preventDefault()}else{if(d.is("a.describe-toggle-off")){d.siblings(".slidetoggle").fadeOut(250,function(){d.parent().removeClass("open")});f.preventDefault()}}}}}}}});uploader_init=function(){uploader=new plupload.Uploader(wpUploaderInit);a("#image_resize").bind("change",function(){var b=a(this).prop("checked");setResize(b);if(b){setUserSetting("upload_resize","1")}else{deleteUserSetting("upload_resize")}});uploader.bind("Init",function(b){var c=a("#plupload-upload-ui");setResize(getUserSetting("upload_resize",false));if(b.features.dragdrop&&!a(document.body).hasClass("mobile")){c.addClass("drag-drop");a("#drag-drop-area").bind("dragover.wp-uploader",function(){c.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){c.removeClass("drag-over")})}else{c.removeClass("drag-drop");a("#drag-drop-area").unbind(".wp-uploader")}if(b.runtime=="html4"){a(".upload-flash-bypass").hide()}});uploader.init();uploader.bind("FilesAdded",function(d,e){var c=100*1024*1024,b=parseInt(d.settings.max_file_size,10);a("#media-upload-error").html("");uploadStart();plupload.each(e,function(f){if(b>c&&f.size>c&&d.runtime!="html5"){uploadSizeError(d,f,true)}else{fileQueued(f)}});d.refresh();d.start()});uploader.bind("BeforeUpload",function(b,c){});uploader.bind("UploadFile",function(b,c){fileUploading(b,c)});uploader.bind("UploadProgress",function(b,c){uploadProgress(b,c)});uploader.bind("Error",function(b,c){uploadError(c.file,c.code,c.message,b);b.refresh()});uploader.bind("FileUploaded",function(b,d,c){uploadSuccess(d,c.response)});uploader.bind("UploadComplete",function(b,c){uploadComplete()})};if(typeof(wpUploaderInit)=="object"){uploader_init()}});
\ No newline at end of file
diff --git a/wp-includes/js/plupload/wp-plupload.dev.js b/wp-includes/js/plupload/wp-plupload.dev.js
deleted file mode 100644 (file)
index 36848b0..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-if ( typeof wp === 'undefined' )
-       var wp = {};
-
-(function( exports, $ ) {
-       var Uploader;
-
-       if ( typeof _wpPluploadSettings === 'undefined' )
-               return;
-
-       /*
-        * An object that helps create a WordPress uploader using plupload.
-        *
-        * @param options - object - The options passed to the new plupload instance.
-        *    Requires the following parameters:
-        *    - container - The id of uploader container.
-        *    - browser   - The id of button to trigger the file select.
-        *    - dropzone  - The id of file drop target.
-        *    - plupload  - An object of parameters to pass to the plupload instance.
-        *    - params    - An object of parameters to pass to $_POST when uploading the file.
-        *                  Extends this.plupload.multipart_params under the hood.
-        *
-        * @param attributes - object - Attributes and methods for this specific instance.
-        */
-       Uploader = function( options ) {
-               var self = this,
-                       elements = {
-                               container: 'container',
-                               browser:   'browse_button',
-                               dropzone:  'drop_element'
-                       },
-                       key;
-
-               this.supports = {
-                       upload: Uploader.browser.supported
-               };
-
-               this.supported = this.supports.upload;
-
-               if ( ! this.supported )
-                       return;
-
-               // Use deep extend to ensure that multipart_params and other objects are cloned.
-               this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
-               this.container = document.body; // Set default container.
-
-               // Extend the instance with options
-               //
-               // Use deep extend to allow options.plupload to override individual
-               // default plupload keys.
-               $.extend( true, this, options );
-
-               // Proxy all methods so this always refers to the current instance.
-               for ( key in this ) {
-                       if ( $.isFunction( this[ key ] ) )
-                               this[ key ] = $.proxy( this[ key ], this );
-               }
-
-               // Ensure all elements are jQuery elements and have id attributes
-               // Then set the proper plupload arguments to the ids.
-               for ( key in elements ) {
-                       if ( ! this[ key ] )
-                               continue;
-
-                       this[ key ] = $( this[ key ] ).first();
-
-                       if ( ! this[ key ].length ) {
-                               delete this[ key ];
-                               continue;
-                       }
-
-                       if ( ! this[ key ].prop('id') )
-                               this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
-                       this.plupload[ elements[ key ] ] = this[ key ].prop('id');
-               }
-
-               // If the uploader has neither a browse button nor a dropzone, bail.
-               if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) )
-                       return;
-
-               this.uploader = new plupload.Uploader( this.plupload );
-               delete this.plupload;
-
-               // Set default params and remove this.params alias.
-               this.param( this.params || {} );
-               delete this.params;
-
-               this.uploader.init();
-
-               this.supports.dragdrop = this.uploader.features.dragdrop && ! Uploader.browser.mobile;
-
-               // Generate drag/drop helper classes.
-               (function( dropzone, supported ) {
-                       var sensitivity = 50,
-                               active;
-
-                       if ( ! dropzone )
-                               return;
-
-                       dropzone.toggleClass( 'supports-drag-drop', !! supported );
-
-                       if ( ! supported )
-                               return dropzone.unbind('.wp-uploader');
-
-                       // 'dragenter' doesn't fire correctly,
-                       // simulate it with a limited 'dragover'
-                       dropzone.bind( 'dragover.wp-uploader', function(){
-                               if ( active )
-                                       return;
-
-                               dropzone.addClass('drag-over');
-                               active = true;
-                       });
-
-                       dropzone.bind('dragleave.wp-uploader, drop.wp-uploader', function(){
-                               active = false;
-                               dropzone.removeClass('drag-over');
-                       });
-               }( this.dropzone, this.supports.dragdrop ));
-
-               if ( this.browser ) {
-                       this.browser.on( 'mouseenter', this.refresh );
-               } else {
-                       this.uploader.disableBrowse( true );
-                       // If HTML5 mode, hide the auto-created file container.
-                       $('#' + this.uploader.id + '_html5_container').hide();
-               }
-
-               this.uploader.bind( 'UploadProgress', this.progress );
-
-               this.uploader.bind( 'FileUploaded', function( up, file, response ) {
-                       try {
-                               response = JSON.parse( response.response );
-                       } catch ( e ) {
-                               return self.error( pluploadL10n.default_error, e );
-                       }
-
-                       if ( ! response || ! response.type || ! response.data )
-                               return self.error( pluploadL10n.default_error );
-
-                       if ( 'error' === response.type )
-                               return self.error( response.data.message, response.data );
-
-                       if ( 'success' === response.type )
-                               return self.success( response.data );
-
-               });
-
-               this.uploader.bind( 'Error', function( up, error ) {
-                       var message = pluploadL10n.default_error,
-                               key;
-
-                       // Check for plupload errors.
-                       for ( key in Uploader.errorMap ) {
-                               if ( error.code === plupload[ key ] ) {
-                                       message = Uploader.errorMap[ key ];
-                                       break;
-                               }
-                       }
-
-                       self.error( message, error );
-                       up.refresh();
-               });
-
-               this.uploader.bind( 'FilesAdded', function( up, files ) {
-                       $.each( files, function() {
-                               self.added( this );
-                       });
-
-                       up.refresh();
-                       up.start();
-               });
-
-               this.init();
-       };
-
-       // Adds the 'defaults' and 'browser' properties.
-       $.extend( Uploader, _wpPluploadSettings );
-
-       Uploader.uuid = 0;
-
-       Uploader.errorMap = {
-               'FAILED':                 pluploadL10n.upload_failed,
-               'FILE_EXTENSION_ERROR':   pluploadL10n.invalid_filetype,
-               // 'FILE_SIZE_ERROR': '',
-               'IMAGE_FORMAT_ERROR':     pluploadL10n.not_an_image,
-               'IMAGE_MEMORY_ERROR':     pluploadL10n.image_memory_exceeded,
-               'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
-               'GENERIC_ERROR':          pluploadL10n.upload_failed,
-               'IO_ERROR':               pluploadL10n.io_error,
-               'HTTP_ERROR':             pluploadL10n.http_error,
-               'SECURITY_ERROR':         pluploadL10n.security_error
-       };
-
-       $.extend( Uploader.prototype, {
-               /**
-                * Acts as a shortcut to extending the uploader's multipart_params object.
-                *
-                * param( key )
-                *    Returns the value of the key.
-                *
-                * param( key, value )
-                *    Sets the value of a key.
-                *
-                * param( map )
-                *    Sets values for a map of data.
-                */
-               param: function( key, value ) {
-                       if ( arguments.length === 1 && typeof key === 'string' )
-                               return this.uploader.settings.multipart_params[ key ];
-
-                       if ( arguments.length > 1 ) {
-                               this.uploader.settings.multipart_params[ key ] = value;
-                       } else {
-                               $.extend( this.uploader.settings.multipart_params, key );
-                       }
-               },
-
-               init:     function() {},
-               error:    function() {},
-               success:  function() {},
-               added:    function() {},
-               progress: function() {},
-               complete: function() {},
-               refresh:  function() {
-                       this.uploader.refresh();
-               }
-       });
-
-       exports.Uploader = Uploader;
-})( wp, jQuery );
index 99267ef7b65e1f867d53e8b15be2b0d5781c959f..dc91674930fc4d2c81577921899af0517a6c8701 100644 (file)
@@ -1 +1,343 @@
-if(typeof wp==="undefined"){var wp={}}(function(a,b){var c;if(typeof _wpPluploadSettings==="undefined"){return}c=function(e){var d=this,g={container:"container",browser:"browse_button",dropzone:"drop_element"},f;this.supports={upload:c.browser.supported};this.supported=this.supports.upload;if(!this.supported){return}this.plupload=b.extend(true,{multipart_params:{}},c.defaults);this.container=document.body;b.extend(true,this,e);for(f in this){if(b.isFunction(this[f])){this[f]=b.proxy(this[f],this)}}for(f in g){if(!this[f]){continue}this[f]=b(this[f]).first();if(!this[f].length){delete this[f];continue}if(!this[f].prop("id")){this[f].prop("id","__wp-uploader-id-"+c.uuid++)}this.plupload[g[f]]=this[f].prop("id")}if(!(this.browser&&this.browser.length)&&!(this.dropzone&&this.dropzone.length)){return}this.uploader=new plupload.Uploader(this.plupload);delete this.plupload;this.param(this.params||{});delete this.params;this.uploader.init();this.supports.dragdrop=this.uploader.features.dragdrop&&!c.browser.mobile;(function(j,h){var i=50,k;if(!j){return}j.toggleClass("supports-drag-drop",!!h);if(!h){return j.unbind(".wp-uploader")}j.bind("dragover.wp-uploader",function(){if(k){return}j.addClass("drag-over");k=true});j.bind("dragleave.wp-uploader, drop.wp-uploader",function(){k=false;j.removeClass("drag-over")})}(this.dropzone,this.supports.dragdrop));if(this.browser){this.browser.on("mouseenter",this.refresh)}else{this.uploader.disableBrowse(true);b("#"+this.uploader.id+"_html5_container").hide()}this.uploader.bind("UploadProgress",this.progress);this.uploader.bind("FileUploaded",function(h,j,i){try{i=JSON.parse(i.response)}catch(k){return d.error(pluploadL10n.default_error,k)}if(!i||!i.type||!i.data){return d.error(pluploadL10n.default_error)}if("error"===i.type){return d.error(i.data.message,i.data)}if("success"===i.type){return d.success(i.data)}});this.uploader.bind("Error",function(h,i){var k=pluploadL10n.default_error,j;for(j in c.errorMap){if(i.code===plupload[j]){k=c.errorMap[j];break}}d.error(k,i);h.refresh()});this.uploader.bind("FilesAdded",function(h,i){b.each(i,function(){d.added(this)});h.refresh();h.start()});this.init()};b.extend(c,_wpPluploadSettings);c.uuid=0;c.errorMap={FAILED:pluploadL10n.upload_failed,FILE_EXTENSION_ERROR:pluploadL10n.invalid_filetype,IMAGE_FORMAT_ERROR:pluploadL10n.not_an_image,IMAGE_MEMORY_ERROR:pluploadL10n.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:pluploadL10n.image_dimensions_exceeded,GENERIC_ERROR:pluploadL10n.upload_failed,IO_ERROR:pluploadL10n.io_error,HTTP_ERROR:pluploadL10n.http_error,SECURITY_ERROR:pluploadL10n.security_error};b.extend(c.prototype,{param:function(d,e){if(arguments.length===1&&typeof d==="string"){return this.uploader.settings.multipart_params[d]}if(arguments.length>1){this.uploader.settings.multipart_params[d]=e}else{b.extend(this.uploader.settings.multipart_params,d)}},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){this.uploader.refresh()}});a.Uploader=c})(wp,jQuery);
\ No newline at end of file
+window.wp = window.wp || {};
+
+(function( exports, $ ) {
+       var Uploader;
+
+       if ( typeof _wpPluploadSettings === 'undefined' )
+               return;
+
+       /*
+        * An object that helps create a WordPress uploader using plupload.
+        *
+        * @param options - object - The options passed to the new plupload instance.
+        *    Accepts the following parameters:
+        *    - container - The id of uploader container.
+        *    - browser   - The id of button to trigger the file select.
+        *    - dropzone  - The id of file drop target.
+        *    - plupload  - An object of parameters to pass to the plupload instance.
+        *    - params    - An object of parameters to pass to $_POST when uploading the file.
+        *                  Extends this.plupload.multipart_params under the hood.
+        *
+        * @param attributes - object - Attributes and methods for this specific instance.
+        */
+       Uploader = function( options ) {
+               var self = this,
+                       elements = {
+                               container: 'container',
+                               browser:   'browse_button',
+                               dropzone:  'drop_element'
+                       },
+                       key, error;
+
+               this.supports = {
+                       upload: Uploader.browser.supported
+               };
+
+               this.supported = this.supports.upload;
+
+               if ( ! this.supported )
+                       return;
+
+               // Use deep extend to ensure that multipart_params and other objects are cloned.
+               this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
+               this.container = document.body; // Set default container.
+
+               // Extend the instance with options
+               //
+               // Use deep extend to allow options.plupload to override individual
+               // default plupload keys.
+               $.extend( true, this, options );
+
+               // Proxy all methods so this always refers to the current instance.
+               for ( key in this ) {
+                       if ( $.isFunction( this[ key ] ) )
+                               this[ key ] = $.proxy( this[ key ], this );
+               }
+
+               // Ensure all elements are jQuery elements and have id attributes
+               // Then set the proper plupload arguments to the ids.
+               for ( key in elements ) {
+                       if ( ! this[ key ] )
+                               continue;
+
+                       this[ key ] = $( this[ key ] ).first();
+
+                       if ( ! this[ key ].length ) {
+                               delete this[ key ];
+                               continue;
+                       }
+
+                       if ( ! this[ key ].prop('id') )
+                               this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
+                       this.plupload[ elements[ key ] ] = this[ key ].prop('id');
+               }
+
+               // If the uploader has neither a browse button nor a dropzone, bail.
+               if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) )
+                       return;
+
+               this.uploader = new plupload.Uploader( this.plupload );
+               delete this.plupload;
+
+               // Set default params and remove this.params alias.
+               this.param( this.params || {} );
+               delete this.params;
+
+               error = function( message, data, file ) {
+                       if ( file.attachment )
+                               file.attachment.destroy();
+
+                       Uploader.errors.unshift({
+                               message: message || pluploadL10n.default_error,
+                               data:    data,
+                               file:    file
+                       });
+
+                       self.error( message, data, file );
+               };
+
+               this.uploader.init();
+
+               this.supports.dragdrop = this.uploader.features.dragdrop && ! Uploader.browser.mobile;
+
+               // Generate drag/drop helper classes.
+               (function( dropzone, supported ) {
+                       var timer, active;
+
+                       if ( ! dropzone )
+                               return;
+
+                       dropzone.toggleClass( 'supports-drag-drop', !! supported );
+
+                       if ( ! supported )
+                               return dropzone.unbind('.wp-uploader');
+
+                       // 'dragenter' doesn't fire correctly,
+                       // simulate it with a limited 'dragover'
+                       dropzone.bind( 'dragover.wp-uploader', function(){
+                               if ( timer )
+                                       clearTimeout( timer );
+
+                               if ( active )
+                                       return;
+
+                               dropzone.trigger('dropzone:enter').addClass('drag-over');
+                               active = true;
+                       });
+
+                       dropzone.bind('dragleave.wp-uploader, drop.wp-uploader', function(){
+                               // Using an instant timer prevents the drag-over class from
+                               // being quickly removed and re-added when elements inside the
+                               // dropzone are repositioned.
+                               //
+                               // See http://core.trac.wordpress.org/ticket/21705
+                               timer = setTimeout( function() {
+                                       active = false;
+                                       dropzone.trigger('dropzone:leave').removeClass('drag-over');
+                               }, 0 );
+                       });
+               }( this.dropzone, this.supports.dragdrop ));
+
+               if ( this.browser ) {
+                       this.browser.on( 'mouseenter', this.refresh );
+               } else {
+                       this.uploader.disableBrowse( true );
+                       // If HTML5 mode, hide the auto-created file container.
+                       $('#' + this.uploader.id + '_html5_container').hide();
+               }
+
+               this.uploader.bind( 'FilesAdded', function( up, files ) {
+                       _.each( files, function( file ) {
+                               var attributes, image;
+
+                               // Ignore failed uploads.
+                               if ( plupload.FAILED === file.status )
+                                       return;
+
+                               // Generate attributes for a new `Attachment` model.
+                               attributes = _.extend({
+                                       file:      file,
+                                       uploading: true,
+                                       date:      new Date(),
+                                       filename:  file.name,
+                                       menuOrder: 0,
+                                       uploadedTo: wp.media.model.settings.post.id
+                               }, _.pick( file, 'loaded', 'size', 'percent' ) );
+
+                               // Handle early mime type scanning for images.
+                               image = /(?:jpe?g|png|gif)$/i.exec( file.name );
+
+                               // Did we find an image?
+                               if ( image ) {
+                                       attributes.type = 'image';
+
+                                       // `jpeg`, `png` and `gif` are valid subtypes.
+                                       // `jpg` is not, so map it to `jpeg`.
+                                       attributes.subtype = ( 'jpg' === image[0] ) ? 'jpeg' : image[0];
+                               }
+
+                               // Create the `Attachment`.
+                               file.attachment = wp.media.model.Attachment.create( attributes );
+
+                               Uploader.queue.add( file.attachment );
+
+                               self.added( file.attachment );
+                       });
+
+                       up.refresh();
+                       up.start();
+               });
+
+               this.uploader.bind( 'UploadProgress', function( up, file ) {
+                       file.attachment.set( _.pick( file, 'loaded', 'percent' ) );
+                       self.progress( file.attachment );
+               });
+
+               this.uploader.bind( 'FileUploaded', function( up, file, response ) {
+                       var complete;
+
+                       try {
+                               response = JSON.parse( response.response );
+                       } catch ( e ) {
+                               return error( pluploadL10n.default_error, e, file );
+                       }
+
+                       if ( ! _.isObject( response ) || _.isUndefined( response.success ) )
+                               return error( pluploadL10n.default_error, null, file );
+                       else if ( ! response.success )
+                               return error( response.data && response.data.message, response.data, file );
+
+                       _.each(['file','loaded','size','percent'], function( key ) {
+                               file.attachment.unset( key );
+                       });
+
+                       file.attachment.set( _.extend( response.data, { uploading: false }) );
+                       wp.media.model.Attachment.get( response.data.id, file.attachment );
+
+                       complete = Uploader.queue.all( function( attachment ) {
+                               return ! attachment.get('uploading');
+                       });
+
+                       if ( complete )
+                               Uploader.queue.reset();
+
+                       self.success( file.attachment );
+               });
+
+               this.uploader.bind( 'Error', function( up, pluploadError ) {
+                       var message = pluploadL10n.default_error,
+                               key;
+
+                       // Check for plupload errors.
+                       for ( key in Uploader.errorMap ) {
+                               if ( pluploadError.code === plupload[ key ] ) {
+                                       message = Uploader.errorMap[ key ];
+                                       if ( _.isFunction( message ) )
+                                               message = message( pluploadError.file, pluploadError );
+                                       break;
+                               }
+                       }
+
+                       error( message, pluploadError, pluploadError.file );
+                       up.refresh();
+               });
+
+               this.init();
+       };
+
+       // Adds the 'defaults' and 'browser' properties.
+       $.extend( Uploader, _wpPluploadSettings );
+
+       Uploader.uuid = 0;
+
+       Uploader.errorMap = {
+               'FAILED':                 pluploadL10n.upload_failed,
+               'FILE_EXTENSION_ERROR':   pluploadL10n.invalid_filetype,
+               'IMAGE_FORMAT_ERROR':     pluploadL10n.not_an_image,
+               'IMAGE_MEMORY_ERROR':     pluploadL10n.image_memory_exceeded,
+               'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
+               'GENERIC_ERROR':          pluploadL10n.upload_failed,
+               'IO_ERROR':               pluploadL10n.io_error,
+               'HTTP_ERROR':             pluploadL10n.http_error,
+               'SECURITY_ERROR':         pluploadL10n.security_error,
+
+               'FILE_SIZE_ERROR': function( file ) {
+                       return pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
+               }
+       };
+
+       $.extend( Uploader.prototype, {
+               /**
+                * Acts as a shortcut to extending the uploader's multipart_params object.
+                *
+                * param( key )
+                *    Returns the value of the key.
+                *
+                * param( key, value )
+                *    Sets the value of a key.
+                *
+                * param( map )
+                *    Sets values for a map of data.
+                */
+               param: function( key, value ) {
+                       if ( arguments.length === 1 && typeof key === 'string' )
+                               return this.uploader.settings.multipart_params[ key ];
+
+                       if ( arguments.length > 1 ) {
+                               this.uploader.settings.multipart_params[ key ] = value;
+                       } else {
+                               $.extend( this.uploader.settings.multipart_params, key );
+                       }
+               },
+
+               init:     function() {},
+               error:    function() {},
+               success:  function() {},
+               added:    function() {},
+               progress: function() {},
+               complete: function() {},
+               refresh:  function() {
+                       var node, attached, container, id;
+
+                       if ( this.browser ) {
+                               node = this.browser[0];
+
+                               // Check if the browser node is in the DOM.
+                               while ( node ) {
+                                       if ( node === document.body ) {
+                                               attached = true;
+                                               break;
+                                       }
+                                       node = node.parentNode;
+                               }
+
+                               // If the browser node is not attached to the DOM, use a
+                               // temporary container to house it, as the browser button
+                               // shims require the button to exist in the DOM at all times.
+                               if ( ! attached ) {
+                                       id = 'wp-uploader-browser-' + this.uploader.id;
+
+                                       container = $( '#' + id );
+                                       if ( ! container.length ) {
+                                               container = $('<div class="wp-uploader-browser" />').css({
+                                                       position: 'fixed',
+                                                       top: '-1000px',
+                                                       left: '-1000px',
+                                                       height: 0,
+                                                       width: 0
+                                               }).attr( 'id', 'wp-uploader-browser-' + this.uploader.id ).appendTo('body');
+                                       }
+
+                                       container.append( this.browser );
+                               }
+                       }
+
+                       this.uploader.refresh();
+               }
+       });
+
+       Uploader.queue = new wp.media.model.Attachments( [], { query: false });
+       Uploader.errors = new Backbone.Collection();
+
+       exports.Uploader = Uploader;
+})( wp, jQuery );
diff --git a/wp-includes/js/plupload/wp-plupload.min.js b/wp-includes/js/plupload/wp-plupload.min.js
new file mode 100644 (file)
index 0000000..d9f179e
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(a,b){var c;if(typeof _wpPluploadSettings==="undefined"){return}c=function(f){var d=this,h={container:"container",browser:"browse_button",dropzone:"drop_element"},g,e;this.supports={upload:c.browser.supported};this.supported=this.supports.upload;if(!this.supported){return}this.plupload=b.extend(true,{multipart_params:{}},c.defaults);this.container=document.body;b.extend(true,this,f);for(g in this){if(b.isFunction(this[g])){this[g]=b.proxy(this[g],this)}}for(g in h){if(!this[g]){continue}this[g]=b(this[g]).first();if(!this[g].length){delete this[g];continue}if(!this[g].prop("id")){this[g].prop("id","__wp-uploader-id-"+c.uuid++)}this.plupload[h[g]]=this[g].prop("id")}if(!(this.browser&&this.browser.length)&&!(this.dropzone&&this.dropzone.length)){return}this.uploader=new plupload.Uploader(this.plupload);delete this.plupload;this.param(this.params||{});delete this.params;e=function(j,k,i){if(i.attachment){i.attachment.destroy()}c.errors.unshift({message:j||pluploadL10n.default_error,data:k,file:i});d.error(j,k,i)};this.uploader.init();this.supports.dragdrop=this.uploader.features.dragdrop&&!c.browser.mobile;(function(j,i){var l,k;if(!j){return}j.toggleClass("supports-drag-drop",!!i);if(!i){return j.unbind(".wp-uploader")}j.bind("dragover.wp-uploader",function(){if(l){clearTimeout(l)}if(k){return}j.trigger("dropzone:enter").addClass("drag-over");k=true});j.bind("dragleave.wp-uploader, drop.wp-uploader",function(){l=setTimeout(function(){k=false;j.trigger("dropzone:leave").removeClass("drag-over")},0)})}(this.dropzone,this.supports.dragdrop));if(this.browser){this.browser.on("mouseenter",this.refresh)}else{this.uploader.disableBrowse(true);b("#"+this.uploader.id+"_html5_container").hide()}this.uploader.bind("FilesAdded",function(i,j){_.each(j,function(l){var k,m;if(plupload.FAILED===l.status){return}k=_.extend({file:l,uploading:true,date:new Date(),filename:l.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(l,"loaded","size","percent"));m=/(?:jpe?g|png|gif)$/i.exec(l.name);if(m){k.type="image";k.subtype=("jpg"===m[0])?"jpeg":m[0]}l.attachment=wp.media.model.Attachment.create(k);c.queue.add(l.attachment);d.added(l.attachment)});i.refresh();i.start()});this.uploader.bind("UploadProgress",function(i,j){j.attachment.set(_.pick(j,"loaded","percent"));d.progress(j.attachment)});this.uploader.bind("FileUploaded",function(i,l,k){var j;try{k=JSON.parse(k.response)}catch(m){return e(pluploadL10n.default_error,m,l)}if(!_.isObject(k)||_.isUndefined(k.success)){return e(pluploadL10n.default_error,null,l)}else{if(!k.success){return e(k.data&&k.data.message,k.data,l)}}_.each(["file","loaded","size","percent"],function(n){l.attachment.unset(n)});l.attachment.set(_.extend(k.data,{uploading:false}));wp.media.model.Attachment.get(k.data.id,l.attachment);j=c.queue.all(function(n){return !n.get("uploading")});if(j){c.queue.reset()}d.success(l.attachment)});this.uploader.bind("Error",function(i,l){var k=pluploadL10n.default_error,j;for(j in c.errorMap){if(l.code===plupload[j]){k=c.errorMap[j];if(_.isFunction(k)){k=k(l.file,l)}break}}e(k,l,l.file);i.refresh()});this.init()};b.extend(c,_wpPluploadSettings);c.uuid=0;c.errorMap={FAILED:pluploadL10n.upload_failed,FILE_EXTENSION_ERROR:pluploadL10n.invalid_filetype,IMAGE_FORMAT_ERROR:pluploadL10n.not_an_image,IMAGE_MEMORY_ERROR:pluploadL10n.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:pluploadL10n.image_dimensions_exceeded,GENERIC_ERROR:pluploadL10n.upload_failed,IO_ERROR:pluploadL10n.io_error,HTTP_ERROR:pluploadL10n.http_error,SECURITY_ERROR:pluploadL10n.security_error,FILE_SIZE_ERROR:function(d){return pluploadL10n.file_exceeds_size_limit.replace("%s",d.name)}};b.extend(c.prototype,{param:function(d,e){if(arguments.length===1&&typeof d==="string"){return this.uploader.settings.multipart_params[d]}if(arguments.length>1){this.uploader.settings.multipart_params[d]=e}else{b.extend(this.uploader.settings.multipart_params,d)}},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var f,e,d,g;if(this.browser){f=this.browser[0];while(f){if(f===document.body){e=true;break}f=f.parentNode}if(!e){g="wp-uploader-browser-"+this.uploader.id;d=b("#"+g);if(!d.length){d=b('<div class="wp-uploader-browser" />').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")}d.append(this.browser)}}this.uploader.refresh()}});c.queue=new wp.media.model.Attachments([],{query:false});c.errors=new Backbone.Collection();a.Uploader=c})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/prototype.js b/wp-includes/js/prototype.js
deleted file mode 100644 (file)
index 9fe6e12..0000000
+++ /dev/null
@@ -1,4874 +0,0 @@
-/*  Prototype JavaScript framework, version 1.6.1
- *  (c) 2005-2009 Sam Stephenson
- *
- *  Prototype is freely distributable under the terms of an MIT-style license.
- *  For details, see the Prototype web site: http://www.prototypejs.org/
- *
- *--------------------------------------------------------------------------*/
-
-var Prototype = {
-  Version: '1.6.1',
-
-  Browser: (function(){
-    var ua = navigator.userAgent;
-    var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
-    return {
-      IE:             !!window.attachEvent && !isOpera,
-      Opera:          isOpera,
-      WebKit:         ua.indexOf('AppleWebKit/') > -1,
-      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
-      MobileSafari:   /Apple.*Mobile.*Safari/.test(ua)
-    }
-  })(),
-
-  BrowserFeatures: {
-    XPath: !!document.evaluate,
-    SelectorsAPI: !!document.querySelector,
-    ElementExtensions: (function() {
-      var constructor = window.Element || window.HTMLElement;
-      return !!(constructor && constructor.prototype);
-    })(),
-    SpecificElementExtensions: (function() {
-      if (typeof window.HTMLDivElement !== 'undefined')
-        return true;
-
-      var div = document.createElement('div');
-      var form = document.createElement('form');
-      var isSupported = false;
-
-      if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {
-        isSupported = true;
-      }
-
-      div = form = null;
-
-      return isSupported;
-    })()
-  },
-
-  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
-  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
-
-  emptyFunction: function() { },
-  K: function(x) { return x }
-};
-
-if (Prototype.Browser.MobileSafari)
-  Prototype.BrowserFeatures.SpecificElementExtensions = false;
-
-
-var Abstract = { };
-
-
-var Try = {
-  these: function() {
-    var returnValue;
-
-    for (var i = 0, length = arguments.length; i < length; i++) {
-      var lambda = arguments[i];
-      try {
-        returnValue = lambda();
-        break;
-      } catch (e) { }
-    }
-
-    return returnValue;
-  }
-};
-
-/* Based on Alex Arnell's inheritance implementation. */
-
-var Class = (function() {
-  function subclass() {};
-  function create() {
-    var parent = null, properties = $A(arguments);
-    if (Object.isFunction(properties[0]))
-      parent = properties.shift();
-
-    function klass() {
-      this.initialize.apply(this, arguments);
-    }
-
-    Object.extend(klass, Class.Methods);
-    klass.superclass = parent;
-    klass.subclasses = [];
-
-    if (parent) {
-      subclass.prototype = parent.prototype;
-      klass.prototype = new subclass;
-      parent.subclasses.push(klass);
-    }
-
-    for (var i = 0; i < properties.length; i++)
-      klass.addMethods(properties[i]);
-
-    if (!klass.prototype.initialize)
-      klass.prototype.initialize = Prototype.emptyFunction;
-
-    klass.prototype.constructor = klass;
-    return klass;
-  }
-
-  function addMethods(source) {
-    var ancestor   = this.superclass && this.superclass.prototype;
-    var properties = Object.keys(source);
-
-    if (!Object.keys({ toString: true }).length) {
-      if (source.toString != Object.prototype.toString)
-        properties.push("toString");
-      if (source.valueOf != Object.prototype.valueOf)
-        properties.push("valueOf");
-    }
-
-    for (var i = 0, length = properties.length; i < length; i++) {
-      var property = properties[i], value = source[property];
-      if (ancestor && Object.isFunction(value) &&
-          value.argumentNames().first() == "$super") {
-        var method = value;
-        value = (function(m) {
-          return function() { return ancestor[m].apply(this, arguments); };
-        })(property).wrap(method);
-
-        value.valueOf = method.valueOf.bind(method);
-        value.toString = method.toString.bind(method);
-      }
-      this.prototype[property] = value;
-    }
-
-    return this;
-  }
-
-  return {
-    create: create,
-    Methods: {
-      addMethods: addMethods
-    }
-  };
-})();
-(function() {
-
-  var _toString = Object.prototype.toString;
-
-  function extend(destination, source) {
-    for (var property in source)
-      destination[property] = source[property];
-    return destination;
-  }
-
-  function inspect(object) {
-    try {
-      if (isUndefined(object)) return 'undefined';
-      if (object === null) return 'null';
-      return object.inspect ? object.inspect() : String(object);
-    } catch (e) {
-      if (e instanceof RangeError) return '...';
-      throw e;
-    }
-  }
-
-  function toJSON(object) {
-    var type = typeof object;
-    switch (type) {
-      case 'undefined':
-      case 'function':
-      case 'unknown': return;
-      case 'boolean': return object.toString();
-    }
-
-    if (object === null) return 'null';
-    if (object.toJSON) return object.toJSON();
-    if (isElement(object)) return;
-
-    var results = [];
-    for (var property in object) {
-      var value = toJSON(object[property]);
-      if (!isUndefined(value))
-        results.push(property.toJSON() + ': ' + value);
-    }
-
-    return '{' + results.join(', ') + '}';
-  }
-
-  function toQueryString(object) {
-    return $H(object).toQueryString();
-  }
-
-  function toHTML(object) {
-    return object && object.toHTML ? object.toHTML() : String.interpret(object);
-  }
-
-  function keys(object) {
-    var results = [];
-    for (var property in object)
-      results.push(property);
-    return results;
-  }
-
-  function values(object) {
-    var results = [];
-    for (var property in object)
-      results.push(object[property]);
-    return results;
-  }
-
-  function clone(object) {
-    return extend({ }, object);
-  }
-
-  function isElement(object) {
-    return !!(object && object.nodeType == 1);
-  }
-
-  function isArray(object) {
-    return _toString.call(object) == "[object Array]";
-  }
-
-
-  function isHash(object) {
-    return object instanceof Hash;
-  }
-
-  function isFunction(object) {
-    return typeof object === "function";
-  }
-
-  function isString(object) {
-    return _toString.call(object) == "[object String]";
-  }
-
-  function isNumber(object) {
-    return _toString.call(object) == "[object Number]";
-  }
-
-  function isUndefined(object) {
-    return typeof object === "undefined";
-  }
-
-  extend(Object, {
-    extend:        extend,
-    inspect:       inspect,
-    toJSON:        toJSON,
-    toQueryString: toQueryString,
-    toHTML:        toHTML,
-    keys:          keys,
-    values:        values,
-    clone:         clone,
-    isElement:     isElement,
-    isArray:       isArray,
-    isHash:        isHash,
-    isFunction:    isFunction,
-    isString:      isString,
-    isNumber:      isNumber,
-    isUndefined:   isUndefined
-  });
-})();
-Object.extend(Function.prototype, (function() {
-  var slice = Array.prototype.slice;
-
-  function update(array, args) {
-    var arrayLength = array.length, length = args.length;
-    while (length--) array[arrayLength + length] = args[length];
-    return array;
-  }
-
-  function merge(array, args) {
-    array = slice.call(array, 0);
-    return update(array, args);
-  }
-
-  function argumentNames() {
-    var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
-      .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
-      .replace(/\s+/g, '').split(',');
-    return names.length == 1 && !names[0] ? [] : names;
-  }
-
-  function bind(context) {
-    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
-    var __method = this, args = slice.call(arguments, 1);
-    return function() {
-      var a = merge(args, arguments);
-      return __method.apply(context, a);
-    }
-  }
-
-  function bindAsEventListener(context) {
-    var __method = this, args = slice.call(arguments, 1);
-    return function(event) {
-      var a = update([event || window.event], args);
-      return __method.apply(context, a);
-    }
-  }
-
-  function curry() {
-    if (!arguments.length) return this;
-    var __method = this, args = slice.call(arguments, 0);
-    return function() {
-      var a = merge(args, arguments);
-      return __method.apply(this, a);
-    }
-  }
-
-  function delay(timeout) {
-    var __method = this, args = slice.call(arguments, 1);
-    timeout = timeout * 1000
-    return window.setTimeout(function() {
-      return __method.apply(__method, args);
-    }, timeout);
-  }
-
-  function defer() {
-    var args = update([0.01], arguments);
-    return this.delay.apply(this, args);
-  }
-
-  function wrap(wrapper) {
-    var __method = this;
-    return function() {
-      var a = update([__method.bind(this)], arguments);
-      return wrapper.apply(this, a);
-    }
-  }
-
-  function methodize() {
-    if (this._methodized) return this._methodized;
-    var __method = this;
-    return this._methodized = function() {
-      var a = update([this], arguments);
-      return __method.apply(null, a);
-    };
-  }
-
-  return {
-    argumentNames:       argumentNames,
-    bind:                bind,
-    bindAsEventListener: bindAsEventListener,
-    curry:               curry,
-    delay:               delay,
-    defer:               defer,
-    wrap:                wrap,
-    methodize:           methodize
-  }
-})());
-
-
-Date.prototype.toJSON = function() {
-  return '"' + this.getUTCFullYear() + '-' +
-    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
-    this.getUTCDate().toPaddedString(2) + 'T' +
-    this.getUTCHours().toPaddedString(2) + ':' +
-    this.getUTCMinutes().toPaddedString(2) + ':' +
-    this.getUTCSeconds().toPaddedString(2) + 'Z"';
-};
-
-
-RegExp.prototype.match = RegExp.prototype.test;
-
-RegExp.escape = function(str) {
-  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
-};
-var PeriodicalExecuter = Class.create({
-  initialize: function(callback, frequency) {
-    this.callback = callback;
-    this.frequency = frequency;
-    this.currentlyExecuting = false;
-
-    this.registerCallback();
-  },
-
-  registerCallback: function() {
-    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
-  },
-
-  execute: function() {
-    this.callback(this);
-  },
-
-  stop: function() {
-    if (!this.timer) return;
-    clearInterval(this.timer);
-    this.timer = null;
-  },
-
-  onTimerEvent: function() {
-    if (!this.currentlyExecuting) {
-      try {
-        this.currentlyExecuting = true;
-        this.execute();
-        this.currentlyExecuting = false;
-      } catch(e) {
-        this.currentlyExecuting = false;
-        throw e;
-      }
-    }
-  }
-});
-Object.extend(String, {
-  interpret: function(value) {
-    return value == null ? '' : String(value);
-  },
-  specialChar: {
-    '\b': '\\b',
-    '\t': '\\t',
-    '\n': '\\n',
-    '\f': '\\f',
-    '\r': '\\r',
-    '\\': '\\\\'
-  }
-});
-
-Object.extend(String.prototype, (function() {
-
-  function prepareReplacement(replacement) {
-    if (Object.isFunction(replacement)) return replacement;
-    var template = new Template(replacement);
-    return function(match) { return template.evaluate(match) };
-  }
-
-  function gsub(pattern, replacement) {
-    var result = '', source = this, match;
-    replacement = prepareReplacement(replacement);
-
-    if (Object.isString(pattern))
-      pattern = RegExp.escape(pattern);
-
-    if (!(pattern.length || pattern.source)) {
-      replacement = replacement('');
-      return replacement + source.split('').join(replacement) + replacement;
-    }
-
-    while (source.length > 0) {
-      if (match = source.match(pattern)) {
-        result += source.slice(0, match.index);
-        result += String.interpret(replacement(match));
-        source  = source.slice(match.index + match[0].length);
-      } else {
-        result += source, source = '';
-      }
-    }
-    return result;
-  }
-
-  function sub(pattern, replacement, count) {
-    replacement = prepareReplacement(replacement);
-    count = Object.isUndefined(count) ? 1 : count;
-
-    return this.gsub(pattern, function(match) {
-      if (--count < 0) return match[0];
-      return replacement(match);
-    });
-  }
-
-  function scan(pattern, iterator) {
-    this.gsub(pattern, iterator);
-    return String(this);
-  }
-
-  function truncate(length, truncation) {
-    length = length || 30;
-    truncation = Object.isUndefined(truncation) ? '...' : truncation;
-    return this.length > length ?
-      this.slice(0, length - truncation.length) + truncation : String(this);
-  }
-
-  function strip() {
-    return this.replace(/^\s+/, '').replace(/\s+$/, '');
-  }
-
-  function stripTags() {
-    return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
-  }
-
-  function stripScripts() {
-    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
-  }
-
-  function extractScripts() {
-    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
-    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
-    return (this.match(matchAll) || []).map(function(scriptTag) {
-      return (scriptTag.match(matchOne) || ['', ''])[1];
-    });
-  }
-
-  function evalScripts() {
-    return this.extractScripts().map(function(script) { return eval(script) });
-  }
-
-  function escapeHTML() {
-    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
-  }
-
-  function unescapeHTML() {
-    return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
-  }
-
-
-  function toQueryParams(separator) {
-    var match = this.strip().match(/([^?#]*)(#.*)?$/);
-    if (!match) return { };
-
-    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
-      if ((pair = pair.split('='))[0]) {
-        var key = decodeURIComponent(pair.shift());
-        var value = pair.length > 1 ? pair.join('=') : pair[0];
-        if (value != undefined) value = decodeURIComponent(value);
-
-        if (key in hash) {
-          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
-          hash[key].push(value);
-        }
-        else hash[key] = value;
-      }
-      return hash;
-    });
-  }
-
-  function toArray() {
-    return this.split('');
-  }
-
-  function succ() {
-    return this.slice(0, this.length - 1) +
-      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
-  }
-
-  function times(count) {
-    return count < 1 ? '' : new Array(count + 1).join(this);
-  }
-
-  function camelize() {
-    var parts = this.split('-'), len = parts.length;
-    if (len == 1) return parts[0];
-
-    var camelized = this.charAt(0) == '-'
-      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
-      : parts[0];
-
-    for (var i = 1; i < len; i++)
-      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
-    return camelized;
-  }
-
-  function capitalize() {
-    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
-  }
-
-  function underscore() {
-    return this.replace(/::/g, '/')
-               .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
-               .replace(/([a-z\d])([A-Z])/g, '$1_$2')
-               .replace(/-/g, '_')
-               .toLowerCase();
-  }
-
-  function dasherize() {
-    return this.replace(/_/g, '-');
-  }
-
-  function inspect(useDoubleQuotes) {
-    var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) {
-      if (character in String.specialChar) {
-        return String.specialChar[character];
-      }
-      return '\\u00' + character.charCodeAt().toPaddedString(2, 16);
-    });
-    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
-    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
-  }
-
-  function toJSON() {
-    return this.inspect(true);
-  }
-
-  function unfilterJSON(filter) {
-    return this.replace(filter || Prototype.JSONFilter, '$1');
-  }
-
-  function isJSON() {
-    var str = this;
-    if (str.blank()) return false;
-    str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
-    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
-  }
-
-  function evalJSON(sanitize) {
-    var json = this.unfilterJSON();
-    try {
-      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
-    } catch (e) { }
-    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
-  }
-
-  function include(pattern) {
-    return this.indexOf(pattern) > -1;
-  }
-
-  function startsWith(pattern) {
-    return this.indexOf(pattern) === 0;
-  }
-
-  function endsWith(pattern) {
-    var d = this.length - pattern.length;
-    return d >= 0 && this.lastIndexOf(pattern) === d;
-  }
-
-  function empty() {
-    return this == '';
-  }
-
-  function blank() {
-    return /^\s*$/.test(this);
-  }
-
-  function interpolate(object, pattern) {
-    return new Template(this, pattern).evaluate(object);
-  }
-
-  return {
-    gsub:           gsub,
-    sub:            sub,
-    scan:           scan,
-    truncate:       truncate,
-    strip:          String.prototype.trim ? String.prototype.trim : strip,
-    stripTags:      stripTags,
-    stripScripts:   stripScripts,
-    extractScripts: extractScripts,
-    evalScripts:    evalScripts,
-    escapeHTML:     escapeHTML,
-    unescapeHTML:   unescapeHTML,
-    toQueryParams:  toQueryParams,
-    parseQuery:     toQueryParams,
-    toArray:        toArray,
-    succ:           succ,
-    times:          times,
-    camelize:       camelize,
-    capitalize:     capitalize,
-    underscore:     underscore,
-    dasherize:      dasherize,
-    inspect:        inspect,
-    toJSON:         toJSON,
-    unfilterJSON:   unfilterJSON,
-    isJSON:         isJSON,
-    evalJSON:       evalJSON,
-    include:        include,
-    startsWith:     startsWith,
-    endsWith:       endsWith,
-    empty:          empty,
-    blank:          blank,
-    interpolate:    interpolate
-  };
-})());
-
-var Template = Class.create({
-  initialize: function(template, pattern) {
-    this.template = template.toString();
-    this.pattern = pattern || Template.Pattern;
-  },
-
-  evaluate: function(object) {
-    if (object && Object.isFunction(object.toTemplateReplacements))
-      object = object.toTemplateReplacements();
-
-    return this.template.gsub(this.pattern, function(match) {
-      if (object == null) return (match[1] + '');
-
-      var before = match[1] || '';
-      if (before == '\\') return match[2];
-
-      var ctx = object, expr = match[3];
-      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
-      match = pattern.exec(expr);
-      if (match == null) return before;
-
-      while (match != null) {
-        var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1];
-        ctx = ctx[comp];
-        if (null == ctx || '' == match[3]) break;
-        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
-        match = pattern.exec(expr);
-      }
-
-      return before + String.interpret(ctx);
-    });
-  }
-});
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-
-var $break = { };
-
-var Enumerable = (function() {
-  function each(iterator, context) {
-    var index = 0;
-    try {
-      this._each(function(value) {
-        iterator.call(context, value, index++);
-      });
-    } catch (e) {
-      if (e != $break) throw e;
-    }
-    return this;
-  }
-
-  function eachSlice(number, iterator, context) {
-    var index = -number, slices = [], array = this.toArray();
-    if (number < 1) return array;
-    while ((index += number) < array.length)
-      slices.push(array.slice(index, index+number));
-    return slices.collect(iterator, context);
-  }
-
-  function all(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var result = true;
-    this.each(function(value, index) {
-      result = result && !!iterator.call(context, value, index);
-      if (!result) throw $break;
-    });
-    return result;
-  }
-
-  function any(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var result = false;
-    this.each(function(value, index) {
-      if (result = !!iterator.call(context, value, index))
-        throw $break;
-    });
-    return result;
-  }
-
-  function collect(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var results = [];
-    this.each(function(value, index) {
-      results.push(iterator.call(context, value, index));
-    });
-    return results;
-  }
-
-  function detect(iterator, context) {
-    var result;
-    this.each(function(value, index) {
-      if (iterator.call(context, value, index)) {
-        result = value;
-        throw $break;
-      }
-    });
-    return result;
-  }
-
-  function findAll(iterator, context) {
-    var results = [];
-    this.each(function(value, index) {
-      if (iterator.call(context, value, index))
-        results.push(value);
-    });
-    return results;
-  }
-
-  function grep(filter, iterator, context) {
-    iterator = iterator || Prototype.K;
-    var results = [];
-
-    if (Object.isString(filter))
-      filter = new RegExp(RegExp.escape(filter));
-
-    this.each(function(value, index) {
-      if (filter.match(value))
-        results.push(iterator.call(context, value, index));
-    });
-    return results;
-  }
-
-  function include(object) {
-    if (Object.isFunction(this.indexOf))
-      if (this.indexOf(object) != -1) return true;
-
-    var found = false;
-    this.each(function(value) {
-      if (value == object) {
-        found = true;
-        throw $break;
-      }
-    });
-    return found;
-  }
-
-  function inGroupsOf(number, fillWith) {
-    fillWith = Object.isUndefined(fillWith) ? null : fillWith;
-    return this.eachSlice(number, function(slice) {
-      while(slice.length < number) slice.push(fillWith);
-      return slice;
-    });
-  }
-
-  function inject(memo, iterator, context) {
-    this.each(function(value, index) {
-      memo = iterator.call(context, memo, value, index);
-    });
-    return memo;
-  }
-
-  function invoke(method) {
-    var args = $A(arguments).slice(1);
-    return this.map(function(value) {
-      return value[method].apply(value, args);
-    });
-  }
-
-  function max(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var result;
-    this.each(function(value, index) {
-      value = iterator.call(context, value, index);
-      if (result == null || value >= result)
-        result = value;
-    });
-    return result;
-  }
-
-  function min(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var result;
-    this.each(function(value, index) {
-      value = iterator.call(context, value, index);
-      if (result == null || value < result)
-        result = value;
-    });
-    return result;
-  }
-
-  function partition(iterator, context) {
-    iterator = iterator || Prototype.K;
-    var trues = [], falses = [];
-    this.each(function(value, index) {
-      (iterator.call(context, value, index) ?
-        trues : falses).push(value);
-    });
-    return [trues, falses];
-  }
-
-  function pluck(property) {
-    var results = [];
-    this.each(function(value) {
-      results.push(value[property]);
-    });
-    return results;
-  }
-
-  function reject(iterator, context) {
-    var results = [];
-    this.each(function(value, index) {
-      if (!iterator.call(context, value, index))
-        results.push(value);
-    });
-    return results;
-  }
-
-  function sortBy(iterator, context) {
-    return this.map(function(value, index) {
-      return {
-        value: value,
-        criteria: iterator.call(context, value, index)
-      };
-    }).sort(function(left, right) {
-      var a = left.criteria, b = right.criteria;
-      return a < b ? -1 : a > b ? 1 : 0;
-    }).pluck('value');
-  }
-
-  function toArray() {
-    return this.map();
-  }
-
-  function zip() {
-    var iterator = Prototype.K, args = $A(arguments);
-    if (Object.isFunction(args.last()))
-      iterator = args.pop();
-
-    var collections = [this].concat(args).map($A);
-    return this.map(function(value, index) {
-      return iterator(collections.pluck(index));
-    });
-  }
-
-  function size() {
-    return this.toArray().length;
-  }
-
-  function inspect() {
-    return '#<Enumerable:' + this.toArray().inspect() + '>';
-  }
-
-
-
-
-
-
-
-
-
-  return {
-    each:       each,
-    eachSlice:  eachSlice,
-    all:        all,
-    every:      all,
-    any:        any,
-    some:       any,
-    collect:    collect,
-    map:        collect,
-    detect:     detect,
-    findAll:    findAll,
-    select:     findAll,
-    filter:     findAll,
-    grep:       grep,
-    include:    include,
-    member:     include,
-    inGroupsOf: inGroupsOf,
-    inject:     inject,
-    invoke:     invoke,
-    max:        max,
-    min:        min,
-    partition:  partition,
-    pluck:      pluck,
-    reject:     reject,
-    sortBy:     sortBy,
-    toArray:    toArray,
-    entries:    toArray,
-    zip:        zip,
-    size:       size,
-    inspect:    inspect,
-    find:       detect
-  };
-})();
-function $A(iterable) {
-  if (!iterable) return [];
-  if ('toArray' in Object(iterable)) return iterable.toArray();
-  var length = iterable.length || 0, results = new Array(length);
-  while (length--) results[length] = iterable[length];
-  return results;
-}
-
-function $w(string) {
-  if (!Object.isString(string)) return [];
-  string = string.strip();
-  return string ? string.split(/\s+/) : [];
-}
-
-Array.from = $A;
-
-
-(function() {
-  var arrayProto = Array.prototype,
-      slice = arrayProto.slice,
-      _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available
-
-  function each(iterator) {
-    for (var i = 0, length = this.length; i < length; i++)
-      iterator(this[i]);
-  }
-  if (!_each) _each = each;
-
-  function clear() {
-    this.length = 0;
-    return this;
-  }
-
-  function first() {
-    return this[0];
-  }
-
-  function last() {
-    return this[this.length - 1];
-  }
-
-  function compact() {
-    return this.select(function(value) {
-      return value != null;
-    });
-  }
-
-  function flatten() {
-    return this.inject([], function(array, value) {
-      if (Object.isArray(value))
-        return array.concat(value.flatten());
-      array.push(value);
-      return array;
-    });
-  }
-
-  function without() {
-    var values = slice.call(arguments, 0);
-    return this.select(function(value) {
-      return !values.include(value);
-    });
-  }
-
-  function reverse(inline) {
-    return (inline !== false ? this : this.toArray())._reverse();
-  }
-
-  function uniq(sorted) {
-    return this.inject([], function(array, value, index) {
-      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
-        array.push(value);
-      return array;
-    });
-  }
-
-  function intersect(array) {
-    return this.uniq().findAll(function(item) {
-      return array.detect(function(value) { return item === value });
-    });
-  }
-
-
-  function clone() {
-    return slice.call(this, 0);
-  }
-
-  function size() {
-    return this.length;
-  }
-
-  function inspect() {
-    return '[' + this.map(Object.inspect).join(', ') + ']';
-  }
-
-  function toJSON() {
-    var results = [];
-    this.each(function(object) {
-      var value = Object.toJSON(object);
-      if (!Object.isUndefined(value)) results.push(value);
-    });
-    return '[' + results.join(', ') + ']';
-  }
-
-  function indexOf(item, i) {
-    i || (i = 0);
-    var length = this.length;
-    if (i < 0) i = length + i;
-    for (; i < length; i++)
-      if (this[i] === item) return i;
-    return -1;
-  }
-
-  function lastIndexOf(item, i) {
-    i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
-    var n = this.slice(0, i).reverse().indexOf(item);
-    return (n < 0) ? n : i - n - 1;
-  }
-
-  function concat() {
-    var array = slice.call(this, 0), item;
-    for (var i = 0, length = arguments.length; i < length; i++) {
-      item = arguments[i];
-      if (Object.isArray(item) && !('callee' in item)) {
-        for (var j = 0, arrayLength = item.length; j < arrayLength; j++)
-          array.push(item[j]);
-      } else {
-        array.push(item);
-      }
-    }
-    return array;
-  }
-
-  Object.extend(arrayProto, Enumerable);
-
-  if (!arrayProto._reverse)
-    arrayProto._reverse = arrayProto.reverse;
-
-  Object.extend(arrayProto, {
-    _each:     _each,
-    clear:     clear,
-    first:     first,
-    last:      last,
-    compact:   compact,
-    flatten:   flatten,
-    without:   without,
-    reverse:   reverse,
-    uniq:      uniq,
-    intersect: intersect,
-    clone:     clone,
-    toArray:   clone,
-    size:      size,
-    inspect:   inspect,
-    toJSON:    toJSON
-  });
-
-  var CONCAT_ARGUMENTS_BUGGY = (function() {
-    return [].concat(arguments)[0][0] !== 1;
-  })(1,2)
-
-  if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat;
-
-  if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;
-  if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf;
-})();
-function $H(object) {
-  return new Hash(object);
-};
-
-var Hash = Class.create(Enumerable, (function() {
-  function initialize(object) {
-    this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
-  }
-
-  function _each(iterator) {
-    for (var key in this._object) {
-      var value = this._object[key], pair = [key, value];
-      pair.key = key;
-      pair.value = value;
-      iterator(pair);
-    }
-  }
-
-  function set(key, value) {
-    return this._object[key] = value;
-  }
-
-  function get(key) {
-    if (this._object[key] !== Object.prototype[key])
-      return this._object[key];
-  }
-
-  function unset(key) {
-    var value = this._object[key];
-    delete this._object[key];
-    return value;
-  }
-
-  function toObject() {
-    return Object.clone(this._object);
-  }
-
-  function keys() {
-    return this.pluck('key');
-  }
-
-  function values() {
-    return this.pluck('value');
-  }
-
-  function index(value) {
-    var match = this.detect(function(pair) {
-      return pair.value === value;
-    });
-    return match && match.key;
-  }
-
-  function merge(object) {
-    return this.clone().update(object);
-  }
-
-  function update(object) {
-    return new Hash(object).inject(this, function(result, pair) {
-      result.set(pair.key, pair.value);
-      return result;
-    });
-  }
-
-  function toQueryPair(key, value) {
-    if (Object.isUndefined(value)) return key;
-    return key + '=' + encodeURIComponent(String.interpret(value));
-  }
-
-  function toQueryString() {
-    return this.inject([], function(results, pair) {
-      var key = encodeURIComponent(pair.key), values = pair.value;
-
-      if (values && typeof values == 'object') {
-        if (Object.isArray(values))
-          return results.concat(values.map(toQueryPair.curry(key)));
-      } else results.push(toQueryPair(key, values));
-      return results;
-    }).join('&');
-  }
-
-  function inspect() {
-    return '#<Hash:{' + this.map(function(pair) {
-      return pair.map(Object.inspect).join(': ');
-    }).join(', ') + '}>';
-  }
-
-  function toJSON() {
-    return Object.toJSON(this.toObject());
-  }
-
-  function clone() {
-    return new Hash(this);
-  }
-
-  return {
-    initialize:             initialize,
-    _each:                  _each,
-    set:                    set,
-    get:                    get,
-    unset:                  unset,
-    toObject:               toObject,
-    toTemplateReplacements: toObject,
-    keys:                   keys,
-    values:                 values,
-    index:                  index,
-    merge:                  merge,
-    update:                 update,
-    toQueryString:          toQueryString,
-    inspect:                inspect,
-    toJSON:                 toJSON,
-    clone:                  clone
-  };
-})());
-
-Hash.from = $H;
-Object.extend(Number.prototype, (function() {
-  function toColorPart() {
-    return this.toPaddedString(2, 16);
-  }
-
-  function succ() {
-    return this + 1;
-  }
-
-  function times(iterator, context) {
-    $R(0, this, true).each(iterator, context);
-    return this;
-  }
-
-  function toPaddedString(length, radix) {
-    var string = this.toString(radix || 10);
-    return '0'.times(length - string.length) + string;
-  }
-
-  function toJSON() {
-    return isFinite(this) ? this.toString() : 'null';
-  }
-
-  function abs() {
-    return Math.abs(this);
-  }
-
-  function round() {
-    return Math.round(this);
-  }
-
-  function ceil() {
-    return Math.ceil(this);
-  }
-
-  function floor() {
-    return Math.floor(this);
-  }
-
-  return {
-    toColorPart:    toColorPart,
-    succ:           succ,
-    times:          times,
-    toPaddedString: toPaddedString,
-    toJSON:         toJSON,
-    abs:            abs,
-    round:          round,
-    ceil:           ceil,
-    floor:          floor
-  };
-})());
-
-function $R(start, end, exclusive) {
-  return new ObjectRange(start, end, exclusive);
-}
-
-var ObjectRange = Class.create(Enumerable, (function() {
-  function initialize(start, end, exclusive) {
-    this.start = start;
-    this.end = end;
-    this.exclusive = exclusive;
-  }
-
-  function _each(iterator) {
-    var value = this.start;
-    while (this.include(value)) {
-      iterator(value);
-      value = value.succ();
-    }
-  }
-
-  function include(value) {
-    if (value < this.start)
-      return false;
-    if (this.exclusive)
-      return value < this.end;
-    return value <= this.end;
-  }
-
-  return {
-    initialize: initialize,
-    _each:      _each,
-    include:    include
-  };
-})());
-
-
-
-var Ajax = {
-  getTransport: function() {
-    return Try.these(
-      function() {return new XMLHttpRequest()},
-      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
-      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
-    ) || false;
-  },
-
-  activeRequestCount: 0
-};
-
-Ajax.Responders = {
-  responders: [],
-
-  _each: function(iterator) {
-    this.responders._each(iterator);
-  },
-
-  register: function(responder) {
-    if (!this.include(responder))
-      this.responders.push(responder);
-  },
-
-  unregister: function(responder) {
-    this.responders = this.responders.without(responder);
-  },
-
-  dispatch: function(callback, request, transport, json) {
-    this.each(function(responder) {
-      if (Object.isFunction(responder[callback])) {
-        try {
-          responder[callback].apply(responder, [request, transport, json]);
-        } catch (e) { }
-      }
-    });
-  }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
-  onCreate:   function() { Ajax.activeRequestCount++ },
-  onComplete: function() { Ajax.activeRequestCount-- }
-});
-Ajax.Base = Class.create({
-  initialize: function(options) {
-    this.options = {
-      method:       'post',
-      asynchronous: true,
-      contentType:  'application/x-www-form-urlencoded',
-      encoding:     'UTF-8',
-      parameters:   '',
-      evalJSON:     true,
-      evalJS:       true
-    };
-    Object.extend(this.options, options || { });
-
-    this.options.method = this.options.method.toLowerCase();
-
-    if (Object.isString(this.options.parameters))
-      this.options.parameters = this.options.parameters.toQueryParams();
-    else if (Object.isHash(this.options.parameters))
-      this.options.parameters = this.options.parameters.toObject();
-  }
-});
-Ajax.Request = Class.create(Ajax.Base, {
-  _complete: false,
-
-  initialize: function($super, url, options) {
-    $super(options);
-    this.transport = Ajax.getTransport();
-    this.request(url);
-  },
-
-  request: function(url) {
-    this.url = url;
-    this.method = this.options.method;
-    var params = Object.clone(this.options.parameters);
-
-    if (!['get', 'post'].include(this.method)) {
-      params['_method'] = this.method;
-      this.method = 'post';
-    }
-
-    this.parameters = params;
-
-    if (params = Object.toQueryString(params)) {
-      if (this.method == 'get')
-        this.url += (this.url.include('?') ? '&' : '?') + params;
-      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
-        params += '&_=';
-    }
-
-    try {
-      var response = new Ajax.Response(this);
-      if (this.options.onCreate) this.options.onCreate(response);
-      Ajax.Responders.dispatch('onCreate', this, response);
-
-      this.transport.open(this.method.toUpperCase(), this.url,
-        this.options.asynchronous);
-
-      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
-
-      this.transport.onreadystatechange = this.onStateChange.bind(this);
-      this.setRequestHeaders();
-
-      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
-      this.transport.send(this.body);
-
-      /* Force Firefox to handle ready state 4 for synchronous requests */
-      if (!this.options.asynchronous && this.transport.overrideMimeType)
-        this.onStateChange();
-
-    }
-    catch (e) {
-      this.dispatchException(e);
-    }
-  },
-
-  onStateChange: function() {
-    var readyState = this.transport.readyState;
-    if (readyState > 1 && !((readyState == 4) && this._complete))
-      this.respondToReadyState(this.transport.readyState);
-  },
-
-  setRequestHeaders: function() {
-    var headers = {
-      'X-Requested-With': 'XMLHttpRequest',
-      'X-Prototype-Version': Prototype.Version,
-      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
-    };
-
-    if (this.method == 'post') {
-      headers['Content-type'] = this.options.contentType +
-        (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
-      /* Force "Connection: close" for older Mozilla browsers to work
-       * around a bug where XMLHttpRequest sends an incorrect
-       * Content-length header. See Mozilla Bugzilla #246651.
-       */
-      if (this.transport.overrideMimeType &&
-          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
-            headers['Connection'] = 'close';
-    }
-
-    if (typeof this.options.requestHeaders == 'object') {
-      var extras = this.options.requestHeaders;
-
-      if (Object.isFunction(extras.push))
-        for (var i = 0, length = extras.length; i < length; i += 2)
-          headers[extras[i]] = extras[i+1];
-      else
-        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
-    }
-
-    for (var name in headers)
-      this.transport.setRequestHeader(name, headers[name]);
-  },
-
-  success: function() {
-    var status = this.getStatus();
-    return !status || (status >= 200 && status < 300);
-  },
-
-  getStatus: function() {
-    try {
-      return this.transport.status || 0;
-    } catch (e) { return 0 }
-  },
-
-  respondToReadyState: function(readyState) {
-    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
-
-    if (state == 'Complete') {
-      try {
-        this._complete = true;
-        (this.options['on' + response.status]
-         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
-         || Prototype.emptyFunction)(response, response.headerJSON);
-      } catch (e) {
-        this.dispatchException(e);
-      }
-
-      var contentType = response.getHeader('Content-type');
-      if (this.options.evalJS == 'force'
-          || (this.options.evalJS && this.isSameOrigin() && contentType
-          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
-        this.evalResponse();
-    }
-
-    try {
-      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
-      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
-    } catch (e) {
-      this.dispatchException(e);
-    }
-
-    if (state == 'Complete') {
-      this.transport.onreadystatechange = Prototype.emptyFunction;
-    }
-  },
-
-  isSameOrigin: function() {
-    var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
-    return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
-      protocol: location.protocol,
-      domain: document.domain,
-      port: location.port ? ':' + location.port : ''
-    }));
-  },
-
-  getHeader: function(name) {
-    try {
-      return this.transport.getResponseHeader(name) || null;
-    } catch (e) { return null; }
-  },
-
-  evalResponse: function() {
-    try {
-      return eval((this.transport.responseText || '').unfilterJSON());
-    } catch (e) {
-      this.dispatchException(e);
-    }
-  },
-
-  dispatchException: function(exception) {
-    (this.options.onException || Prototype.emptyFunction)(this, exception);
-    Ajax.Responders.dispatch('onException', this, exception);
-  }
-});
-
-Ajax.Request.Events =
-  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-
-
-
-
-
-
-
-Ajax.Response = Class.create({
-  initialize: function(request){
-    this.request = request;
-    var transport  = this.transport  = request.transport,
-        readyState = this.readyState = transport.readyState;
-
-    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
-      this.status       = this.getStatus();
-      this.statusText   = this.getStatusText();
-      this.responseText = String.interpret(transport.responseText);
-      this.headerJSON   = this._getHeaderJSON();
-    }
-
-    if(readyState == 4) {
-      var xml = transport.responseXML;
-      this.responseXML  = Object.isUndefined(xml) ? null : xml;
-      this.responseJSON = this._getResponseJSON();
-    }
-  },
-
-  status:      0,
-
-  statusText: '',
-
-  getStatus: Ajax.Request.prototype.getStatus,
-
-  getStatusText: function() {
-    try {
-      return this.transport.statusText || '';
-    } catch (e) { return '' }
-  },
-
-  getHeader: Ajax.Request.prototype.getHeader,
-
-  getAllHeaders: function() {
-    try {
-      return this.getAllResponseHeaders();
-    } catch (e) { return null }
-  },
-
-  getResponseHeader: function(name) {
-    return this.transport.getResponseHeader(name);
-  },
-
-  getAllResponseHeaders: function() {
-    return this.transport.getAllResponseHeaders();
-  },
-
-  _getHeaderJSON: function() {
-    var json = this.getHeader('X-JSON');
-    if (!json) return null;
-    json = decodeURIComponent(escape(json));
-    try {
-      return json.evalJSON(this.request.options.sanitizeJSON ||
-        !this.request.isSameOrigin());
-    } catch (e) {
-      this.request.dispatchException(e);
-    }
-  },
-
-  _getResponseJSON: function() {
-    var options = this.request.options;
-    if (!options.evalJSON || (options.evalJSON != 'force' &&
-      !(this.getHeader('Content-type') || '').include('application/json')) ||
-        this.responseText.blank())
-          return null;
-    try {
-      return this.responseText.evalJSON(options.sanitizeJSON ||
-        !this.request.isSameOrigin());
-    } catch (e) {
-      this.request.dispatchException(e);
-    }
-  }
-});
-
-Ajax.Updater = Class.create(Ajax.Request, {
-  initialize: function($super, container, url, options) {
-    this.container = {
-      success: (container.success || container),
-      failure: (container.failure || (container.success ? null : container))
-    };
-
-    options = Object.clone(options);
-    var onComplete = options.onComplete;
-    options.onComplete = (function(response, json) {
-      this.updateContent(response.responseText);
-      if (Object.isFunction(onComplete)) onComplete(response, json);
-    }).bind(this);
-
-    $super(url, options);
-  },
-
-  updateContent: function(responseText) {
-    var receiver = this.container[this.success() ? 'success' : 'failure'],
-        options = this.options;
-
-    if (!options.evalScripts) responseText = responseText.stripScripts();
-
-    if (receiver = $(receiver)) {
-      if (options.insertion) {
-        if (Object.isString(options.insertion)) {
-          var insertion = { }; insertion[options.insertion] = responseText;
-          receiver.insert(insertion);
-        }
-        else options.insertion(receiver, responseText);
-      }
-      else receiver.update(responseText);
-    }
-  }
-});
-
-Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
-  initialize: function($super, container, url, options) {
-    $super(options);
-    this.onComplete = this.options.onComplete;
-
-    this.frequency = (this.options.frequency || 2);
-    this.decay = (this.options.decay || 1);
-
-    this.updater = { };
-    this.container = container;
-    this.url = url;
-
-    this.start();
-  },
-
-  start: function() {
-    this.options.onComplete = this.updateComplete.bind(this);
-    this.onTimerEvent();
-  },
-
-  stop: function() {
-    this.updater.options.onComplete = undefined;
-    clearTimeout(this.timer);
-    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
-  },
-
-  updateComplete: function(response) {
-    if (this.options.decay) {
-      this.decay = (response.responseText == this.lastText ?
-        this.decay * this.options.decay : 1);
-
-      this.lastText = response.responseText;
-    }
-    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
-  },
-
-  onTimerEvent: function() {
-    this.updater = new Ajax.Updater(this.container, this.url, this.options);
-  }
-});
-
-
-
-function $(element) {
-  if (arguments.length > 1) {
-    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
-      elements.push($(arguments[i]));
-    return elements;
-  }
-  if (Object.isString(element))
-    element = document.getElementById(element);
-  return Element.extend(element);
-}
-
-if (Prototype.BrowserFeatures.XPath) {
-  document._getElementsByXPath = function(expression, parentElement) {
-    var results = [];
-    var query = document.evaluate(expression, $(parentElement) || document,
-      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-    for (var i = 0, length = query.snapshotLength; i < length; i++)
-      results.push(Element.extend(query.snapshotItem(i)));
-    return results;
-  };
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Node) var Node = { };
-
-if (!Node.ELEMENT_NODE) {
-  Object.extend(Node, {
-    ELEMENT_NODE: 1,
-    ATTRIBUTE_NODE: 2,
-    TEXT_NODE: 3,
-    CDATA_SECTION_NODE: 4,
-    ENTITY_REFERENCE_NODE: 5,
-    ENTITY_NODE: 6,
-    PROCESSING_INSTRUCTION_NODE: 7,
-    COMMENT_NODE: 8,
-    DOCUMENT_NODE: 9,
-    DOCUMENT_TYPE_NODE: 10,
-    DOCUMENT_FRAGMENT_NODE: 11,
-    NOTATION_NODE: 12
-  });
-}
-
-
-(function(global) {
-
-  var SETATTRIBUTE_IGNORES_NAME = (function(){
-    var elForm = document.createElement("form");
-    var elInput = document.createElement("input");
-    var root = document.documentElement;
-    elInput.setAttribute("name", "test");
-    elForm.appendChild(elInput);
-    root.appendChild(elForm);
-    var isBuggy = elForm.elements
-      ? (typeof elForm.elements.test == "undefined")
-      : null;
-    root.removeChild(elForm);
-    elForm = elInput = null;
-    return isBuggy;
-  })();
-
-  var element = global.Element;
-  global.Element = function(tagName, attributes) {
-    attributes = attributes || { };
-    tagName = tagName.toLowerCase();
-    var cache = Element.cache;
-    if (SETATTRIBUTE_IGNORES_NAME && attributes.name) {
-      tagName = '<' + tagName + ' name="' + attributes.name + '">';
-      delete attributes.name;
-      return Element.writeAttribute(document.createElement(tagName), attributes);
-    }
-    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
-    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
-  };
-  Object.extend(global.Element, element || { });
-  if (element) global.Element.prototype = element.prototype;
-})(this);
-
-Element.cache = { };
-Element.idCounter = 1;
-
-Element.Methods = {
-  visible: function(element) {
-    return $(element).style.display != 'none';
-  },
-
-  toggle: function(element) {
-    element = $(element);
-    Element[Element.visible(element) ? 'hide' : 'show'](element);
-    return element;
-  },
-
-
-  hide: function(element) {
-    element = $(element);
-    element.style.display = 'none';
-    return element;
-  },
-
-  show: function(element) {
-    element = $(element);
-    element.style.display = '';
-    return element;
-  },
-
-  remove: function(element) {
-    element = $(element);
-    element.parentNode.removeChild(element);
-    return element;
-  },
-
-  update: (function(){
-
-    var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){
-      var el = document.createElement("select"),
-          isBuggy = true;
-      el.innerHTML = "<option value=\"test\">test</option>";
-      if (el.options && el.options[0]) {
-        isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION";
-      }
-      el = null;
-      return isBuggy;
-    })();
-
-    var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){
-      try {
-        var el = document.createElement("table");
-        if (el && el.tBodies) {
-          el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>";
-          var isBuggy = typeof el.tBodies[0] == "undefined";
-          el = null;
-          return isBuggy;
-        }
-      } catch (e) {
-        return true;
-      }
-    })();
-
-    var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () {
-      var s = document.createElement("script"),
-          isBuggy = false;
-      try {
-        s.appendChild(document.createTextNode(""));
-        isBuggy = !s.firstChild ||
-          s.firstChild && s.firstChild.nodeType !== 3;
-      } catch (e) {
-        isBuggy = true;
-      }
-      s = null;
-      return isBuggy;
-    })();
-
-    function update(element, content) {
-      element = $(element);
-
-      if (content && content.toElement)
-        content = content.toElement();
-
-      if (Object.isElement(content))
-        return element.update().insert(content);
-
-      content = Object.toHTML(content);
-
-      var tagName = element.tagName.toUpperCase();
-
-      if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {
-        element.text = content;
-        return element;
-      }
-
-      if (SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY) {
-        if (tagName in Element._insertionTranslations.tags) {
-          while (element.firstChild) {
-            element.removeChild(element.firstChild);
-          }
-          Element._getContentFromAnonymousElement(tagName, content.stripScripts())
-            .each(function(node) {
-              element.appendChild(node)
-            });
-        }
-        else {
-          element.innerHTML = content.stripScripts();
-        }
-      }
-      else {
-        element.innerHTML = content.stripScripts();
-      }
-
-      content.evalScripts.bind(content).defer();
-      return element;
-    }
-
-    return update;
-  })(),
-
-  replace: function(element, content) {
-    element = $(element);
-    if (content && content.toElement) content = content.toElement();
-    else if (!Object.isElement(content)) {
-      content = Object.toHTML(content);
-      var range = element.ownerDocument.createRange();
-      range.selectNode(element);
-      content.evalScripts.bind(content).defer();
-      content = range.createContextualFragment(content.stripScripts());
-    }
-    element.parentNode.replaceChild(content, element);
-    return element;
-  },
-
-  insert: function(element, insertions) {
-    element = $(element);
-
-    if (Object.isString(insertions) || Object.isNumber(insertions) ||
-        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
-          insertions = {bottom:insertions};
-
-    var content, insert, tagName, childNodes;
-
-    for (var position in insertions) {
-      content  = insertions[position];
-      position = position.toLowerCase();
-      insert = Element._insertionTranslations[position];
-
-      if (content && content.toElement) content = content.toElement();
-      if (Object.isElement(content)) {
-        insert(element, content);
-        continue;
-      }
-
-      content = Object.toHTML(content);
-
-      tagName = ((position == 'before' || position == 'after')
-        ? element.parentNode : element).tagName.toUpperCase();
-
-      childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
-
-      if (position == 'top' || position == 'after') childNodes.reverse();
-      childNodes.each(insert.curry(element));
-
-      content.evalScripts.bind(content).defer();
-    }
-
-    return element;
-  },
-
-  wrap: function(element, wrapper, attributes) {
-    element = $(element);
-    if (Object.isElement(wrapper))
-      $(wrapper).writeAttribute(attributes || { });
-    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
-    else wrapper = new Element('div', wrapper);
-    if (element.parentNode)
-      element.parentNode.replaceChild(wrapper, element);
-    wrapper.appendChild(element);
-    return wrapper;
-  },
-
-  inspect: function(element) {
-    element = $(element);
-    var result = '<' + element.tagName.toLowerCase();
-    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
-      var property = pair.first(), attribute = pair.last();
-      var value = (element[property] || '').toString();
-      if (value) result += ' ' + attribute + '=' + value.inspect(true);
-    });
-    return result + '>';
-  },
-
-  recursivelyCollect: function(element, property) {
-    element = $(element);
-    var elements = [];
-    while (element = element[property])
-      if (element.nodeType == 1)
-        elements.push(Element.extend(element));
-    return elements;
-  },
-
-  ancestors: function(element) {
-    return Element.recursivelyCollect(element, 'parentNode');
-  },
-
-  descendants: function(element) {
-    return Element.select(element, "*");
-  },
-
-  firstDescendant: function(element) {
-    element = $(element).firstChild;
-    while (element && element.nodeType != 1) element = element.nextSibling;
-    return $(element);
-  },
-
-  immediateDescendants: function(element) {
-    if (!(element = $(element).firstChild)) return [];
-    while (element && element.nodeType != 1) element = element.nextSibling;
-    if (element) return [element].concat($(element).nextSiblings());
-    return [];
-  },
-
-  previousSiblings: function(element) {
-    return Element.recursivelyCollect(element, 'previousSibling');
-  },
-
-  nextSiblings: function(element) {
-    return Element.recursivelyCollect(element, 'nextSibling');
-  },
-
-  siblings: function(element) {
-    element = $(element);
-    return Element.previousSiblings(element).reverse()
-      .concat(Element.nextSiblings(element));
-  },
-
-  match: function(element, selector) {
-    if (Object.isString(selector))
-      selector = new Selector(selector);
-    return selector.match($(element));
-  },
-
-  up: function(element, expression, index) {
-    element = $(element);
-    if (arguments.length == 1) return $(element.parentNode);
-    var ancestors = Element.ancestors(element);
-    return Object.isNumber(expression) ? ancestors[expression] :
-      Selector.findElement(ancestors, expression, index);
-  },
-
-  down: function(element, expression, index) {
-    element = $(element);
-    if (arguments.length == 1) return Element.firstDescendant(element);
-    return Object.isNumber(expression) ? Element.descendants(element)[expression] :
-      Element.select(element, expression)[index || 0];
-  },
-
-  previous: function(element, expression, index) {
-    element = $(element);
-    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
-    var previousSiblings = Element.previousSiblings(element);
-    return Object.isNumber(expression) ? previousSiblings[expression] :
-      Selector.findElement(previousSiblings, expression, index);
-  },
-
-  next: function(element, expression, index) {
-    element = $(element);
-    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
-    var nextSiblings = Element.nextSiblings(element);
-    return Object.isNumber(expression) ? nextSiblings[expression] :
-      Selector.findElement(nextSiblings, expression, index);
-  },
-
-
-  select: function(element) {
-    var args = Array.prototype.slice.call(arguments, 1);
-    return Selector.findChildElements(element, args);
-  },
-
-  adjacent: function(element) {
-    var args = Array.prototype.slice.call(arguments, 1);
-    return Selector.findChildElements(element.parentNode, args).without(element);
-  },
-
-  identify: function(element) {
-    element = $(element);
-    var id = Element.readAttribute(element, 'id');
-    if (id) return id;
-    do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id));
-    Element.writeAttribute(element, 'id', id);
-    return id;
-  },
-
-  readAttribute: function(element, name) {
-    element = $(element);
-    if (Prototype.Browser.IE) {
-      var t = Element._attributeTranslations.read;
-      if (t.values[name]) return t.values[name](element, name);
-      if (t.names[name]) name = t.names[name];
-      if (name.include(':')) {
-        return (!element.attributes || !element.attributes[name]) ? null :
-         element.attributes[name].value;
-      }
-    }
-    return element.getAttribute(name);
-  },
-
-  writeAttribute: function(element, name, value) {
-    element = $(element);
-    var attributes = { }, t = Element._attributeTranslations.write;
-
-    if (typeof name == 'object') attributes = name;
-    else attributes[name] = Object.isUndefined(value) ? true : value;
-
-    for (var attr in attributes) {
-      name = t.names[attr] || attr;
-      value = attributes[attr];
-      if (t.values[attr]) name = t.values[attr](element, value);
-      if (value === false || value === null)
-        element.removeAttribute(name);
-      else if (value === true)
-        element.setAttribute(name, name);
-      else element.setAttribute(name, value);
-    }
-    return element;
-  },
-
-  getHeight: function(element) {
-    return Element.getDimensions(element).height;
-  },
-
-  getWidth: function(element) {
-    return Element.getDimensions(element).width;
-  },
-
-  classNames: function(element) {
-    return new Element.ClassNames(element);
-  },
-
-  hasClassName: function(element, className) {
-    if (!(element = $(element))) return;
-    var elementClassName = element.className;
-    return (elementClassName.length > 0 && (elementClassName == className ||
-      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
-  },
-
-  addClassName: function(element, className) {
-    if (!(element = $(element))) return;
-    if (!Element.hasClassName(element, className))
-      element.className += (element.className ? ' ' : '') + className;
-    return element;
-  },
-
-  removeClassName: function(element, className) {
-    if (!(element = $(element))) return;
-    element.className = element.className.replace(
-      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
-    return element;
-  },
-
-  toggleClassName: function(element, className) {
-    if (!(element = $(element))) return;
-    return Element[Element.hasClassName(element, className) ?
-      'removeClassName' : 'addClassName'](element, className);
-  },
-
-  cleanWhitespace: function(element) {
-    element = $(element);
-    var node = element.firstChild;
-    while (node) {
-      var nextNode = node.nextSibling;
-      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
-        element.removeChild(node);
-      node = nextNode;
-    }
-    return element;
-  },
-
-  empty: function(element) {
-    return $(element).innerHTML.blank();
-  },
-
-  descendantOf: function(element, ancestor) {
-    element = $(element), ancestor = $(ancestor);
-
-    if (element.compareDocumentPosition)
-      return (element.compareDocumentPosition(ancestor) & 8) === 8;
-
-    if (ancestor.contains)
-      return ancestor.contains(element) && ancestor !== element;
-
-    while (element = element.parentNode)
-      if (element == ancestor) return true;
-
-    return false;
-  },
-
-  scrollTo: function(element) {
-    element = $(element);
-    var pos = Element.cumulativeOffset(element);
-    window.scrollTo(pos[0], pos[1]);
-    return element;
-  },
-
-  getStyle: function(element, style) {
-    element = $(element);
-    style = style == 'float' ? 'cssFloat' : style.camelize();
-    var value = element.style[style];
-    if (!value || value == 'auto') {
-      var css = document.defaultView.getComputedStyle(element, null);
-      value = css ? css[style] : null;
-    }
-    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
-    return value == 'auto' ? null : value;
-  },
-
-  getOpacity: function(element) {
-    return $(element).getStyle('opacity');
-  },
-
-  setStyle: function(element, styles) {
-    element = $(element);
-    var elementStyle = element.style, match;
-    if (Object.isString(styles)) {
-      element.style.cssText += ';' + styles;
-      return styles.include('opacity') ?
-        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
-    }
-    for (var property in styles)
-      if (property == 'opacity') element.setOpacity(styles[property]);
-      else
-        elementStyle[(property == 'float' || property == 'cssFloat') ?
-          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
-            property] = styles[property];
-
-    return element;
-  },
-
-  setOpacity: function(element, value) {
-    element = $(element);
-    element.style.opacity = (value == 1 || value === '') ? '' :
-      (value < 0.00001) ? 0 : value;
-    return element;
-  },
-
-  getDimensions: function(element) {
-    element = $(element);
-    var display = Element.getStyle(element, 'display');
-    if (display != 'none' && display != null) // Safari bug
-      return {width: element.offsetWidth, height: element.offsetHeight};
-
-    var els = element.style;
-    var originalVisibility = els.visibility;
-    var originalPosition = els.position;
-    var originalDisplay = els.display;
-    els.visibility = 'hidden';
-    if (originalPosition != 'fixed') // Switching fixed to absolute causes issues in Safari
-      els.position = 'absolute';
-    els.display = 'block';
-    var originalWidth = element.clientWidth;
-    var originalHeight = element.clientHeight;
-    els.display = originalDisplay;
-    els.position = originalPosition;
-    els.visibility = originalVisibility;
-    return {width: originalWidth, height: originalHeight};
-  },
-
-  makePositioned: function(element) {
-    element = $(element);
-    var pos = Element.getStyle(element, 'position');
-    if (pos == 'static' || !pos) {
-      element._madePositioned = true;
-      element.style.position = 'relative';
-      if (Prototype.Browser.Opera) {
-        element.style.top = 0;
-        element.style.left = 0;
-      }
-    }
-    return element;
-  },
-
-  undoPositioned: function(element) {
-    element = $(element);
-    if (element._madePositioned) {
-      element._madePositioned = undefined;
-      element.style.position =
-        element.style.top =
-        element.style.left =
-        element.style.bottom =
-        element.style.right = '';
-    }
-    return element;
-  },
-
-  makeClipping: function(element) {
-    element = $(element);
-    if (element._overflow) return element;
-    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
-    if (element._overflow !== 'hidden')
-      element.style.overflow = 'hidden';
-    return element;
-  },
-
-  undoClipping: function(element) {
-    element = $(element);
-    if (!element._overflow) return element;
-    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
-    element._overflow = null;
-    return element;
-  },
-
-  cumulativeOffset: function(element) {
-    var valueT = 0, valueL = 0;
-    do {
-      valueT += element.offsetTop  || 0;
-      valueL += element.offsetLeft || 0;
-      element = element.offsetParent;
-    } while (element);
-    return Element._returnOffset(valueL, valueT);
-  },
-
-  positionedOffset: function(element) {
-    var valueT = 0, valueL = 0;
-    do {
-      valueT += element.offsetTop  || 0;
-      valueL += element.offsetLeft || 0;
-      element = element.offsetParent;
-      if (element) {
-        if (element.tagName.toUpperCase() == 'BODY') break;
-        var p = Element.getStyle(element, 'position');
-        if (p !== 'static') break;
-      }
-    } while (element);
-    return Element._returnOffset(valueL, valueT);
-  },
-
-  absolutize: function(element) {
-    element = $(element);
-    if (Element.getStyle(element, 'position') == 'absolute') return element;
-
-    var offsets = Element.positionedOffset(element);
-    var top     = offsets[1];
-    var left    = offsets[0];
-    var width   = element.clientWidth;
-    var height  = element.clientHeight;
-
-    element._originalLeft   = left - parseFloat(element.style.left  || 0);
-    element._originalTop    = top  - parseFloat(element.style.top || 0);
-    element._originalWidth  = element.style.width;
-    element._originalHeight = element.style.height;
-
-    element.style.position = 'absolute';
-    element.style.top    = top + 'px';
-    element.style.left   = left + 'px';
-    element.style.width  = width + 'px';
-    element.style.height = height + 'px';
-    return element;
-  },
-
-  relativize: function(element) {
-    element = $(element);
-    if (Element.getStyle(element, 'position') == 'relative') return element;
-
-    element.style.position = 'relative';
-    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
-    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
-    element.style.top    = top + 'px';
-    element.style.left   = left + 'px';
-    element.style.height = element._originalHeight;
-    element.style.width  = element._originalWidth;
-    return element;
-  },
-
-  cumulativeScrollOffset: function(element) {
-    var valueT = 0, valueL = 0;
-    do {
-      valueT += element.scrollTop  || 0;
-      valueL += element.scrollLeft || 0;
-      element = element.parentNode;
-    } while (element);
-    return Element._returnOffset(valueL, valueT);
-  },
-
-  getOffsetParent: function(element) {
-    if (element.offsetParent) return $(element.offsetParent);
-    if (element == document.body) return $(element);
-
-    while ((element = element.parentNode) && element != document.body)
-      if (Element.getStyle(element, 'position') != 'static')
-        return $(element);
-
-    return $(document.body);
-  },
-
-  viewportOffset: function(forElement) {
-    var valueT = 0, valueL = 0;
-
-    var element = forElement;
-    do {
-      valueT += element.offsetTop  || 0;
-      valueL += element.offsetLeft || 0;
-
-      if (element.offsetParent == document.body &&
-        Element.getStyle(element, 'position') == 'absolute') break;
-
-    } while (element = element.offsetParent);
-
-    element = forElement;
-    do {
-      if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
-        valueT -= element.scrollTop  || 0;
-        valueL -= element.scrollLeft || 0;
-      }
-    } while (element = element.parentNode);
-
-    return Element._returnOffset(valueL, valueT);
-  },
-
-  clonePosition: function(element, source) {
-    var options = Object.extend({
-      setLeft:    true,
-      setTop:     true,
-      setWidth:   true,
-      setHeight:  true,
-      offsetTop:  0,
-      offsetLeft: 0
-    }, arguments[2] || { });
-
-    source = $(source);
-    var p = Element.viewportOffset(source);
-
-    element = $(element);
-    var delta = [0, 0];
-    var parent = null;
-    if (Element.getStyle(element, 'position') == 'absolute') {
-      parent = Element.getOffsetParent(element);
-      delta = Element.viewportOffset(parent);
-    }
-
-    if (parent == document.body) {
-      delta[0] -= document.body.offsetLeft;
-      delta[1] -= document.body.offsetTop;
-    }
-
-    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
-    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
-    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
-    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
-    return element;
-  }
-};
-
-Object.extend(Element.Methods, {
-  getElementsBySelector: Element.Methods.select,
-
-  childElements: Element.Methods.immediateDescendants
-});
-
-Element._attributeTranslations = {
-  write: {
-    names: {
-      className: 'class',
-      htmlFor:   'for'
-    },
-    values: { }
-  }
-};
-
-if (Prototype.Browser.Opera) {
-  Element.Methods.getStyle = Element.Methods.getStyle.wrap(
-    function(proceed, element, style) {
-      switch (style) {
-        case 'left': case 'top': case 'right': case 'bottom':
-          if (proceed(element, 'position') === 'static') return null;
-        case 'height': case 'width':
-          if (!Element.visible(element)) return null;
-
-          var dim = parseInt(proceed(element, style), 10);
-
-          if (dim !== element['offset' + style.capitalize()])
-            return dim + 'px';
-
-          var properties;
-          if (style === 'height') {
-            properties = ['border-top-width', 'padding-top',
-             'padding-bottom', 'border-bottom-width'];
-          }
-          else {
-            properties = ['border-left-width', 'padding-left',
-             'padding-right', 'border-right-width'];
-          }
-          return properties.inject(dim, function(memo, property) {
-            var val = proceed(element, property);
-            return val === null ? memo : memo - parseInt(val, 10);
-          }) + 'px';
-        default: return proceed(element, style);
-      }
-    }
-  );
-
-  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
-    function(proceed, element, attribute) {
-      if (attribute === 'title') return element.title;
-      return proceed(element, attribute);
-    }
-  );
-}
-
-else if (Prototype.Browser.IE) {
-  Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
-    function(proceed, element) {
-      element = $(element);
-      try { element.offsetParent }
-      catch(e) { return $(document.body) }
-      var position = element.getStyle('position');
-      if (position !== 'static') return proceed(element);
-      element.setStyle({ position: 'relative' });
-      var value = proceed(element);
-      element.setStyle({ position: position });
-      return value;
-    }
-  );
-
-  $w('positionedOffset viewportOffset').each(function(method) {
-    Element.Methods[method] = Element.Methods[method].wrap(
-      function(proceed, element) {
-        element = $(element);
-        try { element.offsetParent }
-        catch(e) { return Element._returnOffset(0,0) }
-        var position = element.getStyle('position');
-        if (position !== 'static') return proceed(element);
-        var offsetParent = element.getOffsetParent();
-        if (offsetParent && offsetParent.getStyle('position') === 'fixed')
-          offsetParent.setStyle({ zoom: 1 });
-        element.setStyle({ position: 'relative' });
-        var value = proceed(element);
-        element.setStyle({ position: position });
-        return value;
-      }
-    );
-  });
-
-  Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
-    function(proceed, element) {
-      try { element.offsetParent }
-      catch(e) { return Element._returnOffset(0,0) }
-      return proceed(element);
-    }
-  );
-
-  Element.Methods.getStyle = function(element, style) {
-    element = $(element);
-    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
-    var value = element.style[style];
-    if (!value && element.currentStyle) value = element.currentStyle[style];
-
-    if (style == 'opacity') {
-      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
-        if (value[1]) return parseFloat(value[1]) / 100;
-      return 1.0;
-    }
-
-    if (value == 'auto') {
-      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
-        return element['offset' + style.capitalize()] + 'px';
-      return null;
-    }
-    return value;
-  };
-
-  Element.Methods.setOpacity = function(element, value) {
-    function stripAlpha(filter){
-      return filter.replace(/alpha\([^\)]*\)/gi,'');
-    }
-    element = $(element);
-    var currentStyle = element.currentStyle;
-    if ((currentStyle && !currentStyle.hasLayout) ||
-      (!currentStyle && element.style.zoom == 'normal'))
-        element.style.zoom = 1;
-
-    var filter = element.getStyle('filter'), style = element.style;
-    if (value == 1 || value === '') {
-      (filter = stripAlpha(filter)) ?
-        style.filter = filter : style.removeAttribute('filter');
-      return element;
-    } else if (value < 0.00001) value = 0;
-    style.filter = stripAlpha(filter) +
-      'alpha(opacity=' + (value * 100) + ')';
-    return element;
-  };
-
-  Element._attributeTranslations = (function(){
-
-    var classProp = 'className';
-    var forProp = 'for';
-
-    var el = document.createElement('div');
-
-    el.setAttribute(classProp, 'x');
-
-    if (el.className !== 'x') {
-      el.setAttribute('class', 'x');
-      if (el.className === 'x') {
-        classProp = 'class';
-      }
-    }
-    el = null;
-
-    el = document.createElement('label');
-    el.setAttribute(forProp, 'x');
-    if (el.htmlFor !== 'x') {
-      el.setAttribute('htmlFor', 'x');
-      if (el.htmlFor === 'x') {
-        forProp = 'htmlFor';
-      }
-    }
-    el = null;
-
-    return {
-      read: {
-        names: {
-          'class':      classProp,
-          'className':  classProp,
-          'for':        forProp,
-          'htmlFor':    forProp
-        },
-        values: {
-          _getAttr: function(element, attribute) {
-            return element.getAttribute(attribute);
-          },
-          _getAttr2: function(element, attribute) {
-            return element.getAttribute(attribute, 2);
-          },
-          _getAttrNode: function(element, attribute) {
-            var node = element.getAttributeNode(attribute);
-            return node ? node.value : "";
-          },
-          _getEv: (function(){
-
-            var el = document.createElement('div');
-            el.onclick = Prototype.emptyFunction;
-            var value = el.getAttribute('onclick');
-            var f;
-
-            if (String(value).indexOf('{') > -1) {
-              f = function(element, attribute) {
-                attribute = element.getAttribute(attribute);
-                if (!attribute) return null;
-                attribute = attribute.toString();
-                attribute = attribute.split('{')[1];
-                attribute = attribute.split('}')[0];
-                return attribute.strip();
-              };
-            }
-            else if (value === '') {
-              f = function(element, attribute) {
-                attribute = element.getAttribute(attribute);
-                if (!attribute) return null;
-                return attribute.strip();
-              };
-            }
-            el = null;
-            return f;
-          })(),
-          _flag: function(element, attribute) {
-            return $(element).hasAttribute(attribute) ? attribute : null;
-          },
-          style: function(element) {
-            return element.style.cssText.toLowerCase();
-          },
-          title: function(element) {
-            return element.title;
-          }
-        }
-      }
-    }
-  })();
-
-  Element._attributeTranslations.write = {
-    names: Object.extend({
-      cellpadding: 'cellPadding',
-      cellspacing: 'cellSpacing'
-    }, Element._attributeTranslations.read.names),
-    values: {
-      checked: function(element, value) {
-        element.checked = !!value;
-      },
-
-      style: function(element, value) {
-        element.style.cssText = value ? value : '';
-      }
-    }
-  };
-
-  Element._attributeTranslations.has = {};
-
-  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
-      'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
-    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
-    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
-  });
-
-  (function(v) {
-    Object.extend(v, {
-      href:        v._getAttr2,
-      src:         v._getAttr2,
-      type:        v._getAttr,
-      action:      v._getAttrNode,
-      disabled:    v._flag,
-      checked:     v._flag,
-      readonly:    v._flag,
-      multiple:    v._flag,
-      onload:      v._getEv,
-      onunload:    v._getEv,
-      onclick:     v._getEv,
-      ondblclick:  v._getEv,
-      onmousedown: v._getEv,
-      onmouseup:   v._getEv,
-      onmouseover: v._getEv,
-      onmousemove: v._getEv,
-      onmouseout:  v._getEv,
-      onfocus:     v._getEv,
-      onblur:      v._getEv,
-      onkeypress:  v._getEv,
-      onkeydown:   v._getEv,
-      onkeyup:     v._getEv,
-      onsubmit:    v._getEv,
-      onreset:     v._getEv,
-      onselect:    v._getEv,
-      onchange:    v._getEv
-    });
-  })(Element._attributeTranslations.read.values);
-
-  if (Prototype.BrowserFeatures.ElementExtensions) {
-    (function() {
-      function _descendants(element) {
-        var nodes = element.getElementsByTagName('*'), results = [];
-        for (var i = 0, node; node = nodes[i]; i++)
-          if (node.tagName !== "!") // Filter out comment nodes.
-            results.push(node);
-        return results;
-      }
-
-      Element.Methods.down = function(element, expression, index) {
-        element = $(element);
-        if (arguments.length == 1) return element.firstDescendant();
-        return Object.isNumber(expression) ? _descendants(element)[expression] :
-          Element.select(element, expression)[index || 0];
-      }
-    })();
-  }
-
-}
-
-else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
-  Element.Methods.setOpacity = function(element, value) {
-    element = $(element);
-    element.style.opacity = (value == 1) ? 0.999999 :
-      (value === '') ? '' : (value < 0.00001) ? 0 : value;
-    return element;
-  };
-}
-
-else if (Prototype.Browser.WebKit) {
-  Element.Methods.setOpacity = function(element, value) {
-    element = $(element);
-    element.style.opacity = (value == 1 || value === '') ? '' :
-      (value < 0.00001) ? 0 : value;
-
-    if (value == 1)
-      if(element.tagName.toUpperCase() == 'IMG' && element.width) {
-        element.width++; element.width--;
-      } else try {
-        var n = document.createTextNode(' ');
-        element.appendChild(n);
-        element.removeChild(n);
-      } catch (e) { }
-
-    return element;
-  };
-
-  Element.Methods.cumulativeOffset = function(element) {
-    var valueT = 0, valueL = 0;
-    do {
-      valueT += element.offsetTop  || 0;
-      valueL += element.offsetLeft || 0;
-      if (element.offsetParent == document.body)
-        if (Element.getStyle(element, 'position') == 'absolute') break;
-
-      element = element.offsetParent;
-    } while (element);
-
-    return Element._returnOffset(valueL, valueT);
-  };
-}
-
-if ('outerHTML' in document.documentElement) {
-  Element.Methods.replace = function(element, content) {
-    element = $(element);
-
-    if (content && content.toElement) content = content.toElement();
-    if (Object.isElement(content)) {
-      element.parentNode.replaceChild(content, element);
-      return element;
-    }
-
-    content = Object.toHTML(content);
-    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
-
-    if (Element._insertionTranslations.tags[tagName]) {
-      var nextSibling = element.next();
-      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
-      parent.removeChild(element);
-      if (nextSibling)
-        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
-      else
-        fragments.each(function(node) { parent.appendChild(node) });
-    }
-    else element.outerHTML = content.stripScripts();
-
-    content.evalScripts.bind(content).defer();
-    return element;
-  };
-}
-
-Element._returnOffset = function(l, t) {
-  var result = [l, t];
-  result.left = l;
-  result.top = t;
-  return result;
-};
-
-Element._getContentFromAnonymousElement = function(tagName, html) {
-  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
-  if (t) {
-    div.innerHTML = t[0] + html + t[1];
-    t[2].times(function() { div = div.firstChild });
-  } else div.innerHTML = html;
-  return $A(div.childNodes);
-};
-
-Element._insertionTranslations = {
-  before: function(element, node) {
-    element.parentNode.insertBefore(node, element);
-  },
-  top: function(element, node) {
-    element.insertBefore(node, element.firstChild);
-  },
-  bottom: function(element, node) {
-    element.appendChild(node);
-  },
-  after: function(element, node) {
-    element.parentNode.insertBefore(node, element.nextSibling);
-  },
-  tags: {
-    TABLE:  ['<table>',                '</table>',                   1],
-    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
-    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
-    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
-    SELECT: ['<select>',               '</select>',                  1]
-  }
-};
-
-(function() {
-  var tags = Element._insertionTranslations.tags;
-  Object.extend(tags, {
-    THEAD: tags.TBODY,
-    TFOOT: tags.TBODY,
-    TH:    tags.TD
-  });
-})();
-
-Element.Methods.Simulated = {
-  hasAttribute: function(element, attribute) {
-    attribute = Element._attributeTranslations.has[attribute] || attribute;
-    var node = $(element).getAttributeNode(attribute);
-    return !!(node && node.specified);
-  }
-};
-
-Element.Methods.ByTag = { };
-
-Object.extend(Element, Element.Methods);
-
-(function(div) {
-
-  if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {
-    window.HTMLElement = { };
-    window.HTMLElement.prototype = div['__proto__'];
-    Prototype.BrowserFeatures.ElementExtensions = true;
-  }
-
-  div = null;
-
-})(document.createElement('div'))
-
-Element.extend = (function() {
-
-  function checkDeficiency(tagName) {
-    if (typeof window.Element != 'undefined') {
-      var proto = window.Element.prototype;
-      if (proto) {
-        var id = '_' + (Math.random()+'').slice(2);
-        var el = document.createElement(tagName);
-        proto[id] = 'x';
-        var isBuggy = (el[id] !== 'x');
-        delete proto[id];
-        el = null;
-        return isBuggy;
-      }
-    }
-    return false;
-  }
-
-  function extendElementWith(element, methods) {
-    for (var property in methods) {
-      var value = methods[property];
-      if (Object.isFunction(value) && !(property in element))
-        element[property] = value.methodize();
-    }
-  }
-
-  var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object');
-
-  if (Prototype.BrowserFeatures.SpecificElementExtensions) {
-    if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {
-      return function(element) {
-        if (element && typeof element._extendedByPrototype == 'undefined') {
-          var t = element.tagName;
-          if (t && (/^(?:object|applet|embed)$/i.test(t))) {
-            extendElementWith(element, Element.Methods);
-            extendElementWith(element, Element.Methods.Simulated);
-            extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]);
-          }
-        }
-        return element;
-      }
-    }
-    return Prototype.K;
-  }
-
-  var Methods = { }, ByTag = Element.Methods.ByTag;
-
-  var extend = Object.extend(function(element) {
-    if (!element || typeof element._extendedByPrototype != 'undefined' ||
-        element.nodeType != 1 || element == window) return element;
-
-    var methods = Object.clone(Methods),
-        tagName = element.tagName.toUpperCase();
-
-    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
-
-    extendElementWith(element, methods);
-
-    element._extendedByPrototype = Prototype.emptyFunction;
-    return element;
-
-  }, {
-    refresh: function() {
-      if (!Prototype.BrowserFeatures.ElementExtensions) {
-        Object.extend(Methods, Element.Methods);
-        Object.extend(Methods, Element.Methods.Simulated);
-      }
-    }
-  });
-
-  extend.refresh();
-  return extend;
-})();
-
-Element.hasAttribute = function(element, attribute) {
-  if (element.hasAttribute) return element.hasAttribute(attribute);
-  return Element.Methods.Simulated.hasAttribute(element, attribute);
-};
-
-Element.addMethods = function(methods) {
-  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
-
-  if (!methods) {
-    Object.extend(Form, Form.Methods);
-    Object.extend(Form.Element, Form.Element.Methods);
-    Object.extend(Element.Methods.ByTag, {
-      "FORM":     Object.clone(Form.Methods),
-      "INPUT":    Object.clone(Form.Element.Methods),
-      "SELECT":   Object.clone(Form.Element.Methods),
-      "TEXTAREA": Object.clone(Form.Element.Methods)
-    });
-  }
-
-  if (arguments.length == 2) {
-    var tagName = methods;
-    methods = arguments[1];
-  }
-
-  if (!tagName) Object.extend(Element.Methods, methods || { });
-  else {
-    if (Object.isArray(tagName)) tagName.each(extend);
-    else extend(tagName);
-  }
-
-  function extend(tagName) {
-    tagName = tagName.toUpperCase();
-    if (!Element.Methods.ByTag[tagName])
-      Element.Methods.ByTag[tagName] = { };
-    Object.extend(Element.Methods.ByTag[tagName], methods);
-  }
-
-  function copy(methods, destination, onlyIfAbsent) {
-    onlyIfAbsent = onlyIfAbsent || false;
-    for (var property in methods) {
-      var value = methods[property];
-      if (!Object.isFunction(value)) continue;
-      if (!onlyIfAbsent || !(property in destination))
-        destination[property] = value.methodize();
-    }
-  }
-
-  function findDOMClass(tagName) {
-    var klass;
-    var trans = {
-      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
-      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
-      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
-      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
-      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
-      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
-      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
-      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
-      "FrameSet", "IFRAME": "IFrame"
-    };
-    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
-    if (window[klass]) return window[klass];
-    klass = 'HTML' + tagName + 'Element';
-    if (window[klass]) return window[klass];
-    klass = 'HTML' + tagName.capitalize() + 'Element';
-    if (window[klass]) return window[klass];
-
-    var element = document.createElement(tagName);
-    var proto = element['__proto__'] || element.constructor.prototype;
-    element = null;
-    return proto;
-  }
-
-  var elementPrototype = window.HTMLElement ? HTMLElement.prototype :
-   Element.prototype;
-
-  if (F.ElementExtensions) {
-    copy(Element.Methods, elementPrototype);
-    copy(Element.Methods.Simulated, elementPrototype, true);
-  }
-
-  if (F.SpecificElementExtensions) {
-    for (var tag in Element.Methods.ByTag) {
-      var klass = findDOMClass(tag);
-      if (Object.isUndefined(klass)) continue;
-      copy(T[tag], klass.prototype);
-    }
-  }
-
-  Object.extend(Element, Element.Methods);
-  delete Element.ByTag;
-
-  if (Element.extend.refresh) Element.extend.refresh();
-  Element.cache = { };
-};
-
-
-document.viewport = {
-
-  getDimensions: function() {
-    return { width: this.getWidth(), height: this.getHeight() };
-  },
-
-  getScrollOffsets: function() {
-    return Element._returnOffset(
-      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
-      window.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop);
-  }
-};
-
-(function(viewport) {
-  var B = Prototype.Browser, doc = document, element, property = {};
-
-  function getRootElement() {
-    if (B.WebKit && !doc.evaluate)
-      return document;
-
-    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)
-      return document.body;
-
-    return document.documentElement;
-  }
-
-  function define(D) {
-    if (!element) element = getRootElement();
-
-    property[D] = 'client' + D;
-
-    viewport['get' + D] = function() { return element[property[D]] };
-    return viewport['get' + D]();
-  }
-
-  viewport.getWidth  = define.curry('Width');
-
-  viewport.getHeight = define.curry('Height');
-})(document.viewport);
-
-
-Element.Storage = {
-  UID: 1
-};
-
-Element.addMethods({
-  getStorage: function(element) {
-    if (!(element = $(element))) return;
-
-    var uid;
-    if (element === window) {
-      uid = 0;
-    } else {
-      if (typeof element._prototypeUID === "undefined")
-        element._prototypeUID = [Element.Storage.UID++];
-      uid = element._prototypeUID[0];
-    }
-
-    if (!Element.Storage[uid])
-      Element.Storage[uid] = $H();
-
-    return Element.Storage[uid];
-  },
-
-  store: function(element, key, value) {
-    if (!(element = $(element))) return;
-
-    if (arguments.length === 2) {
-      Element.getStorage(element).update(key);
-    } else {
-      Element.getStorage(element).set(key, value);
-    }
-
-    return element;
-  },
-
-  retrieve: function(element, key, defaultValue) {
-    if (!(element = $(element))) return;
-    var hash = Element.getStorage(element), value = hash.get(key);
-
-    if (Object.isUndefined(value)) {
-      hash.set(key, defaultValue);
-      value = defaultValue;
-    }
-
-    return value;
-  },
-
-  clone: function(element, deep) {
-    if (!(element = $(element))) return;
-    var clone = element.cloneNode(deep);
-    clone._prototypeUID = void 0;
-    if (deep) {
-      var descendants = Element.select(clone, '*'),
-          i = descendants.length;
-      while (i--) {
-        descendants[i]._prototypeUID = void 0;
-      }
-    }
-    return Element.extend(clone);
-  }
-});
-/* Portions of the Selector class are derived from Jack Slocum's DomQuery,
- * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
- * license.  Please see http://www.yui-ext.com/ for more information. */
-
-var Selector = Class.create({
-  initialize: function(expression) {
-    this.expression = expression.strip();
-
-    if (this.shouldUseSelectorsAPI()) {
-      this.mode = 'selectorsAPI';
-    } else if (this.shouldUseXPath()) {
-      this.mode = 'xpath';
-      this.compileXPathMatcher();
-    } else {
-      this.mode = "normal";
-      this.compileMatcher();
-    }
-
-  },
-
-  shouldUseXPath: (function() {
-
-    var IS_DESCENDANT_SELECTOR_BUGGY = (function(){
-      var isBuggy = false;
-      if (document.evaluate && window.XPathResult) {
-        var el = document.createElement('div');
-        el.innerHTML = '<ul><li></li></ul><div><ul><li></li></ul></div>';
-
-        var xpath = ".//*[local-name()='ul' or local-name()='UL']" +
-          "//*[local-name()='li' or local-name()='LI']";
-
-        var result = document.evaluate(xpath, el, null,
-          XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-
-        isBuggy = (result.snapshotLength !== 2);
-        el = null;
-      }
-      return isBuggy;
-    })();
-
-    return function() {
-      if (!Prototype.BrowserFeatures.XPath) return false;
-
-      var e = this.expression;
-
-      if (Prototype.Browser.WebKit &&
-       (e.include("-of-type") || e.include(":empty")))
-        return false;
-
-      if ((/(\[[\w-]*?:|:checked)/).test(e))
-        return false;
-
-      if (IS_DESCENDANT_SELECTOR_BUGGY) return false;
-
-      return true;
-    }
-
-  })(),
-
-  shouldUseSelectorsAPI: function() {
-    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
-
-    if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;
-
-    if (!Selector._div) Selector._div = new Element('div');
-
-    try {
-      Selector._div.querySelector(this.expression);
-    } catch(e) {
-      return false;
-    }
-
-    return true;
-  },
-
-  compileMatcher: function() {
-    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
-        c = Selector.criteria, le, p, m, len = ps.length, name;
-
-    if (Selector._cache[e]) {
-      this.matcher = Selector._cache[e];
-      return;
-    }
-
-    this.matcher = ["this.matcher = function(root) {",
-                    "var r = root, h = Selector.handlers, c = false, n;"];
-
-    while (e && le != e && (/\S/).test(e)) {
-      le = e;
-      for (var i = 0; i<len; i++) {
-        p = ps[i].re;
-        name = ps[i].name;
-        if (m = e.match(p)) {
-          this.matcher.push(Object.isFunction(c[name]) ? c[name](m) :
-            new Template(c[name]).evaluate(m));
-          e = e.replace(m[0], '');
-          break;
-        }
-      }
-    }
-
-    this.matcher.push("return h.unique(n);\n}");
-    eval(this.matcher.join('\n'));
-    Selector._cache[this.expression] = this.matcher;
-  },
-
-  compileXPathMatcher: function() {
-    var e = this.expression, ps = Selector.patterns,
-        x = Selector.xpath, le, m, len = ps.length, name;
-
-    if (Selector._cache[e]) {
-      this.xpath = Selector._cache[e]; return;
-    }
-
-    this.matcher = ['.//*'];
-    while (e && le != e && (/\S/).test(e)) {
-      le = e;
-      for (var i = 0; i<len; i++) {
-        name = ps[i].name;
-        if (m = e.match(ps[i].re)) {
-          this.matcher.push(Object.isFunction(x[name]) ? x[name](m) :
-            new Template(x[name]).evaluate(m));
-          e = e.replace(m[0], '');
-          break;
-        }
-      }
-    }
-
-    this.xpath = this.matcher.join('');
-    Selector._cache[this.expression] = this.xpath;
-  },
-
-  findElements: function(root) {
-    root = root || document;
-    var e = this.expression, results;
-
-    switch (this.mode) {
-      case 'selectorsAPI':
-        if (root !== document) {
-          var oldId = root.id, id = $(root).identify();
-          id = id.replace(/([\.:])/g, "\\$1");
-          e = "#" + id + " " + e;
-        }
-
-        results = $A(root.querySelectorAll(e)).map(Element.extend);
-        root.id = oldId;
-
-        return results;
-      case 'xpath':
-        return document._getElementsByXPath(this.xpath, root);
-      default:
-       return this.matcher(root);
-    }
-  },
-
-  match: function(element) {
-    this.tokens = [];
-
-    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
-    var le, p, m, len = ps.length, name;
-
-    while (e && le !== e && (/\S/).test(e)) {
-      le = e;
-      for (var i = 0; i<len; i++) {
-        p = ps[i].re;
-        name = ps[i].name;
-        if (m = e.match(p)) {
-          if (as[name]) {
-            this.tokens.push([name, Object.clone(m)]);
-            e = e.replace(m[0], '');
-          } else {
-            return this.findElements(document).include(element);
-          }
-        }
-      }
-    }
-
-    var match = true, name, matches;
-    for (var i = 0, token; token = this.tokens[i]; i++) {
-      name = token[0], matches = token[1];
-      if (!Selector.assertions[name](element, matches)) {
-        match = false; break;
-      }
-    }
-
-    return match;
-  },
-
-  toString: function() {
-    return this.expression;
-  },
-
-  inspect: function() {
-    return "#<Selector:" + this.expression.inspect() + ">";
-  }
-});
-
-if (Prototype.BrowserFeatures.SelectorsAPI &&
- document.compatMode === 'BackCompat') {
-  Selector.CASE_INSENSITIVE_CLASS_NAMES = (function(){
-    var div = document.createElement('div'),
-     span = document.createElement('span');
-
-    div.id = "prototype_test_id";
-    span.className = 'Test';
-    div.appendChild(span);
-    var isIgnored = (div.querySelector('#prototype_test_id .test') !== null);
-    div = span = null;
-    return isIgnored;
-  })();
-}
-
-Object.extend(Selector, {
-  _cache: { },
-
-  xpath: {
-    descendant:   "//*",
-    child:        "/*",
-    adjacent:     "/following-sibling::*[1]",
-    laterSibling: '/following-sibling::*',
-    tagName:      function(m) {
-      if (m[1] == '*') return '';
-      return "[local-name()='" + m[1].toLowerCase() +
-             "' or local-name()='" + m[1].toUpperCase() + "']";
-    },
-    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
-    id:           "[@id='#{1}']",
-    attrPresence: function(m) {
-      m[1] = m[1].toLowerCase();
-      return new Template("[@#{1}]").evaluate(m);
-    },
-    attr: function(m) {
-      m[1] = m[1].toLowerCase();
-      m[3] = m[5] || m[6];
-      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
-    },
-    pseudo: function(m) {
-      var h = Selector.xpath.pseudos[m[1]];
-      if (!h) return '';
-      if (Object.isFunction(h)) return h(m);
-      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
-    },
-    operators: {
-      '=':  "[@#{1}='#{3}']",
-      '!=': "[@#{1}!='#{3}']",
-      '^=': "[starts-with(@#{1}, '#{3}')]",
-      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
-      '*=': "[contains(@#{1}, '#{3}')]",
-      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
-      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
-    },
-    pseudos: {
-      'first-child': '[not(preceding-sibling::*)]',
-      'last-child':  '[not(following-sibling::*)]',
-      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
-      'empty':       "[count(*) = 0 and (count(text()) = 0)]",
-      'checked':     "[@checked]",
-      'disabled':    "[(@disabled) and (@type!='hidden')]",
-      'enabled':     "[not(@disabled) and (@type!='hidden')]",
-      'not': function(m) {
-        var e = m[6], p = Selector.patterns,
-            x = Selector.xpath, le, v, len = p.length, name;
-
-        var exclusion = [];
-        while (e && le != e && (/\S/).test(e)) {
-          le = e;
-          for (var i = 0; i<len; i++) {
-            name = p[i].name
-            if (m = e.match(p[i].re)) {
-              v = Object.isFunction(x[name]) ? x[name](m) : new Template(x[name]).evaluate(m);
-              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
-              e = e.replace(m[0], '');
-              break;
-            }
-          }
-        }
-        return "[not(" + exclusion.join(" and ") + ")]";
-      },
-      'nth-child':      function(m) {
-        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
-      },
-      'nth-last-child': function(m) {
-        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
-      },
-      'nth-of-type':    function(m) {
-        return Selector.xpath.pseudos.nth("position() ", m);
-      },
-      'nth-last-of-type': function(m) {
-        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
-      },
-      'first-of-type':  function(m) {
-        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
-      },
-      'last-of-type':   function(m) {
-        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
-      },
-      'only-of-type':   function(m) {
-        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
-      },
-      nth: function(fragment, m) {
-        var mm, formula = m[6], predicate;
-        if (formula == 'even') formula = '2n+0';
-        if (formula == 'odd')  formula = '2n+1';
-        if (mm = formula.match(/^(\d+)$/)) // digit only
-          return '[' + fragment + "= " + mm[1] + ']';
-        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
-          if (mm[1] == "-") mm[1] = -1;
-          var a = mm[1] ? Number(mm[1]) : 1;
-          var b = mm[2] ? Number(mm[2]) : 0;
-          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
-          "((#{fragment} - #{b}) div #{a} >= 0)]";
-          return new Template(predicate).evaluate({
-            fragment: fragment, a: a, b: b });
-        }
-      }
-    }
-  },
-
-  criteria: {
-    tagName:      'n = h.tagName(n, r, "#{1}", c);      c = false;',
-    className:    'n = h.className(n, r, "#{1}", c);    c = false;',
-    id:           'n = h.id(n, r, "#{1}", c);           c = false;',
-    attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
-    attr: function(m) {
-      m[3] = (m[5] || m[6]);
-      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
-    },
-    pseudo: function(m) {
-      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
-      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
-    },
-    descendant:   'c = "descendant";',
-    child:        'c = "child";',
-    adjacent:     'c = "adjacent";',
-    laterSibling: 'c = "laterSibling";'
-  },
-
-  patterns: [
-    { name: 'laterSibling', re: /^\s*~\s*/ },
-    { name: 'child',        re: /^\s*>\s*/ },
-    { name: 'adjacent',     re: /^\s*\+\s*/ },
-    { name: 'descendant',   re: /^\s/ },
-
-    { name: 'tagName',      re: /^\s*(\*|[\w\-]+)(\b|$)?/ },
-    { name: 'id',           re: /^#([\w\-\*]+)(\b|$)/ },
-    { name: 'className',    re: /^\.([\w\-\*]+)(\b|$)/ },
-    { name: 'pseudo',       re: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/ },
-    { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ },
-    { name: 'attr',         re: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }
-  ],
-
-  assertions: {
-    tagName: function(element, matches) {
-      return matches[1].toUpperCase() == element.tagName.toUpperCase();
-    },
-
-    className: function(element, matches) {
-      return Element.hasClassName(element, matches[1]);
-    },
-
-    id: function(element, matches) {
-      return element.id === matches[1];
-    },
-
-    attrPresence: function(element, matches) {
-      return Element.hasAttribute(element, matches[1]);
-    },
-
-    attr: function(element, matches) {
-      var nodeValue = Element.readAttribute(element, matches[1]);
-      return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
-    }
-  },
-
-  handlers: {
-    concat: function(a, b) {
-      for (var i = 0, node; node = b[i]; i++)
-        a.push(node);
-      return a;
-    },
-
-    mark: function(nodes) {
-      var _true = Prototype.emptyFunction;
-      for (var i = 0, node; node = nodes[i]; i++)
-        node._countedByPrototype = _true;
-      return nodes;
-    },
-
-    unmark: (function(){
-
-      var PROPERTIES_ATTRIBUTES_MAP = (function(){
-        var el = document.createElement('div'),
-            isBuggy = false,
-            propName = '_countedByPrototype',
-            value = 'x'
-        el[propName] = value;
-        isBuggy = (el.getAttribute(propName) === value);
-        el = null;
-        return isBuggy;
-      })();
-
-      return PROPERTIES_ATTRIBUTES_MAP ?
-        function(nodes) {
-          for (var i = 0, node; node = nodes[i]; i++)
-            node.removeAttribute('_countedByPrototype');
-          return nodes;
-        } :
-        function(nodes) {
-          for (var i = 0, node; node = nodes[i]; i++)
-            node._countedByPrototype = void 0;
-          return nodes;
-        }
-    })(),
-
-    index: function(parentNode, reverse, ofType) {
-      parentNode._countedByPrototype = Prototype.emptyFunction;
-      if (reverse) {
-        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
-          var node = nodes[i];
-          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
-        }
-      } else {
-        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
-          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
-      }
-    },
-
-    unique: function(nodes) {
-      if (nodes.length == 0) return nodes;
-      var results = [], n;
-      for (var i = 0, l = nodes.length; i < l; i++)
-        if (typeof (n = nodes[i])._countedByPrototype == 'undefined') {
-          n._countedByPrototype = Prototype.emptyFunction;
-          results.push(Element.extend(n));
-        }
-      return Selector.handlers.unmark(results);
-    },
-
-    descendant: function(nodes) {
-      var h = Selector.handlers;
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        h.concat(results, node.getElementsByTagName('*'));
-      return results;
-    },
-
-    child: function(nodes) {
-      var h = Selector.handlers;
-      for (var i = 0, results = [], node; node = nodes[i]; i++) {
-        for (var j = 0, child; child = node.childNodes[j]; j++)
-          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
-      }
-      return results;
-    },
-
-    adjacent: function(nodes) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++) {
-        var next = this.nextElementSibling(node);
-        if (next) results.push(next);
-      }
-      return results;
-    },
-
-    laterSibling: function(nodes) {
-      var h = Selector.handlers;
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        h.concat(results, Element.nextSiblings(node));
-      return results;
-    },
-
-    nextElementSibling: function(node) {
-      while (node = node.nextSibling)
-        if (node.nodeType == 1) return node;
-      return null;
-    },
-
-    previousElementSibling: function(node) {
-      while (node = node.previousSibling)
-        if (node.nodeType == 1) return node;
-      return null;
-    },
-
-    tagName: function(nodes, root, tagName, combinator) {
-      var uTagName = tagName.toUpperCase();
-      var results = [], h = Selector.handlers;
-      if (nodes) {
-        if (combinator) {
-          if (combinator == "descendant") {
-            for (var i = 0, node; node = nodes[i]; i++)
-              h.concat(results, node.getElementsByTagName(tagName));
-            return results;
-          } else nodes = this[combinator](nodes);
-          if (tagName == "*") return nodes;
-        }
-        for (var i = 0, node; node = nodes[i]; i++)
-          if (node.tagName.toUpperCase() === uTagName) results.push(node);
-        return results;
-      } else return root.getElementsByTagName(tagName);
-    },
-
-    id: function(nodes, root, id, combinator) {
-      var targetNode = $(id), h = Selector.handlers;
-
-      if (root == document) {
-        if (!targetNode) return [];
-        if (!nodes) return [targetNode];
-      } else {
-        if (!root.sourceIndex || root.sourceIndex < 1) {
-          var nodes = root.getElementsByTagName('*');
-          for (var j = 0, node; node = nodes[j]; j++) {
-            if (node.id === id) return [node];
-          }
-        }
-      }
-
-      if (nodes) {
-        if (combinator) {
-          if (combinator == 'child') {
-            for (var i = 0, node; node = nodes[i]; i++)
-              if (targetNode.parentNode == node) return [targetNode];
-          } else if (combinator == 'descendant') {
-            for (var i = 0, node; node = nodes[i]; i++)
-              if (Element.descendantOf(targetNode, node)) return [targetNode];
-          } else if (combinator == 'adjacent') {
-            for (var i = 0, node; node = nodes[i]; i++)
-              if (Selector.handlers.previousElementSibling(targetNode) == node)
-                return [targetNode];
-          } else nodes = h[combinator](nodes);
-        }
-        for (var i = 0, node; node = nodes[i]; i++)
-          if (node == targetNode) return [targetNode];
-        return [];
-      }
-      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
-    },
-
-    className: function(nodes, root, className, combinator) {
-      if (nodes && combinator) nodes = this[combinator](nodes);
-      return Selector.handlers.byClassName(nodes, root, className);
-    },
-
-    byClassName: function(nodes, root, className) {
-      if (!nodes) nodes = Selector.handlers.descendant([root]);
-      var needle = ' ' + className + ' ';
-      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
-        nodeClassName = node.className;
-        if (nodeClassName.length == 0) continue;
-        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
-          results.push(node);
-      }
-      return results;
-    },
-
-    attrPresence: function(nodes, root, attr, combinator) {
-      if (!nodes) nodes = root.getElementsByTagName("*");
-      if (nodes && combinator) nodes = this[combinator](nodes);
-      var results = [];
-      for (var i = 0, node; node = nodes[i]; i++)
-        if (Element.hasAttribute(node, attr)) results.push(node);
-      return results;
-    },
-
-    attr: function(nodes, root, attr, value, operator, combinator) {
-      if (!nodes) nodes = root.getElementsByTagName("*");
-      if (nodes && combinator) nodes = this[combinator](nodes);
-      var handler = Selector.operators[operator], results = [];
-      for (var i = 0, node; node = nodes[i]; i++) {
-        var nodeValue = Element.readAttribute(node, attr);
-        if (nodeValue === null) continue;
-        if (handler(nodeValue, value)) results.push(node);
-      }
-      return results;
-    },
-
-    pseudo: function(nodes, name, value, root, combinator) {
-      if (nodes && combinator) nodes = this[combinator](nodes);
-      if (!nodes) nodes = root.getElementsByTagName("*");
-      return Selector.pseudos[name](nodes, value, root);
-    }
-  },
-
-  pseudos: {
-    'first-child': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++) {
-        if (Selector.handlers.previousElementSibling(node)) continue;
-          results.push(node);
-      }
-      return results;
-    },
-    'last-child': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++) {
-        if (Selector.handlers.nextElementSibling(node)) continue;
-          results.push(node);
-      }
-      return results;
-    },
-    'only-child': function(nodes, value, root) {
-      var h = Selector.handlers;
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
-          results.push(node);
-      return results;
-    },
-    'nth-child':        function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, formula, root);
-    },
-    'nth-last-child':   function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, formula, root, true);
-    },
-    'nth-of-type':      function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, formula, root, false, true);
-    },
-    'nth-last-of-type': function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, formula, root, true, true);
-    },
-    'first-of-type':    function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, "1", root, false, true);
-    },
-    'last-of-type':     function(nodes, formula, root) {
-      return Selector.pseudos.nth(nodes, "1", root, true, true);
-    },
-    'only-of-type':     function(nodes, formula, root) {
-      var p = Selector.pseudos;
-      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
-    },
-
-    getIndices: function(a, b, total) {
-      if (a == 0) return b > 0 ? [b] : [];
-      return $R(1, total).inject([], function(memo, i) {
-        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
-        return memo;
-      });
-    },
-
-    nth: function(nodes, formula, root, reverse, ofType) {
-      if (nodes.length == 0) return [];
-      if (formula == 'even') formula = '2n+0';
-      if (formula == 'odd')  formula = '2n+1';
-      var h = Selector.handlers, results = [], indexed = [], m;
-      h.mark(nodes);
-      for (var i = 0, node; node = nodes[i]; i++) {
-        if (!node.parentNode._countedByPrototype) {
-          h.index(node.parentNode, reverse, ofType);
-          indexed.push(node.parentNode);
-        }
-      }
-      if (formula.match(/^\d+$/)) { // just a number
-        formula = Number(formula);
-        for (var i = 0, node; node = nodes[i]; i++)
-          if (node.nodeIndex == formula) results.push(node);
-      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
-        if (m[1] == "-") m[1] = -1;
-        var a = m[1] ? Number(m[1]) : 1;
-        var b = m[2] ? Number(m[2]) : 0;
-        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
-        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
-          for (var j = 0; j < l; j++)
-            if (node.nodeIndex == indices[j]) results.push(node);
-        }
-      }
-      h.unmark(nodes);
-      h.unmark(indexed);
-      return results;
-    },
-
-    'empty': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++) {
-        if (node.tagName == '!' || node.firstChild) continue;
-        results.push(node);
-      }
-      return results;
-    },
-
-    'not': function(nodes, selector, root) {
-      var h = Selector.handlers, selectorType, m;
-      var exclusions = new Selector(selector).findElements(root);
-      h.mark(exclusions);
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        if (!node._countedByPrototype) results.push(node);
-      h.unmark(exclusions);
-      return results;
-    },
-
-    'enabled': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        if (!node.disabled && (!node.type || node.type !== 'hidden'))
-          results.push(node);
-      return results;
-    },
-
-    'disabled': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        if (node.disabled) results.push(node);
-      return results;
-    },
-
-    'checked': function(nodes, value, root) {
-      for (var i = 0, results = [], node; node = nodes[i]; i++)
-        if (node.checked) results.push(node);
-      return results;
-    }
-  },
-
-  operators: {
-    '=':  function(nv, v) { return nv == v; },
-    '!=': function(nv, v) { return nv != v; },
-    '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); },
-    '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); },
-    '*=': function(nv, v) { return nv == v || nv && nv.include(v); },
-    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
-    '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() +
-     '-').include('-' + (v || "").toUpperCase() + '-'); }
-  },
-
-  split: function(expression) {
-    var expressions = [];
-    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
-      expressions.push(m[1].strip());
-    });
-    return expressions;
-  },
-
-  matchElements: function(elements, expression) {
-    var matches = $$(expression), h = Selector.handlers;
-    h.mark(matches);
-    for (var i = 0, results = [], element; element = elements[i]; i++)
-      if (element._countedByPrototype) results.push(element);
-    h.unmark(matches);
-    return results;
-  },
-
-  findElement: function(elements, expression, index) {
-    if (Object.isNumber(expression)) {
-      index = expression; expression = false;
-    }
-    return Selector.matchElements(elements, expression || '*')[index || 0];
-  },
-
-  findChildElements: function(element, expressions) {
-    expressions = Selector.split(expressions.join(','));
-    var results = [], h = Selector.handlers;
-    for (var i = 0, l = expressions.length, selector; i < l; i++) {
-      selector = new Selector(expressions[i].strip());
-      h.concat(results, selector.findElements(element));
-    }
-    return (l > 1) ? h.unique(results) : results;
-  }
-});
-
-if (Prototype.Browser.IE) {
-  Object.extend(Selector.handlers, {
-    concat: function(a, b) {
-      for (var i = 0, node; node = b[i]; i++)
-        if (node.tagName !== "!") a.push(node);
-      return a;
-    }
-  });
-}
-
-function $$() {
-  return Selector.findChildElements(document, $A(arguments));
-}
-
-var Form = {
-  reset: function(form) {
-    form = $(form);
-    form.reset();
-    return form;
-  },
-
-  serializeElements: function(elements, options) {
-    if (typeof options != 'object') options = { hash: !!options };
-    else if (Object.isUndefined(options.hash)) options.hash = true;
-    var key, value, submitted = false, submit = options.submit;
-
-    var data = elements.inject({ }, function(result, element) {
-      if (!element.disabled && element.name) {
-        key = element.name; value = $(element).getValue();
-        if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
-            submit !== false && (!submit || key == submit) && (submitted = true)))) {
-          if (key in result) {
-            if (!Object.isArray(result[key])) result[key] = [result[key]];
-            result[key].push(value);
-          }
-          else result[key] = value;
-        }
-      }
-      return result;
-    });
-
-    return options.hash ? data : Object.toQueryString(data);
-  }
-};
-
-Form.Methods = {
-  serialize: function(form, options) {
-    return Form.serializeElements(Form.getElements(form), options);
-  },
-
-  getElements: function(form) {
-    var elements = $(form).getElementsByTagName('*'),
-        element,
-        arr = [ ],
-        serializers = Form.Element.Serializers;
-    for (var i = 0; element = elements[i]; i++) {
-      arr.push(element);
-    }
-    return arr.inject([], function(elements, child) {
-      if (serializers[child.tagName.toLowerCase()])
-        elements.push(Element.extend(child));
-      return elements;
-    })
-  },
-
-  getInputs: function(form, typeName, name) {
-    form = $(form);
-    var inputs = form.getElementsByTagName('input');
-
-    if (!typeName && !name) return $A(inputs).map(Element.extend);
-
-    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
-      var input = inputs[i];
-      if ((typeName && input.type != typeName) || (name && input.name != name))
-        continue;
-      matchingInputs.push(Element.extend(input));
-    }
-
-    return matchingInputs;
-  },
-
-  disable: function(form) {
-    form = $(form);
-    Form.getElements(form).invoke('disable');
-    return form;
-  },
-
-  enable: function(form) {
-    form = $(form);
-    Form.getElements(form).invoke('enable');
-    return form;
-  },
-
-  findFirstElement: function(form) {
-    var elements = $(form).getElements().findAll(function(element) {
-      return 'hidden' != element.type && !element.disabled;
-    });
-    var firstByIndex = elements.findAll(function(element) {
-      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
-    }).sortBy(function(element) { return element.tabIndex }).first();
-
-    return firstByIndex ? firstByIndex : elements.find(function(element) {
-      return /^(?:input|select|textarea)$/i.test(element.tagName);
-    });
-  },
-
-  focusFirstElement: function(form) {
-    form = $(form);
-    form.findFirstElement().activate();
-    return form;
-  },
-
-  request: function(form, options) {
-    form = $(form), options = Object.clone(options || { });
-
-    var params = options.parameters, action = form.readAttribute('action') || '';
-    if (action.blank()) action = window.location.href;
-    options.parameters = form.serialize(true);
-
-    if (params) {
-      if (Object.isString(params)) params = params.toQueryParams();
-      Object.extend(options.parameters, params);
-    }
-
-    if (form.hasAttribute('method') && !options.method)
-      options.method = form.method;
-
-    return new Ajax.Request(action, options);
-  }
-};
-
-/*--------------------------------------------------------------------------*/
-
-
-Form.Element = {
-  focus: function(element) {
-    $(element).focus();
-    return element;
-  },
-
-  select: function(element) {
-    $(element).select();
-    return element;
-  }
-};
-
-Form.Element.Methods = {
-
-  serialize: function(element) {
-    element = $(element);
-    if (!element.disabled && element.name) {
-      var value = element.getValue();
-      if (value != undefined) {
-        var pair = { };
-        pair[element.name] = value;
-        return Object.toQueryString(pair);
-      }
-    }
-    return '';
-  },
-
-  getValue: function(element) {
-    element = $(element);
-    var method = element.tagName.toLowerCase();
-    return Form.Element.Serializers[method](element);
-  },
-
-  setValue: function(element, value) {
-    element = $(element);
-    var method = element.tagName.toLowerCase();
-    Form.Element.Serializers[method](element, value);
-    return element;
-  },
-
-  clear: function(element) {
-    $(element).value = '';
-    return element;
-  },
-
-  present: function(element) {
-    return $(element).value != '';
-  },
-
-  activate: function(element) {
-    element = $(element);
-    try {
-      element.focus();
-      if (element.select && (element.tagName.toLowerCase() != 'input' ||
-          !(/^(?:button|reset|submit)$/i.test(element.type))))
-        element.select();
-    } catch (e) { }
-    return element;
-  },
-
-  disable: function(element) {
-    element = $(element);
-    element.disabled = true;
-    return element;
-  },
-
-  enable: function(element) {
-    element = $(element);
-    element.disabled = false;
-    return element;
-  }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Field = Form.Element;
-
-var $F = Form.Element.Methods.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element.Serializers = {
-  input: function(element, value) {
-    switch (element.type.toLowerCase()) {
-      case 'checkbox':
-      case 'radio':
-        return Form.Element.Serializers.inputSelector(element, value);
-      default:
-        return Form.Element.Serializers.textarea(element, value);
-    }
-  },
-
-  inputSelector: function(element, value) {
-    if (Object.isUndefined(value)) return element.checked ? element.value : null;
-    else element.checked = !!value;
-  },
-
-  textarea: function(element, value) {
-    if (Object.isUndefined(value)) return element.value;
-    else element.value = value;
-  },
-
-  select: function(element, value) {
-    if (Object.isUndefined(value))
-      return this[element.type == 'select-one' ?
-        'selectOne' : 'selectMany'](element);
-    else {
-      var opt, currentValue, single = !Object.isArray(value);
-      for (var i = 0, length = element.length; i < length; i++) {
-        opt = element.options[i];
-        currentValue = this.optionValue(opt);
-        if (single) {
-          if (currentValue == value) {
-            opt.selected = true;
-            return;
-          }
-        }
-        else opt.selected = value.include(currentValue);
-      }
-    }
-  },
-
-  selectOne: function(element) {
-    var index = element.selectedIndex;
-    return index >= 0 ? this.optionValue(element.options[index]) : null;
-  },
-
-  selectMany: function(element) {
-    var values, length = element.length;
-    if (!length) return null;
-
-    for (var i = 0, values = []; i < length; i++) {
-      var opt = element.options[i];
-      if (opt.selected) values.push(this.optionValue(opt));
-    }
-    return values;
-  },
-
-  optionValue: function(opt) {
-    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
-  }
-};
-
-/*--------------------------------------------------------------------------*/
-
-
-Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
-  initialize: function($super, element, frequency, callback) {
-    $super(callback, frequency);
-    this.element   = $(element);
-    this.lastValue = this.getValue();
-  },
-
-  execute: function() {
-    var value = this.getValue();
-    if (Object.isString(this.lastValue) && Object.isString(value) ?
-        this.lastValue != value : String(this.lastValue) != String(value)) {
-      this.callback(this.element, value);
-      this.lastValue = value;
-    }
-  }
-});
-
-Form.Element.Observer = Class.create(Abstract.TimedObserver, {
-  getValue: function() {
-    return Form.Element.getValue(this.element);
-  }
-});
-
-Form.Observer = Class.create(Abstract.TimedObserver, {
-  getValue: function() {
-    return Form.serialize(this.element);
-  }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = Class.create({
-  initialize: function(element, callback) {
-    this.element  = $(element);
-    this.callback = callback;
-
-    this.lastValue = this.getValue();
-    if (this.element.tagName.toLowerCase() == 'form')
-      this.registerFormCallbacks();
-    else
-      this.registerCallback(this.element);
-  },
-
-  onElementEvent: function() {
-    var value = this.getValue();
-    if (this.lastValue != value) {
-      this.callback(this.element, value);
-      this.lastValue = value;
-    }
-  },
-
-  registerFormCallbacks: function() {
-    Form.getElements(this.element).each(this.registerCallback, this);
-  },
-
-  registerCallback: function(element) {
-    if (element.type) {
-      switch (element.type.toLowerCase()) {
-        case 'checkbox':
-        case 'radio':
-          Event.observe(element, 'click', this.onElementEvent.bind(this));
-          break;
-        default:
-          Event.observe(element, 'change', this.onElementEvent.bind(this));
-          break;
-      }
-    }
-  }
-});
-
-Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
-  getValue: function() {
-    return Form.Element.getValue(this.element);
-  }
-});
-
-Form.EventObserver = Class.create(Abstract.EventObserver, {
-  getValue: function() {
-    return Form.serialize(this.element);
-  }
-});
-(function() {
-
-  var Event = {
-    KEY_BACKSPACE: 8,
-    KEY_TAB:       9,
-    KEY_RETURN:   13,
-    KEY_ESC:      27,
-    KEY_LEFT:     37,
-    KEY_UP:       38,
-    KEY_RIGHT:    39,
-    KEY_DOWN:     40,
-    KEY_DELETE:   46,
-    KEY_HOME:     36,
-    KEY_END:      35,
-    KEY_PAGEUP:   33,
-    KEY_PAGEDOWN: 34,
-    KEY_INSERT:   45,
-
-    cache: {}
-  };
-
-  var docEl = document.documentElement;
-  var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl
-    && 'onmouseleave' in docEl;
-
-  var _isButton;
-  if (Prototype.Browser.IE) {
-    var buttonMap = { 0: 1, 1: 4, 2: 2 };
-    _isButton = function(event, code) {
-      return event.button === buttonMap[code];
-    };
-  } else if (Prototype.Browser.WebKit) {
-    _isButton = function(event, code) {
-      switch (code) {
-        case 0: return event.which == 1 && !event.metaKey;
-        case 1: return event.which == 1 && event.metaKey;
-        default: return false;
-      }
-    };
-  } else {
-    _isButton = function(event, code) {
-      return event.which ? (event.which === code + 1) : (event.button === code);
-    };
-  }
-
-  function isLeftClick(event)   { return _isButton(event, 0) }
-
-  function isMiddleClick(event) { return _isButton(event, 1) }
-
-  function isRightClick(event)  { return _isButton(event, 2) }
-
-  function element(event) {
-    event = Event.extend(event);
-
-    var node = event.target, type = event.type,
-     currentTarget = event.currentTarget;
-
-    if (currentTarget && currentTarget.tagName) {
-      if (type === 'load' || type === 'error' ||
-        (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
-          && currentTarget.type === 'radio'))
-            node = currentTarget;
-    }
-
-    if (node.nodeType == Node.TEXT_NODE)
-      node = node.parentNode;
-
-    return Element.extend(node);
-  }
-
-  function findElement(event, expression) {
-    var element = Event.element(event);
-    if (!expression) return element;
-    var elements = [element].concat(element.ancestors());
-    return Selector.findElement(elements, expression, 0);
-  }
-
-  function pointer(event) {
-    return { x: pointerX(event), y: pointerY(event) };
-  }
-
-  function pointerX(event) {
-    var docElement = document.documentElement,
-     body = document.body || { scrollLeft: 0 };
-
-    return event.pageX || (event.clientX +
-      (docElement.scrollLeft || body.scrollLeft) -
-      (docElement.clientLeft || 0));
-  }
-
-  function pointerY(event) {
-    var docElement = document.documentElement,
-     body = document.body || { scrollTop: 0 };
-
-    return  event.pageY || (event.clientY +
-       (docElement.scrollTop || body.scrollTop) -
-       (docElement.clientTop || 0));
-  }
-
-
-  function stop(event) {
-    Event.extend(event);
-    event.preventDefault();
-    event.stopPropagation();
-
-    event.stopped = true;
-  }
-
-  Event.Methods = {
-    isLeftClick: isLeftClick,
-    isMiddleClick: isMiddleClick,
-    isRightClick: isRightClick,
-
-    element: element,
-    findElement: findElement,
-
-    pointer: pointer,
-    pointerX: pointerX,
-    pointerY: pointerY,
-
-    stop: stop
-  };
-
-
-  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
-    m[name] = Event.Methods[name].methodize();
-    return m;
-  });
-
-  if (Prototype.Browser.IE) {
-    function _relatedTarget(event) {
-      var element;
-      switch (event.type) {
-        case 'mouseover': element = event.fromElement; break;
-        case 'mouseout':  element = event.toElement;   break;
-        default: return null;
-      }
-      return Element.extend(element);
-    }
-
-    Object.extend(methods, {
-      stopPropagation: function() { this.cancelBubble = true },
-      preventDefault:  function() { this.returnValue = false },
-      inspect: function() { return '[object Event]' }
-    });
-
-    Event.extend = function(event, element) {
-      if (!event) return false;
-      if (event._extendedByPrototype) return event;
-
-      event._extendedByPrototype = Prototype.emptyFunction;
-      var pointer = Event.pointer(event);
-
-      Object.extend(event, {
-        target: event.srcElement || element,
-        relatedTarget: _relatedTarget(event),
-        pageX:  pointer.x,
-        pageY:  pointer.y
-      });
-
-      return Object.extend(event, methods);
-    };
-  } else {
-    Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__;
-    Object.extend(Event.prototype, methods);
-    Event.extend = Prototype.K;
-  }
-
-  function _createResponder(element, eventName, handler) {
-    var registry = Element.retrieve(element, 'prototype_event_registry');
-
-    if (Object.isUndefined(registry)) {
-      CACHE.push(element);
-      registry = Element.retrieve(element, 'prototype_event_registry', $H());
-    }
-
-    var respondersForEvent = registry.get(eventName);
-    if (Object.isUndefined(respondersForEvent)) {
-      respondersForEvent = [];
-      registry.set(eventName, respondersForEvent);
-    }
-
-    if (respondersForEvent.pluck('handler').include(handler)) return false;
-
-    var responder;
-    if (eventName.include(":")) {
-      responder = function(event) {
-        if (Object.isUndefined(event.eventName))
-          return false;
-
-        if (event.eventName !== eventName)
-          return false;
-
-        Event.extend(event, element);
-        handler.call(element, event);
-      };
-    } else {
-      if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&
-       (eventName === "mouseenter" || eventName === "mouseleave")) {
-        if (eventName === "mouseenter" || eventName === "mouseleave") {
-          responder = function(event) {
-            Event.extend(event, element);
-
-            var parent = event.relatedTarget;
-            while (parent && parent !== element) {
-              try { parent = parent.parentNode; }
-              catch(e) { parent = element; }
-            }
-
-            if (parent === element) return;
-
-            handler.call(element, event);
-          };
-        }
-      } else {
-        responder = function(event) {
-          Event.extend(event, element);
-          handler.call(element, event);
-        };
-      }
-    }
-
-    responder.handler = handler;
-    respondersForEvent.push(responder);
-    return responder;
-  }
-
-  function _destroyCache() {
-    for (var i = 0, length = CACHE.length; i < length; i++) {
-      Event.stopObserving(CACHE[i]);
-      CACHE[i] = null;
-    }
-  }
-
-  var CACHE = [];
-
-  if (Prototype.Browser.IE)
-    window.attachEvent('onunload', _destroyCache);
-
-  if (Prototype.Browser.WebKit)
-    window.addEventListener('unload', Prototype.emptyFunction, false);
-
-
-  var _getDOMEventName = Prototype.K;
-
-  if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {
-    _getDOMEventName = function(eventName) {
-      var translations = { mouseenter: "mouseover", mouseleave: "mouseout" };
-      return eventName in translations ? translations[eventName] : eventName;
-    };
-  }
-
-  function observe(element, eventName, handler) {
-    element = $(element);
-
-    var responder = _createResponder(element, eventName, handler);
-
-    if (!responder) return element;
-
-    if (eventName.include(':')) {
-      if (element.addEventListener)
-        element.addEventListener("dataavailable", responder, false);
-      else {
-        element.attachEvent("ondataavailable", responder);
-        element.attachEvent("onfilterchange", responder);
-      }
-    } else {
-      var actualEventName = _getDOMEventName(eventName);
-
-      if (element.addEventListener)
-        element.addEventListener(actualEventName, responder, false);
-      else
-        element.attachEvent("on" + actualEventName, responder);
-    }
-
-    return element;
-  }
-
-  function stopObserving(element, eventName, handler) {
-    element = $(element);
-
-    var registry = Element.retrieve(element, 'prototype_event_registry');
-
-    if (Object.isUndefined(registry)) return element;
-
-    if (eventName && !handler) {
-      var responders = registry.get(eventName);
-
-      if (Object.isUndefined(responders)) return element;
-
-      responders.each( function(r) {
-        Element.stopObserving(element, eventName, r.handler);
-      });
-      return element;
-    } else if (!eventName) {
-      registry.each( function(pair) {
-        var eventName = pair.key, responders = pair.value;
-
-        responders.each( function(r) {
-          Element.stopObserving(element, eventName, r.handler);
-        });
-      });
-      return element;
-    }
-
-    var responders = registry.get(eventName);
-
-    if (!responders) return;
-
-    var responder = responders.find( function(r) { return r.handler === handler; });
-    if (!responder) return element;
-
-    var actualEventName = _getDOMEventName(eventName);
-
-    if (eventName.include(':')) {
-      if (element.removeEventListener)
-        element.removeEventListener("dataavailable", responder, false);
-      else {
-        element.detachEvent("ondataavailable", responder);
-        element.detachEvent("onfilterchange",  responder);
-      }
-    } else {
-      if (element.removeEventListener)
-        element.removeEventListener(actualEventName, responder, false);
-      else
-        element.detachEvent('on' + actualEventName, responder);
-    }
-
-    registry.set(eventName, responders.without(responder));
-
-    return element;
-  }
-
-  function fire(element, eventName, memo, bubble) {
-    element = $(element);
-
-    if (Object.isUndefined(bubble))
-      bubble = true;
-
-    if (element == document && document.createEvent && !element.dispatchEvent)
-      element = document.documentElement;
-
-    var event;
-    if (document.createEvent) {
-      event = document.createEvent('HTMLEvents');
-      event.initEvent('dataavailable', true, true);
-    } else {
-      event = document.createEventObject();
-      event.eventType = bubble ? 'ondataavailable' : 'onfilterchange';
-    }
-
-    event.eventName = eventName;
-    event.memo = memo || { };
-
-    if (document.createEvent)
-      element.dispatchEvent(event);
-    else
-      element.fireEvent(event.eventType, event);
-
-    return Event.extend(event);
-  }
-
-
-  Object.extend(Event, Event.Methods);
-
-  Object.extend(Event, {
-    fire:          fire,
-    observe:       observe,
-    stopObserving: stopObserving
-  });
-
-  Element.addMethods({
-    fire:          fire,
-
-    observe:       observe,
-
-    stopObserving: stopObserving
-  });
-
-  Object.extend(document, {
-    fire:          fire.methodize(),
-
-    observe:       observe.methodize(),
-
-    stopObserving: stopObserving.methodize(),
-
-    loaded:        false
-  });
-
-  if (window.Event) Object.extend(window.Event, Event);
-  else window.Event = Event;
-})();
-
-(function() {
-  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
-     Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */
-
-  var timer;
-
-  function fireContentLoadedEvent() {
-    if (document.loaded) return;
-    if (timer) window.clearTimeout(timer);
-    document.loaded = true;
-    document.fire('dom:loaded');
-  }
-
-  function checkReadyState() {
-    if (document.readyState === 'complete') {
-      document.stopObserving('readystatechange', checkReadyState);
-      fireContentLoadedEvent();
-    }
-  }
-
-  function pollDoScroll() {
-    try { document.documentElement.doScroll('left'); }
-    catch(e) {
-      timer = pollDoScroll.defer();
-      return;
-    }
-    fireContentLoadedEvent();
-  }
-
-  if (document.addEventListener) {
-    document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);
-  } else {
-    document.observe('readystatechange', checkReadyState);
-    if (window == top)
-      timer = pollDoScroll.defer();
-  }
-
-  Event.observe(window, 'load', fireContentLoadedEvent);
-})();
-
-Element.addMethods();
-
-/*------------------------------- DEPRECATED -------------------------------*/
-
-Hash.toQueryString = Object.toQueryString;
-
-var Toggle = { display: Element.toggle };
-
-Element.Methods.childOf = Element.Methods.descendantOf;
-
-var Insertion = {
-  Before: function(element, content) {
-    return Element.insert(element, {before:content});
-  },
-
-  Top: function(element, content) {
-    return Element.insert(element, {top:content});
-  },
-
-  Bottom: function(element, content) {
-    return Element.insert(element, {bottom:content});
-  },
-
-  After: function(element, content) {
-    return Element.insert(element, {after:content});
-  }
-};
-
-var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
-
-var Position = {
-  includeScrollOffsets: false,
-
-  prepare: function() {
-    this.deltaX =  window.pageXOffset
-                || document.documentElement.scrollLeft
-                || document.body.scrollLeft
-                || 0;
-    this.deltaY =  window.pageYOffset
-                || document.documentElement.scrollTop
-                || document.body.scrollTop
-                || 0;
-  },
-
-  within: function(element, x, y) {
-    if (this.includeScrollOffsets)
-      return this.withinIncludingScrolloffsets(element, x, y);
-    this.xcomp = x;
-    this.ycomp = y;
-    this.offset = Element.cumulativeOffset(element);
-
-    return (y >= this.offset[1] &&
-            y <  this.offset[1] + element.offsetHeight &&
-            x >= this.offset[0] &&
-            x <  this.offset[0] + element.offsetWidth);
-  },
-
-  withinIncludingScrolloffsets: function(element, x, y) {
-    var offsetcache = Element.cumulativeScrollOffset(element);
-
-    this.xcomp = x + offsetcache[0] - this.deltaX;
-    this.ycomp = y + offsetcache[1] - this.deltaY;
-    this.offset = Element.cumulativeOffset(element);
-
-    return (this.ycomp >= this.offset[1] &&
-            this.ycomp <  this.offset[1] + element.offsetHeight &&
-            this.xcomp >= this.offset[0] &&
-            this.xcomp <  this.offset[0] + element.offsetWidth);
-  },
-
-  overlap: function(mode, element) {
-    if (!mode) return 0;
-    if (mode == 'vertical')
-      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
-        element.offsetHeight;
-    if (mode == 'horizontal')
-      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
-        element.offsetWidth;
-  },
-
-
-  cumulativeOffset: Element.Methods.cumulativeOffset,
-
-  positionedOffset: Element.Methods.positionedOffset,
-
-  absolutize: function(element) {
-    Position.prepare();
-    return Element.absolutize(element);
-  },
-
-  relativize: function(element) {
-    Position.prepare();
-    return Element.relativize(element);
-  },
-
-  realOffset: Element.Methods.cumulativeScrollOffset,
-
-  offsetParent: Element.Methods.getOffsetParent,
-
-  page: Element.Methods.viewportOffset,
-
-  clone: function(source, target, options) {
-    options = options || { };
-    return Element.clonePosition(target, source, options);
-  }
-};
-
-/*--------------------------------------------------------------------------*/
-
-if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
-  function iter(name) {
-    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
-  }
-
-  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
-  function(element, className) {
-    className = className.toString().strip();
-    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
-    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
-  } : function(element, className) {
-    className = className.toString().strip();
-    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
-    if (!classNames && !className) return elements;
-
-    var nodes = $(element).getElementsByTagName('*');
-    className = ' ' + className + ' ';
-
-    for (var i = 0, child, cn; child = nodes[i]; i++) {
-      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
-          (classNames && classNames.all(function(name) {
-            return !name.toString().blank() && cn.include(' ' + name + ' ');
-          }))))
-        elements.push(Element.extend(child));
-    }
-    return elements;
-  };
-
-  return function(className, parentElement) {
-    return $(parentElement || document.body).getElementsByClassName(className);
-  };
-}(Element.Methods);
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
-  initialize: function(element) {
-    this.element = $(element);
-  },
-
-  _each: function(iterator) {
-    this.element.className.split(/\s+/).select(function(name) {
-      return name.length > 0;
-    })._each(iterator);
-  },
-
-  set: function(className) {
-    this.element.className = className;
-  },
-
-  add: function(classNameToAdd) {
-    if (this.include(classNameToAdd)) return;
-    this.set($A(this).concat(classNameToAdd).join(' '));
-  },
-
-  remove: function(classNameToRemove) {
-    if (!this.include(classNameToRemove)) return;
-    this.set($A(this).without(classNameToRemove).join(' '));
-  },
-
-  toString: function() {
-    return $A(this).join(' ');
-  }
-};
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-
-/*--------------------------------------------------------------------------*/
diff --git a/wp-includes/js/quicktags.dev.js b/wp-includes/js/quicktags.dev.js
deleted file mode 100644 (file)
index 3759c90..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- * Quicktags
- *
- * This is the HTML editor in WordPress. It can be attached to any textarea and will
- * append a toolbar above it. This script is self-contained (does not require external libraries).
- *
- * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties:
- * settings = {
- *   id : 'my_id',          the HTML ID of the textarea, required
- *   buttons: ''            Comma separated list of the names of the default buttons to show. Optional.
- *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
- * }
- *
- * The settings can also be a string quicktags_id.
- *
- * quicktags_id string The ID of the textarea that will be the editor canvas
- * buttons string Comma separated list of the default buttons names that will be shown in that instance.
- */
-
-// new edit toolbar used with permission
-// by Alex King
-// http://www.alexking.org/
-
-var QTags, edButtons = [], edCanvas,
-
-/**
- * Back-compat
- *
- * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors.
- */
-edAddTag = function(){},
-edCheckOpenTags = function(){},
-edCloseAllTags = function(){},
-edInsertImage = function(){},
-edInsertLink = function(){},
-edInsertTag = function(){},
-edLink = function(){},
-edQuickLink = function(){},
-edRemoveTag = function(){},
-edShowButton = function(){},
-edShowLinks = function(){},
-edSpell = function(){},
-edToolbar = function(){};
-
-/**
- * Initialize new instance of the Quicktags editor
- */
-function quicktags(settings) {
-       return new QTags(settings);
-}
-
-/**
- * Inserts content at the caret in the active editor (textarea)
- *
- * Added for back compatibility
- * @see QTags.insertContent()
- */
-function edInsertContent(bah, txt) {
-       return QTags.insertContent(txt);
-}
-
-/**
- * Adds a button to all instances of the editor
- *
- * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc.
- * @see QTags.addButton()
- */
-function edButton(id, display, tagStart, tagEnd, access, open) {
-       return QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 );
-}
-
-(function(){
-       // private stuff is prefixed with an underscore
-       var _domReady = function(func) {
-               var t, i,  DOMContentLoaded;
-
-               if ( typeof jQuery != 'undefined' ) {
-                       jQuery(document).ready(func);
-               } else {
-                       t = _domReady;
-                       t.funcs = [];
-
-                       t.ready = function() {
-                               if ( ! t.isReady ) {
-                                       t.isReady = true;
-                                       for ( i = 0; i < t.funcs.length; i++ ) {
-                                               t.funcs[i]();
-                                       }
-                               }
-                       };
-
-                       if ( t.isReady ) {
-                               func();
-                       } else {
-                               t.funcs.push(func);
-                       }
-
-                       if ( ! t.eventAttached ) {
-                               if ( document.addEventListener ) {
-                                       DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();};
-                                       document.addEventListener('DOMContentLoaded', DOMContentLoaded, false);
-                                       window.addEventListener('load', t.ready, false);
-                               } else if ( document.attachEvent ) {
-                                       DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}};
-                                       document.attachEvent('onreadystatechange', DOMContentLoaded);
-                                       window.attachEvent('onload', t.ready);
-
-                                       (function(){
-                                               try {
-                                                       document.documentElement.doScroll("left");
-                                               } catch(e) {
-                                                       setTimeout(arguments.callee, 50);
-                                                       return;
-                                               }
-
-                                               t.ready();
-                                       })();
-                               }
-
-                               t.eventAttached = true;
-                       }
-               }
-       },
-
-       _datetime = (function() {
-               var now = new Date(), zeroise;
-
-               zeroise = function(number) {
-                       var str = number.toString();
-
-                       if ( str.length < 2 )
-                               str = "0" + str;
-
-                       return str;
-               }
-
-               return now.getUTCFullYear() + '-' +
-                       zeroise( now.getUTCMonth() + 1 ) + '-' +
-                       zeroise( now.getUTCDate() ) + 'T' +
-                       zeroise( now.getUTCHours() ) + ':' +
-                       zeroise( now.getUTCMinutes() ) + ':' +
-                       zeroise( now.getUTCSeconds() ) +
-                       '+00:00';
-       })(),
-       qt;
-
-       qt = QTags = function(settings) {
-               if ( typeof(settings) == 'string' )
-                       settings = {id: settings};
-               else if ( typeof(settings) != 'object' )
-                       return false;
-
-               var t = this,
-                       id = settings.id,
-                       canvas = document.getElementById(id),
-                       name = 'qt_' + id,
-                       tb, onclick, toolbar_id;
-
-               if ( !id || !canvas )
-                       return false;
-
-               t.name = name;
-               t.id = id;
-               t.canvas = canvas;
-               t.settings = settings;
-
-               if ( id == 'content' && typeof(adminpage) == 'string' && ( adminpage == 'post-new-php' || adminpage == 'post-php' ) ) {
-                       // back compat hack :-(
-                       edCanvas = canvas;
-                       toolbar_id = 'ed_toolbar';
-               } else {
-                       toolbar_id = name + '_toolbar';
-               }
-
-               tb = document.createElement('div');
-               tb.id = toolbar_id;
-               tb.className = 'quicktags-toolbar';
-
-               canvas.parentNode.insertBefore(tb, canvas);
-               t.toolbar = tb;
-
-               // listen for click events
-               onclick = function(e) {
-                       e = e || window.event;
-                       var target = e.target || e.srcElement, i;
-
-                       // as long as it has the class ed_button, execute the callback
-                       if ( / ed_button /.test(' ' + target.className + ' ') ) {
-                               // we have to reassign canvas here
-                               t.canvas = canvas = document.getElementById(id);
-                               i = target.id.replace(name + '_', '');
-
-                               if ( t.theButtons[i] )
-                                       t.theButtons[i].callback.call(t.theButtons[i], target, canvas, t);
-                       }
-               };
-
-               if ( tb.addEventListener ) {
-                       tb.addEventListener('click', onclick, false);
-               } else if ( tb.attachEvent ) {
-                       tb.attachEvent('onclick', onclick);
-               }
-
-               t.getButton = function(id) {
-                       return t.theButtons[id];
-               };
-
-               t.getButtonElement = function(id) {
-                       return document.getElementById(name + '_' + id);
-               };
-
-               qt.instances[id] = t;
-
-               if ( !qt.instances[0] ) {
-                       qt.instances[0] = qt.instances[id];
-                       _domReady( function(){ qt._buttonsInit(); } );
-               }
-       };
-
-       qt.instances = {};
-
-       qt.getInstance = function(id) {
-               return qt.instances[id];
-       };
-
-       qt._buttonsInit = function() {
-               var t = this, canvas, name, settings, theButtons, html, inst, ed, id, i, use,
-                       defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,';
-
-               for ( inst in t.instances ) {
-                       if ( inst == 0 )
-                               continue;
-
-                       ed = t.instances[inst];
-                       canvas = ed.canvas;
-                       name = ed.name;
-                       settings = ed.settings;
-                       html = '';
-                       theButtons = {};
-                       use = '';
-
-                       // set buttons
-                       if ( settings.buttons )
-                               use = ','+settings.buttons+',';
-
-                       for ( i in edButtons ) {
-                               if ( !edButtons[i] )
-                                       continue;
-
-                               id = edButtons[i].id;
-                               if ( use && defaults.indexOf(','+id+',') != -1 && use.indexOf(','+id+',') == -1 )
-                                       continue;
-
-                               if ( !edButtons[i].instance || edButtons[i].instance == inst ) {
-                                       theButtons[id] = edButtons[i];
-
-                                       if ( edButtons[i].html )
-                                               html += edButtons[i].html(name + '_');
-                               }
-                       }
-
-                       if ( use && use.indexOf(',fullscreen,') != -1 ) {
-                               theButtons['fullscreen'] = new qt.FullscreenButton();
-                               html += theButtons['fullscreen'].html(name + '_');
-                       }
-
-
-                       if ( 'rtl' == document.getElementsByTagName('html')[0].dir ) {
-                               theButtons['textdirection'] = new qt.TextDirectionButton();
-                               html += theButtons['textdirection'].html(name + '_');
-                       }
-
-                       ed.toolbar.innerHTML = html;
-                       ed.theButtons = theButtons;
-               }
-               t.buttonsInitDone = true;
-       };
-
-       /**
-        * Main API function for adding a button to Quicktags
-        *
-        * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required.
-        * To be able to add button(s) to Quicktags, your script should be enqueued as dependent
-        * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP,
-        * use add_action( 'admin_print_footer_scripts', 'output_my_js', 100 ) or add_action( 'wp_footer', 'output_my_js', 100 )
-        *
-        * Minimum required to add a button that calls an external function:
-        *     QTags.addButton( 'my_id', 'my button', my_callback );
-        *     function my_callback() { alert('yeah!'); }
-        *
-        * Minimum required to add a button that inserts a tag:
-        *     QTags.addButton( 'my_id', 'my button', '<span>', '</span>' );
-        *     QTags.addButton( 'my_id2', 'my button', '<br />' );
-        *
-        * @param id string required Button HTML ID
-        * @param display string required Button's value="..."
-        * @param arg1 string || function required Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
-        * @param arg2 string optional Ending tag like "</span>"
-        * @param access_key string optional Access key for the button.
-        * @param title string optional Button's title="..."
-        * @param priority int optional Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
-        * @param instance string optional Limit the button to a specifric instance of Quicktags, add to all instances if not present.
-        * @return mixed null or the button object that is needed for back-compat.
-        */
-       qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance ) {
-               var btn;
-
-               if ( !id || !display )
-                       return;
-
-               priority = priority || 0;
-               arg2 = arg2 || '';
-
-               if ( typeof(arg1) === 'function' ) {
-                       btn = new qt.Button(id, display, access_key, title, instance);
-                       btn.callback = arg1;
-               } else if ( typeof(arg1) === 'string' ) {
-                       btn = new qt.TagButton(id, display, arg1, arg2, access_key, title, instance);
-               } else {
-                       return;
-               }
-
-               if ( priority == -1 ) // back-compat
-                       return btn;
-
-               if ( priority > 0 ) {
-                       while ( typeof(edButtons[priority]) != 'undefined' ) {
-                               priority++
-                       }
-
-                       edButtons[priority] = btn;
-               } else {
-                       edButtons[edButtons.length] = btn;
-               }
-
-               if ( this.buttonsInitDone )
-                       this._buttonsInit(); // add the button HTML to all instances toolbars if addButton() was called too late
-       };
-
-       qt.insertContent = function(content) {
-               var sel, startPos, endPos, scrollTop, text, canvas = document.getElementById(wpActiveEditor);
-
-               if ( !canvas )
-                       return false;
-
-               if ( document.selection ) { //IE
-                       canvas.focus();
-                       sel = document.selection.createRange();
-                       sel.text = content;
-                       canvas.focus();
-               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) { // FF, WebKit, Opera
-                       text = canvas.value;
-                       startPos = canvas.selectionStart;
-                       endPos = canvas.selectionEnd;
-                       scrollTop = canvas.scrollTop;
-
-                       canvas.value = text.substring(0, startPos) + content + text.substring(endPos, text.length);
-
-                       canvas.focus();
-                       canvas.selectionStart = startPos + content.length;
-                       canvas.selectionEnd = startPos + content.length;
-                       canvas.scrollTop = scrollTop;
-               } else {
-                       canvas.value += content;
-                       canvas.focus();
-               }
-               return true;
-       };
-
-       // a plain, dumb button
-       qt.Button = function(id, display, access, title, instance) {
-               var t = this;
-               t.id = id;
-               t.display = display;
-               t.access = access;
-               t.title = title || '';
-               t.instance = instance || '';
-       };
-       qt.Button.prototype.html = function(idPrefix) {
-               var access = this.access ? ' accesskey="' + this.access + '"' : '';
-               return '<input type="button" id="' + idPrefix + this.id + '"' + access + ' class="ed_button" title="' + this.title + '" value="' + this.display + '" />';
-       };
-       qt.Button.prototype.callback = function(){};
-
-       // a button that inserts HTML tag
-       qt.TagButton = function(id, display, tagStart, tagEnd, access, title, instance) {
-               var t = this;
-               qt.Button.call(t, id, display, access, title, instance);
-               t.tagStart = tagStart;
-               t.tagEnd = tagEnd;
-       };
-       qt.TagButton.prototype = new qt.Button();
-       qt.TagButton.prototype.openTag = function(e, ed) {
-               var t = this;
-
-               if ( ! ed.openTags ) {
-                       ed.openTags = [];
-               }
-               if ( t.tagEnd ) {
-                       ed.openTags.push(t.id);
-                       e.value = '/' + e.value;
-               }
-       };
-       qt.TagButton.prototype.closeTag = function(e, ed) {
-               var t = this, i = t.isOpen(ed);
-
-               if ( i !== false ) {
-                       ed.openTags.splice(i, 1);
-               }
-
-               e.value = t.display;
-       };
-       // whether a tag is open or not. Returns false if not open, or current open depth of the tag
-       qt.TagButton.prototype.isOpen = function (ed) {
-               var t = this, i = 0, ret = false;
-               if ( ed.openTags ) {
-                       while ( ret === false && i < ed.openTags.length ) {
-                               ret = ed.openTags[i] == t.id ? i : false;
-                               i ++;
-                       }
-               } else {
-                       ret = false;
-               }
-               return ret;
-       };
-       qt.TagButton.prototype.callback = function(element, canvas, ed) {
-               var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '';
-
-               if ( document.selection ) { // IE
-                       canvas.focus();
-                       sel = document.selection.createRange();
-                       if ( sel.text.length > 0 ) {
-                               if ( !t.tagEnd )
-                                       sel.text = sel.text + t.tagStart;
-                               else
-                                       sel.text = t.tagStart + sel.text + endTag;
-                       } else {
-                               if ( !t.tagEnd ) {
-                                       sel.text = t.tagStart;
-                               } else if ( t.isOpen(ed) === false ) {
-                                       sel.text = t.tagStart;
-                                       t.openTag(element, ed);
-                               } else {
-                                       sel.text = endTag;
-                                       t.closeTag(element, ed);
-                               }
-                       }
-                       canvas.focus();
-               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) { // FF, WebKit, Opera
-                       startPos = canvas.selectionStart;
-                       endPos = canvas.selectionEnd;
-                       cursorPos = endPos;
-                       scrollTop = canvas.scrollTop;
-                       l = v.substring(0, startPos); // left of the selection
-                       r = v.substring(endPos, v.length); // right of the selection
-                       i = v.substring(startPos, endPos); // inside the selection
-                       if ( startPos != endPos ) {
-                               if ( !t.tagEnd ) {
-                                       canvas.value = l + i + t.tagStart + r; // insert self closing tags after the selection
-                                       cursorPos += t.tagStart.length;
-                               } else {
-                                       canvas.value = l + t.tagStart + i + endTag + r;
-                                       cursorPos += t.tagStart.length + endTag.length;
-                               }
-                       } else {
-                               if ( !t.tagEnd ) {
-                                       canvas.value = l + t.tagStart + r;
-                                       cursorPos = startPos + t.tagStart.length;
-                               } else if ( t.isOpen(ed) === false ) {
-                                       canvas.value = l + t.tagStart + r;
-                                       t.openTag(element, ed);
-                                       cursorPos = startPos + t.tagStart.length;
-                               } else {
-                                       canvas.value = l + endTag + r;
-                                       cursorPos = startPos + endTag.length;
-                                       t.closeTag(element, ed);
-                               }
-                       }
-
-                       canvas.focus();
-                       canvas.selectionStart = cursorPos;
-                       canvas.selectionEnd = cursorPos;
-                       canvas.scrollTop = scrollTop;
-               } else { // other browsers?
-                       if ( !endTag ) {
-                               canvas.value += t.tagStart;
-                       } else if ( t.isOpen(ed) !== false ) {
-                               canvas.value += t.tagStart;
-                               t.openTag(element, ed);
-                       } else {
-                               canvas.value += endTag;
-                               t.closeTag(element, ed);
-                       }
-                       canvas.focus();
-               }
-       };
-
-       // the spell button
-       qt.SpellButton = function() {
-               qt.Button.call(this, 'spell', quicktagsL10n.lookup, '', quicktagsL10n.dictionaryLookup);
-       };
-       qt.SpellButton.prototype = new qt.Button();
-       qt.SpellButton.prototype.callback = function(element, canvas, ed) {
-               var word = '', sel, startPos, endPos;
-
-               if ( document.selection ) {
-                       canvas.focus();
-                       sel = document.selection.createRange();
-                       if ( sel.text.length > 0 ) {
-                               word = sel.text;
-                       }
-               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) {
-                       startPos = canvas.selectionStart;
-                       endPos = canvas.selectionEnd;
-                       if ( startPos != endPos ) {
-                               word = canvas.value.substring(startPos, endPos);
-                       }
-               }
-
-               if ( word === '' ) {
-                       word = prompt(quicktagsL10n.wordLookup, '');
-               }
-
-               if ( word !== null && /^\w[\w ]*$/.test(word)) {
-                       window.open('http://www.answers.com/' + encodeURIComponent(word));
-               }
-       };
-
-       // the close tags button
-       qt.CloseButton = function() {
-               qt.Button.call(this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags);
-       };
-
-       qt.CloseButton.prototype = new qt.Button();
-
-       qt._close = function(e, c, ed) {
-               var button, element, tbo = ed.openTags;
-
-               if ( tbo ) {
-                       while ( tbo.length > 0 ) {
-                               button = ed.getButton(tbo[tbo.length - 1]);
-                               element = document.getElementById(ed.name + '_' + button.id);
-
-                               if ( e )
-                                       button.callback.call(button, element, c, ed);
-                               else
-                                       button.closeTag(element, ed);
-                       }
-               }
-       };
-
-       qt.CloseButton.prototype.callback = qt._close;
-
-       qt.closeAllTags = function(editor_id) {
-               var ed = this.getInstance(editor_id);
-               qt._close('', ed.canvas, ed);
-       };
-
-       // the link button
-       qt.LinkButton = function() {
-               qt.TagButton.call(this, 'link', 'link', '', '</a>', 'a');
-       };
-       qt.LinkButton.prototype = new qt.TagButton();
-       qt.LinkButton.prototype.callback = function(e, c, ed, defaultValue) {
-               var URL, t = this;
-
-               if ( typeof(wpLink) != 'undefined' ) {
-                       wpLink.open();
-                       return;
-               }
-
-               if ( ! defaultValue )
-                       defaultValue = 'http://';
-
-               if ( t.isOpen(ed) === false ) {
-                       URL = prompt(quicktagsL10n.enterURL, defaultValue);
-                       if ( URL ) {
-                               t.tagStart = '<a href="' + URL + '">';
-                               qt.TagButton.prototype.callback.call(t, e, c, ed);
-                       }
-               } else {
-                       qt.TagButton.prototype.callback.call(t, e, c, ed);
-               }
-       };
-
-       // the img button
-       qt.ImgButton = function() {
-               qt.TagButton.call(this, 'img', 'img', '', '', 'm');
-       };
-       qt.ImgButton.prototype = new qt.TagButton();
-       qt.ImgButton.prototype.callback = function(e, c, ed, defaultValue) {
-               if ( ! defaultValue ) {
-                       defaultValue = 'http://';
-               }
-               var src = prompt(quicktagsL10n.enterImageURL, defaultValue), alt;
-               if ( src ) {
-                       alt = prompt(quicktagsL10n.enterImageDescription, '');
-                       this.tagStart = '<img src="' + src + '" alt="' + alt + '" />';
-                       qt.TagButton.prototype.callback.call(this, e, c, ed);
-               }
-       };
-
-       qt.FullscreenButton = function() {
-               qt.Button.call(this, 'fullscreen', quicktagsL10n.fullscreen, 'f', quicktagsL10n.toggleFullscreen);
-       };
-       qt.FullscreenButton.prototype = new qt.Button();
-       qt.FullscreenButton.prototype.callback = function(e, c) {
-               if ( !c.id || typeof(fullscreen) == 'undefined' )
-                       return;
-
-               fullscreen.on();
-       };
-
-       qt.TextDirectionButton = function() {
-               qt.Button.call(this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection)
-       };
-       qt.TextDirectionButton.prototype = new qt.Button();
-       qt.TextDirectionButton.prototype.callback = function(e, c) {
-               var isRTL = ( 'rtl' == document.getElementsByTagName('html')[0].dir ),
-                       currentDirection = c.style.direction;
-
-               if ( ! currentDirection )
-                       currentDirection = ( isRTL ) ? 'rtl' : 'ltr';
-
-               c.style.direction = ( 'rtl' == currentDirection ) ? 'ltr' : 'rtl';
-               c.focus();
-       }
-
-       // ensure backward compatibility
-       edButtons[10] = new qt.TagButton('strong','b','<strong>','</strong>','b');
-       edButtons[20] = new qt.TagButton('em','i','<em>','</em>','i'),
-       edButtons[30] = new qt.LinkButton(), // special case
-       edButtons[40] = new qt.TagButton('block','b-quote','\n\n<blockquote>','</blockquote>\n\n','q'),
-       edButtons[50] = new qt.TagButton('del','del','<del datetime="' + _datetime + '">','</del>','d'),
-       edButtons[60] = new qt.TagButton('ins','ins','<ins datetime="' + _datetime + '">','</ins>','s'),
-       edButtons[70] = new qt.ImgButton(), // special case
-       edButtons[80] = new qt.TagButton('ul','ul','<ul>\n','</ul>\n\n','u'),
-       edButtons[90] = new qt.TagButton('ol','ol','<ol>\n','</ol>\n\n','o'),
-       edButtons[100] = new qt.TagButton('li','li','\t<li>','</li>\n','l'),
-       edButtons[110] = new qt.TagButton('code','code','<code>','</code>','c'),
-       edButtons[120] = new qt.TagButton('more','more','<!--more-->','','t'),
-       edButtons[130] = new qt.SpellButton(),
-       edButtons[140] = new qt.CloseButton()
-
-})();
index d66d123d1a54ec390b253971f0ec26579e1e159b..cb4d2bee0737a8079010a0f04a82a002da4bc9bb 100644 (file)
@@ -1 +1,649 @@
-var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,l;if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}if("rtl"==document.getElementsByTagName("html")[0].dir){o.textdirection=new c.TextDirectionButton();m+=o.textdirection.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){c.Button.call(this,"spell",quicktagsL10n.lookup,"",quicktagsL10n.dictionaryLookup)};c.SpellButton.prototype=new c.Button();c.SpellButton.prototype.callback=function(h,g,d){var j="",i,f,e;if(document.selection){g.focus();i=document.selection.createRange();if(i.text.length>0){j=i.text}}else{if(g.selectionStart||g.selectionStart=="0"){f=g.selectionStart;e=g.selectionEnd;if(f!=e){j=g.value.substring(f,e)}}}if(j===""){j=prompt(quicktagsL10n.wordLookup,"")}if(j!==null&&/^\w[\w ]*$/.test(j)){window.open("http://www.answers.com/"+encodeURIComponent(j))}};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(!f.id||typeof(fullscreen)=="undefined"){return}fullscreen.on()};c.TextDirectionButton=function(){c.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)};c.TextDirectionButton.prototype=new c.Button();c.TextDirectionButton.prototype.callback=function(f,h){var d=("rtl"==document.getElementsByTagName("html")[0].dir),g=h.style.direction;if(!g){g=(d)?"rtl":"ltr"}h.style.direction=("rtl"==g)?"ltr":"rtl";h.focus()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[130]=new c.SpellButton(),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
+/*
+ * Quicktags
+ *
+ * This is the HTML editor in WordPress. It can be attached to any textarea and will
+ * append a toolbar above it. This script is self-contained (does not require external libraries).
+ *
+ * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties:
+ * settings = {
+ *   id : 'my_id',          the HTML ID of the textarea, required
+ *   buttons: ''            Comma separated list of the names of the default buttons to show. Optional.
+ *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
+ * }
+ *
+ * The settings can also be a string quicktags_id.
+ *
+ * quicktags_id string The ID of the textarea that will be the editor canvas
+ * buttons string Comma separated list of the default buttons names that will be shown in that instance.
+ */
+
+// new edit toolbar used with permission
+// by Alex King
+// http://www.alexking.org/
+
+var QTags, edButtons = [], edCanvas,
+
+/**
+ * Back-compat
+ *
+ * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors.
+ */
+edAddTag = function(){},
+edCheckOpenTags = function(){},
+edCloseAllTags = function(){},
+edInsertImage = function(){},
+edInsertLink = function(){},
+edInsertTag = function(){},
+edLink = function(){},
+edQuickLink = function(){},
+edRemoveTag = function(){},
+edShowButton = function(){},
+edShowLinks = function(){},
+edSpell = function(){},
+edToolbar = function(){};
+
+/**
+ * Initialize new instance of the Quicktags editor
+ */
+function quicktags(settings) {
+       return new QTags(settings);
+}
+
+/**
+ * Inserts content at the caret in the active editor (textarea)
+ *
+ * Added for back compatibility
+ * @see QTags.insertContent()
+ */
+function edInsertContent(bah, txt) {
+       return QTags.insertContent(txt);
+}
+
+/**
+ * Adds a button to all instances of the editor
+ *
+ * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc.
+ * @see QTags.addButton()
+ */
+function edButton(id, display, tagStart, tagEnd, access, open) {
+       return QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 );
+}
+
+(function(){
+       // private stuff is prefixed with an underscore
+       var _domReady = function(func) {
+               var t, i,  DOMContentLoaded;
+
+               if ( typeof jQuery != 'undefined' ) {
+                       jQuery(document).ready(func);
+               } else {
+                       t = _domReady;
+                       t.funcs = [];
+
+                       t.ready = function() {
+                               if ( ! t.isReady ) {
+                                       t.isReady = true;
+                                       for ( i = 0; i < t.funcs.length; i++ ) {
+                                               t.funcs[i]();
+                                       }
+                               }
+                       };
+
+                       if ( t.isReady ) {
+                               func();
+                       } else {
+                               t.funcs.push(func);
+                       }
+
+                       if ( ! t.eventAttached ) {
+                               if ( document.addEventListener ) {
+                                       DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();};
+                                       document.addEventListener('DOMContentLoaded', DOMContentLoaded, false);
+                                       window.addEventListener('load', t.ready, false);
+                               } else if ( document.attachEvent ) {
+                                       DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}};
+                                       document.attachEvent('onreadystatechange', DOMContentLoaded);
+                                       window.attachEvent('onload', t.ready);
+
+                                       (function(){
+                                               try {
+                                                       document.documentElement.doScroll("left");
+                                               } catch(e) {
+                                                       setTimeout(arguments.callee, 50);
+                                                       return;
+                                               }
+
+                                               t.ready();
+                                       })();
+                               }
+
+                               t.eventAttached = true;
+                       }
+               }
+       },
+
+       _datetime = (function() {
+               var now = new Date(), zeroise;
+
+               zeroise = function(number) {
+                       var str = number.toString();
+
+                       if ( str.length < 2 )
+                               str = "0" + str;
+
+                       return str;
+               }
+
+               return now.getUTCFullYear() + '-' +
+                       zeroise( now.getUTCMonth() + 1 ) + '-' +
+                       zeroise( now.getUTCDate() ) + 'T' +
+                       zeroise( now.getUTCHours() ) + ':' +
+                       zeroise( now.getUTCMinutes() ) + ':' +
+                       zeroise( now.getUTCSeconds() ) +
+                       '+00:00';
+       })(),
+       qt;
+
+       qt = QTags = function(settings) {
+               if ( typeof(settings) == 'string' )
+                       settings = {id: settings};
+               else if ( typeof(settings) != 'object' )
+                       return false;
+
+               var t = this,
+                       id = settings.id,
+                       canvas = document.getElementById(id),
+                       name = 'qt_' + id,
+                       tb, onclick, toolbar_id;
+
+               if ( !id || !canvas )
+                       return false;
+
+               t.name = name;
+               t.id = id;
+               t.canvas = canvas;
+               t.settings = settings;
+
+               if ( id == 'content' && typeof(adminpage) == 'string' && ( adminpage == 'post-new-php' || adminpage == 'post-php' ) ) {
+                       // back compat hack :-(
+                       edCanvas = canvas;
+                       toolbar_id = 'ed_toolbar';
+               } else {
+                       toolbar_id = name + '_toolbar';
+               }
+
+               tb = document.createElement('div');
+               tb.id = toolbar_id;
+               tb.className = 'quicktags-toolbar';
+
+               canvas.parentNode.insertBefore(tb, canvas);
+               t.toolbar = tb;
+
+               // listen for click events
+               onclick = function(e) {
+                       e = e || window.event;
+                       var target = e.target || e.srcElement, visible = target.clientWidth || target.offsetWidth, i;
+
+                       // don't call the callback on pressing the accesskey when the button is not visible
+                       if ( !visible )
+                               return;
+
+                       // as long as it has the class ed_button, execute the callback
+                       if ( / ed_button /.test(' ' + target.className + ' ') ) {
+                               // we have to reassign canvas here
+                               t.canvas = canvas = document.getElementById(id);
+                               i = target.id.replace(name + '_', '');
+
+                               if ( t.theButtons[i] )
+                                       t.theButtons[i].callback.call(t.theButtons[i], target, canvas, t);
+                       }
+               };
+
+               if ( tb.addEventListener ) {
+                       tb.addEventListener('click', onclick, false);
+               } else if ( tb.attachEvent ) {
+                       tb.attachEvent('onclick', onclick);
+               }
+
+               t.getButton = function(id) {
+                       return t.theButtons[id];
+               };
+
+               t.getButtonElement = function(id) {
+                       return document.getElementById(name + '_' + id);
+               };
+
+               qt.instances[id] = t;
+
+               if ( !qt.instances[0] ) {
+                       qt.instances[0] = qt.instances[id];
+                       _domReady( function(){ qt._buttonsInit(); } );
+               }
+       };
+
+       qt.instances = {};
+
+       qt.getInstance = function(id) {
+               return qt.instances[id];
+       };
+
+       qt._buttonsInit = function() {
+               var t = this, canvas, name, settings, theButtons, html, inst, ed, id, i, use,
+                       defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,';
+
+               for ( inst in t.instances ) {
+                       if ( inst == 0 )
+                               continue;
+
+                       ed = t.instances[inst];
+                       canvas = ed.canvas;
+                       name = ed.name;
+                       settings = ed.settings;
+                       html = '';
+                       theButtons = {};
+                       use = '';
+
+                       // set buttons
+                       if ( settings.buttons )
+                               use = ','+settings.buttons+',';
+
+                       for ( i in edButtons ) {
+                               if ( !edButtons[i] )
+                                       continue;
+
+                               id = edButtons[i].id;
+                               if ( use && defaults.indexOf(','+id+',') != -1 && use.indexOf(','+id+',') == -1 )
+                                       continue;
+
+                               if ( !edButtons[i].instance || edButtons[i].instance == inst ) {
+                                       theButtons[id] = edButtons[i];
+
+                                       if ( edButtons[i].html )
+                                               html += edButtons[i].html(name + '_');
+                               }
+                       }
+
+                       if ( use && use.indexOf(',fullscreen,') != -1 ) {
+                               theButtons['fullscreen'] = new qt.FullscreenButton();
+                               html += theButtons['fullscreen'].html(name + '_');
+                       }
+
+
+                       if ( 'rtl' == document.getElementsByTagName('html')[0].dir ) {
+                               theButtons['textdirection'] = new qt.TextDirectionButton();
+                               html += theButtons['textdirection'].html(name + '_');
+                       }
+
+                       ed.toolbar.innerHTML = html;
+                       ed.theButtons = theButtons;
+               }
+               t.buttonsInitDone = true;
+       };
+
+       /**
+        * Main API function for adding a button to Quicktags
+        *
+        * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required.
+        * To be able to add button(s) to Quicktags, your script should be enqueued as dependent
+        * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP,
+        * use add_action( 'admin_print_footer_scripts', 'output_my_js', 100 ) or add_action( 'wp_footer', 'output_my_js', 100 )
+        *
+        * Minimum required to add a button that calls an external function:
+        *     QTags.addButton( 'my_id', 'my button', my_callback );
+        *     function my_callback() { alert('yeah!'); }
+        *
+        * Minimum required to add a button that inserts a tag:
+        *     QTags.addButton( 'my_id', 'my button', '<span>', '</span>' );
+        *     QTags.addButton( 'my_id2', 'my button', '<br />' );
+        *
+        * @param id string required Button HTML ID
+        * @param display string required Button's value="..."
+        * @param arg1 string || function required Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
+        * @param arg2 string optional Ending tag like "</span>"
+        * @param access_key string optional Access key for the button.
+        * @param title string optional Button's title="..."
+        * @param priority int optional Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
+        * @param instance string optional Limit the button to a specifric instance of Quicktags, add to all instances if not present.
+        * @return mixed null or the button object that is needed for back-compat.
+        */
+       qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance ) {
+               var btn;
+
+               if ( !id || !display )
+                       return;
+
+               priority = priority || 0;
+               arg2 = arg2 || '';
+
+               if ( typeof(arg1) === 'function' ) {
+                       btn = new qt.Button(id, display, access_key, title, instance);
+                       btn.callback = arg1;
+               } else if ( typeof(arg1) === 'string' ) {
+                       btn = new qt.TagButton(id, display, arg1, arg2, access_key, title, instance);
+               } else {
+                       return;
+               }
+
+               if ( priority == -1 ) // back-compat
+                       return btn;
+
+               if ( priority > 0 ) {
+                       while ( typeof(edButtons[priority]) != 'undefined' ) {
+                               priority++
+                       }
+
+                       edButtons[priority] = btn;
+               } else {
+                       edButtons[edButtons.length] = btn;
+               }
+
+               if ( this.buttonsInitDone )
+                       this._buttonsInit(); // add the button HTML to all instances toolbars if addButton() was called too late
+       };
+
+       qt.insertContent = function(content) {
+               var sel, startPos, endPos, scrollTop, text, canvas = document.getElementById(wpActiveEditor);
+
+               if ( !canvas )
+                       return false;
+
+               if ( document.selection ) { //IE
+                       canvas.focus();
+                       sel = document.selection.createRange();
+                       sel.text = content;
+                       canvas.focus();
+               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) { // FF, WebKit, Opera
+                       text = canvas.value;
+                       startPos = canvas.selectionStart;
+                       endPos = canvas.selectionEnd;
+                       scrollTop = canvas.scrollTop;
+
+                       canvas.value = text.substring(0, startPos) + content + text.substring(endPos, text.length);
+
+                       canvas.focus();
+                       canvas.selectionStart = startPos + content.length;
+                       canvas.selectionEnd = startPos + content.length;
+                       canvas.scrollTop = scrollTop;
+               } else {
+                       canvas.value += content;
+                       canvas.focus();
+               }
+               return true;
+       };
+
+       // a plain, dumb button
+       qt.Button = function(id, display, access, title, instance) {
+               var t = this;
+               t.id = id;
+               t.display = display;
+               t.access = access;
+               t.title = title || '';
+               t.instance = instance || '';
+       };
+       qt.Button.prototype.html = function(idPrefix) {
+               var access = this.access ? ' accesskey="' + this.access + '"' : '';
+               return '<input type="button" id="' + idPrefix + this.id + '"' + access + ' class="ed_button" title="' + this.title + '" value="' + this.display + '" />';
+       };
+       qt.Button.prototype.callback = function(){};
+
+       // a button that inserts HTML tag
+       qt.TagButton = function(id, display, tagStart, tagEnd, access, title, instance) {
+               var t = this;
+               qt.Button.call(t, id, display, access, title, instance);
+               t.tagStart = tagStart;
+               t.tagEnd = tagEnd;
+       };
+       qt.TagButton.prototype = new qt.Button();
+       qt.TagButton.prototype.openTag = function(e, ed) {
+               var t = this;
+
+               if ( ! ed.openTags ) {
+                       ed.openTags = [];
+               }
+               if ( t.tagEnd ) {
+                       ed.openTags.push(t.id);
+                       e.value = '/' + e.value;
+               }
+       };
+       qt.TagButton.prototype.closeTag = function(e, ed) {
+               var t = this, i = t.isOpen(ed);
+
+               if ( i !== false ) {
+                       ed.openTags.splice(i, 1);
+               }
+
+               e.value = t.display;
+       };
+       // whether a tag is open or not. Returns false if not open, or current open depth of the tag
+       qt.TagButton.prototype.isOpen = function (ed) {
+               var t = this, i = 0, ret = false;
+               if ( ed.openTags ) {
+                       while ( ret === false && i < ed.openTags.length ) {
+                               ret = ed.openTags[i] == t.id ? i : false;
+                               i ++;
+                       }
+               } else {
+                       ret = false;
+               }
+               return ret;
+       };
+       qt.TagButton.prototype.callback = function(element, canvas, ed) {
+               var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '';
+
+               if ( document.selection ) { // IE
+                       canvas.focus();
+                       sel = document.selection.createRange();
+                       if ( sel.text.length > 0 ) {
+                               if ( !t.tagEnd )
+                                       sel.text = sel.text + t.tagStart;
+                               else
+                                       sel.text = t.tagStart + sel.text + endTag;
+                       } else {
+                               if ( !t.tagEnd ) {
+                                       sel.text = t.tagStart;
+                               } else if ( t.isOpen(ed) === false ) {
+                                       sel.text = t.tagStart;
+                                       t.openTag(element, ed);
+                               } else {
+                                       sel.text = endTag;
+                                       t.closeTag(element, ed);
+                               }
+                       }
+                       canvas.focus();
+               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) { // FF, WebKit, Opera
+                       startPos = canvas.selectionStart;
+                       endPos = canvas.selectionEnd;
+                       cursorPos = endPos;
+                       scrollTop = canvas.scrollTop;
+                       l = v.substring(0, startPos); // left of the selection
+                       r = v.substring(endPos, v.length); // right of the selection
+                       i = v.substring(startPos, endPos); // inside the selection
+                       if ( startPos != endPos ) {
+                               if ( !t.tagEnd ) {
+                                       canvas.value = l + i + t.tagStart + r; // insert self closing tags after the selection
+                                       cursorPos += t.tagStart.length;
+                               } else {
+                                       canvas.value = l + t.tagStart + i + endTag + r;
+                                       cursorPos += t.tagStart.length + endTag.length;
+                               }
+                       } else {
+                               if ( !t.tagEnd ) {
+                                       canvas.value = l + t.tagStart + r;
+                                       cursorPos = startPos + t.tagStart.length;
+                               } else if ( t.isOpen(ed) === false ) {
+                                       canvas.value = l + t.tagStart + r;
+                                       t.openTag(element, ed);
+                                       cursorPos = startPos + t.tagStart.length;
+                               } else {
+                                       canvas.value = l + endTag + r;
+                                       cursorPos = startPos + endTag.length;
+                                       t.closeTag(element, ed);
+                               }
+                       }
+
+                       canvas.focus();
+                       canvas.selectionStart = cursorPos;
+                       canvas.selectionEnd = cursorPos;
+                       canvas.scrollTop = scrollTop;
+               } else { // other browsers?
+                       if ( !endTag ) {
+                               canvas.value += t.tagStart;
+                       } else if ( t.isOpen(ed) !== false ) {
+                               canvas.value += t.tagStart;
+                               t.openTag(element, ed);
+                       } else {
+                               canvas.value += endTag;
+                               t.closeTag(element, ed);
+                       }
+                       canvas.focus();
+               }
+       };
+
+       // the spell button
+       qt.SpellButton = function() {
+               qt.Button.call(this, 'spell', quicktagsL10n.lookup, '', quicktagsL10n.dictionaryLookup);
+       };
+       qt.SpellButton.prototype = new qt.Button();
+       qt.SpellButton.prototype.callback = function(element, canvas, ed) {
+               var word = '', sel, startPos, endPos;
+
+               if ( document.selection ) {
+                       canvas.focus();
+                       sel = document.selection.createRange();
+                       if ( sel.text.length > 0 ) {
+                               word = sel.text;
+                       }
+               } else if ( canvas.selectionStart || canvas.selectionStart == '0' ) {
+                       startPos = canvas.selectionStart;
+                       endPos = canvas.selectionEnd;
+                       if ( startPos != endPos ) {
+                               word = canvas.value.substring(startPos, endPos);
+                       }
+               }
+
+               if ( word === '' ) {
+                       word = prompt(quicktagsL10n.wordLookup, '');
+               }
+
+               if ( word !== null && /^\w[\w ]*$/.test(word)) {
+                       window.open('http://www.answers.com/' + encodeURIComponent(word));
+               }
+       };
+
+       // the close tags button
+       qt.CloseButton = function() {
+               qt.Button.call(this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags);
+       };
+
+       qt.CloseButton.prototype = new qt.Button();
+
+       qt._close = function(e, c, ed) {
+               var button, element, tbo = ed.openTags;
+
+               if ( tbo ) {
+                       while ( tbo.length > 0 ) {
+                               button = ed.getButton(tbo[tbo.length - 1]);
+                               element = document.getElementById(ed.name + '_' + button.id);
+
+                               if ( e )
+                                       button.callback.call(button, element, c, ed);
+                               else
+                                       button.closeTag(element, ed);
+                       }
+               }
+       };
+
+       qt.CloseButton.prototype.callback = qt._close;
+
+       qt.closeAllTags = function(editor_id) {
+               var ed = this.getInstance(editor_id);
+               qt._close('', ed.canvas, ed);
+       };
+
+       // the link button
+       qt.LinkButton = function() {
+               qt.TagButton.call(this, 'link', 'link', '', '</a>', 'a');
+       };
+       qt.LinkButton.prototype = new qt.TagButton();
+       qt.LinkButton.prototype.callback = function(e, c, ed, defaultValue) {
+               var URL, t = this;
+
+               if ( typeof(wpLink) != 'undefined' ) {
+                       wpLink.open();
+                       return;
+               }
+
+               if ( ! defaultValue )
+                       defaultValue = 'http://';
+
+               if ( t.isOpen(ed) === false ) {
+                       URL = prompt(quicktagsL10n.enterURL, defaultValue);
+                       if ( URL ) {
+                               t.tagStart = '<a href="' + URL + '">';
+                               qt.TagButton.prototype.callback.call(t, e, c, ed);
+                       }
+               } else {
+                       qt.TagButton.prototype.callback.call(t, e, c, ed);
+               }
+       };
+
+       // the img button
+       qt.ImgButton = function() {
+               qt.TagButton.call(this, 'img', 'img', '', '', 'm');
+       };
+       qt.ImgButton.prototype = new qt.TagButton();
+       qt.ImgButton.prototype.callback = function(e, c, ed, defaultValue) {
+               if ( ! defaultValue ) {
+                       defaultValue = 'http://';
+               }
+               var src = prompt(quicktagsL10n.enterImageURL, defaultValue), alt;
+               if ( src ) {
+                       alt = prompt(quicktagsL10n.enterImageDescription, '');
+                       this.tagStart = '<img src="' + src + '" alt="' + alt + '" />';
+                       qt.TagButton.prototype.callback.call(this, e, c, ed);
+               }
+       };
+
+       qt.FullscreenButton = function() {
+               qt.Button.call(this, 'fullscreen', quicktagsL10n.fullscreen, 'f', quicktagsL10n.toggleFullscreen);
+       };
+       qt.FullscreenButton.prototype = new qt.Button();
+       qt.FullscreenButton.prototype.callback = function(e, c) {
+               if ( !c.id || typeof(fullscreen) == 'undefined' )
+                       return;
+
+               fullscreen.on();
+       };
+
+       qt.TextDirectionButton = function() {
+               qt.Button.call(this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection)
+       };
+       qt.TextDirectionButton.prototype = new qt.Button();
+       qt.TextDirectionButton.prototype.callback = function(e, c) {
+               var isRTL = ( 'rtl' == document.getElementsByTagName('html')[0].dir ),
+                       currentDirection = c.style.direction;
+
+               if ( ! currentDirection )
+                       currentDirection = ( isRTL ) ? 'rtl' : 'ltr';
+
+               c.style.direction = ( 'rtl' == currentDirection ) ? 'ltr' : 'rtl';
+               c.focus();
+       }
+
+       // ensure backward compatibility
+       edButtons[10] = new qt.TagButton('strong','b','<strong>','</strong>','b');
+       edButtons[20] = new qt.TagButton('em','i','<em>','</em>','i'),
+       edButtons[30] = new qt.LinkButton(), // special case
+       edButtons[40] = new qt.TagButton('block','b-quote','\n\n<blockquote>','</blockquote>\n\n','q'),
+       edButtons[50] = new qt.TagButton('del','del','<del datetime="' + _datetime + '">','</del>','d'),
+       edButtons[60] = new qt.TagButton('ins','ins','<ins datetime="' + _datetime + '">','</ins>','s'),
+       edButtons[70] = new qt.ImgButton(), // special case
+       edButtons[80] = new qt.TagButton('ul','ul','<ul>\n','</ul>\n\n','u'),
+       edButtons[90] = new qt.TagButton('ol','ol','<ol>\n','</ol>\n\n','o'),
+       edButtons[100] = new qt.TagButton('li','li','\t<li>','</li>\n','l'),
+       edButtons[110] = new qt.TagButton('code','code','<code>','</code>','c'),
+       edButtons[120] = new qt.TagButton('more','more','<!--more-->','','t'),
+       edButtons[130] = new qt.SpellButton(),
+       edButtons[140] = new qt.CloseButton()
+
+})();
diff --git a/wp-includes/js/quicktags.min.js b/wp-includes/js/quicktags.min.js
new file mode 100644 (file)
index 0000000..64bf532
--- /dev/null
@@ -0,0 +1 @@
+var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,o=m.clientWidth||m.offsetWidth,l;if(!o){return}if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}if("rtl"==document.getElementsByTagName("html")[0].dir){o.textdirection=new c.TextDirectionButton();m+=o.textdirection.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){c.Button.call(this,"spell",quicktagsL10n.lookup,"",quicktagsL10n.dictionaryLookup)};c.SpellButton.prototype=new c.Button();c.SpellButton.prototype.callback=function(h,g,d){var j="",i,f,e;if(document.selection){g.focus();i=document.selection.createRange();if(i.text.length>0){j=i.text}}else{if(g.selectionStart||g.selectionStart=="0"){f=g.selectionStart;e=g.selectionEnd;if(f!=e){j=g.value.substring(f,e)}}}if(j===""){j=prompt(quicktagsL10n.wordLookup,"")}if(j!==null&&/^\w[\w ]*$/.test(j)){window.open("http://www.answers.com/"+encodeURIComponent(j))}};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(!f.id||typeof(fullscreen)=="undefined"){return}fullscreen.on()};c.TextDirectionButton=function(){c.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)};c.TextDirectionButton.prototype=new c.Button();c.TextDirectionButton.prototype.callback=function(f,h){var d=("rtl"==document.getElementsByTagName("html")[0].dir),g=h.style.direction;if(!g){g=(d)?"rtl":"ltr"}h.style.direction=("rtl"==g)?"ltr":"rtl";h.focus()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[130]=new c.SpellButton(),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/MIT-LICENSE b/wp-includes/js/scriptaculous/MIT-LICENSE
deleted file mode 100644 (file)
index 60dc2d8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining\r
-a copy of this software and associated documentation files (the\r
-"Software"), to deal in the Software without restriction, including\r
-without limitation the rights to use, copy, modify, merge, publish,\r
-distribute, sublicense, and/or sell copies of the Software, and to\r
-permit persons to whom the Software is furnished to do so, subject to\r
-the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be\r
-included in all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/builder.js b/wp-includes/js/scriptaculous/builder.js
deleted file mode 100644 (file)
index f1f42b9..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-// script.aculo.us builder.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-var Builder = {
-  NODEMAP: {
-    AREA: 'map',
-    CAPTION: 'table',
-    COL: 'table',
-    COLGROUP: 'table',
-    LEGEND: 'fieldset',
-    OPTGROUP: 'select',
-    OPTION: 'select',
-    PARAM: 'object',
-    TBODY: 'table',
-    TD: 'table',
-    TFOOT: 'table',
-    TH: 'table',
-    THEAD: 'table',
-    TR: 'table'
-  },
-  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
-  //       due to a Firefox bug
-  node: function(elementName) {
-    elementName = elementName.toUpperCase();
-
-    // try innerHTML approach
-    var parentTag = this.NODEMAP[elementName] || 'div';
-    var parentElement = document.createElement(parentTag);
-    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
-      parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
-    } catch(e) {}
-    var element = parentElement.firstChild || null;
-
-    // see if browser added wrapping tags
-    if(element && (element.tagName.toUpperCase() != elementName))
-      element = element.getElementsByTagName(elementName)[0];
-
-    // fallback to createElement approach
-    if(!element) element = document.createElement(elementName);
-
-    // abort if nothing could be created
-    if(!element) return;
-
-    // attributes (or text)
-    if(arguments[1])
-      if(this._isStringOrNumber(arguments[1]) ||
-        (arguments[1] instanceof Array) ||
-        arguments[1].tagName) {
-          this._children(element, arguments[1]);
-        } else {
-          var attrs = this._attributes(arguments[1]);
-          if(attrs.length) {
-            try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
-              parentElement.innerHTML = "<" +elementName + " " +
-                attrs + "></" + elementName + ">";
-            } catch(e) {}
-            element = parentElement.firstChild || null;
-            // workaround firefox 1.0.X bug
-            if(!element) {
-              element = document.createElement(elementName);
-              for(attr in arguments[1])
-                element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
-            }
-            if(element.tagName.toUpperCase() != elementName)
-              element = parentElement.getElementsByTagName(elementName)[0];
-          }
-        }
-
-    // text, or array of children
-    if(arguments[2])
-      this._children(element, arguments[2]);
-
-     return $(element);
-  },
-  _text: function(text) {
-     return document.createTextNode(text);
-  },
-
-  ATTR_MAP: {
-    'className': 'class',
-    'htmlFor': 'for'
-  },
-
-  _attributes: function(attributes) {
-    var attrs = [];
-    for(attribute in attributes)
-      attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
-          '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
-    return attrs.join(" ");
-  },
-  _children: function(element, children) {
-    if(children.tagName) {
-      element.appendChild(children);
-      return;
-    }
-    if(typeof children=='object') { // array can hold nodes and text
-      children.flatten().each( function(e) {
-        if(typeof e=='object')
-          element.appendChild(e);
-        else
-          if(Builder._isStringOrNumber(e))
-            element.appendChild(Builder._text(e));
-      });
-    } else
-      if(Builder._isStringOrNumber(children))
-        element.appendChild(Builder._text(children));
-  },
-  _isStringOrNumber: function(param) {
-    return(typeof param=='string' || typeof param=='number');
-  },
-  build: function(html) {
-    var element = this.node('div');
-    $(element).update(html.strip());
-    return element.down();
-  },
-  dump: function(scope) {
-    if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
-
-    var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
-      "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
-      "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
-      "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
-      "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
-      "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
-
-    tags.each( function(tag){
-      scope[tag] = function() {
-        return Builder.node.apply(Builder, [tag].concat($A(arguments)));
-      };
-    });
-  }
-};
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/controls.js b/wp-includes/js/scriptaculous/controls.js
deleted file mode 100644 (file)
index 7392fb6..0000000
+++ /dev/null
@@ -1,965 +0,0 @@
-// script.aculo.us controls.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//           (c) 2005-2009 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
-//           (c) 2005-2009 Jon Tirsen (http://www.tirsen.com)
-// Contributors:
-//  Richard Livsey
-//  Rahul Bhargava
-//  Rob Wills
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-// Autocompleter.Base handles all the autocompletion functionality
-// that's independent of the data source for autocompletion. This
-// includes drawing the autocompletion menu, observing keyboard
-// and mouse events, and similar.
-//
-// Specific autocompleters need to provide, at the very least,
-// a getUpdatedChoices function that will be invoked every time
-// the text inside the monitored textbox changes. This method
-// should get the text for which to provide autocompletion by
-// invoking this.getToken(), NOT by directly accessing
-// this.element.value. This is to allow incremental tokenized
-// autocompletion. Specific auto-completion logic (AJAX, etc)
-// belongs in getUpdatedChoices.
-//
-// Tokenized incremental autocompletion is enabled automatically
-// when an autocompleter is instantiated with the 'tokens' option
-// in the options parameter, e.g.:
-// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
-// will incrementally autocomplete with a comma as the token.
-// Additionally, ',' in the above example can be replaced with
-// a token array, e.g. { tokens: [',', '\n'] } which
-// enables autocompletion on multiple tokens. This is most
-// useful when one of the tokens is \n (a newline), as it
-// allows smart autocompletion after linebreaks.
-
-if(typeof Effect == 'undefined')
-  throw("controls.js requires including script.aculo.us' effects.js library");
-
-var Autocompleter = { };
-Autocompleter.Base = Class.create({
-  baseInitialize: function(element, update, options) {
-    element          = $(element);
-    this.element     = element;
-    this.update      = $(update);
-    this.hasFocus    = false;
-    this.changed     = false;
-    this.active      = false;
-    this.index       = 0;
-    this.entryCount  = 0;
-    this.oldElementValue = this.element.value;
-
-    if(this.setOptions)
-      this.setOptions(options);
-    else
-      this.options = options || { };
-
-    this.options.paramName    = this.options.paramName || this.element.name;
-    this.options.tokens       = this.options.tokens || [];
-    this.options.frequency    = this.options.frequency || 0.4;
-    this.options.minChars     = this.options.minChars || 1;
-    this.options.onShow       = this.options.onShow ||
-      function(element, update){
-        if(!update.style.position || update.style.position=='absolute') {
-          update.style.position = 'absolute';
-          Position.clone(element, update, {
-            setHeight: false,
-            offsetTop: element.offsetHeight
-          });
-        }
-        Effect.Appear(update,{duration:0.15});
-      };
-    this.options.onHide = this.options.onHide ||
-      function(element, update){ new Effect.Fade(update,{duration:0.15}) };
-
-    if(typeof(this.options.tokens) == 'string')
-      this.options.tokens = new Array(this.options.tokens);
-    // Force carriage returns as token delimiters anyway
-    if (!this.options.tokens.include('\n'))
-      this.options.tokens.push('\n');
-
-    this.observer = null;
-
-    this.element.setAttribute('autocomplete','off');
-
-    Element.hide(this.update);
-
-    Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
-    Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
-  },
-
-  show: function() {
-    if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
-    if(!this.iefix &&
-      (Prototype.Browser.IE) &&
-      (Element.getStyle(this.update, 'position')=='absolute')) {
-      new Insertion.After(this.update,
-       '<iframe id="' + this.update.id + '_iefix" '+
-       'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
-       'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
-      this.iefix = $(this.update.id+'_iefix');
-    }
-    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
-  },
-
-  fixIEOverlapping: function() {
-    Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
-    this.iefix.style.zIndex = 1;
-    this.update.style.zIndex = 2;
-    Element.show(this.iefix);
-  },
-
-  hide: function() {
-    this.stopIndicator();
-    if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
-    if(this.iefix) Element.hide(this.iefix);
-  },
-
-  startIndicator: function() {
-    if(this.options.indicator) Element.show(this.options.indicator);
-  },
-
-  stopIndicator: function() {
-    if(this.options.indicator) Element.hide(this.options.indicator);
-  },
-
-  onKeyPress: function(event) {
-    if(this.active)
-      switch(event.keyCode) {
-       case Event.KEY_TAB:
-       case Event.KEY_RETURN:
-         this.selectEntry();
-         Event.stop(event);
-       case Event.KEY_ESC:
-         this.hide();
-         this.active = false;
-         Event.stop(event);
-         return;
-       case Event.KEY_LEFT:
-       case Event.KEY_RIGHT:
-         return;
-       case Event.KEY_UP:
-         this.markPrevious();
-         this.render();
-         Event.stop(event);
-         return;
-       case Event.KEY_DOWN:
-         this.markNext();
-         this.render();
-         Event.stop(event);
-         return;
-      }
-     else
-       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
-         (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
-
-    this.changed = true;
-    this.hasFocus = true;
-
-    if(this.observer) clearTimeout(this.observer);
-      this.observer =
-        setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
-  },
-
-  activate: function() {
-    this.changed = false;
-    this.hasFocus = true;
-    this.getUpdatedChoices();
-  },
-
-  onHover: function(event) {
-    var element = Event.findElement(event, 'LI');
-    if(this.index != element.autocompleteIndex)
-    {
-        this.index = element.autocompleteIndex;
-        this.render();
-    }
-    Event.stop(event);
-  },
-
-  onClick: function(event) {
-    var element = Event.findElement(event, 'LI');
-    this.index = element.autocompleteIndex;
-    this.selectEntry();
-    this.hide();
-  },
-
-  onBlur: function(event) {
-    // needed to make click events working
-    setTimeout(this.hide.bind(this), 250);
-    this.hasFocus = false;
-    this.active = false;
-  },
-
-  render: function() {
-    if(this.entryCount > 0) {
-      for (var i = 0; i < this.entryCount; i++)
-        this.index==i ?
-          Element.addClassName(this.getEntry(i),"selected") :
-          Element.removeClassName(this.getEntry(i),"selected");
-      if(this.hasFocus) {
-        this.show();
-        this.active = true;
-      }
-    } else {
-      this.active = false;
-      this.hide();
-    }
-  },
-
-  markPrevious: function() {
-    if(this.index > 0) this.index--;
-      else this.index = this.entryCount-1;
-    this.getEntry(this.index).scrollIntoView(true);
-  },
-
-  markNext: function() {
-    if(this.index < this.entryCount-1) this.index++;
-      else this.index = 0;
-    this.getEntry(this.index).scrollIntoView(false);
-  },
-
-  getEntry: function(index) {
-    return this.update.firstChild.childNodes[index];
-  },
-
-  getCurrentEntry: function() {
-    return this.getEntry(this.index);
-  },
-
-  selectEntry: function() {
-    this.active = false;
-    this.updateElement(this.getCurrentEntry());
-  },
-
-  updateElement: function(selectedElement) {
-    if (this.options.updateElement) {
-      this.options.updateElement(selectedElement);
-      return;
-    }
-    var value = '';
-    if (this.options.select) {
-      var nodes = $(selectedElement).select('.' + this.options.select) || [];
-      if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
-    } else
-      value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
-
-    var bounds = this.getTokenBounds();
-    if (bounds[0] != -1) {
-      var newValue = this.element.value.substr(0, bounds[0]);
-      var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
-      if (whitespace)
-        newValue += whitespace[0];
-      this.element.value = newValue + value + this.element.value.substr(bounds[1]);
-    } else {
-      this.element.value = value;
-    }
-    this.oldElementValue = this.element.value;
-    this.element.focus();
-
-    if (this.options.afterUpdateElement)
-      this.options.afterUpdateElement(this.element, selectedElement);
-  },
-
-  updateChoices: function(choices) {
-    if(!this.changed && this.hasFocus) {
-      this.update.innerHTML = choices;
-      Element.cleanWhitespace(this.update);
-      Element.cleanWhitespace(this.update.down());
-
-      if(this.update.firstChild && this.update.down().childNodes) {
-        this.entryCount =
-          this.update.down().childNodes.length;
-        for (var i = 0; i < this.entryCount; i++) {
-          var entry = this.getEntry(i);
-          entry.autocompleteIndex = i;
-          this.addObservers(entry);
-        }
-      } else {
-        this.entryCount = 0;
-      }
-
-      this.stopIndicator();
-      this.index = 0;
-
-      if(this.entryCount==1 && this.options.autoSelect) {
-        this.selectEntry();
-        this.hide();
-      } else {
-        this.render();
-      }
-    }
-  },
-
-  addObservers: function(element) {
-    Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
-    Event.observe(element, "click", this.onClick.bindAsEventListener(this));
-  },
-
-  onObserverEvent: function() {
-    this.changed = false;
-    this.tokenBounds = null;
-    if(this.getToken().length>=this.options.minChars) {
-      this.getUpdatedChoices();
-    } else {
-      this.active = false;
-      this.hide();
-    }
-    this.oldElementValue = this.element.value;
-  },
-
-  getToken: function() {
-    var bounds = this.getTokenBounds();
-    return this.element.value.substring(bounds[0], bounds[1]).strip();
-  },
-
-  getTokenBounds: function() {
-    if (null != this.tokenBounds) return this.tokenBounds;
-    var value = this.element.value;
-    if (value.strip().empty()) return [-1, 0];
-    var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
-    var offset = (diff == this.oldElementValue.length ? 1 : 0);
-    var prevTokenPos = -1, nextTokenPos = value.length;
-    var tp;
-    for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
-      tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
-      if (tp > prevTokenPos) prevTokenPos = tp;
-      tp = value.indexOf(this.options.tokens[index], diff + offset);
-      if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
-    }
-    return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
-  }
-});
-
-Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
-  var boundary = Math.min(newS.length, oldS.length);
-  for (var index = 0; index < boundary; ++index)
-    if (newS[index] != oldS[index])
-      return index;
-  return boundary;
-};
-
-Ajax.Autocompleter = Class.create(Autocompleter.Base, {
-  initialize: function(element, update, url, options) {
-    this.baseInitialize(element, update, options);
-    this.options.asynchronous  = true;
-    this.options.onComplete    = this.onComplete.bind(this);
-    this.options.defaultParams = this.options.parameters || null;
-    this.url                   = url;
-  },
-
-  getUpdatedChoices: function() {
-    this.startIndicator();
-
-    var entry = encodeURIComponent(this.options.paramName) + '=' +
-      encodeURIComponent(this.getToken());
-
-    this.options.parameters = this.options.callback ?
-      this.options.callback(this.element, entry) : entry;
-
-    if(this.options.defaultParams)
-      this.options.parameters += '&' + this.options.defaultParams;
-
-    new Ajax.Request(this.url, this.options);
-  },
-
-  onComplete: function(request) {
-    this.updateChoices(request.responseText);
-  }
-});
-
-// The local array autocompleter. Used when you'd prefer to
-// inject an array of autocompletion options into the page, rather
-// than sending out Ajax queries, which can be quite slow sometimes.
-//
-// The constructor takes four parameters. The first two are, as usual,
-// the id of the monitored textbox, and id of the autocompletion menu.
-// The third is the array you want to autocomplete from, and the fourth
-// is the options block.
-//
-// Extra local autocompletion options:
-// - choices - How many autocompletion choices to offer
-//
-// - partialSearch - If false, the autocompleter will match entered
-//                    text only at the beginning of strings in the
-//                    autocomplete array. Defaults to true, which will
-//                    match text at the beginning of any *word* in the
-//                    strings in the autocomplete array. If you want to
-//                    search anywhere in the string, additionally set
-//                    the option fullSearch to true (default: off).
-//
-// - fullSsearch - Search anywhere in autocomplete array strings.
-//
-// - partialChars - How many characters to enter before triggering
-//                   a partial match (unlike minChars, which defines
-//                   how many characters are required to do any match
-//                   at all). Defaults to 2.
-//
-// - ignoreCase - Whether to ignore case when autocompleting.
-//                 Defaults to true.
-//
-// It's possible to pass in a custom function as the 'selector'
-// option, if you prefer to write your own autocompletion logic.
-// In that case, the other options above will not apply unless
-// you support them.
-
-Autocompleter.Local = Class.create(Autocompleter.Base, {
-  initialize: function(element, update, array, options) {
-    this.baseInitialize(element, update, options);
-    this.options.array = array;
-  },
-
-  getUpdatedChoices: function() {
-    this.updateChoices(this.options.selector(this));
-  },
-
-  setOptions: function(options) {
-    this.options = Object.extend({
-      choices: 10,
-      partialSearch: true,
-      partialChars: 2,
-      ignoreCase: true,
-      fullSearch: false,
-      selector: function(instance) {
-        var ret       = []; // Beginning matches
-        var partial   = []; // Inside matches
-        var entry     = instance.getToken();
-        var count     = 0;
-
-        for (var i = 0; i < instance.options.array.length &&
-          ret.length < instance.options.choices ; i++) {
-
-          var elem = instance.options.array[i];
-          var foundPos = instance.options.ignoreCase ?
-            elem.toLowerCase().indexOf(entry.toLowerCase()) :
-            elem.indexOf(entry);
-
-          while (foundPos != -1) {
-            if (foundPos == 0 && elem.length != entry.length) {
-              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
-                elem.substr(entry.length) + "</li>");
-              break;
-            } else if (entry.length >= instance.options.partialChars &&
-              instance.options.partialSearch && foundPos != -1) {
-              if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
-                partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
-                  elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
-                  foundPos + entry.length) + "</li>");
-                break;
-              }
-            }
-
-            foundPos = instance.options.ignoreCase ?
-              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
-              elem.indexOf(entry, foundPos + 1);
-
-          }
-        }
-        if (partial.length)
-          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
-        return "<ul>" + ret.join('') + "</ul>";
-      }
-    }, options || { });
-  }
-});
-
-// AJAX in-place editor and collection editor
-// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
-
-// Use this if you notice weird scrolling problems on some browsers,
-// the DOM might be a bit confused when this gets called so do this
-// waits 1 ms (with setTimeout) until it does the activation
-Field.scrollFreeActivate = function(field) {
-  setTimeout(function() {
-    Field.activate(field);
-  }, 1);
-};
-
-Ajax.InPlaceEditor = Class.create({
-  initialize: function(element, url, options) {
-    this.url = url;
-    this.element = element = $(element);
-    this.prepareOptions();
-    this._controls = { };
-    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
-    Object.extend(this.options, options || { });
-    if (!this.options.formId && this.element.id) {
-      this.options.formId = this.element.id + '-inplaceeditor';
-      if ($(this.options.formId))
-        this.options.formId = '';
-    }
-    if (this.options.externalControl)
-      this.options.externalControl = $(this.options.externalControl);
-    if (!this.options.externalControl)
-      this.options.externalControlOnly = false;
-    this._originalBackground = this.element.getStyle('background-color') || 'transparent';
-    this.element.title = this.options.clickToEditText;
-    this._boundCancelHandler = this.handleFormCancellation.bind(this);
-    this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
-    this._boundFailureHandler = this.handleAJAXFailure.bind(this);
-    this._boundSubmitHandler = this.handleFormSubmission.bind(this);
-    this._boundWrapperHandler = this.wrapUp.bind(this);
-    this.registerListeners();
-  },
-  checkForEscapeOrReturn: function(e) {
-    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
-    if (Event.KEY_ESC == e.keyCode)
-      this.handleFormCancellation(e);
-    else if (Event.KEY_RETURN == e.keyCode)
-      this.handleFormSubmission(e);
-  },
-  createControl: function(mode, handler, extraClasses) {
-    var control = this.options[mode + 'Control'];
-    var text = this.options[mode + 'Text'];
-    if ('button' == control) {
-      var btn = document.createElement('input');
-      btn.type = 'submit';
-      btn.value = text;
-      btn.className = 'editor_' + mode + '_button';
-      if ('cancel' == mode)
-        btn.onclick = this._boundCancelHandler;
-      this._form.appendChild(btn);
-      this._controls[mode] = btn;
-    } else if ('link' == control) {
-      var link = document.createElement('a');
-      link.href = '#';
-      link.appendChild(document.createTextNode(text));
-      link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
-      link.className = 'editor_' + mode + '_link';
-      if (extraClasses)
-        link.className += ' ' + extraClasses;
-      this._form.appendChild(link);
-      this._controls[mode] = link;
-    }
-  },
-  createEditField: function() {
-    var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
-    var fld;
-    if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
-      fld = document.createElement('input');
-      fld.type = 'text';
-      var size = this.options.size || this.options.cols || 0;
-      if (0 < size) fld.size = size;
-    } else {
-      fld = document.createElement('textarea');
-      fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
-      fld.cols = this.options.cols || 40;
-    }
-    fld.name = this.options.paramName;
-    fld.value = text; // No HTML breaks conversion anymore
-    fld.className = 'editor_field';
-    if (this.options.submitOnBlur)
-      fld.onblur = this._boundSubmitHandler;
-    this._controls.editor = fld;
-    if (this.options.loadTextURL)
-      this.loadExternalText();
-    this._form.appendChild(this._controls.editor);
-  },
-  createForm: function() {
-    var ipe = this;
-    function addText(mode, condition) {
-      var text = ipe.options['text' + mode + 'Controls'];
-      if (!text || condition === false) return;
-      ipe._form.appendChild(document.createTextNode(text));
-    };
-    this._form = $(document.createElement('form'));
-    this._form.id = this.options.formId;
-    this._form.addClassName(this.options.formClassName);
-    this._form.onsubmit = this._boundSubmitHandler;
-    this.createEditField();
-    if ('textarea' == this._controls.editor.tagName.toLowerCase())
-      this._form.appendChild(document.createElement('br'));
-    if (this.options.onFormCustomization)
-      this.options.onFormCustomization(this, this._form);
-    addText('Before', this.options.okControl || this.options.cancelControl);
-    this.createControl('ok', this._boundSubmitHandler);
-    addText('Between', this.options.okControl && this.options.cancelControl);
-    this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
-    addText('After', this.options.okControl || this.options.cancelControl);
-  },
-  destroy: function() {
-    if (this._oldInnerHTML)
-      this.element.innerHTML = this._oldInnerHTML;
-    this.leaveEditMode();
-    this.unregisterListeners();
-  },
-  enterEditMode: function(e) {
-    if (this._saving || this._editing) return;
-    this._editing = true;
-    this.triggerCallback('onEnterEditMode');
-    if (this.options.externalControl)
-      this.options.externalControl.hide();
-    this.element.hide();
-    this.createForm();
-    this.element.parentNode.insertBefore(this._form, this.element);
-    if (!this.options.loadTextURL)
-      this.postProcessEditField();
-    if (e) Event.stop(e);
-  },
-  enterHover: function(e) {
-    if (this.options.hoverClassName)
-      this.element.addClassName(this.options.hoverClassName);
-    if (this._saving) return;
-    this.triggerCallback('onEnterHover');
-  },
-  getText: function() {
-    return this.element.innerHTML.unescapeHTML();
-  },
-  handleAJAXFailure: function(transport) {
-    this.triggerCallback('onFailure', transport);
-    if (this._oldInnerHTML) {
-      this.element.innerHTML = this._oldInnerHTML;
-      this._oldInnerHTML = null;
-    }
-  },
-  handleFormCancellation: function(e) {
-    this.wrapUp();
-    if (e) Event.stop(e);
-  },
-  handleFormSubmission: function(e) {
-    var form = this._form;
-    var value = $F(this._controls.editor);
-    this.prepareSubmission();
-    var params = this.options.callback(form, value) || '';
-    if (Object.isString(params))
-      params = params.toQueryParams();
-    params.editorId = this.element.id;
-    if (this.options.htmlResponse) {
-      var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
-      Object.extend(options, {
-        parameters: params,
-        onComplete: this._boundWrapperHandler,
-        onFailure: this._boundFailureHandler
-      });
-      new Ajax.Updater({ success: this.element }, this.url, options);
-    } else {
-      var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
-      Object.extend(options, {
-        parameters: params,
-        onComplete: this._boundWrapperHandler,
-        onFailure: this._boundFailureHandler
-      });
-      new Ajax.Request(this.url, options);
-    }
-    if (e) Event.stop(e);
-  },
-  leaveEditMode: function() {
-    this.element.removeClassName(this.options.savingClassName);
-    this.removeForm();
-    this.leaveHover();
-    this.element.style.backgroundColor = this._originalBackground;
-    this.element.show();
-    if (this.options.externalControl)
-      this.options.externalControl.show();
-    this._saving = false;
-    this._editing = false;
-    this._oldInnerHTML = null;
-    this.triggerCallback('onLeaveEditMode');
-  },
-  leaveHover: function(e) {
-    if (this.options.hoverClassName)
-      this.element.removeClassName(this.options.hoverClassName);
-    if (this._saving) return;
-    this.triggerCallback('onLeaveHover');
-  },
-  loadExternalText: function() {
-    this._form.addClassName(this.options.loadingClassName);
-    this._controls.editor.disabled = true;
-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
-    Object.extend(options, {
-      parameters: 'editorId=' + encodeURIComponent(this.element.id),
-      onComplete: Prototype.emptyFunction,
-      onSuccess: function(transport) {
-        this._form.removeClassName(this.options.loadingClassName);
-        var text = transport.responseText;
-        if (this.options.stripLoadedTextTags)
-          text = text.stripTags();
-        this._controls.editor.value = text;
-        this._controls.editor.disabled = false;
-        this.postProcessEditField();
-      }.bind(this),
-      onFailure: this._boundFailureHandler
-    });
-    new Ajax.Request(this.options.loadTextURL, options);
-  },
-  postProcessEditField: function() {
-    var fpc = this.options.fieldPostCreation;
-    if (fpc)
-      $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
-  },
-  prepareOptions: function() {
-    this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
-    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
-    [this._extraDefaultOptions].flatten().compact().each(function(defs) {
-      Object.extend(this.options, defs);
-    }.bind(this));
-  },
-  prepareSubmission: function() {
-    this._saving = true;
-    this.removeForm();
-    this.leaveHover();
-    this.showSaving();
-  },
-  registerListeners: function() {
-    this._listeners = { };
-    var listener;
-    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
-      listener = this[pair.value].bind(this);
-      this._listeners[pair.key] = listener;
-      if (!this.options.externalControlOnly)
-        this.element.observe(pair.key, listener);
-      if (this.options.externalControl)
-        this.options.externalControl.observe(pair.key, listener);
-    }.bind(this));
-  },
-  removeForm: function() {
-    if (!this._form) return;
-    this._form.remove();
-    this._form = null;
-    this._controls = { };
-  },
-  showSaving: function() {
-    this._oldInnerHTML = this.element.innerHTML;
-    this.element.innerHTML = this.options.savingText;
-    this.element.addClassName(this.options.savingClassName);
-    this.element.style.backgroundColor = this._originalBackground;
-    this.element.show();
-  },
-  triggerCallback: function(cbName, arg) {
-    if ('function' == typeof this.options[cbName]) {
-      this.options[cbName](this, arg);
-    }
-  },
-  unregisterListeners: function() {
-    $H(this._listeners).each(function(pair) {
-      if (!this.options.externalControlOnly)
-        this.element.stopObserving(pair.key, pair.value);
-      if (this.options.externalControl)
-        this.options.externalControl.stopObserving(pair.key, pair.value);
-    }.bind(this));
-  },
-  wrapUp: function(transport) {
-    this.leaveEditMode();
-    // Can't use triggerCallback due to backward compatibility: requires
-    // binding + direct element
-    this._boundComplete(transport, this.element);
-  }
-});
-
-Object.extend(Ajax.InPlaceEditor.prototype, {
-  dispose: Ajax.InPlaceEditor.prototype.destroy
-});
-
-Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
-  initialize: function($super, element, url, options) {
-    this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
-    $super(element, url, options);
-  },
-
-  createEditField: function() {
-    var list = document.createElement('select');
-    list.name = this.options.paramName;
-    list.size = 1;
-    this._controls.editor = list;
-    this._collection = this.options.collection || [];
-    if (this.options.loadCollectionURL)
-      this.loadCollection();
-    else
-      this.checkForExternalText();
-    this._form.appendChild(this._controls.editor);
-  },
-
-  loadCollection: function() {
-    this._form.addClassName(this.options.loadingClassName);
-    this.showLoadingText(this.options.loadingCollectionText);
-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
-    Object.extend(options, {
-      parameters: 'editorId=' + encodeURIComponent(this.element.id),
-      onComplete: Prototype.emptyFunction,
-      onSuccess: function(transport) {
-        var js = transport.responseText.strip();
-        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
-          throw('Server returned an invalid collection representation.');
-        this._collection = eval(js);
-        this.checkForExternalText();
-      }.bind(this),
-      onFailure: this.onFailure
-    });
-    new Ajax.Request(this.options.loadCollectionURL, options);
-  },
-
-  showLoadingText: function(text) {
-    this._controls.editor.disabled = true;
-    var tempOption = this._controls.editor.firstChild;
-    if (!tempOption) {
-      tempOption = document.createElement('option');
-      tempOption.value = '';
-      this._controls.editor.appendChild(tempOption);
-      tempOption.selected = true;
-    }
-    tempOption.update((text || '').stripScripts().stripTags());
-  },
-
-  checkForExternalText: function() {
-    this._text = this.getText();
-    if (this.options.loadTextURL)
-      this.loadExternalText();
-    else
-      this.buildOptionList();
-  },
-
-  loadExternalText: function() {
-    this.showLoadingText(this.options.loadingText);
-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
-    Object.extend(options, {
-      parameters: 'editorId=' + encodeURIComponent(this.element.id),
-      onComplete: Prototype.emptyFunction,
-      onSuccess: function(transport) {
-        this._text = transport.responseText.strip();
-        this.buildOptionList();
-      }.bind(this),
-      onFailure: this.onFailure
-    });
-    new Ajax.Request(this.options.loadTextURL, options);
-  },
-
-  buildOptionList: function() {
-    this._form.removeClassName(this.options.loadingClassName);
-    this._collection = this._collection.map(function(entry) {
-      return 2 === entry.length ? entry : [entry, entry].flatten();
-    });
-    var marker = ('value' in this.options) ? this.options.value : this._text;
-    var textFound = this._collection.any(function(entry) {
-      return entry[0] == marker;
-    }.bind(this));
-    this._controls.editor.update('');
-    var option;
-    this._collection.each(function(entry, index) {
-      option = document.createElement('option');
-      option.value = entry[0];
-      option.selected = textFound ? entry[0] == marker : 0 == index;
-      option.appendChild(document.createTextNode(entry[1]));
-      this._controls.editor.appendChild(option);
-    }.bind(this));
-    this._controls.editor.disabled = false;
-    Field.scrollFreeActivate(this._controls.editor);
-  }
-});
-
-//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
-//**** This only  exists for a while,  in order to  let ****
-//**** users adapt to  the new API.  Read up on the new ****
-//**** API and convert your code to it ASAP!            ****
-
-Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
-  if (!options) return;
-  function fallback(name, expr) {
-    if (name in options || expr === undefined) return;
-    options[name] = expr;
-  };
-  fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
-    options.cancelLink == options.cancelButton == false ? false : undefined)));
-  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
-    options.okLink == options.okButton == false ? false : undefined)));
-  fallback('highlightColor', options.highlightcolor);
-  fallback('highlightEndColor', options.highlightendcolor);
-};
-
-Object.extend(Ajax.InPlaceEditor, {
-  DefaultOptions: {
-    ajaxOptions: { },
-    autoRows: 3,                                // Use when multi-line w/ rows == 1
-    cancelControl: 'link',                      // 'link'|'button'|false
-    cancelText: 'cancel',
-    clickToEditText: 'Click to edit',
-    externalControl: null,                      // id|elt
-    externalControlOnly: false,
-    fieldPostCreation: 'activate',              // 'activate'|'focus'|false
-    formClassName: 'inplaceeditor-form',
-    formId: null,                               // id|elt
-    highlightColor: '#ffff99',
-    highlightEndColor: '#ffffff',
-    hoverClassName: '',
-    htmlResponse: true,
-    loadingClassName: 'inplaceeditor-loading',
-    loadingText: 'Loading...',
-    okControl: 'button',                        // 'link'|'button'|false
-    okText: 'ok',
-    paramName: 'value',
-    rows: 1,                                    // If 1 and multi-line, uses autoRows
-    savingClassName: 'inplaceeditor-saving',
-    savingText: 'Saving...',
-    size: 0,
-    stripLoadedTextTags: false,
-    submitOnBlur: false,
-    textAfterControls: '',
-    textBeforeControls: '',
-    textBetweenControls: ''
-  },
-  DefaultCallbacks: {
-    callback: function(form) {
-      return Form.serialize(form);
-    },
-    onComplete: function(transport, element) {
-      // For backward compatibility, this one is bound to the IPE, and passes
-      // the element directly.  It was too often customized, so we don't break it.
-      new Effect.Highlight(element, {
-        startcolor: this.options.highlightColor, keepBackgroundImage: true });
-    },
-    onEnterEditMode: null,
-    onEnterHover: function(ipe) {
-      ipe.element.style.backgroundColor = ipe.options.highlightColor;
-      if (ipe._effect)
-        ipe._effect.cancel();
-    },
-    onFailure: function(transport, ipe) {
-      alert('Error communication with the server: ' + transport.responseText.stripTags());
-    },
-    onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
-    onLeaveEditMode: null,
-    onLeaveHover: function(ipe) {
-      ipe._effect = new Effect.Highlight(ipe.element, {
-        startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
-        restorecolor: ipe._originalBackground, keepBackgroundImage: true
-      });
-    }
-  },
-  Listeners: {
-    click: 'enterEditMode',
-    keydown: 'checkForEscapeOrReturn',
-    mouseover: 'enterHover',
-    mouseout: 'leaveHover'
-  }
-});
-
-Ajax.InPlaceCollectionEditor.DefaultOptions = {
-  loadingCollectionText: 'Loading options...'
-};
-
-// Delayed observer, like Form.Element.Observer,
-// but waits for delay after last key input
-// Ideal for live-search fields
-
-Form.Element.DelayedObserver = Class.create({
-  initialize: function(element, delay, callback) {
-    this.delay     = delay || 0.5;
-    this.element   = $(element);
-    this.callback  = callback;
-    this.timer     = null;
-    this.lastValue = $F(this.element);
-    Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
-  },
-  delayedListener: function(event) {
-    if(this.lastValue == $F(this.element)) return;
-    if(this.timer) clearTimeout(this.timer);
-    this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
-    this.lastValue = $F(this.element);
-  },
-  onTimerEvent: function() {
-    this.timer = null;
-    this.callback(this.element, $F(this.element));
-  }
-});
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/dragdrop.js b/wp-includes/js/scriptaculous/dragdrop.js
deleted file mode 100644 (file)
index 15c6dbc..0000000
+++ /dev/null
@@ -1,974 +0,0 @@
-// script.aculo.us dragdrop.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-if(Object.isUndefined(Effect))
-  throw("dragdrop.js requires including script.aculo.us' effects.js library");
-
-var Droppables = {
-  drops: [],
-
-  remove: function(element) {
-    this.drops = this.drops.reject(function(d) { return d.element==$(element) });
-  },
-
-  add: function(element) {
-    element = $(element);
-    var options = Object.extend({
-      greedy:     true,
-      hoverclass: null,
-      tree:       false
-    }, arguments[1] || { });
-
-    // cache containers
-    if(options.containment) {
-      options._containers = [];
-      var containment = options.containment;
-      if(Object.isArray(containment)) {
-        containment.each( function(c) { options._containers.push($(c)) });
-      } else {
-        options._containers.push($(containment));
-      }
-    }
-
-    if(options.accept) options.accept = [options.accept].flatten();
-
-    Element.makePositioned(element); // fix IE
-    options.element = element;
-
-    this.drops.push(options);
-  },
-
-  findDeepestChild: function(drops) {
-    deepest = drops[0];
-
-    for (i = 1; i < drops.length; ++i)
-      if (Element.isParent(drops[i].element, deepest.element))
-        deepest = drops[i];
-
-    return deepest;
-  },
-
-  isContained: function(element, drop) {
-    var containmentNode;
-    if(drop.tree) {
-      containmentNode = element.treeNode;
-    } else {
-      containmentNode = element.parentNode;
-    }
-    return drop._containers.detect(function(c) { return containmentNode == c });
-  },
-
-  isAffected: function(point, element, drop) {
-    return (
-      (drop.element!=element) &&
-      ((!drop._containers) ||
-        this.isContained(element, drop)) &&
-      ((!drop.accept) ||
-        (Element.classNames(element).detect(
-          function(v) { return drop.accept.include(v) } ) )) &&
-      Position.within(drop.element, point[0], point[1]) );
-  },
-
-  deactivate: function(drop) {
-    if(drop.hoverclass)
-      Element.removeClassName(drop.element, drop.hoverclass);
-    this.last_active = null;
-  },
-
-  activate: function(drop) {
-    if(drop.hoverclass)
-      Element.addClassName(drop.element, drop.hoverclass);
-    this.last_active = drop;
-  },
-
-  show: function(point, element) {
-    if(!this.drops.length) return;
-    var drop, affected = [];
-
-    this.drops.each( function(drop) {
-      if(Droppables.isAffected(point, element, drop))
-        affected.push(drop);
-    });
-
-    if(affected.length>0)
-      drop = Droppables.findDeepestChild(affected);
-
-    if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);
-    if (drop) {
-      Position.within(drop.element, point[0], point[1]);
-      if(drop.onHover)
-        drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
-
-      if (drop != this.last_active) Droppables.activate(drop);
-    }
-  },
-
-  fire: function(event, element) {
-    if(!this.last_active) return;
-    Position.prepare();
-
-    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
-      if (this.last_active.onDrop) {
-        this.last_active.onDrop(element, this.last_active.element, event);
-        return true;
-      }
-  },
-
-  reset: function() {
-    if(this.last_active)
-      this.deactivate(this.last_active);
-  }
-};
-
-var Draggables = {
-  drags: [],
-  observers: [],
-
-  register: function(draggable) {
-    if(this.drags.length == 0) {
-      this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
-      this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
-      this.eventKeypress  = this.keyPress.bindAsEventListener(this);
-
-      Event.observe(document, "mouseup", this.eventMouseUp);
-      Event.observe(document, "mousemove", this.eventMouseMove);
-      Event.observe(document, "keypress", this.eventKeypress);
-    }
-    this.drags.push(draggable);
-  },
-
-  unregister: function(draggable) {
-    this.drags = this.drags.reject(function(d) { return d==draggable });
-    if(this.drags.length == 0) {
-      Event.stopObserving(document, "mouseup", this.eventMouseUp);
-      Event.stopObserving(document, "mousemove", this.eventMouseMove);
-      Event.stopObserving(document, "keypress", this.eventKeypress);
-    }
-  },
-
-  activate: function(draggable) {
-    if(draggable.options.delay) {
-      this._timeout = setTimeout(function() {
-        Draggables._timeout = null;
-        window.focus();
-        Draggables.activeDraggable = draggable;
-      }.bind(this), draggable.options.delay);
-    } else {
-      window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
-      this.activeDraggable = draggable;
-    }
-  },
-
-  deactivate: function() {
-    this.activeDraggable = null;
-  },
-
-  updateDrag: function(event) {
-    if(!this.activeDraggable) return;
-    var pointer = [Event.pointerX(event), Event.pointerY(event)];
-    // Mozilla-based browsers fire successive mousemove events with
-    // the same coordinates, prevent needless redrawing (moz bug?)
-    if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
-    this._lastPointer = pointer;
-
-    this.activeDraggable.updateDrag(event, pointer);
-  },
-
-  endDrag: function(event) {
-    if(this._timeout) {
-      clearTimeout(this._timeout);
-      this._timeout = null;
-    }
-    if(!this.activeDraggable) return;
-    this._lastPointer = null;
-    this.activeDraggable.endDrag(event);
-    this.activeDraggable = null;
-  },
-
-  keyPress: function(event) {
-    if(this.activeDraggable)
-      this.activeDraggable.keyPress(event);
-  },
-
-  addObserver: function(observer) {
-    this.observers.push(observer);
-    this._cacheObserverCallbacks();
-  },
-
-  removeObserver: function(element) {  // element instead of observer fixes mem leaks
-    this.observers = this.observers.reject( function(o) { return o.element==element });
-    this._cacheObserverCallbacks();
-  },
-
-  notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'
-    if(this[eventName+'Count'] > 0)
-      this.observers.each( function(o) {
-        if(o[eventName]) o[eventName](eventName, draggable, event);
-      });
-    if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
-  },
-
-  _cacheObserverCallbacks: function() {
-    ['onStart','onEnd','onDrag'].each( function(eventName) {
-      Draggables[eventName+'Count'] = Draggables.observers.select(
-        function(o) { return o[eventName]; }
-      ).length;
-    });
-  }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Draggable = Class.create({
-  initialize: function(element) {
-    var defaults = {
-      handle: false,
-      reverteffect: function(element, top_offset, left_offset) {
-        var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
-        new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
-          queue: {scope:'_draggable', position:'end'}
-        });
-      },
-      endeffect: function(element) {
-        var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
-        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
-          queue: {scope:'_draggable', position:'end'},
-          afterFinish: function(){
-            Draggable._dragging[element] = false
-          }
-        });
-      },
-      zindex: 1000,
-      revert: false,
-      quiet: false,
-      scroll: false,
-      scrollSensitivity: 20,
-      scrollSpeed: 15,
-      snap: false,  // false, or xy or [x,y] or function(x,y){ return [x,y] }
-      delay: 0
-    };
-
-    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
-      Object.extend(defaults, {
-        starteffect: function(element) {
-          element._opacity = Element.getOpacity(element);
-          Draggable._dragging[element] = true;
-          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
-        }
-      });
-
-    var options = Object.extend(defaults, arguments[1] || { });
-
-    this.element = $(element);
-
-    if(options.handle && Object.isString(options.handle))
-      this.handle = this.element.down('.'+options.handle, 0);
-
-    if(!this.handle) this.handle = $(options.handle);
-    if(!this.handle) this.handle = this.element;
-
-    if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
-      options.scroll = $(options.scroll);
-      this._isScrollChild = Element.childOf(this.element, options.scroll);
-    }
-
-    Element.makePositioned(this.element); // fix IE
-
-    this.options  = options;
-    this.dragging = false;
-
-    this.eventMouseDown = this.initDrag.bindAsEventListener(this);
-    Event.observe(this.handle, "mousedown", this.eventMouseDown);
-
-    Draggables.register(this);
-  },
-
-  destroy: function() {
-    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
-    Draggables.unregister(this);
-  },
-
-  currentDelta: function() {
-    return([
-      parseInt(Element.getStyle(this.element,'left') || '0'),
-      parseInt(Element.getStyle(this.element,'top') || '0')]);
-  },
-
-  initDrag: function(event) {
-    if(!Object.isUndefined(Draggable._dragging[this.element]) &&
-      Draggable._dragging[this.element]) return;
-    if(Event.isLeftClick(event)) {
-      // abort on form elements, fixes a Firefox issue
-      var src = Event.element(event);
-      if((tag_name = src.tagName.toUpperCase()) && (
-        tag_name=='INPUT' ||
-        tag_name=='SELECT' ||
-        tag_name=='OPTION' ||
-        tag_name=='BUTTON' ||
-        tag_name=='TEXTAREA')) return;
-
-      var pointer = [Event.pointerX(event), Event.pointerY(event)];
-      var pos     = this.element.cumulativeOffset();
-      this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
-
-      Draggables.activate(this);
-      Event.stop(event);
-    }
-  },
-
-  startDrag: function(event) {
-    this.dragging = true;
-    if(!this.delta)
-      this.delta = this.currentDelta();
-
-    if(this.options.zindex) {
-      this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
-      this.element.style.zIndex = this.options.zindex;
-    }
-
-    if(this.options.ghosting) {
-      this._clone = this.element.cloneNode(true);
-      this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
-      if (!this._originallyAbsolute)
-        Position.absolutize(this.element);
-      this.element.parentNode.insertBefore(this._clone, this.element);
-    }
-
-    if(this.options.scroll) {
-      if (this.options.scroll == window) {
-        var where = this._getWindowScroll(this.options.scroll);
-        this.originalScrollLeft = where.left;
-        this.originalScrollTop = where.top;
-      } else {
-        this.originalScrollLeft = this.options.scroll.scrollLeft;
-        this.originalScrollTop = this.options.scroll.scrollTop;
-      }
-    }
-
-    Draggables.notify('onStart', this, event);
-
-    if(this.options.starteffect) this.options.starteffect(this.element);
-  },
-
-  updateDrag: function(event, pointer) {
-    if(!this.dragging) this.startDrag(event);
-
-    if(!this.options.quiet){
-      Position.prepare();
-      Droppables.show(pointer, this.element);
-    }
-
-    Draggables.notify('onDrag', this, event);
-
-    this.draw(pointer);
-    if(this.options.change) this.options.change(this);
-
-    if(this.options.scroll) {
-      this.stopScrolling();
-
-      var p;
-      if (this.options.scroll == window) {
-        with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
-      } else {
-        p = Position.page(this.options.scroll);
-        p[0] += this.options.scroll.scrollLeft + Position.deltaX;
-        p[1] += this.options.scroll.scrollTop + Position.deltaY;
-        p.push(p[0]+this.options.scroll.offsetWidth);
-        p.push(p[1]+this.options.scroll.offsetHeight);
-      }
-      var speed = [0,0];
-      if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
-      if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
-      if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
-      if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
-      this.startScrolling(speed);
-    }
-
-    // fix AppleWebKit rendering
-    if(Prototype.Browser.WebKit) window.scrollBy(0,0);
-
-    Event.stop(event);
-  },
-
-  finishDrag: function(event, success) {
-    this.dragging = false;
-
-    if(this.options.quiet){
-      Position.prepare();
-      var pointer = [Event.pointerX(event), Event.pointerY(event)];
-      Droppables.show(pointer, this.element);
-    }
-
-    if(this.options.ghosting) {
-      if (!this._originallyAbsolute)
-        Position.relativize(this.element);
-      delete this._originallyAbsolute;
-      Element.remove(this._clone);
-      this._clone = null;
-    }
-
-    var dropped = false;
-    if(success) {
-      dropped = Droppables.fire(event, this.element);
-      if (!dropped) dropped = false;
-    }
-    if(dropped && this.options.onDropped) this.options.onDropped(this.element);
-    Draggables.notify('onEnd', this, event);
-
-    var revert = this.options.revert;
-    if(revert && Object.isFunction(revert)) revert = revert(this.element);
-
-    var d = this.currentDelta();
-    if(revert && this.options.reverteffect) {
-      if (dropped == 0 || revert != 'failure')
-        this.options.reverteffect(this.element,
-          d[1]-this.delta[1], d[0]-this.delta[0]);
-    } else {
-      this.delta = d;
-    }
-
-    if(this.options.zindex)
-      this.element.style.zIndex = this.originalZ;
-
-    if(this.options.endeffect)
-      this.options.endeffect(this.element);
-
-    Draggables.deactivate(this);
-    Droppables.reset();
-  },
-
-  keyPress: function(event) {
-    if(event.keyCode!=Event.KEY_ESC) return;
-    this.finishDrag(event, false);
-    Event.stop(event);
-  },
-
-  endDrag: function(event) {
-    if(!this.dragging) return;
-    this.stopScrolling();
-    this.finishDrag(event, true);
-    Event.stop(event);
-  },
-
-  draw: function(point) {
-    var pos = this.element.cumulativeOffset();
-    if(this.options.ghosting) {
-      var r   = Position.realOffset(this.element);
-      pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
-    }
-
-    var d = this.currentDelta();
-    pos[0] -= d[0]; pos[1] -= d[1];
-
-    if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
-      pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
-      pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
-    }
-
-    var p = [0,1].map(function(i){
-      return (point[i]-pos[i]-this.offset[i])
-    }.bind(this));
-
-    if(this.options.snap) {
-      if(Object.isFunction(this.options.snap)) {
-        p = this.options.snap(p[0],p[1],this);
-      } else {
-      if(Object.isArray(this.options.snap)) {
-        p = p.map( function(v, i) {
-          return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this));
-      } else {
-        p = p.map( function(v) {
-          return (v/this.options.snap).round()*this.options.snap }.bind(this));
-      }
-    }}
-
-    var style = this.element.style;
-    if((!this.options.constraint) || (this.options.constraint=='horizontal'))
-      style.left = p[0] + "px";
-    if((!this.options.constraint) || (this.options.constraint=='vertical'))
-      style.top  = p[1] + "px";
-
-    if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
-  },
-
-  stopScrolling: function() {
-    if(this.scrollInterval) {
-      clearInterval(this.scrollInterval);
-      this.scrollInterval = null;
-      Draggables._lastScrollPointer = null;
-    }
-  },
-
-  startScrolling: function(speed) {
-    if(!(speed[0] || speed[1])) return;
-    this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
-    this.lastScrolled = new Date();
-    this.scrollInterval = setInterval(this.scroll.bind(this), 10);
-  },
-
-  scroll: function() {
-    var current = new Date();
-    var delta = current - this.lastScrolled;
-    this.lastScrolled = current;
-    if(this.options.scroll == window) {
-      with (this._getWindowScroll(this.options.scroll)) {
-        if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
-          var d = delta / 1000;
-          this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
-        }
-      }
-    } else {
-      this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
-      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;
-    }
-
-    Position.prepare();
-    Droppables.show(Draggables._lastPointer, this.element);
-    Draggables.notify('onDrag', this);
-    if (this._isScrollChild) {
-      Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
-      Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
-      Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
-      if (Draggables._lastScrollPointer[0] < 0)
-        Draggables._lastScrollPointer[0] = 0;
-      if (Draggables._lastScrollPointer[1] < 0)
-        Draggables._lastScrollPointer[1] = 0;
-      this.draw(Draggables._lastScrollPointer);
-    }
-
-    if(this.options.change) this.options.change(this);
-  },
-
-  _getWindowScroll: function(w) {
-    var T, L, W, H;
-    with (w.document) {
-      if (w.document.documentElement && documentElement.scrollTop) {
-        T = documentElement.scrollTop;
-        L = documentElement.scrollLeft;
-      } else if (w.document.body) {
-        T = body.scrollTop;
-        L = body.scrollLeft;
-      }
-      if (w.innerWidth) {
-        W = w.innerWidth;
-        H = w.innerHeight;
-      } else if (w.document.documentElement && documentElement.clientWidth) {
-        W = documentElement.clientWidth;
-        H = documentElement.clientHeight;
-      } else {
-        W = body.offsetWidth;
-        H = body.offsetHeight;
-      }
-    }
-    return { top: T, left: L, width: W, height: H };
-  }
-});
-
-Draggable._dragging = { };
-
-/*--------------------------------------------------------------------------*/
-
-var SortableObserver = Class.create({
-  initialize: function(element, observer) {
-    this.element   = $(element);
-    this.observer  = observer;
-    this.lastValue = Sortable.serialize(this.element);
-  },
-
-  onStart: function() {
-    this.lastValue = Sortable.serialize(this.element);
-  },
-
-  onEnd: function() {
-    Sortable.unmark();
-    if(this.lastValue != Sortable.serialize(this.element))
-      this.observer(this.element)
-  }
-});
-
-var Sortable = {
-  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
-
-  sortables: { },
-
-  _findRootElement: function(element) {
-    while (element.tagName.toUpperCase() != "BODY") {
-      if(element.id && Sortable.sortables[element.id]) return element;
-      element = element.parentNode;
-    }
-  },
-
-  options: function(element) {
-    element = Sortable._findRootElement($(element));
-    if(!element) return;
-    return Sortable.sortables[element.id];
-  },
-
-  destroy: function(element){
-    element = $(element);
-    var s = Sortable.sortables[element.id];
-
-    if(s) {
-      Draggables.removeObserver(s.element);
-      s.droppables.each(function(d){ Droppables.remove(d) });
-      s.draggables.invoke('destroy');
-
-      delete Sortable.sortables[s.element.id];
-    }
-  },
-
-  create: function(element) {
-    element = $(element);
-    var options = Object.extend({
-      element:     element,
-      tag:         'li',       // assumes li children, override with tag: 'tagname'
-      dropOnEmpty: false,
-      tree:        false,
-      treeTag:     'ul',
-      overlap:     'vertical', // one of 'vertical', 'horizontal'
-      constraint:  'vertical', // one of 'vertical', 'horizontal', false
-      containment: element,    // also takes array of elements (or id's); or false
-      handle:      false,      // or a CSS class
-      only:        false,
-      delay:       0,
-      hoverclass:  null,
-      ghosting:    false,
-      quiet:       false,
-      scroll:      false,
-      scrollSensitivity: 20,
-      scrollSpeed: 15,
-      format:      this.SERIALIZE_RULE,
-
-      // these take arrays of elements or ids and can be
-      // used for better initialization performance
-      elements:    false,
-      handles:     false,
-
-      onChange:    Prototype.emptyFunction,
-      onUpdate:    Prototype.emptyFunction
-    }, arguments[1] || { });
-
-    // clear any old sortable with same element
-    this.destroy(element);
-
-    // build options for the draggables
-    var options_for_draggable = {
-      revert:      true,
-      quiet:       options.quiet,
-      scroll:      options.scroll,
-      scrollSpeed: options.scrollSpeed,
-      scrollSensitivity: options.scrollSensitivity,
-      delay:       options.delay,
-      ghosting:    options.ghosting,
-      constraint:  options.constraint,
-      handle:      options.handle };
-
-    if(options.starteffect)
-      options_for_draggable.starteffect = options.starteffect;
-
-    if(options.reverteffect)
-      options_for_draggable.reverteffect = options.reverteffect;
-    else
-      if(options.ghosting) options_for_draggable.reverteffect = function(element) {
-        element.style.top  = 0;
-        element.style.left = 0;
-      };
-
-    if(options.endeffect)
-      options_for_draggable.endeffect = options.endeffect;
-
-    if(options.zindex)
-      options_for_draggable.zindex = options.zindex;
-
-    // build options for the droppables
-    var options_for_droppable = {
-      overlap:     options.overlap,
-      containment: options.containment,
-      tree:        options.tree,
-      hoverclass:  options.hoverclass,
-      onHover:     Sortable.onHover
-    };
-
-    var options_for_tree = {
-      onHover:      Sortable.onEmptyHover,
-      overlap:      options.overlap,
-      containment:  options.containment,
-      hoverclass:   options.hoverclass
-    };
-
-    // fix for gecko engine
-    Element.cleanWhitespace(element);
-
-    options.draggables = [];
-    options.droppables = [];
-
-    // drop on empty handling
-    if(options.dropOnEmpty || options.tree) {
-      Droppables.add(element, options_for_tree);
-      options.droppables.push(element);
-    }
-
-    (options.elements || this.findElements(element, options) || []).each( function(e,i) {
-      var handle = options.handles ? $(options.handles[i]) :
-        (options.handle ? $(e).select('.' + options.handle)[0] : e);
-      options.draggables.push(
-        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
-      Droppables.add(e, options_for_droppable);
-      if(options.tree) e.treeNode = element;
-      options.droppables.push(e);
-    });
-
-    if(options.tree) {
-      (Sortable.findTreeElements(element, options) || []).each( function(e) {
-        Droppables.add(e, options_for_tree);
-        e.treeNode = element;
-        options.droppables.push(e);
-      });
-    }
-
-    // keep reference
-    this.sortables[element.identify()] = options;
-
-    // for onupdate
-    Draggables.addObserver(new SortableObserver(element, options.onUpdate));
-
-  },
-
-  // return all suitable-for-sortable elements in a guaranteed order
-  findElements: function(element, options) {
-    return Element.findChildren(
-      element, options.only, options.tree ? true : false, options.tag);
-  },
-
-  findTreeElements: function(element, options) {
-    return Element.findChildren(
-      element, options.only, options.tree ? true : false, options.treeTag);
-  },
-
-  onHover: function(element, dropon, overlap) {
-    if(Element.isParent(dropon, element)) return;
-
-    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
-      return;
-    } else if(overlap>0.5) {
-      Sortable.mark(dropon, 'before');
-      if(dropon.previousSibling != element) {
-        var oldParentNode = element.parentNode;
-        element.style.visibility = "hidden"; // fix gecko rendering
-        dropon.parentNode.insertBefore(element, dropon);
-        if(dropon.parentNode!=oldParentNode)
-          Sortable.options(oldParentNode).onChange(element);
-        Sortable.options(dropon.parentNode).onChange(element);
-      }
-    } else {
-      Sortable.mark(dropon, 'after');
-      var nextElement = dropon.nextSibling || null;
-      if(nextElement != element) {
-        var oldParentNode = element.parentNode;
-        element.style.visibility = "hidden"; // fix gecko rendering
-        dropon.parentNode.insertBefore(element, nextElement);
-        if(dropon.parentNode!=oldParentNode)
-          Sortable.options(oldParentNode).onChange(element);
-        Sortable.options(dropon.parentNode).onChange(element);
-      }
-    }
-  },
-
-  onEmptyHover: function(element, dropon, overlap) {
-    var oldParentNode = element.parentNode;
-    var droponOptions = Sortable.options(dropon);
-
-    if(!Element.isParent(dropon, element)) {
-      var index;
-
-      var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
-      var child = null;
-
-      if(children) {
-        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
-
-        for (index = 0; index < children.length; index += 1) {
-          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
-            offset -= Element.offsetSize (children[index], droponOptions.overlap);
-          } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
-            child = index + 1 < children.length ? children[index + 1] : null;
-            break;
-          } else {
-            child = children[index];
-            break;
-          }
-        }
-      }
-
-      dropon.insertBefore(element, child);
-
-      Sortable.options(oldParentNode).onChange(element);
-      droponOptions.onChange(element);
-    }
-  },
-
-  unmark: function() {
-    if(Sortable._marker) Sortable._marker.hide();
-  },
-
-  mark: function(dropon, position) {
-    // mark on ghosting only
-    var sortable = Sortable.options(dropon.parentNode);
-    if(sortable && !sortable.ghosting) return;
-
-    if(!Sortable._marker) {
-      Sortable._marker =
-        ($('dropmarker') || Element.extend(document.createElement('DIV'))).
-          hide().addClassName('dropmarker').setStyle({position:'absolute'});
-      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
-    }
-    var offsets = dropon.cumulativeOffset();
-    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
-
-    if(position=='after')
-      if(sortable.overlap == 'horizontal')
-        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
-      else
-        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
-
-    Sortable._marker.show();
-  },
-
-  _tree: function(element, options, parent) {
-    var children = Sortable.findElements(element, options) || [];
-
-    for (var i = 0; i < children.length; ++i) {
-      var match = children[i].id.match(options.format);
-
-      if (!match) continue;
-
-      var child = {
-        id: encodeURIComponent(match ? match[1] : null),
-        element: element,
-        parent: parent,
-        children: [],
-        position: parent.children.length,
-        container: $(children[i]).down(options.treeTag)
-      };
-
-      /* Get the element containing the children and recurse over it */
-      if (child.container)
-        this._tree(child.container, options, child);
-
-      parent.children.push (child);
-    }
-
-    return parent;
-  },
-
-  tree: function(element) {
-    element = $(element);
-    var sortableOptions = this.options(element);
-    var options = Object.extend({
-      tag: sortableOptions.tag,
-      treeTag: sortableOptions.treeTag,
-      only: sortableOptions.only,
-      name: element.id,
-      format: sortableOptions.format
-    }, arguments[1] || { });
-
-    var root = {
-      id: null,
-      parent: null,
-      children: [],
-      container: element,
-      position: 0
-    };
-
-    return Sortable._tree(element, options, root);
-  },
-
-  /* Construct a [i] index for a particular node */
-  _constructIndex: function(node) {
-    var index = '';
-    do {
-      if (node.id) index = '[' + node.position + ']' + index;
-    } while ((node = node.parent) != null);
-    return index;
-  },
-
-  sequence: function(element) {
-    element = $(element);
-    var options = Object.extend(this.options(element), arguments[1] || { });
-
-    return $(this.findElements(element, options) || []).map( function(item) {
-      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
-    });
-  },
-
-  setSequence: function(element, new_sequence) {
-    element = $(element);
-    var options = Object.extend(this.options(element), arguments[2] || { });
-
-    var nodeMap = { };
-    this.findElements(element, options).each( function(n) {
-        if (n.id.match(options.format))
-            nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
-        n.parentNode.removeChild(n);
-    });
-
-    new_sequence.each(function(ident) {
-      var n = nodeMap[ident];
-      if (n) {
-        n[1].appendChild(n[0]);
-        delete nodeMap[ident];
-      }
-    });
-  },
-
-  serialize: function(element) {
-    element = $(element);
-    var options = Object.extend(Sortable.options(element), arguments[1] || { });
-    var name = encodeURIComponent(
-      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
-
-    if (options.tree) {
-      return Sortable.tree(element, arguments[1]).children.map( function (item) {
-        return [name + Sortable._constructIndex(item) + "[id]=" +
-                encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
-      }).flatten().join('&');
-    } else {
-      return Sortable.sequence(element, arguments[1]).map( function(item) {
-        return name + "[]=" + encodeURIComponent(item);
-      }).join('&');
-    }
-  }
-};
-
-// Returns true if child is contained within element
-Element.isParent = function(child, element) {
-  if (!child.parentNode || child == element) return false;
-  if (child.parentNode == element) return true;
-  return Element.isParent(child.parentNode, element);
-};
-
-Element.findChildren = function(element, only, recursive, tagName) {
-  if(!element.hasChildNodes()) return null;
-  tagName = tagName.toUpperCase();
-  if(only) only = [only].flatten();
-  var elements = [];
-  $A(element.childNodes).each( function(e) {
-    if(e.tagName && e.tagName.toUpperCase()==tagName &&
-      (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
-        elements.push(e);
-    if(recursive) {
-      var grandchildren = Element.findChildren(e, only, recursive, tagName);
-      if(grandchildren) elements.push(grandchildren);
-    }
-  });
-
-  return (elements.length>0 ? elements.flatten() : []);
-};
-
-Element.offsetSize = function (element, type) {
-  return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
-};
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/effects.js b/wp-includes/js/scriptaculous/effects.js
deleted file mode 100644 (file)
index 066ee59..0000000
+++ /dev/null
@@ -1,1123 +0,0 @@
-// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// Contributors:
-//  Justin Palmer (http://encytemedia.com/)
-//  Mark Pilgrim (http://diveintomark.org/)
-//  Martin Bialasinki
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-// converts rgb() and #xxx to #xxxxxx format,
-// returns self (or first argument) if not convertable
-String.prototype.parseColor = function() {
-  var color = '#';
-  if (this.slice(0,4) == 'rgb(') {
-    var cols = this.slice(4,this.length-1).split(',');
-    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
-  } else {
-    if (this.slice(0,1) == '#') {
-      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
-      if (this.length==7) color = this.toLowerCase();
-    }
-  }
-  return (color.length==7 ? color : (arguments[0] || this));
-};
-
-/*--------------------------------------------------------------------------*/
-
-Element.collectTextNodes = function(element) {
-  return $A($(element).childNodes).collect( function(node) {
-    return (node.nodeType==3 ? node.nodeValue :
-      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
-  }).flatten().join('');
-};
-
-Element.collectTextNodesIgnoreClass = function(element, className) {
-  return $A($(element).childNodes).collect( function(node) {
-    return (node.nodeType==3 ? node.nodeValue :
-      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
-        Element.collectTextNodesIgnoreClass(node, className) : ''));
-  }).flatten().join('');
-};
-
-Element.setContentZoom = function(element, percent) {
-  element = $(element);
-  element.setStyle({fontSize: (percent/100) + 'em'});
-  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
-  return element;
-};
-
-Element.getInlineOpacity = function(element){
-  return $(element).style.opacity || '';
-};
-
-Element.forceRerendering = function(element) {
-  try {
-    element = $(element);
-    var n = document.createTextNode(' ');
-    element.appendChild(n);
-    element.removeChild(n);
-  } catch(e) { }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Effect = {
-  _elementDoesNotExistError: {
-    name: 'ElementDoesNotExistError',
-    message: 'The specified DOM element does not exist, but is required for this effect to operate'
-  },
-  Transitions: {
-    linear: Prototype.K,
-    sinoidal: function(pos) {
-      return (-Math.cos(pos*Math.PI)/2) + .5;
-    },
-    reverse: function(pos) {
-      return 1-pos;
-    },
-    flicker: function(pos) {
-      var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
-      return pos > 1 ? 1 : pos;
-    },
-    wobble: function(pos) {
-      return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
-    },
-    pulse: function(pos, pulses) {
-      return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
-    },
-    spring: function(pos) {
-      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
-    },
-    none: function(pos) {
-      return 0;
-    },
-    full: function(pos) {
-      return 1;
-    }
-  },
-  DefaultOptions: {
-    duration:   1.0,   // seconds
-    fps:        100,   // 100= assume 66fps max.
-    sync:       false, // true for combining
-    from:       0.0,
-    to:         1.0,
-    delay:      0.0,
-    queue:      'parallel'
-  },
-  tagifyText: function(element) {
-    var tagifyStyle = 'position:relative';
-    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
-
-    element = $(element);
-    $A(element.childNodes).each( function(child) {
-      if (child.nodeType==3) {
-        child.nodeValue.toArray().each( function(character) {
-          element.insertBefore(
-            new Element('span', {style: tagifyStyle}).update(
-              character == ' ' ? String.fromCharCode(160) : character),
-              child);
-        });
-        Element.remove(child);
-      }
-    });
-  },
-  multiple: function(element, effect) {
-    var elements;
-    if (((typeof element == 'object') ||
-        Object.isFunction(element)) &&
-       (element.length))
-      elements = element;
-    else
-      elements = $(element).childNodes;
-
-    var options = Object.extend({
-      speed: 0.1,
-      delay: 0.0
-    }, arguments[2] || { });
-    var masterDelay = options.delay;
-
-    $A(elements).each( function(element, index) {
-      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
-    });
-  },
-  PAIRS: {
-    'slide':  ['SlideDown','SlideUp'],
-    'blind':  ['BlindDown','BlindUp'],
-    'appear': ['Appear','Fade']
-  },
-  toggle: function(element, effect, options) {
-    element = $(element);
-    effect  = (effect || 'appear').toLowerCase();
-    
-    return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({
-      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
-    }, options || {}));
-  }
-};
-
-Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
-
-/* ------------- core effects ------------- */
-
-Effect.ScopedQueue = Class.create(Enumerable, {
-  initialize: function() {
-    this.effects  = [];
-    this.interval = null;
-  },
-  _each: function(iterator) {
-    this.effects._each(iterator);
-  },
-  add: function(effect) {
-    var timestamp = new Date().getTime();
-
-    var position = Object.isString(effect.options.queue) ?
-      effect.options.queue : effect.options.queue.position;
-
-    switch(position) {
-      case 'front':
-        // move unstarted effects after this effect
-        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
-            e.startOn  += effect.finishOn;
-            e.finishOn += effect.finishOn;
-          });
-        break;
-      case 'with-last':
-        timestamp = this.effects.pluck('startOn').max() || timestamp;
-        break;
-      case 'end':
-        // start effect after last queued effect has finished
-        timestamp = this.effects.pluck('finishOn').max() || timestamp;
-        break;
-    }
-
-    effect.startOn  += timestamp;
-    effect.finishOn += timestamp;
-
-    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
-      this.effects.push(effect);
-
-    if (!this.interval)
-      this.interval = setInterval(this.loop.bind(this), 15);
-  },
-  remove: function(effect) {
-    this.effects = this.effects.reject(function(e) { return e==effect });
-    if (this.effects.length == 0) {
-      clearInterval(this.interval);
-      this.interval = null;
-    }
-  },
-  loop: function() {
-    var timePos = new Date().getTime();
-    for(var i=0, len=this.effects.length;i<len;i++)
-      this.effects[i] && this.effects[i].loop(timePos);
-  }
-});
-
-Effect.Queues = {
-  instances: $H(),
-  get: function(queueName) {
-    if (!Object.isString(queueName)) return queueName;
-
-    return this.instances.get(queueName) ||
-      this.instances.set(queueName, new Effect.ScopedQueue());
-  }
-};
-Effect.Queue = Effect.Queues.get('global');
-
-Effect.Base = Class.create({
-  position: null,
-  start: function(options) {
-    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
-    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
-    this.currentFrame = 0;
-    this.state        = 'idle';
-    this.startOn      = this.options.delay*1000;
-    this.finishOn     = this.startOn+(this.options.duration*1000);
-    this.fromToDelta  = this.options.to-this.options.from;
-    this.totalTime    = this.finishOn-this.startOn;
-    this.totalFrames  = this.options.fps*this.options.duration;
-
-    this.render = (function() {
-      function dispatch(effect, eventName) {
-        if (effect.options[eventName + 'Internal'])
-          effect.options[eventName + 'Internal'](effect);
-        if (effect.options[eventName])
-          effect.options[eventName](effect);
-      }
-
-      return function(pos) {
-        if (this.state === "idle") {
-          this.state = "running";
-          dispatch(this, 'beforeSetup');
-          if (this.setup) this.setup();
-          dispatch(this, 'afterSetup');
-        }
-        if (this.state === "running") {
-          pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
-          this.position = pos;
-          dispatch(this, 'beforeUpdate');
-          if (this.update) this.update(pos);
-          dispatch(this, 'afterUpdate');
-        }
-      };
-    })();
-
-    this.event('beforeStart');
-    if (!this.options.sync)
-      Effect.Queues.get(Object.isString(this.options.queue) ?
-        'global' : this.options.queue.scope).add(this);
-  },
-  loop: function(timePos) {
-    if (timePos >= this.startOn) {
-      if (timePos >= this.finishOn) {
-        this.render(1.0);
-        this.cancel();
-        this.event('beforeFinish');
-        if (this.finish) this.finish();
-        this.event('afterFinish');
-        return;
-      }
-      var pos   = (timePos - this.startOn) / this.totalTime,
-          frame = (pos * this.totalFrames).round();
-      if (frame > this.currentFrame) {
-        this.render(pos);
-        this.currentFrame = frame;
-      }
-    }
-  },
-  cancel: function() {
-    if (!this.options.sync)
-      Effect.Queues.get(Object.isString(this.options.queue) ?
-        'global' : this.options.queue.scope).remove(this);
-    this.state = 'finished';
-  },
-  event: function(eventName) {
-    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
-    if (this.options[eventName]) this.options[eventName](this);
-  },
-  inspect: function() {
-    var data = $H();
-    for(property in this)
-      if (!Object.isFunction(this[property])) data.set(property, this[property]);
-    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
-  }
-});
-
-Effect.Parallel = Class.create(Effect.Base, {
-  initialize: function(effects) {
-    this.effects = effects || [];
-    this.start(arguments[1]);
-  },
-  update: function(position) {
-    this.effects.invoke('render', position);
-  },
-  finish: function(position) {
-    this.effects.each( function(effect) {
-      effect.render(1.0);
-      effect.cancel();
-      effect.event('beforeFinish');
-      if (effect.finish) effect.finish(position);
-      effect.event('afterFinish');
-    });
-  }
-});
-
-Effect.Tween = Class.create(Effect.Base, {
-  initialize: function(object, from, to) {
-    object = Object.isString(object) ? $(object) : object;
-    var args = $A(arguments), method = args.last(),
-      options = args.length == 5 ? args[3] : null;
-    this.method = Object.isFunction(method) ? method.bind(object) :
-      Object.isFunction(object[method]) ? object[method].bind(object) :
-      function(value) { object[method] = value };
-    this.start(Object.extend({ from: from, to: to }, options || { }));
-  },
-  update: function(position) {
-    this.method(position);
-  }
-});
-
-Effect.Event = Class.create(Effect.Base, {
-  initialize: function() {
-    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
-  },
-  update: Prototype.emptyFunction
-});
-
-Effect.Opacity = Class.create(Effect.Base, {
-  initialize: function(element) {
-    this.element = $(element);
-    if (!this.element) throw(Effect._elementDoesNotExistError);
-    // make this work on IE on elements without 'layout'
-    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
-      this.element.setStyle({zoom: 1});
-    var options = Object.extend({
-      from: this.element.getOpacity() || 0.0,
-      to:   1.0
-    }, arguments[1] || { });
-    this.start(options);
-  },
-  update: function(position) {
-    this.element.setOpacity(position);
-  }
-});
-
-Effect.Move = Class.create(Effect.Base, {
-  initialize: function(element) {
-    this.element = $(element);
-    if (!this.element) throw(Effect._elementDoesNotExistError);
-    var options = Object.extend({
-      x:    0,
-      y:    0,
-      mode: 'relative'
-    }, arguments[1] || { });
-    this.start(options);
-  },
-  setup: function() {
-    this.element.makePositioned();
-    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
-    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
-    if (this.options.mode == 'absolute') {
-      this.options.x = this.options.x - this.originalLeft;
-      this.options.y = this.options.y - this.originalTop;
-    }
-  },
-  update: function(position) {
-    this.element.setStyle({
-      left: (this.options.x  * position + this.originalLeft).round() + 'px',
-      top:  (this.options.y  * position + this.originalTop).round()  + 'px'
-    });
-  }
-});
-
-// for backwards compatibility
-Effect.MoveBy = function(element, toTop, toLeft) {
-  return new Effect.Move(element,
-    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
-};
-
-Effect.Scale = Class.create(Effect.Base, {
-  initialize: function(element, percent) {
-    this.element = $(element);
-    if (!this.element) throw(Effect._elementDoesNotExistError);
-    var options = Object.extend({
-      scaleX: true,
-      scaleY: true,
-      scaleContent: true,
-      scaleFromCenter: false,
-      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values
-      scaleFrom: 100.0,
-      scaleTo:   percent
-    }, arguments[2] || { });
-    this.start(options);
-  },
-  setup: function() {
-    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
-    this.elementPositioning = this.element.getStyle('position');
-
-    this.originalStyle = { };
-    ['top','left','width','height','fontSize'].each( function(k) {
-      this.originalStyle[k] = this.element.style[k];
-    }.bind(this));
-
-    this.originalTop  = this.element.offsetTop;
-    this.originalLeft = this.element.offsetLeft;
-
-    var fontSize = this.element.getStyle('font-size') || '100%';
-    ['em','px','%','pt'].each( function(fontSizeType) {
-      if (fontSize.indexOf(fontSizeType)>0) {
-        this.fontSize     = parseFloat(fontSize);
-        this.fontSizeType = fontSizeType;
-      }
-    }.bind(this));
-
-    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
-
-    this.dims = null;
-    if (this.options.scaleMode=='box')
-      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
-    if (/^content/.test(this.options.scaleMode))
-      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
-    if (!this.dims)
-      this.dims = [this.options.scaleMode.originalHeight,
-                   this.options.scaleMode.originalWidth];
-  },
-  update: function(position) {
-    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
-    if (this.options.scaleContent && this.fontSize)
-      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
-    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
-  },
-  finish: function(position) {
-    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
-  },
-  setDimensions: function(height, width) {
-    var d = { };
-    if (this.options.scaleX) d.width = width.round() + 'px';
-    if (this.options.scaleY) d.height = height.round() + 'px';
-    if (this.options.scaleFromCenter) {
-      var topd  = (height - this.dims[0])/2;
-      var leftd = (width  - this.dims[1])/2;
-      if (this.elementPositioning == 'absolute') {
-        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
-        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
-      } else {
-        if (this.options.scaleY) d.top = -topd + 'px';
-        if (this.options.scaleX) d.left = -leftd + 'px';
-      }
-    }
-    this.element.setStyle(d);
-  }
-});
-
-Effect.Highlight = Class.create(Effect.Base, {
-  initialize: function(element) {
-    this.element = $(element);
-    if (!this.element) throw(Effect._elementDoesNotExistError);
-    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
-    this.start(options);
-  },
-  setup: function() {
-    // Prevent executing on elements not in the layout flow
-    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
-    // Disable background image during the effect
-    this.oldStyle = { };
-    if (!this.options.keepBackgroundImage) {
-      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
-      this.element.setStyle({backgroundImage: 'none'});
-    }
-    if (!this.options.endcolor)
-      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
-    if (!this.options.restorecolor)
-      this.options.restorecolor = this.element.getStyle('background-color');
-    // init color calculations
-    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
-    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
-  },
-  update: function(position) {
-    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
-      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
-  },
-  finish: function() {
-    this.element.setStyle(Object.extend(this.oldStyle, {
-      backgroundColor: this.options.restorecolor
-    }));
-  }
-});
-
-Effect.ScrollTo = function(element) {
-  var options = arguments[1] || { },
-  scrollOffsets = document.viewport.getScrollOffsets(),
-  elementOffsets = $(element).cumulativeOffset();
-
-  if (options.offset) elementOffsets[1] += options.offset;
-
-  return new Effect.Tween(null,
-    scrollOffsets.top,
-    elementOffsets[1],
-    options,
-    function(p){ scrollTo(scrollOffsets.left, p.round()); }
-  );
-};
-
-/* ------------- combination effects ------------- */
-
-Effect.Fade = function(element) {
-  element = $(element);
-  var oldOpacity = element.getInlineOpacity();
-  var options = Object.extend({
-    from: element.getOpacity() || 1.0,
-    to:   0.0,
-    afterFinishInternal: function(effect) {
-      if (effect.options.to!=0) return;
-      effect.element.hide().setStyle({opacity: oldOpacity});
-    }
-  }, arguments[1] || { });
-  return new Effect.Opacity(element,options);
-};
-
-Effect.Appear = function(element) {
-  element = $(element);
-  var options = Object.extend({
-  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
-  to:   1.0,
-  // force Safari to render floated elements properly
-  afterFinishInternal: function(effect) {
-    effect.element.forceRerendering();
-  },
-  beforeSetup: function(effect) {
-    effect.element.setOpacity(effect.options.from).show();
-  }}, arguments[1] || { });
-  return new Effect.Opacity(element,options);
-};
-
-Effect.Puff = function(element) {
-  element = $(element);
-  var oldStyle = {
-    opacity: element.getInlineOpacity(),
-    position: element.getStyle('position'),
-    top:  element.style.top,
-    left: element.style.left,
-    width: element.style.width,
-    height: element.style.height
-  };
-  return new Effect.Parallel(
-   [ new Effect.Scale(element, 200,
-      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
-     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
-     Object.extend({ duration: 1.0,
-      beforeSetupInternal: function(effect) {
-        Position.absolutize(effect.effects[0].element);
-      },
-      afterFinishInternal: function(effect) {
-         effect.effects[0].element.hide().setStyle(oldStyle); }
-     }, arguments[1] || { })
-   );
-};
-
-Effect.BlindUp = function(element) {
-  element = $(element);
-  element.makeClipping();
-  return new Effect.Scale(element, 0,
-    Object.extend({ scaleContent: false,
-      scaleX: false,
-      restoreAfterFinish: true,
-      afterFinishInternal: function(effect) {
-        effect.element.hide().undoClipping();
-      }
-    }, arguments[1] || { })
-  );
-};
-
-Effect.BlindDown = function(element) {
-  element = $(element);
-  var elementDimensions = element.getDimensions();
-  return new Effect.Scale(element, 100, Object.extend({
-    scaleContent: false,
-    scaleX: false,
-    scaleFrom: 0,
-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
-    restoreAfterFinish: true,
-    afterSetup: function(effect) {
-      effect.element.makeClipping().setStyle({height: '0px'}).show();
-    },
-    afterFinishInternal: function(effect) {
-      effect.element.undoClipping();
-    }
-  }, arguments[1] || { }));
-};
-
-Effect.SwitchOff = function(element) {
-  element = $(element);
-  var oldOpacity = element.getInlineOpacity();
-  return new Effect.Appear(element, Object.extend({
-    duration: 0.4,
-    from: 0,
-    transition: Effect.Transitions.flicker,
-    afterFinishInternal: function(effect) {
-      new Effect.Scale(effect.element, 1, {
-        duration: 0.3, scaleFromCenter: true,
-        scaleX: false, scaleContent: false, restoreAfterFinish: true,
-        beforeSetup: function(effect) {
-          effect.element.makePositioned().makeClipping();
-        },
-        afterFinishInternal: function(effect) {
-          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
-        }
-      });
-    }
-  }, arguments[1] || { }));
-};
-
-Effect.DropOut = function(element) {
-  element = $(element);
-  var oldStyle = {
-    top: element.getStyle('top'),
-    left: element.getStyle('left'),
-    opacity: element.getInlineOpacity() };
-  return new Effect.Parallel(
-    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
-      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
-    Object.extend(
-      { duration: 0.5,
-        beforeSetup: function(effect) {
-          effect.effects[0].element.makePositioned();
-        },
-        afterFinishInternal: function(effect) {
-          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
-        }
-      }, arguments[1] || { }));
-};
-
-Effect.Shake = function(element) {
-  element = $(element);
-  var options = Object.extend({
-    distance: 20,
-    duration: 0.5
-  }, arguments[1] || {});
-  var distance = parseFloat(options.distance);
-  var split = parseFloat(options.duration) / 10.0;
-  var oldStyle = {
-    top: element.getStyle('top'),
-    left: element.getStyle('left') };
-    return new Effect.Move(element,
-      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
-    new Effect.Move(effect.element,
-      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
-    new Effect.Move(effect.element,
-      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
-    new Effect.Move(effect.element,
-      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
-    new Effect.Move(effect.element,
-      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
-    new Effect.Move(effect.element,
-      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
-        effect.element.undoPositioned().setStyle(oldStyle);
-  }}); }}); }}); }}); }}); }});
-};
-
-Effect.SlideDown = function(element) {
-  element = $(element).cleanWhitespace();
-  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
-  var oldInnerBottom = element.down().getStyle('bottom');
-  var elementDimensions = element.getDimensions();
-  return new Effect.Scale(element, 100, Object.extend({
-    scaleContent: false,
-    scaleX: false,
-    scaleFrom: window.opera ? 0 : 1,
-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
-    restoreAfterFinish: true,
-    afterSetup: function(effect) {
-      effect.element.makePositioned();
-      effect.element.down().makePositioned();
-      if (window.opera) effect.element.setStyle({top: ''});
-      effect.element.makeClipping().setStyle({height: '0px'}).show();
-    },
-    afterUpdateInternal: function(effect) {
-      effect.element.down().setStyle({bottom:
-        (effect.dims[0] - effect.element.clientHeight) + 'px' });
-    },
-    afterFinishInternal: function(effect) {
-      effect.element.undoClipping().undoPositioned();
-      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
-    }, arguments[1] || { })
-  );
-};
-
-Effect.SlideUp = function(element) {
-  element = $(element).cleanWhitespace();
-  var oldInnerBottom = element.down().getStyle('bottom');
-  var elementDimensions = element.getDimensions();
-  return new Effect.Scale(element, window.opera ? 0 : 1,
-   Object.extend({ scaleContent: false,
-    scaleX: false,
-    scaleMode: 'box',
-    scaleFrom: 100,
-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
-    restoreAfterFinish: true,
-    afterSetup: function(effect) {
-      effect.element.makePositioned();
-      effect.element.down().makePositioned();
-      if (window.opera) effect.element.setStyle({top: ''});
-      effect.element.makeClipping().show();
-    },
-    afterUpdateInternal: function(effect) {
-      effect.element.down().setStyle({bottom:
-        (effect.dims[0] - effect.element.clientHeight) + 'px' });
-    },
-    afterFinishInternal: function(effect) {
-      effect.element.hide().undoClipping().undoPositioned();
-      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
-    }
-   }, arguments[1] || { })
-  );
-};
-
-// Bug in opera makes the TD containing this element expand for a instance after finish
-Effect.Squish = function(element) {
-  return new Effect.Scale(element, window.opera ? 1 : 0, {
-    restoreAfterFinish: true,
-    beforeSetup: function(effect) {
-      effect.element.makeClipping();
-    },
-    afterFinishInternal: function(effect) {
-      effect.element.hide().undoClipping();
-    }
-  });
-};
-
-Effect.Grow = function(element) {
-  element = $(element);
-  var options = Object.extend({
-    direction: 'center',
-    moveTransition: Effect.Transitions.sinoidal,
-    scaleTransition: Effect.Transitions.sinoidal,
-    opacityTransition: Effect.Transitions.full
-  }, arguments[1] || { });
-  var oldStyle = {
-    top: element.style.top,
-    left: element.style.left,
-    height: element.style.height,
-    width: element.style.width,
-    opacity: element.getInlineOpacity() };
-
-  var dims = element.getDimensions();
-  var initialMoveX, initialMoveY;
-  var moveX, moveY;
-
-  switch (options.direction) {
-    case 'top-left':
-      initialMoveX = initialMoveY = moveX = moveY = 0;
-      break;
-    case 'top-right':
-      initialMoveX = dims.width;
-      initialMoveY = moveY = 0;
-      moveX = -dims.width;
-      break;
-    case 'bottom-left':
-      initialMoveX = moveX = 0;
-      initialMoveY = dims.height;
-      moveY = -dims.height;
-      break;
-    case 'bottom-right':
-      initialMoveX = dims.width;
-      initialMoveY = dims.height;
-      moveX = -dims.width;
-      moveY = -dims.height;
-      break;
-    case 'center':
-      initialMoveX = dims.width / 2;
-      initialMoveY = dims.height / 2;
-      moveX = -dims.width / 2;
-      moveY = -dims.height / 2;
-      break;
-  }
-
-  return new Effect.Move(element, {
-    x: initialMoveX,
-    y: initialMoveY,
-    duration: 0.01,
-    beforeSetup: function(effect) {
-      effect.element.hide().makeClipping().makePositioned();
-    },
-    afterFinishInternal: function(effect) {
-      new Effect.Parallel(
-        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
-          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
-          new Effect.Scale(effect.element, 100, {
-            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
-            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
-        ], Object.extend({
-             beforeSetup: function(effect) {
-               effect.effects[0].element.setStyle({height: '0px'}).show();
-             },
-             afterFinishInternal: function(effect) {
-               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
-             }
-           }, options)
-      );
-    }
-  });
-};
-
-Effect.Shrink = function(element) {
-  element = $(element);
-  var options = Object.extend({
-    direction: 'center',
-    moveTransition: Effect.Transitions.sinoidal,
-    scaleTransition: Effect.Transitions.sinoidal,
-    opacityTransition: Effect.Transitions.none
-  }, arguments[1] || { });
-  var oldStyle = {
-    top: element.style.top,
-    left: element.style.left,
-    height: element.style.height,
-    width: element.style.width,
-    opacity: element.getInlineOpacity() };
-
-  var dims = element.getDimensions();
-  var moveX, moveY;
-
-  switch (options.direction) {
-    case 'top-left':
-      moveX = moveY = 0;
-      break;
-    case 'top-right':
-      moveX = dims.width;
-      moveY = 0;
-      break;
-    case 'bottom-left':
-      moveX = 0;
-      moveY = dims.height;
-      break;
-    case 'bottom-right':
-      moveX = dims.width;
-      moveY = dims.height;
-      break;
-    case 'center':
-      moveX = dims.width / 2;
-      moveY = dims.height / 2;
-      break;
-  }
-
-  return new Effect.Parallel(
-    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
-      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
-      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
-    ], Object.extend({
-         beforeStartInternal: function(effect) {
-           effect.effects[0].element.makePositioned().makeClipping();
-         },
-         afterFinishInternal: function(effect) {
-           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
-       }, options)
-  );
-};
-
-Effect.Pulsate = function(element) {
-  element = $(element);
-  var options    = arguments[1] || { },
-    oldOpacity = element.getInlineOpacity(),
-    transition = options.transition || Effect.Transitions.linear,
-    reverser   = function(pos){
-      return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
-    };
-
-  return new Effect.Opacity(element,
-    Object.extend(Object.extend({  duration: 2.0, from: 0,
-      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
-    }, options), {transition: reverser}));
-};
-
-Effect.Fold = function(element) {
-  element = $(element);
-  var oldStyle = {
-    top: element.style.top,
-    left: element.style.left,
-    width: element.style.width,
-    height: element.style.height };
-  element.makeClipping();
-  return new Effect.Scale(element, 5, Object.extend({
-    scaleContent: false,
-    scaleX: false,
-    afterFinishInternal: function(effect) {
-    new Effect.Scale(element, 1, {
-      scaleContent: false,
-      scaleY: false,
-      afterFinishInternal: function(effect) {
-        effect.element.hide().undoClipping().setStyle(oldStyle);
-      } });
-  }}, arguments[1] || { }));
-};
-
-Effect.Morph = Class.create(Effect.Base, {
-  initialize: function(element) {
-    this.element = $(element);
-    if (!this.element) throw(Effect._elementDoesNotExistError);
-    var options = Object.extend({
-      style: { }
-    }, arguments[1] || { });
-
-    if (!Object.isString(options.style)) this.style = $H(options.style);
-    else {
-      if (options.style.include(':'))
-        this.style = options.style.parseStyle();
-      else {
-        this.element.addClassName(options.style);
-        this.style = $H(this.element.getStyles());
-        this.element.removeClassName(options.style);
-        var css = this.element.getStyles();
-        this.style = this.style.reject(function(style) {
-          return style.value == css[style.key];
-        });
-        options.afterFinishInternal = function(effect) {
-          effect.element.addClassName(effect.options.style);
-          effect.transforms.each(function(transform) {
-            effect.element.style[transform.style] = '';
-          });
-        };
-      }
-    }
-    this.start(options);
-  },
-
-  setup: function(){
-    function parseColor(color){
-      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
-      color = color.parseColor();
-      return $R(0,2).map(function(i){
-        return parseInt( color.slice(i*2+1,i*2+3), 16 );
-      });
-    }
-    this.transforms = this.style.map(function(pair){
-      var property = pair[0], value = pair[1], unit = null;
-
-      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
-        value = value.parseColor();
-        unit  = 'color';
-      } else if (property == 'opacity') {
-        value = parseFloat(value);
-        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
-          this.element.setStyle({zoom: 1});
-      } else if (Element.CSS_LENGTH.test(value)) {
-          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
-          value = parseFloat(components[1]);
-          unit = (components.length == 3) ? components[2] : null;
-      }
-
-      var originalValue = this.element.getStyle(property);
-      return {
-        style: property.camelize(),
-        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
-        targetValue: unit=='color' ? parseColor(value) : value,
-        unit: unit
-      };
-    }.bind(this)).reject(function(transform){
-      return (
-        (transform.originalValue == transform.targetValue) ||
-        (
-          transform.unit != 'color' &&
-          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
-        )
-      );
-    });
-  },
-  update: function(position) {
-    var style = { }, transform, i = this.transforms.length;
-    while(i--)
-      style[(transform = this.transforms[i]).style] =
-        transform.unit=='color' ? '#'+
-          (Math.round(transform.originalValue[0]+
-            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
-          (Math.round(transform.originalValue[1]+
-            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
-          (Math.round(transform.originalValue[2]+
-            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
-        (transform.originalValue +
-          (transform.targetValue - transform.originalValue) * position).toFixed(3) +
-            (transform.unit === null ? '' : transform.unit);
-    this.element.setStyle(style, true);
-  }
-});
-
-Effect.Transform = Class.create({
-  initialize: function(tracks){
-    this.tracks  = [];
-    this.options = arguments[1] || { };
-    this.addTracks(tracks);
-  },
-  addTracks: function(tracks){
-    tracks.each(function(track){
-      track = $H(track);
-      var data = track.values().first();
-      this.tracks.push($H({
-        ids:     track.keys().first(),
-        effect:  Effect.Morph,
-        options: { style: data }
-      }));
-    }.bind(this));
-    return this;
-  },
-  play: function(){
-    return new Effect.Parallel(
-      this.tracks.map(function(track){
-        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
-        var elements = [$(ids) || $$(ids)].flatten();
-        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
-      }).flatten(),
-      this.options
-    );
-  }
-});
-
-Element.CSS_PROPERTIES = $w(
-  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
-  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
-  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
-  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
-  'fontSize fontWeight height left letterSpacing lineHeight ' +
-  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
-  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
-  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
-  'right textIndent top width wordSpacing zIndex');
-
-Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
-
-String.__parseStyleElement = document.createElement('div');
-String.prototype.parseStyle = function(){
-  var style, styleRules = $H();
-  if (Prototype.Browser.WebKit)
-    style = new Element('div',{style:this}).style;
-  else {
-    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
-    style = String.__parseStyleElement.childNodes[0].style;
-  }
-
-  Element.CSS_PROPERTIES.each(function(property){
-    if (style[property]) styleRules.set(property, style[property]);
-  });
-
-  if (Prototype.Browser.IE && this.include('opacity'))
-    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
-
-  return styleRules;
-};
-
-if (document.defaultView && document.defaultView.getComputedStyle) {
-  Element.getStyles = function(element) {
-    var css = document.defaultView.getComputedStyle($(element), null);
-    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
-      styles[property] = css[property];
-      return styles;
-    });
-  };
-} else {
-  Element.getStyles = function(element) {
-    element = $(element);
-    var css = element.currentStyle, styles;
-    styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
-      results[property] = css[property];
-      return results;
-    });
-    if (!styles.opacity) styles.opacity = element.getOpacity();
-    return styles;
-  };
-}
-
-Effect.Methods = {
-  morph: function(element, style) {
-    element = $(element);
-    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
-    return element;
-  },
-  visualEffect: function(element, effect, options) {
-    element = $(element);
-    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
-    new Effect[klass](element, options);
-    return element;
-  },
-  highlight: function(element, options) {
-    element = $(element);
-    new Effect.Highlight(element, options);
-    return element;
-  }
-};
-
-$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
-  'pulsate shake puff squish switchOff dropOut').each(
-  function(effect) {
-    Effect.Methods[effect] = function(element, options){
-      element = $(element);
-      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
-      return element;
-    };
-  }
-);
-
-$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
-  function(f) { Effect.Methods[f] = Element[f]; }
-);
-
-Element.addMethods(Effect.Methods);
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/scriptaculous.js b/wp-includes/js/scriptaculous/scriptaculous.js
deleted file mode 100644 (file)
index 6bf437a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-// script.aculo.us scriptaculous.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-var Scriptaculous = {
-  Version: '1.8.3',
-  require: function(libraryName) {
-    try{
-      // inserting via DOM fails in Safari 2.0, so brute force approach
-      document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
-    } catch(e) {
-      // for xhtml+xml served content, fall back to DOM methods
-      var script = document.createElement('script');
-      script.type = 'text/javascript';
-      script.src = libraryName;
-      document.getElementsByTagName('head')[0].appendChild(script);
-    }
-  },
-  REQUIRED_PROTOTYPE: '1.6.0.3',
-  load: function() {
-    function convertVersionString(versionString) {
-      var v = versionString.replace(/_.*|\./g, '');
-      v = parseInt(v + '0'.times(4-v.length));
-      return versionString.indexOf('_') > -1 ? v-1 : v;
-    }
-
-    if((typeof Prototype=='undefined') ||
-       (typeof Element == 'undefined') ||
-       (typeof Element.Methods=='undefined') ||
-       (convertVersionString(Prototype.Version) <
-        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
-       throw("script.aculo.us requires the Prototype JavaScript framework >= " +
-        Scriptaculous.REQUIRED_PROTOTYPE);
-
-    var js = /scriptaculous\.js(\?.*)?$/;
-    $$('head script[src]').findAll(function(s) {
-      return s.src.match(js);
-    }).each(function(s) {
-      var path = s.src.replace(js, ''),
-      includes = s.src.match(/\?.*load=([a-z,]*)/);
-      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
-       function(include) { Scriptaculous.require(path+include+'.js') });
-    });
-  }
-};
-
-Scriptaculous.load();
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/slider.js b/wp-includes/js/scriptaculous/slider.js
deleted file mode 100644 (file)
index eb83055..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-// script.aculo.us slider.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Marty Haught, Thomas Fuchs
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-if (!Control) var Control = { };
-
-// options:
-//  axis: 'vertical', or 'horizontal' (default)
-//
-// callbacks:
-//  onChange(value)
-//  onSlide(value)
-Control.Slider = Class.create({
-  initialize: function(handle, track, options) {
-    var slider = this;
-
-    if (Object.isArray(handle)) {
-      this.handles = handle.collect( function(e) { return $(e) });
-    } else {
-      this.handles = [$(handle)];
-    }
-
-    this.track   = $(track);
-    this.options = options || { };
-
-    this.axis      = this.options.axis || 'horizontal';
-    this.increment = this.options.increment || 1;
-    this.step      = parseInt(this.options.step || '1');
-    this.range     = this.options.range || $R(0,1);
-
-    this.value     = 0; // assure backwards compat
-    this.values    = this.handles.map( function() { return 0 });
-    this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
-    this.options.startSpan = $(this.options.startSpan || null);
-    this.options.endSpan   = $(this.options.endSpan || null);
-
-    this.restricted = this.options.restricted || false;
-
-    this.maximum   = this.options.maximum || this.range.end;
-    this.minimum   = this.options.minimum || this.range.start;
-
-    // Will be used to align the handle onto the track, if necessary
-    this.alignX = parseInt(this.options.alignX || '0');
-    this.alignY = parseInt(this.options.alignY || '0');
-
-    this.trackLength = this.maximumOffset() - this.minimumOffset();
-
-    this.handleLength = this.isVertical() ?
-      (this.handles[0].offsetHeight != 0 ?
-        this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) :
-      (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth :
-        this.handles[0].style.width.replace(/px$/,""));
-
-    this.active   = false;
-    this.dragging = false;
-    this.disabled = false;
-
-    if (this.options.disabled) this.setDisabled();
-
-    // Allowed values array
-    this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
-    if (this.allowedValues) {
-      this.minimum = this.allowedValues.min();
-      this.maximum = this.allowedValues.max();
-    }
-
-    this.eventMouseDown = this.startDrag.bindAsEventListener(this);
-    this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
-    this.eventMouseMove = this.update.bindAsEventListener(this);
-
-    // Initialize handles in reverse (make sure first handle is active)
-    this.handles.each( function(h,i) {
-      i = slider.handles.length-1-i;
-      slider.setValue(parseFloat(
-        (Object.isArray(slider.options.sliderValue) ?
-          slider.options.sliderValue[i] : slider.options.sliderValue) ||
-         slider.range.start), i);
-      h.makePositioned().observe("mousedown", slider.eventMouseDown);
-    });
-
-    this.track.observe("mousedown", this.eventMouseDown);
-    document.observe("mouseup", this.eventMouseUp);
-    document.observe("mousemove", this.eventMouseMove);
-
-    this.initialized = true;
-  },
-  dispose: function() {
-    var slider = this;
-    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
-    Event.stopObserving(document, "mouseup", this.eventMouseUp);
-    Event.stopObserving(document, "mousemove", this.eventMouseMove);
-    this.handles.each( function(h) {
-      Event.stopObserving(h, "mousedown", slider.eventMouseDown);
-    });
-  },
-  setDisabled: function(){
-    this.disabled = true;
-  },
-  setEnabled: function(){
-    this.disabled = false;
-  },
-  getNearestValue: function(value){
-    if (this.allowedValues){
-      if (value >= this.allowedValues.max()) return(this.allowedValues.max());
-      if (value <= this.allowedValues.min()) return(this.allowedValues.min());
-
-      var offset = Math.abs(this.allowedValues[0] - value);
-      var newValue = this.allowedValues[0];
-      this.allowedValues.each( function(v) {
-        var currentOffset = Math.abs(v - value);
-        if (currentOffset <= offset){
-          newValue = v;
-          offset = currentOffset;
-        }
-      });
-      return newValue;
-    }
-    if (value > this.range.end) return this.range.end;
-    if (value < this.range.start) return this.range.start;
-    return value;
-  },
-  setValue: function(sliderValue, handleIdx){
-    if (!this.active) {
-      this.activeHandleIdx = handleIdx || 0;
-      this.activeHandle    = this.handles[this.activeHandleIdx];
-      this.updateStyles();
-    }
-    handleIdx = handleIdx || this.activeHandleIdx || 0;
-    if (this.initialized && this.restricted) {
-      if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
-        sliderValue = this.values[handleIdx-1];
-      if ((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
-        sliderValue = this.values[handleIdx+1];
-    }
-    sliderValue = this.getNearestValue(sliderValue);
-    this.values[handleIdx] = sliderValue;
-    this.value = this.values[0]; // assure backwards compat
-
-    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
-      this.translateToPx(sliderValue);
-
-    this.drawSpans();
-    if (!this.dragging || !this.event) this.updateFinished();
-  },
-  setValueBy: function(delta, handleIdx) {
-    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,
-      handleIdx || this.activeHandleIdx || 0);
-  },
-  translateToPx: function(value) {
-    return Math.round(
-      ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
-      (value - this.range.start)) + "px";
-  },
-  translateToValue: function(offset) {
-    return ((offset/(this.trackLength-this.handleLength) *
-      (this.range.end-this.range.start)) + this.range.start);
-  },
-  getRange: function(range) {
-    var v = this.values.sortBy(Prototype.K);
-    range = range || 0;
-    return $R(v[range],v[range+1]);
-  },
-  minimumOffset: function(){
-    return(this.isVertical() ? this.alignY : this.alignX);
-  },
-  maximumOffset: function(){
-    return(this.isVertical() ?
-      (this.track.offsetHeight != 0 ? this.track.offsetHeight :
-        this.track.style.height.replace(/px$/,"")) - this.alignY :
-      (this.track.offsetWidth != 0 ? this.track.offsetWidth :
-        this.track.style.width.replace(/px$/,"")) - this.alignX);
-  },
-  isVertical:  function(){
-    return (this.axis == 'vertical');
-  },
-  drawSpans: function() {
-    var slider = this;
-    if (this.spans)
-      $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
-    if (this.options.startSpan)
-      this.setSpan(this.options.startSpan,
-        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
-    if (this.options.endSpan)
-      this.setSpan(this.options.endSpan,
-        $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
-  },
-  setSpan: function(span, range) {
-    if (this.isVertical()) {
-      span.style.top = this.translateToPx(range.start);
-      span.style.height = this.translateToPx(range.end - range.start + this.range.start);
-    } else {
-      span.style.left = this.translateToPx(range.start);
-      span.style.width = this.translateToPx(range.end - range.start + this.range.start);
-    }
-  },
-  updateStyles: function() {
-    this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
-    Element.addClassName(this.activeHandle, 'selected');
-  },
-  startDrag: function(event) {
-    if (Event.isLeftClick(event)) {
-      if (!this.disabled){
-        this.active = true;
-
-        var handle = Event.element(event);
-        var pointer  = [Event.pointerX(event), Event.pointerY(event)];
-        var track = handle;
-        if (track==this.track) {
-          var offsets  = this.track.cumulativeOffset();
-          this.event = event;
-          this.setValue(this.translateToValue(
-           (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
-          ));
-          var offsets  = this.activeHandle.cumulativeOffset();
-          this.offsetX = (pointer[0] - offsets[0]);
-          this.offsetY = (pointer[1] - offsets[1]);
-        } else {
-          // find the handle (prevents issues with Safari)
-          while((this.handles.indexOf(handle) == -1) && handle.parentNode)
-            handle = handle.parentNode;
-
-          if (this.handles.indexOf(handle)!=-1) {
-            this.activeHandle    = handle;
-            this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
-            this.updateStyles();
-
-            var offsets  = this.activeHandle.cumulativeOffset();
-            this.offsetX = (pointer[0] - offsets[0]);
-            this.offsetY = (pointer[1] - offsets[1]);
-          }
-        }
-      }
-      Event.stop(event);
-    }
-  },
-  update: function(event) {
-   if (this.active) {
-      if (!this.dragging) this.dragging = true;
-      this.draw(event);
-      if (Prototype.Browser.WebKit) window.scrollBy(0,0);
-      Event.stop(event);
-   }
-  },
-  draw: function(event) {
-    var pointer = [Event.pointerX(event), Event.pointerY(event)];
-    var offsets = this.track.cumulativeOffset();
-    pointer[0] -= this.offsetX + offsets[0];
-    pointer[1] -= this.offsetY + offsets[1];
-    this.event = event;
-    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
-    if (this.initialized && this.options.onSlide)
-      this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
-  },
-  endDrag: function(event) {
-    if (this.active && this.dragging) {
-      this.finishDrag(event, true);
-      Event.stop(event);
-    }
-    this.active = false;
-    this.dragging = false;
-  },
-  finishDrag: function(event, success) {
-    this.active = false;
-    this.dragging = false;
-    this.updateFinished();
-  },
-  updateFinished: function() {
-    if (this.initialized && this.options.onChange)
-      this.options.onChange(this.values.length>1 ? this.values : this.value, this);
-    this.event = null;
-  }
-});
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/sound.js b/wp-includes/js/scriptaculous/sound.js
deleted file mode 100644 (file)
index a286eb9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// script.aculo.us sound.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// Based on code created by Jules Gravinese (http://www.webveteran.com/)
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-Sound = {
-  tracks: {},
-  _enabled: true,
-  template:
-    new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),
-  enable: function(){
-    Sound._enabled = true;
-  },
-  disable: function(){
-    Sound._enabled = false;
-  },
-  play: function(url){
-    if(!Sound._enabled) return;
-    var options = Object.extend({
-      track: 'global', url: url, replace: false
-    }, arguments[1] || {});
-
-    if(options.replace && this.tracks[options.track]) {
-      $R(0, this.tracks[options.track].id).each(function(id){
-        var sound = $('sound_'+options.track+'_'+id);
-        sound.Stop && sound.Stop();
-        sound.remove();
-      });
-      this.tracks[options.track] = null;
-    }
-
-    if(!this.tracks[options.track])
-      this.tracks[options.track] = { id: 0 };
-    else
-      this.tracks[options.track].id++;
-
-    options.id = this.tracks[options.track].id;
-    $$('body')[0].insert(
-      Prototype.Browser.IE ? new Element('bgsound',{
-        id: 'sound_'+options.track+'_'+options.id,
-        src: options.url, loop: 1, autostart: true
-      }) : Sound.template.evaluate(options));
-  }
-};
-
-if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){
-  if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 }))
-    Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>');
-  else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('Windows Media') != -1 }))
-    Sound.template = new Template('<object id="sound_#{track}_#{id}" type="application/x-mplayer2" data="#{url}"></object>');
-  else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('RealPlayer') != -1 }))
-    Sound.template = new Template('<embed type="audio/x-pn-realaudio-plugin" style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>');
-  else
-    Sound.play = function(){};
-} 
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/unittest.js b/wp-includes/js/scriptaculous/unittest.js
deleted file mode 100644 (file)
index 33a0c71..0000000
+++ /dev/null
@@ -1,568 +0,0 @@
-// script.aculo.us unittest.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//           (c) 2005-2009 Jon Tirsen (http://www.tirsen.com)
-//           (c) 2005-2009 Michael Schuerig (http://www.schuerig.de/michael/)
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-// experimental, Firefox-only
-Event.simulateMouse = function(element, eventName) {
-  var options = Object.extend({
-    pointerX: 0,
-    pointerY: 0,
-    buttons:  0,
-    ctrlKey:  false,
-    altKey:   false,
-    shiftKey: false,
-    metaKey:  false
-  }, arguments[2] || {});
-  var oEvent = document.createEvent("MouseEvents");
-  oEvent.initMouseEvent(eventName, true, true, document.defaultView, 
-    options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY, 
-    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, $(element));
-  
-  if(this.mark) Element.remove(this.mark);
-  this.mark = document.createElement('div');
-  this.mark.appendChild(document.createTextNode(" "));
-  document.body.appendChild(this.mark);
-  this.mark.style.position = 'absolute';
-  this.mark.style.top = options.pointerY + "px";
-  this.mark.style.left = options.pointerX + "px";
-  this.mark.style.width = "5px";
-  this.mark.style.height = "5px;";
-  this.mark.style.borderTop = "1px solid red;";
-  this.mark.style.borderLeft = "1px solid red;";
-  
-  if(this.step)
-    alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options));
-  
-  $(element).dispatchEvent(oEvent);
-};
-
-// Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2.
-// You need to downgrade to 1.0.4 for now to get this working
-// See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much
-Event.simulateKey = function(element, eventName) {
-  var options = Object.extend({
-    ctrlKey: false,
-    altKey: false,
-    shiftKey: false,
-    metaKey: false,
-    keyCode: 0,
-    charCode: 0
-  }, arguments[2] || {});
-
-  var oEvent = document.createEvent("KeyEvents");
-  oEvent.initKeyEvent(eventName, true, true, window, 
-    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,
-    options.keyCode, options.charCode );
-  $(element).dispatchEvent(oEvent);
-};
-
-Event.simulateKeys = function(element, command) {
-  for(var i=0; i<command.length; i++) {
-    Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)});
-  }
-};
-
-var Test = {};
-Test.Unit = {};
-
-// security exception workaround
-Test.Unit.inspect = Object.inspect;
-
-Test.Unit.Logger = Class.create();
-Test.Unit.Logger.prototype = {
-  initialize: function(log) {
-    this.log = $(log);
-    if (this.log) {
-      this._createLogTable();
-    }
-  },
-  start: function(testName) {
-    if (!this.log) return;
-    this.testName = testName;
-    this.lastLogLine = document.createElement('tr');
-    this.statusCell = document.createElement('td');
-    this.nameCell = document.createElement('td');
-    this.nameCell.className = "nameCell";
-    this.nameCell.appendChild(document.createTextNode(testName));
-    this.messageCell = document.createElement('td');
-    this.lastLogLine.appendChild(this.statusCell);
-    this.lastLogLine.appendChild(this.nameCell);
-    this.lastLogLine.appendChild(this.messageCell);
-    this.loglines.appendChild(this.lastLogLine);
-  },
-  finish: function(status, summary) {
-    if (!this.log) return;
-    this.lastLogLine.className = status;
-    this.statusCell.innerHTML = status;
-    this.messageCell.innerHTML = this._toHTML(summary);
-    this.addLinksToResults();
-  },
-  message: function(message) {
-    if (!this.log) return;
-    this.messageCell.innerHTML = this._toHTML(message);
-  },
-  summary: function(summary) {
-    if (!this.log) return;
-    this.logsummary.innerHTML = this._toHTML(summary);
-  },
-  _createLogTable: function() {
-    this.log.innerHTML =
-    '<div id="logsummary"></div>' +
-    '<table id="logtable">' +
-    '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' +
-    '<tbody id="loglines"></tbody>' +
-    '</table>';
-    this.logsummary = $('logsummary');
-    this.loglines = $('loglines');
-  },
-  _toHTML: function(txt) {
-    return txt.escapeHTML().replace(/\n/g,"<br/>");
-  },
-  addLinksToResults: function(){ 
-    $$("tr.failed .nameCell").each( function(td){ // todo: limit to children of this.log
-      td.title = "Run only this test";
-      Event.observe(td, 'click', function(){ window.location.search = "?tests=" + td.innerHTML;});
-    });
-    $$("tr.passed .nameCell").each( function(td){ // todo: limit to children of this.log
-      td.title = "Run all tests";
-      Event.observe(td, 'click', function(){ window.location.search = "";});
-    });
-  }
-};
-
-Test.Unit.Runner = Class.create();
-Test.Unit.Runner.prototype = {
-  initialize: function(testcases) {
-    this.options = Object.extend({
-      testLog: 'testlog'
-    }, arguments[1] || {});
-    this.options.resultsURL = this.parseResultsURLQueryParameter();
-    this.options.tests      = this.parseTestsQueryParameter();
-    if (this.options.testLog) {
-      this.options.testLog = $(this.options.testLog) || null;
-    }
-    if(this.options.tests) {
-      this.tests = [];
-      for(var i = 0; i < this.options.tests.length; i++) {
-        if(/^test/.test(this.options.tests[i])) {
-          this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"]));
-        }
-      }
-    } else {
-      if (this.options.test) {
-        this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])];
-      } else {
-        this.tests = [];
-        for(var testcase in testcases) {
-          if(/^test/.test(testcase)) {
-            this.tests.push(
-               new Test.Unit.Testcase(
-                 this.options.context ? ' -> ' + this.options.titles[testcase] : testcase, 
-                 testcases[testcase], testcases["setup"], testcases["teardown"]
-               ));
-          }
-        }
-      }
-    }
-    this.currentTest = 0;
-    this.logger = new Test.Unit.Logger(this.options.testLog);
-    setTimeout(this.runTests.bind(this), 1000);
-  },
-  parseResultsURLQueryParameter: function() {
-    return window.location.search.parseQuery()["resultsURL"];
-  },
-  parseTestsQueryParameter: function(){
-    if (window.location.search.parseQuery()["tests"]){
-        return window.location.search.parseQuery()["tests"].split(',');
-    };
-  },
-  // Returns:
-  //  "ERROR" if there was an error,
-  //  "FAILURE" if there was a failure, or
-  //  "SUCCESS" if there was neither
-  getResult: function() {
-    var hasFailure = false;
-    for(var i=0;i<this.tests.length;i++) {
-      if (this.tests[i].errors > 0) {
-        return "ERROR";
-      }
-      if (this.tests[i].failures > 0) {
-        hasFailure = true;
-      }
-    }
-    if (hasFailure) {
-      return "FAILURE";
-    } else {
-      return "SUCCESS";
-    }
-  },
-  postResults: function() {
-    if (this.options.resultsURL) {
-      new Ajax.Request(this.options.resultsURL, 
-        { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false });
-    }
-  },
-  runTests: function() {
-    var test = this.tests[this.currentTest];
-    if (!test) {
-      // finished!
-      this.postResults();
-      this.logger.summary(this.summary());
-      return;
-    }
-    if(!test.isWaiting) {
-      this.logger.start(test.name);
-    }
-    test.run();
-    if(test.isWaiting) {
-      this.logger.message("Waiting for " + test.timeToWait + "ms");
-      setTimeout(this.runTests.bind(this), test.timeToWait || 1000);
-    } else {
-      this.logger.finish(test.status(), test.summary());
-      this.currentTest++;
-      // tail recursive, hopefully the browser will skip the stackframe
-      this.runTests();
-    }
-  },
-  summary: function() {
-    var assertions = 0;
-    var failures = 0;
-    var errors = 0;
-    var messages = [];
-    for(var i=0;i<this.tests.length;i++) {
-      assertions +=   this.tests[i].assertions;
-      failures   +=   this.tests[i].failures;
-      errors     +=   this.tests[i].errors;
-    }
-    return (
-      (this.options.context ? this.options.context + ': ': '') + 
-      this.tests.length + " tests, " + 
-      assertions + " assertions, " + 
-      failures   + " failures, " +
-      errors     + " errors");
-  }
-};
-
-Test.Unit.Assertions = Class.create();
-Test.Unit.Assertions.prototype = {
-  initialize: function() {
-    this.assertions = 0;
-    this.failures   = 0;
-    this.errors     = 0;
-    this.messages   = [];
-  },
-  summary: function() {
-    return (
-      this.assertions + " assertions, " + 
-      this.failures   + " failures, " +
-      this.errors     + " errors" + "\n" +
-      this.messages.join("\n"));
-  },
-  pass: function() {
-    this.assertions++;
-  },
-  fail: function(message) {
-    this.failures++;
-    this.messages.push("Failure: " + message);
-  },
-  info: function(message) {
-    this.messages.push("Info: " + message);
-  },
-  error: function(error) {
-    this.errors++;
-    this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");
-  },
-  status: function() {
-    if (this.failures > 0) return 'failed';
-    if (this.errors > 0) return 'error';
-    return 'passed';
-  },
-  assert: function(expression) {
-    var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';
-    try { expression ? this.pass() : 
-      this.fail(message); }
-    catch(e) { this.error(e); }
-  },
-  assertEqual: function(expected, actual) {
-    var message = arguments[2] || "assertEqual";
-    try { (expected == actual) ? this.pass() :
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 
-        '", actual "' + Test.Unit.inspect(actual) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertInspect: function(expected, actual) {
-    var message = arguments[2] || "assertInspect";
-    try { (expected == actual.inspect()) ? this.pass() :
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 
-        '", actual "' + Test.Unit.inspect(actual) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertEnumEqual: function(expected, actual) {
-    var message = arguments[2] || "assertEnumEqual";
-    try { $A(expected).length == $A(actual).length && 
-      expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?
-        this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + 
-          ', actual ' + Test.Unit.inspect(actual)); }
-    catch(e) { this.error(e); }
-  },
-  assertNotEqual: function(expected, actual) {
-    var message = arguments[2] || "assertNotEqual";
-    try { (expected != actual) ? this.pass() : 
-      this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertIdentical: function(expected, actual) { 
-    var message = arguments[2] || "assertIdentical"; 
-    try { (expected === actual) ? this.pass() : 
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
-        '", actual "' + Test.Unit.inspect(actual) + '"'); } 
-    catch(e) { this.error(e); } 
-  },
-  assertNotIdentical: function(expected, actual) { 
-    var message = arguments[2] || "assertNotIdentical"; 
-    try { !(expected === actual) ? this.pass() : 
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
-        '", actual "' + Test.Unit.inspect(actual) + '"'); } 
-    catch(e) { this.error(e); } 
-  },
-  assertNull: function(obj) {
-    var message = arguments[1] || 'assertNull';
-    try { (obj==null) ? this.pass() : 
-      this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertMatch: function(expected, actual) {
-    var message = arguments[2] || 'assertMatch';
-    var regex = new RegExp(expected);
-    try { (regex.exec(actual)) ? this.pass() :
-      this.fail(message + ' : regex: "' +  Test.Unit.inspect(expected) + ' did not match: ' + Test.Unit.inspect(actual) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertHidden: function(element) {
-    var message = arguments[1] || 'assertHidden';
-    this.assertEqual("none", element.style.display, message);
-  },
-  assertNotNull: function(object) {
-    var message = arguments[1] || 'assertNotNull';
-    this.assert(object != null, message);
-  },
-  assertType: function(expected, actual) {
-    var message = arguments[2] || 'assertType';
-    try { 
-      (actual.constructor == expected) ? this.pass() : 
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
-        '", actual "' + (actual.constructor) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertNotOfType: function(expected, actual) {
-    var message = arguments[2] || 'assertNotOfType';
-    try { 
-      (actual.constructor != expected) ? this.pass() : 
-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
-        '", actual "' + (actual.constructor) + '"'); }
-    catch(e) { this.error(e); }
-  },
-  assertInstanceOf: function(expected, actual) {
-    var message = arguments[2] || 'assertInstanceOf';
-    try { 
-      (actual instanceof expected) ? this.pass() : 
-      this.fail(message + ": object was not an instance of the expected type"); }
-    catch(e) { this.error(e); } 
-  },
-  assertNotInstanceOf: function(expected, actual) {
-    var message = arguments[2] || 'assertNotInstanceOf';
-    try { 
-      !(actual instanceof expected) ? this.pass() : 
-      this.fail(message + ": object was an instance of the not expected type"); }
-    catch(e) { this.error(e); } 
-  },
-  assertRespondsTo: function(method, obj) {
-    var message = arguments[2] || 'assertRespondsTo';
-    try {
-      (obj[method] && typeof obj[method] == 'function') ? this.pass() : 
-      this.fail(message + ": object doesn't respond to [" + method + "]"); }
-    catch(e) { this.error(e); }
-  },
-  assertReturnsTrue: function(method, obj) {
-    var message = arguments[2] || 'assertReturnsTrue';
-    try {
-      var m = obj[method];
-      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];
-      m() ? this.pass() : 
-      this.fail(message + ": method returned false"); }
-    catch(e) { this.error(e); }
-  },
-  assertReturnsFalse: function(method, obj) {
-    var message = arguments[2] || 'assertReturnsFalse';
-    try {
-      var m = obj[method];
-      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];
-      !m() ? this.pass() : 
-      this.fail(message + ": method returned true"); }
-    catch(e) { this.error(e); }
-  },
-  assertRaise: function(exceptionName, method) {
-    var message = arguments[2] || 'assertRaise';
-    try { 
-      method();
-      this.fail(message + ": exception expected but none was raised"); }
-    catch(e) {
-      ((exceptionName == null) || (e.name==exceptionName)) ? this.pass() : this.error(e); 
-    }
-  },
-  assertElementsMatch: function() {
-    var expressions = $A(arguments), elements = $A(expressions.shift());
-    if (elements.length != expressions.length) {
-      this.fail('assertElementsMatch: size mismatch: ' + elements.length + ' elements, ' + expressions.length + ' expressions');
-      return false;
-    }
-    elements.zip(expressions).all(function(pair, index) {
-      var element = $(pair.first()), expression = pair.last();
-      if (element.match(expression)) return true;
-      this.fail('assertElementsMatch: (in index ' + index + ') expected ' + expression.inspect() + ' but got ' + element.inspect());
-    }.bind(this)) && this.pass();
-  },
-  assertElementMatches: function(element, expression) {
-    this.assertElementsMatch([element], expression);
-  },
-  benchmark: function(operation, iterations) {
-    var startAt = new Date();
-    (iterations || 1).times(operation);
-    var timeTaken = ((new Date())-startAt);
-    this.info((arguments[2] || 'Operation') + ' finished ' + 
-       iterations + ' iterations in ' + (timeTaken/1000)+'s' );
-    return timeTaken;
-  },
-  _isVisible: function(element) {
-    element = $(element);
-    if(!element.parentNode) return true;
-    this.assertNotNull(element);
-    if(element.style && Element.getStyle(element, 'display') == 'none')
-      return false;
-    
-    return this._isVisible(element.parentNode);
-  },
-  assertNotVisible: function(element) {
-    this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));
-  },
-  assertVisible: function(element) {
-    this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));
-  },
-  benchmark: function(operation, iterations) {
-    var startAt = new Date();
-    (iterations || 1).times(operation);
-    var timeTaken = ((new Date())-startAt);
-    this.info((arguments[2] || 'Operation') + ' finished ' + 
-       iterations + ' iterations in ' + (timeTaken/1000)+'s' );
-    return timeTaken;
-  }
-};
-
-Test.Unit.Testcase = Class.create();
-Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {
-  initialize: function(name, test, setup, teardown) {
-    Test.Unit.Assertions.prototype.initialize.bind(this)();
-    this.name           = name;
-    
-    if(typeof test == 'string') {
-      test = test.gsub(/(\.should[^\(]+\()/,'#{0}this,');
-      test = test.gsub(/(\.should[^\(]+)\(this,\)/,'#{1}(this)');
-      this.test = function() {
-        eval('with(this){'+test+'}');
-      }
-    } else {
-      this.test = test || function() {};
-    }
-    
-    this.setup          = setup || function() {};
-    this.teardown       = teardown || function() {};
-    this.isWaiting      = false;
-    this.timeToWait     = 1000;
-  },
-  wait: function(time, nextPart) {
-    this.isWaiting = true;
-    this.test = nextPart;
-    this.timeToWait = time;
-  },
-  run: function() {
-    try {
-      try {
-        if (!this.isWaiting) this.setup.bind(this)();
-        this.isWaiting = false;
-        this.test.bind(this)();
-      } finally {
-        if(!this.isWaiting) {
-          this.teardown.bind(this)();
-        }
-      }
-    }
-    catch(e) { this.error(e); }
-  }
-});
-
-// *EXPERIMENTAL* BDD-style testing to please non-technical folk
-// This draws many ideas from RSpec http://rspec.rubyforge.org/
-
-Test.setupBDDExtensionMethods = function(){
-  var METHODMAP = {
-    shouldEqual:     'assertEqual',
-    shouldNotEqual:  'assertNotEqual',
-    shouldEqualEnum: 'assertEnumEqual',
-    shouldBeA:       'assertType',
-    shouldNotBeA:    'assertNotOfType',
-    shouldBeAn:      'assertType',
-    shouldNotBeAn:   'assertNotOfType',
-    shouldBeNull:    'assertNull',
-    shouldNotBeNull: 'assertNotNull',
-    
-    shouldBe:        'assertReturnsTrue',
-    shouldNotBe:     'assertReturnsFalse',
-    shouldRespondTo: 'assertRespondsTo'
-  };
-  var makeAssertion = function(assertion, args, object) { 
-       this[assertion].apply(this,(args || []).concat([object]));
-  };
-  
-  Test.BDDMethods = {};   
-  $H(METHODMAP).each(function(pair) { 
-    Test.BDDMethods[pair.key] = function() { 
-       var args = $A(arguments); 
-       var scope = args.shift(); 
-       makeAssertion.apply(scope, [pair.value, args, this]); }; 
-  });
-  
-  [Array.prototype, String.prototype, Number.prototype, Boolean.prototype].each(
-    function(p){ Object.extend(p, Test.BDDMethods) }
-  );
-};
-
-Test.context = function(name, spec, log){
-  Test.setupBDDExtensionMethods();
-  
-  var compiledSpec = {};
-  var titles = {};
-  for(specName in spec) {
-    switch(specName){
-      case "setup":
-      case "teardown":
-        compiledSpec[specName] = spec[specName];
-        break;
-      default:
-        var testName = 'test'+specName.gsub(/\s+/,'-').camelize();
-        var body = spec[specName].toString().split('\n').slice(1);
-        if(/^\{/.test(body[0])) body = body.slice(1);
-        body.pop();
-        body = body.map(function(statement){ 
-          return statement.strip()
-        });
-        compiledSpec[testName] = body.join('\n');
-        titles[testName] = specName;
-    }
-  }
-  new Test.Unit.Runner(compiledSpec, { titles: titles, testLog: log || 'testlog', context: name });
-};
\ No newline at end of file
diff --git a/wp-includes/js/scriptaculous/wp-scriptaculous.js b/wp-includes/js/scriptaculous/wp-scriptaculous.js
deleted file mode 100644 (file)
index c8f9dfc..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// script.aculo.us scriptaculous.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009
-
-// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-var Scriptaculous = {
-  Version: '1.8.3',
-  require: function(libraryName) {
-    try{
-      // inserting via DOM fails in Safari 2.0, so brute force approach
-      document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
-    } catch(e) {
-      // for xhtml+xml served content, fall back to DOM methods
-      var script = document.createElement('script');
-      script.type = 'text/javascript';
-      script.src = libraryName;
-      document.getElementsByTagName('head')[0].appendChild(script);
-    }
-  },
-  REQUIRED_PROTOTYPE: '1.6.0.3',
-  load: function() {
-    function convertVersionString(versionString) {
-      var v = versionString.replace(/_.*|\./g, '');
-      v = parseInt(v + '0'.times(4-v.length));
-      return versionString.indexOf('_') > -1 ? v-1 : v;
-    }
-
-    if((typeof Prototype=='undefined') ||
-       (typeof Element == 'undefined') ||
-       (typeof Element.Methods=='undefined') ||
-       (convertVersionString(Prototype.Version) <
-        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
-       throw("script.aculo.us requires the Prototype JavaScript framework >= " +
-        Scriptaculous.REQUIRED_PROTOTYPE);
-
-    var js = /scriptaculous\.js(\?.*)?$/;
-    $$('head script[src]').findAll(function(s) {
-      return s.src.match(js);
-    }).each(function(s) {
-               var path = s.src.replace(js, ''),
-               includes = s.src.match(/\?.*load=([a-z,]*)/);
-
-               // Modified for WordPress to work with enqueue_script
-               if ( includes ) {
-                       includes[1].split(',').each( function(include) {
-                               Scriptaculous.require(path+include+'.js')
-                       });
-               }
-    });
-  }
-};
-
-Scriptaculous.load();
diff --git a/wp-includes/js/shortcode.js b/wp-includes/js/shortcode.js
new file mode 100644 (file)
index 0000000..0f83a44
--- /dev/null
@@ -0,0 +1,342 @@
+// Utility functions for parsing and handling shortcodes in Javascript.
+
+// Ensure the global `wp` object exists.
+window.wp = window.wp || {};
+
+(function(){
+       wp.shortcode = {
+               // ### Find the next matching shortcode
+               //
+               // Given a shortcode `tag`, a block of `text`, and an optional starting
+               // `index`, returns the next matching shortcode or `undefined`.
+               //
+               // Shortcodes are formatted as an object that contains the match
+               // `content`, the matching `index`, and the parsed `shortcode` object.
+               next: function( tag, text, index ) {
+                       var re = wp.shortcode.regexp( tag ),
+                               match, result;
+
+                       re.lastIndex = index || 0;
+                       match = re.exec( text );
+
+                       if ( ! match )
+                               return;
+
+                       // If we matched an escaped shortcode, try again.
+                       if ( match[1] === '[' && match[7] === ']' )
+                               return wp.shortcode.next( tag, text, re.lastIndex );
+
+                       result = {
+                               index:     match.index,
+                               content:   match[0],
+                               shortcode: wp.shortcode.fromMatch( match )
+                       };
+
+                       // If we matched a leading `[`, strip it from the match
+                       // and increment the index accordingly.
+                       if ( match[1] ) {
+                               result.match = result.match.slice( 1 );
+                               result.index++;
+                       }
+
+                       // If we matched a trailing `]`, strip it from the match.
+                       if ( match[7] )
+                               result.match = result.match.slice( 0, -1 );
+
+                       return result;
+               },
+
+               // ### Replace matching shortcodes in a block of text
+               //
+               // Accepts a shortcode `tag`, content `text` to scan, and a `callback`
+               // to process the shortcode matches and return a replacement string.
+               // Returns the `text` with all shortcodes replaced.
+               //
+               // Shortcode matches are objects that contain the shortcode `tag`,
+               // a shortcode `attrs` object, the `content` between shortcode tags,
+               // and a boolean flag to indicate if the match was a `single` tag.
+               replace: function( tag, text, callback ) {
+                       return text.replace( wp.shortcode.regexp( tag ), function( match, left, tag, attrs, slash, content, closing, right, offset ) {
+                               // If both extra brackets exist, the shortcode has been
+                               // properly escaped.
+                               if ( left === '[' && right === ']' )
+                                       return match;
+
+                               // Create the match object and pass it through the callback.
+                               var result = callback( wp.shortcode.fromMatch( arguments ) );
+
+                               // Make sure to return any of the extra brackets if they
+                               // weren't used to escape the shortcode.
+                               return result ? left + result + right : match;
+                       });
+               },
+
+               // ### Generate a string from shortcode parameters
+               //
+               // Creates a `wp.shortcode` instance and returns a string.
+               //
+               // Accepts the same `options` as the `wp.shortcode()` constructor,
+               // containing a `tag` string, a string or object of `attrs`, a boolean
+               // indicating whether to format the shortcode using a `single` tag, and a
+               // `content` string.
+               string: function( options ) {
+                       return new wp.shortcode( options ).string();
+               },
+
+               // ### Generate a RegExp to identify a shortcode
+               //
+               // The base regex is functionally equivalent to the one found in
+               // `get_shortcode_regex()` in `wp-includes/shortcodes.php`.
+               //
+               // Capture groups:
+               //
+               // 1. An extra `[` to allow for escaping shortcodes with double `[[]]`
+               // 2. The shortcode name
+               // 3. The shortcode argument list
+               // 4. The self closing `/`
+               // 5. The content of a shortcode when it wraps some content.
+               // 6. The closing tag.
+               // 7. An extra `]` to allow for escaping shortcodes with double `[[]]`
+               regexp: _.memoize( function( tag ) {
+                       return new RegExp( '\\[(\\[?)(' + tag + ')(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)', 'g' );
+               }),
+
+
+               // ### Parse shortcode attributes
+               //
+               // Shortcodes accept many types of attributes. These can chiefly be
+               // divided into named and numeric attributes:
+               //
+               // Named attributes are assigned on a key/value basis, while numeric
+               // attributes are treated as an array.
+               //
+               // Named attributes can be formatted as either `name="value"`,
+               // `name='value'`, or `name=value`. Numeric attributes can be formatted
+               // as `"value"` or just `value`.
+               attrs: _.memoize( function( text ) {
+                       var named   = {},
+                               numeric = [],
+                               pattern, match;
+
+                       // This regular expression is reused from `shortcode_parse_atts()`
+                       // in `wp-includes/shortcodes.php`.
+                       //
+                       // Capture groups:
+                       //
+                       // 1. An attribute name, that corresponds to...
+                       // 2. a value in double quotes.
+                       // 3. An attribute name, that corresponds to...
+                       // 4. a value in single quotes.
+                       // 5. An attribute name, that corresponds to...
+                       // 6. an unquoted value.
+                       // 7. A numeric attribute in double quotes.
+                       // 8. An unquoted numeric attribute.
+                       pattern = /(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g;
+
+                       // Map zero-width spaces to actual spaces.
+                       text = text.replace( /[\u00a0\u200b]/g, ' ' );
+
+                       // Match and normalize attributes.
+                       while ( (match = pattern.exec( text )) ) {
+                               if ( match[1] ) {
+                                       named[ match[1].toLowerCase() ] = match[2];
+                               } else if ( match[3] ) {
+                                       named[ match[3].toLowerCase() ] = match[4];
+                               } else if ( match[5] ) {
+                                       named[ match[5].toLowerCase() ] = match[6];
+                               } else if ( match[7] ) {
+                                       numeric.push( match[7] );
+                               } else if ( match[8] ) {
+                                       numeric.push( match[8] );
+                               }
+                       }
+
+                       return {
+                               named:   named,
+                               numeric: numeric
+                       };
+               }),
+
+               // ### Generate a Shortcode Object from a RegExp match
+               // Accepts a `match` object from calling `regexp.exec()` on a `RegExp`
+               // generated by `wp.shortcode.regexp()`. `match` can also be set to the
+               // `arguments` from a callback passed to `regexp.replace()`.
+               fromMatch: function( match ) {
+                       var type;
+
+                       if ( match[4] )
+                               type = 'self-closing';
+                       else if ( match[6] )
+                               type = 'closed';
+                       else
+                               type = 'single';
+
+                       return new wp.shortcode({
+                               tag:     match[2],
+                               attrs:   match[3],
+                               type:    type,
+                               content: match[5]
+                       });
+               }
+       };
+
+
+       // Shortcode Objects
+       // -----------------
+       //
+       // Shortcode objects are generated automatically when using the main
+       // `wp.shortcode` methods: `next()`, `replace()`, and `string()`.
+       //
+       // To access a raw representation of a shortcode, pass an `options` object,
+       // containing a `tag` string, a string or object of `attrs`, a string
+       // indicating the `type` of the shortcode ('single', 'self-closing', or
+       // 'closed'), and a `content` string.
+       wp.shortcode = _.extend( function( options ) {
+               _.extend( this, _.pick( options || {}, 'tag', 'attrs', 'type', 'content' ) );
+
+               var attrs = this.attrs;
+
+               // Ensure we have a correctly formatted `attrs` object.
+               this.attrs = {
+                       named:   {},
+                       numeric: []
+               };
+
+               if ( ! attrs )
+                       return;
+
+               // Parse a string of attributes.
+               if ( _.isString( attrs ) ) {
+                       this.attrs = wp.shortcode.attrs( attrs );
+
+               // Identify a correctly formatted `attrs` object.
+               } else if ( _.isEqual( _.keys( attrs ), [ 'named', 'numeric' ] ) ) {
+                       this.attrs = attrs;
+
+               // Handle a flat object of attributes.
+               } else {
+                       _.each( options.attrs, function( value, key ) {
+                               this.set( key, value );
+                       }, this );
+               }
+       }, wp.shortcode );
+
+       _.extend( wp.shortcode.prototype, {
+               // ### Get a shortcode attribute
+               //
+               // Automatically detects whether `attr` is named or numeric and routes
+               // it accordingly.
+               get: function( attr ) {
+                       return this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ];
+               },
+
+               // ### Set a shortcode attribute
+               //
+               // Automatically detects whether `attr` is named or numeric and routes
+               // it accordingly.
+               set: function( attr, value ) {
+                       this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ] = value;
+                       return this;
+               },
+
+               // ### Transform the shortcode match into a string
+               string: function() {
+                       var text    = '[' + this.tag;
+
+                       _.each( this.attrs.numeric, function( value ) {
+                               if ( /\s/.test( value ) )
+                                       text += ' "' + value + '"';
+                               else
+                                       text += ' ' + value;
+                       });
+
+                       _.each( this.attrs.named, function( value, name ) {
+                               text += ' ' + name + '="' + value + '"';
+                       });
+
+                       // If the tag is marked as `single` or `self-closing`, close the
+                       // tag and ignore any additional content.
+                       if ( 'single' === this.type )
+                               return text + ']';
+                       else if ( 'self-closing' === this.type )
+                               return text + ' /]';
+
+                       // Complete the opening tag.
+                       text += ']';
+
+                       if ( this.content )
+                               text += this.content;
+
+                       // Add the closing tag.
+                       return text + '[/' + this.tag + ']';
+               }
+       });
+}());
+
+// HTML utility functions
+// ----------------------
+//
+// Experimental. These functions may change or be removed in the future.
+(function(){
+       wp.html = _.extend( wp.html || {}, {
+               // ### Parse HTML attributes.
+               //
+               // Converts `content` to a set of parsed HTML attributes.
+               // Utilizes `wp.shortcode.attrs( content )`, which is a valid superset of
+               // the HTML attribute specification. Reformats the attributes into an
+               // object that contains the `attrs` with `key:value` mapping, and a record
+               // of the attributes that were entered using `empty` attribute syntax (i.e.
+               // with no value).
+               attrs: function( content ) {
+                       var result, attrs;
+
+                       // If `content` ends in a slash, strip it.
+                       if ( '/' === content[ content.length - 1 ] )
+                               content = content.slice( 0, -1 );
+
+                       result = wp.shortcode.attrs( content );
+                       attrs  = result.named;
+
+                       _.each( result.numeric, function( key ) {
+                               if ( /\s/.test( key ) )
+                                       return;
+
+                               attrs[ key ] = '';
+                       });
+
+                       return attrs;
+               },
+
+               // ### Convert an HTML-representation of an object to a string.
+               string: function( options ) {
+                       var text = '<' + options.tag,
+                               content = options.content || '';
+
+                       _.each( options.attrs, function( value, attr ) {
+                               text += ' ' + attr;
+
+                               // Use empty attribute notation where possible.
+                               if ( '' === value )
+                                       return;
+
+                               // Convert boolean values to strings.
+                               if ( _.isBoolean( value ) )
+                                       value = value ? 'true' : 'false';
+
+                               text += '="' + value + '"';
+                       });
+
+                       // Return the result if it is a self-closing tag.
+                       if ( options.single )
+                               return text + ' />';
+
+                       // Complete the opening tag.
+                       text += '>';
+
+                       // If `content` is an object, recursively call this function.
+                       text += _.isObject( content ) ? wp.html.string( content ) : content;
+
+                       return text + '</' + options.tag + '>';
+               }
+       });
+}());
\ No newline at end of file
diff --git a/wp-includes/js/shortcode.min.js b/wp-includes/js/shortcode.min.js
new file mode 100644 (file)
index 0000000..a3d9671
--- /dev/null
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(){wp.shortcode={next:function(b,f,d){var e=wp.shortcode.regexp(b),c,a;e.lastIndex=d||0;c=e.exec(f);if(!c){return}if(c[1]==="["&&c[7]==="]"){return wp.shortcode.next(b,f,e.lastIndex)}a={index:c.index,content:c[0],shortcode:wp.shortcode.fromMatch(c)};if(c[1]){a.match=a.match.slice(1);a.index++}if(c[7]){a.match=a.match.slice(0,-1)}return a},replace:function(a,b,c){return b.replace(wp.shortcode.regexp(a),function(h,d,m,k,g,i,e,j,f){if(d==="["&&j==="]"){return h}var l=c(wp.shortcode.fromMatch(arguments));return l?d+l+j:h})},string:function(a){return new wp.shortcode(a).string()},regexp:_.memoize(function(a){return new RegExp("\\[(\\[?)("+a+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(e){var a={},c=[],d,b;d=/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g;e=e.replace(/[\u00a0\u200b]/g," ");while((b=d.exec(e))){if(b[1]){a[b[1].toLowerCase()]=b[2]}else{if(b[3]){a[b[3].toLowerCase()]=b[4]}else{if(b[5]){a[b[5].toLowerCase()]=b[6]}else{if(b[7]){c.push(b[7])}else{if(b[8]){c.push(b[8])}}}}}}return{named:a,numeric:c}}),fromMatch:function(a){var b;if(a[4]){b="self-closing"}else{if(a[6]){b="closed"}else{b="single"}}return new wp.shortcode({tag:a[2],attrs:a[3],type:b,content:a[5]})}};wp.shortcode=_.extend(function(b){_.extend(this,_.pick(b||{},"tag","attrs","type","content"));var a=this.attrs;this.attrs={named:{},numeric:[]};if(!a){return}if(_.isString(a)){this.attrs=wp.shortcode.attrs(a)}else{if(_.isEqual(_.keys(a),["named","numeric"])){this.attrs=a}else{_.each(b.attrs,function(d,c){this.set(c,d)},this)}}},wp.shortcode);_.extend(wp.shortcode.prototype,{get:function(a){return this.attrs[_.isNumber(a)?"numeric":"named"][a]},set:function(a,b){this.attrs[_.isNumber(a)?"numeric":"named"][a]=b;return this},string:function(){var a="["+this.tag;_.each(this.attrs.numeric,function(b){if(/\s/.test(b)){a+=' "'+b+'"'}else{a+=" "+b}});_.each(this.attrs.named,function(c,b){a+=" "+b+'="'+c+'"'});if("single"===this.type){return a+"]"}else{if("self-closing"===this.type){return a+" /]"}}a+="]";if(this.content){a+=this.content}return a+"[/"+this.tag+"]"}})}());(function(){wp.html=_.extend(wp.html||{},{attrs:function(c){var a,b;if("/"===c[c.length-1]){c=c.slice(0,-1)}a=wp.shortcode.attrs(c);b=a.named;_.each(a.numeric,function(d){if(/\s/.test(d)){return}b[d]=""});return b},string:function(a){var c="<"+a.tag,b=a.content||"";_.each(a.attrs,function(e,d){c+=" "+d;if(""===e){return}if(_.isBoolean(e)){e=e?"true":"false"}c+='="'+e+'"'});if(a.single){return c+" />"}c+=">";c+=_.isObject(b)?wp.html.string(b):b;return c+"</"+a.tag+">"}})}());
\ No newline at end of file
diff --git a/wp-includes/js/swfupload/handlers.dev.js b/wp-includes/js/swfupload/handlers.dev.js
deleted file mode 100644 (file)
index 7296cb6..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-var topWin = window.dialogArguments || opener || parent || top;
-
-function fileDialogStart() {
-       jQuery("#media-upload-error").empty();
-}
-
-// progress and success handlers for media multi uploads
-function fileQueued(fileObj) {
-       // Get rid of unused form
-       jQuery('.media-blank').remove();
-       // Collapse a single item
-       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
-               jQuery('.describe-toggle-on').show();
-               jQuery('.describe-toggle-off').hide();
-               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
-       }
-       // Create a progress bar containing the filename
-       jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> ' + fileObj.name + '</div></div>');
-       // Display the progress div
-       jQuery('.progress', '#media-item-' + fileObj.id).show();
-
-       // Disable submit and enable cancel
-       jQuery('#insert-gallery').prop('disabled', true);
-       jQuery('#cancel-upload').prop('disabled', false);
-}
-
-function uploadStart(fileObj) {
-       try {
-               if ( typeof topWin.tb_remove != 'undefined' )
-                       topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove); 
-       } catch(e){}
-
-       return true;
-}
-
-function uploadProgress(fileObj, bytesDone, bytesTotal) {
-       // Lengthen the progress bar
-       var w = jQuery('#media-items').width() - 2, item = jQuery('#media-item-' + fileObj.id);
-       jQuery('.bar', item).width( w * bytesDone / bytesTotal );
-       jQuery('.percent', item).html( Math.ceil(bytesDone / bytesTotal * 100) + '%' );
-
-       if ( bytesDone == bytesTotal )
-               jQuery('.bar', item).html('<strong class="crunching">' + swfuploadL10n.crunching + '</strong>');
-}
-
-function prepareMediaItem(fileObj, serverData) {
-       var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
-       // Move the progress bar to 100%
-       jQuery('.bar', item).remove();
-       jQuery('.progress', item).hide();
-
-       try {
-               if ( typeof topWin.tb_remove != 'undefined' )
-                       topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
-       } catch(e){}
-
-       // Old style: Append the HTML returned by the server -- thumbnail and form inputs
-       if ( isNaN(serverData) || !serverData ) {
-               item.append(serverData);
-               prepareMediaItemInit(fileObj);
-       }
-       // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
-       else {
-               item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
-       }
-}
-
-function prepareMediaItemInit(fileObj) {
-       var item = jQuery('#media-item-' + fileObj.id);
-       // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
-       jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item);
-
-       // Replace the original filename with the new (unique) one assigned during upload
-       jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) );
-
-       // Also bind toggle to the links
-       jQuery('a.toggle', item).click(function(){
-               jQuery(this).siblings('.slidetoggle').slideToggle(350, function(){
-                       var w = jQuery(window).height(), t = jQuery(this).offset().top, h = jQuery(this).height(), b;
-
-                       if ( w && t && h ) {
-                b = t + h;
-
-                if ( b > w && (h + 48) < w )
-                    window.scrollBy(0, b - w + 13);
-                else if ( b > w )
-                    window.scrollTo(0, t - 36);
-            }
-               });
-               jQuery(this).siblings('.toggle').andSelf().toggle();
-               jQuery(this).siblings('a.toggle').focus();
-               return false;
-       });
-
-       // Bind AJAX to the new Delete button
-       jQuery('a.delete', item).click(function(){
-               // Tell the server to delete it. TODO: handle exceptions
-               jQuery.ajax({
-                       url: ajaxurl,
-                       type: 'post',
-                       success: deleteSuccess,
-                       error: deleteError,
-                       id: fileObj.id,
-                       data: {
-                               id : this.id.replace(/[^0-9]/g, ''),
-                               action : 'trash-post',
-                               _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
-                       }
-               });
-               return false;
-       });
-
-       // Bind AJAX to the new Undo button
-       jQuery('a.undo', item).click(function(){
-               // Tell the server to untrash it. TODO: handle exceptions
-               jQuery.ajax({
-                       url: ajaxurl,
-                       type: 'post',
-                       id: fileObj.id,
-                       data: {
-                               id : this.id.replace(/[^0-9]/g,''),
-                               action: 'untrash-post',
-                               _ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
-                       },
-                       success: function(data, textStatus){
-                               var item = jQuery('#media-item-' + fileObj.id);
-
-                               if ( type = jQuery('#type-of-' + fileObj.id).val() )
-                                       jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
-                               if ( item.hasClass('child-of-'+post_id) )
-                                       jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
-
-                               jQuery('.filename .trashnotice', item).remove();
-                               jQuery('.filename .title', item).css('font-weight','normal');
-                               jQuery('a.undo', item).addClass('hidden');
-                               jQuery('a.describe-toggle-on, .menu_order_input', item).show();
-                               item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo');
-                       }
-               });
-               return false;
-       });
-
-       // Open this item if it says to start open (e.g. to display an error)
-       jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).siblings('.toggle').toggle();
-}
-
-function itemAjaxError(id, html) {
-       var item = jQuery('#media-item-' + id);
-       var filename = jQuery('.filename', item).text();
-
-       item.html('<div class="error-div">'
-                               + '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
-                               + '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
-                               + html
-                               + '</div>');
-       item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
-}
-
-function deleteSuccess(data, textStatus) {
-       if ( data == '-1' )
-               return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
-       if ( data == '0' )
-               return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
-
-       var id = this.id, item = jQuery('#media-item-' + id);
-
-       // Decrement the counters.
-       if ( type = jQuery('#type-of-' + id).val() )
-               jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
-       if ( item.hasClass('child-of-'+post_id) )
-               jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
-
-       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
-               jQuery('.toggle').toggle();
-               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
-       }
-
-       // Vanish it.
-       jQuery('.toggle', item).toggle();
-       jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
-       item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
-
-       jQuery('.filename:empty', item).remove();
-       jQuery('.filename .title', item).css('font-weight','bold');
-       jQuery('.filename', item).append('<span class="trashnotice"> ' + swfuploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
-       jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
-       jQuery('.menu_order_input', item).hide();
-
-       return;
-}
-
-function deleteError(X, textStatus, errorThrown) {
-       // TODO
-}
-
-function updateMediaForm() {
-       var one = jQuery('form.type-form #media-items').children(), items = jQuery('#media-items').children();
-
-       // Just one file, no need for collapsible part
-       if ( one.length == 1 ) {
-               jQuery('.slidetoggle', one).slideDown(500).siblings().addClass('hidden').filter('.toggle').toggle();
-       }
-
-       // Only show Save buttons when there is at least one file.
-       if ( items.not('.media-blank').length > 0 )
-               jQuery('.savebutton').show();
-       else
-               jQuery('.savebutton').hide();
-
-       // Only show Gallery button when there are at least two files.
-       if ( items.length > 1 )
-               jQuery('.insert-gallery').show();
-       else
-               jQuery('.insert-gallery').hide();
-}
-
-function uploadSuccess(fileObj, serverData) {
-       // if async-upload returned an error message, place it in the media item div and return
-       if ( serverData.match('media-upload-error') ) {
-               jQuery('#media-item-' + fileObj.id).html(serverData);
-               return;
-       }
-
-       prepareMediaItem(fileObj, serverData);
-       updateMediaForm();
-
-       // Increment the counter.
-       if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-' + post_id) )
-               jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
-}
-
-function uploadComplete(fileObj) {
-       // If no more uploads queued, enable the submit button
-       if ( swfu.getStats().files_queued == 0 ) {
-               jQuery('#cancel-upload').prop('disabled', true);
-               jQuery('#insert-gallery').prop('disabled', false);
-       }
-}
-
-
-// wp-specific error handlers
-
-// generic message
-function wpQueueError(message) {
-       jQuery('#media-upload-error').show().text(message);
-}
-
-// file-specific message
-function wpFileError(fileObj, message) {
-       var item = jQuery('#media-item-' + fileObj.id);
-       var filename = jQuery('.filename', item).text();
-
-       item.html('<div class="error-div">'
-                               + '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
-                               + '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
-                               + message
-                               + '</div>');
-       item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
-}
-
-function fileQueueError(fileObj, error_code, message)  {
-       // Handle this error separately because we don't want to create a FileProgress element for it.
-       if ( error_code == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED ) {
-               wpQueueError(swfuploadL10n.queue_limit_exceeded);
-       }
-       else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) {
-               fileQueued(fileObj);
-               wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit);
-       }
-       else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) {
-               fileQueued(fileObj);
-               wpFileError(fileObj, swfuploadL10n.zero_byte_file);
-       }
-       else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) {
-               fileQueued(fileObj);
-               wpFileError(fileObj, swfuploadL10n.invalid_filetype);
-       }
-       else {
-               wpQueueError(swfuploadL10n.default_error);
-       }
-}
-
-function fileDialogComplete(num_files_queued) {
-       try {
-               if (num_files_queued > 0) {
-                       this.startUpload();
-               }
-       } catch (ex) {
-               this.debug(ex);
-       }
-}
-
-function switchUploader(s) {
-       var f = document.getElementById(swfu.customSettings.swfupload_element_id), h = document.getElementById(swfu.customSettings.degraded_element_id);
-       if ( s ) {
-               f.style.display = 'block';
-               h.style.display = 'none';
-       } else {
-               f.style.display = 'none';
-               h.style.display = 'block';
-       }
-}
-
-function swfuploadPreLoad() {
-       if ( !uploaderMode ) {
-               switchUploader(1);
-       } else {
-               switchUploader(0);
-       }
-}
-
-function swfuploadLoadFailed() {
-       switchUploader(0);
-       jQuery('.upload-html-bypass').hide();
-}
-
-function uploadError(fileObj, errorCode, message) {
-
-       switch (errorCode) {
-               case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
-                       wpFileError(fileObj, swfuploadL10n.missing_upload_url);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
-                       wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
-                       wpQueueError(swfuploadL10n.http_error);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
-                       wpQueueError(swfuploadL10n.upload_failed);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.IO_ERROR:
-                       wpQueueError(swfuploadL10n.io_error);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
-                       wpQueueError(swfuploadL10n.security_error);
-                       break;
-               case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
-               case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
-                       jQuery('#media-item-' + fileObj.id).remove();
-                       break;
-               default:
-                       wpFileError(fileObj, swfuploadL10n.default_error);
-       }
-}
-
-function cancelUpload() {
-       swfu.cancelQueue();
-}
-
-// remember the last used image size, alignment and url
-jQuery(document).ready(function($){
-       $('input[type="radio"]', '#media-items').live('click', function(){
-               var tr = $(this).closest('tr');
-
-               if ( $(tr).hasClass('align') )
-                       setUserSetting('align', $(this).val());
-               else if ( $(tr).hasClass('image-size') )
-                       setUserSetting('imgsize', $(this).val());
-       });
-
-       $('button.button', '#media-items').live('click', function(){
-               var c = this.className || '';
-               c = c.match(/url([^ '"]+)/);
-               if ( c && c[1] ) {
-                       setUserSetting('urlbutton', c[1]);
-                       $(this).siblings('.urlfield').val( $(this).attr('title') );
-               }
-       });
-});
index 43e82f8a6bfe97d79e91d2e2644f9665b68773eb..7296cb6766c40e7388b2a11e97db19c94a52041d 100644 (file)
@@ -1 +1,370 @@
-var topWin=window.dialogArguments||opener||parent||top;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(a){jQuery(".media-blank").remove();if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".describe-toggle-on").show();jQuery(".describe-toggle-off").hide();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item child-of-'+post_id+'"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> '+a.name+"</div></div>");jQuery(".progress","#media-item-"+a.id).show();jQuery("#insert-gallery").prop("disabled",true);jQuery("#cancel-upload").prop("disabled",false)}function uploadStart(a){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(b){}return true}function uploadProgress(e,b,d){var a=jQuery("#media-items").width()-2,c=jQuery("#media-item-"+e.id);jQuery(".bar",c).width(a*b/d);jQuery(".percent",c).html(Math.ceil(b/d*100)+"%");if(b==d){jQuery(".bar",c).html('<strong class="crunching">'+swfuploadL10n.crunching+"</strong>")}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);jQuery(".bar",b).remove();jQuery(".progress",b).hide();try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.toggle",a).click(function(){jQuery(this).siblings(".slidetoggle").slideToggle(350,function(){var d=jQuery(window).height(),e=jQuery(this).offset().top,f=jQuery(this).height(),c;if(d&&e&&f){c=e+f;if(c>d&&(f+48)<d){window.scrollBy(0,c-d+13)}else{if(c>d){window.scrollTo(0,e-36)}}}});jQuery(this).siblings(".toggle").andSelf().toggle();jQuery(this).siblings("a.toggle").focus();return false});jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery("a.describe-toggle-on, .menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").slideToggle(500).siblings(".toggle").toggle()}function itemAjaxError(d,b){var c=jQuery("#media-item-"+d);var a=jQuery(".filename",c).text();c.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+b+"</div>");c.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+swfuploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function updateMediaForm(){var b=jQuery("form.type-form #media-items").children(),a=jQuery("#media-items").children();if(b.length==1){jQuery(".slidetoggle",b).slideDown(500).siblings().addClass("hidden").filter(".toggle").toggle()}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}if(a.length>1){jQuery(".insert-gallery").show()}else{jQuery(".insert-gallery").hide()}}function uploadSuccess(b,a){if(a.match("media-upload-error")){jQuery("#media-item-"+b.id).html(a);return}prepareMediaItem(b,a);updateMediaForm();if(jQuery("#media-item-"+b.id).hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function uploadComplete(a){if(swfu.getStats().files_queued==0){jQuery("#cancel-upload").prop("disabled",true);jQuery("#insert-gallery").prop("disabled",false)}}function wpQueueError(a){jQuery("#media-upload-error").show().text(a)}function wpFileError(d,c){var b=jQuery("#media-item-"+d.id);var a=jQuery(".filename",b).text();b.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+c+"</div>");b.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function fileQueueError(c,a,b){if(a==SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){wpQueueError(swfuploadL10n.queue_limit_exceeded)}else{if(a==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT){fileQueued(c);wpFileError(c,swfuploadL10n.file_exceeds_size_limit)}else{if(a==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE){fileQueued(c);wpFileError(c,swfuploadL10n.zero_byte_file)}else{if(a==SWFUpload.QUEUE_ERROR.INVALID_FILETYPE){fileQueued(c);wpFileError(c,swfuploadL10n.invalid_filetype)}else{wpQueueError(swfuploadL10n.default_error)}}}}}function fileDialogComplete(b){try{if(b>0){this.startUpload()}}catch(a){this.debug(a)}}function switchUploader(b){var c=document.getElementById(swfu.customSettings.swfupload_element_id),a=document.getElementById(swfu.customSettings.degraded_element_id);if(b){c.style.display="block";a.style.display="none"}else{c.style.display="none";a.style.display="block"}}function swfuploadPreLoad(){if(!uploaderMode){switchUploader(1)}else{switchUploader(0)}}function swfuploadLoadFailed(){switchUploader(0);jQuery(".upload-html-bypass").hide()}function uploadError(b,c,a){switch(c){case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:wpFileError(b,swfuploadL10n.missing_upload_url);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:wpFileError(b,swfuploadL10n.upload_limit_exceeded);break;case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:wpQueueError(swfuploadL10n.http_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:wpQueueError(swfuploadL10n.upload_failed);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:wpQueueError(swfuploadL10n.io_error);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:wpQueueError(swfuploadL10n.security_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:jQuery("#media-item-"+b.id).remove();break;default:wpFileError(b,swfuploadL10n.default_error)}}function cancelUpload(){swfu.cancelQueue()}jQuery(document).ready(function(a){a('input[type="radio"]',"#media-items").live("click",function(){var b=a(this).closest("tr");if(a(b).hasClass("align")){setUserSetting("align",a(this).val())}else{if(a(b).hasClass("image-size")){setUserSetting("imgsize",a(this).val())}}});a("button.button","#media-items").live("click",function(){var b=this.className||"";b=b.match(/url([^ '"]+)/);if(b&&b[1]){setUserSetting("urlbutton",b[1]);a(this).siblings(".urlfield").val(a(this).attr("title"))}})});
\ No newline at end of file
+var topWin = window.dialogArguments || opener || parent || top;
+
+function fileDialogStart() {
+       jQuery("#media-upload-error").empty();
+}
+
+// progress and success handlers for media multi uploads
+function fileQueued(fileObj) {
+       // Get rid of unused form
+       jQuery('.media-blank').remove();
+       // Collapse a single item
+       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
+               jQuery('.describe-toggle-on').show();
+               jQuery('.describe-toggle-off').hide();
+               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+       }
+       // Create a progress bar containing the filename
+       jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> ' + fileObj.name + '</div></div>');
+       // Display the progress div
+       jQuery('.progress', '#media-item-' + fileObj.id).show();
+
+       // Disable submit and enable cancel
+       jQuery('#insert-gallery').prop('disabled', true);
+       jQuery('#cancel-upload').prop('disabled', false);
+}
+
+function uploadStart(fileObj) {
+       try {
+               if ( typeof topWin.tb_remove != 'undefined' )
+                       topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove); 
+       } catch(e){}
+
+       return true;
+}
+
+function uploadProgress(fileObj, bytesDone, bytesTotal) {
+       // Lengthen the progress bar
+       var w = jQuery('#media-items').width() - 2, item = jQuery('#media-item-' + fileObj.id);
+       jQuery('.bar', item).width( w * bytesDone / bytesTotal );
+       jQuery('.percent', item).html( Math.ceil(bytesDone / bytesTotal * 100) + '%' );
+
+       if ( bytesDone == bytesTotal )
+               jQuery('.bar', item).html('<strong class="crunching">' + swfuploadL10n.crunching + '</strong>');
+}
+
+function prepareMediaItem(fileObj, serverData) {
+       var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
+       // Move the progress bar to 100%
+       jQuery('.bar', item).remove();
+       jQuery('.progress', item).hide();
+
+       try {
+               if ( typeof topWin.tb_remove != 'undefined' )
+                       topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
+       } catch(e){}
+
+       // Old style: Append the HTML returned by the server -- thumbnail and form inputs
+       if ( isNaN(serverData) || !serverData ) {
+               item.append(serverData);
+               prepareMediaItemInit(fileObj);
+       }
+       // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
+       else {
+               item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
+       }
+}
+
+function prepareMediaItemInit(fileObj) {
+       var item = jQuery('#media-item-' + fileObj.id);
+       // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
+       jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item);
+
+       // Replace the original filename with the new (unique) one assigned during upload
+       jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) );
+
+       // Also bind toggle to the links
+       jQuery('a.toggle', item).click(function(){
+               jQuery(this).siblings('.slidetoggle').slideToggle(350, function(){
+                       var w = jQuery(window).height(), t = jQuery(this).offset().top, h = jQuery(this).height(), b;
+
+                       if ( w && t && h ) {
+                b = t + h;
+
+                if ( b > w && (h + 48) < w )
+                    window.scrollBy(0, b - w + 13);
+                else if ( b > w )
+                    window.scrollTo(0, t - 36);
+            }
+               });
+               jQuery(this).siblings('.toggle').andSelf().toggle();
+               jQuery(this).siblings('a.toggle').focus();
+               return false;
+       });
+
+       // Bind AJAX to the new Delete button
+       jQuery('a.delete', item).click(function(){
+               // Tell the server to delete it. TODO: handle exceptions
+               jQuery.ajax({
+                       url: ajaxurl,
+                       type: 'post',
+                       success: deleteSuccess,
+                       error: deleteError,
+                       id: fileObj.id,
+                       data: {
+                               id : this.id.replace(/[^0-9]/g, ''),
+                               action : 'trash-post',
+                               _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
+                       }
+               });
+               return false;
+       });
+
+       // Bind AJAX to the new Undo button
+       jQuery('a.undo', item).click(function(){
+               // Tell the server to untrash it. TODO: handle exceptions
+               jQuery.ajax({
+                       url: ajaxurl,
+                       type: 'post',
+                       id: fileObj.id,
+                       data: {
+                               id : this.id.replace(/[^0-9]/g,''),
+                               action: 'untrash-post',
+                               _ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
+                       },
+                       success: function(data, textStatus){
+                               var item = jQuery('#media-item-' + fileObj.id);
+
+                               if ( type = jQuery('#type-of-' + fileObj.id).val() )
+                                       jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
+                               if ( item.hasClass('child-of-'+post_id) )
+                                       jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
+
+                               jQuery('.filename .trashnotice', item).remove();
+                               jQuery('.filename .title', item).css('font-weight','normal');
+                               jQuery('a.undo', item).addClass('hidden');
+                               jQuery('a.describe-toggle-on, .menu_order_input', item).show();
+                               item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo');
+                       }
+               });
+               return false;
+       });
+
+       // Open this item if it says to start open (e.g. to display an error)
+       jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).siblings('.toggle').toggle();
+}
+
+function itemAjaxError(id, html) {
+       var item = jQuery('#media-item-' + id);
+       var filename = jQuery('.filename', item).text();
+
+       item.html('<div class="error-div">'
+                               + '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
+                               + '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
+                               + html
+                               + '</div>');
+       item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
+}
+
+function deleteSuccess(data, textStatus) {
+       if ( data == '-1' )
+               return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
+       if ( data == '0' )
+               return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
+
+       var id = this.id, item = jQuery('#media-item-' + id);
+
+       // Decrement the counters.
+       if ( type = jQuery('#type-of-' + id).val() )
+               jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
+       if ( item.hasClass('child-of-'+post_id) )
+               jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
+
+       if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
+               jQuery('.toggle').toggle();
+               jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+       }
+
+       // Vanish it.
+       jQuery('.toggle', item).toggle();
+       jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
+       item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
+
+       jQuery('.filename:empty', item).remove();
+       jQuery('.filename .title', item).css('font-weight','bold');
+       jQuery('.filename', item).append('<span class="trashnotice"> ' + swfuploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
+       jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
+       jQuery('.menu_order_input', item).hide();
+
+       return;
+}
+
+function deleteError(X, textStatus, errorThrown) {
+       // TODO
+}
+
+function updateMediaForm() {
+       var one = jQuery('form.type-form #media-items').children(), items = jQuery('#media-items').children();
+
+       // Just one file, no need for collapsible part
+       if ( one.length == 1 ) {
+               jQuery('.slidetoggle', one).slideDown(500).siblings().addClass('hidden').filter('.toggle').toggle();
+       }
+
+       // Only show Save buttons when there is at least one file.
+       if ( items.not('.media-blank').length > 0 )
+               jQuery('.savebutton').show();
+       else
+               jQuery('.savebutton').hide();
+
+       // Only show Gallery button when there are at least two files.
+       if ( items.length > 1 )
+               jQuery('.insert-gallery').show();
+       else
+               jQuery('.insert-gallery').hide();
+}
+
+function uploadSuccess(fileObj, serverData) {
+       // if async-upload returned an error message, place it in the media item div and return
+       if ( serverData.match('media-upload-error') ) {
+               jQuery('#media-item-' + fileObj.id).html(serverData);
+               return;
+       }
+
+       prepareMediaItem(fileObj, serverData);
+       updateMediaForm();
+
+       // Increment the counter.
+       if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-' + post_id) )
+               jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
+}
+
+function uploadComplete(fileObj) {
+       // If no more uploads queued, enable the submit button
+       if ( swfu.getStats().files_queued == 0 ) {
+               jQuery('#cancel-upload').prop('disabled', true);
+               jQuery('#insert-gallery').prop('disabled', false);
+       }
+}
+
+
+// wp-specific error handlers
+
+// generic message
+function wpQueueError(message) {
+       jQuery('#media-upload-error').show().text(message);
+}
+
+// file-specific message
+function wpFileError(fileObj, message) {
+       var item = jQuery('#media-item-' + fileObj.id);
+       var filename = jQuery('.filename', item).text();
+
+       item.html('<div class="error-div">'
+                               + '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
+                               + '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
+                               + message
+                               + '</div>');
+       item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
+}
+
+function fileQueueError(fileObj, error_code, message)  {
+       // Handle this error separately because we don't want to create a FileProgress element for it.
+       if ( error_code == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED ) {
+               wpQueueError(swfuploadL10n.queue_limit_exceeded);
+       }
+       else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) {
+               fileQueued(fileObj);
+               wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit);
+       }
+       else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) {
+               fileQueued(fileObj);
+               wpFileError(fileObj, swfuploadL10n.zero_byte_file);
+       }
+       else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) {
+               fileQueued(fileObj);
+               wpFileError(fileObj, swfuploadL10n.invalid_filetype);
+       }
+       else {
+               wpQueueError(swfuploadL10n.default_error);
+       }
+}
+
+function fileDialogComplete(num_files_queued) {
+       try {
+               if (num_files_queued > 0) {
+                       this.startUpload();
+               }
+       } catch (ex) {
+               this.debug(ex);
+       }
+}
+
+function switchUploader(s) {
+       var f = document.getElementById(swfu.customSettings.swfupload_element_id), h = document.getElementById(swfu.customSettings.degraded_element_id);
+       if ( s ) {
+               f.style.display = 'block';
+               h.style.display = 'none';
+       } else {
+               f.style.display = 'none';
+               h.style.display = 'block';
+       }
+}
+
+function swfuploadPreLoad() {
+       if ( !uploaderMode ) {
+               switchUploader(1);
+       } else {
+               switchUploader(0);
+       }
+}
+
+function swfuploadLoadFailed() {
+       switchUploader(0);
+       jQuery('.upload-html-bypass').hide();
+}
+
+function uploadError(fileObj, errorCode, message) {
+
+       switch (errorCode) {
+               case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
+                       wpFileError(fileObj, swfuploadL10n.missing_upload_url);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
+                       wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
+                       wpQueueError(swfuploadL10n.http_error);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
+                       wpQueueError(swfuploadL10n.upload_failed);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.IO_ERROR:
+                       wpQueueError(swfuploadL10n.io_error);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
+                       wpQueueError(swfuploadL10n.security_error);
+                       break;
+               case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
+               case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
+                       jQuery('#media-item-' + fileObj.id).remove();
+                       break;
+               default:
+                       wpFileError(fileObj, swfuploadL10n.default_error);
+       }
+}
+
+function cancelUpload() {
+       swfu.cancelQueue();
+}
+
+// remember the last used image size, alignment and url
+jQuery(document).ready(function($){
+       $('input[type="radio"]', '#media-items').live('click', function(){
+               var tr = $(this).closest('tr');
+
+               if ( $(tr).hasClass('align') )
+                       setUserSetting('align', $(this).val());
+               else if ( $(tr).hasClass('image-size') )
+                       setUserSetting('imgsize', $(this).val());
+       });
+
+       $('button.button', '#media-items').live('click', function(){
+               var c = this.className || '';
+               c = c.match(/url([^ '"]+)/);
+               if ( c && c[1] ) {
+                       setUserSetting('urlbutton', c[1]);
+                       $(this).siblings('.urlfield').val( $(this).attr('title') );
+               }
+       });
+});
diff --git a/wp-includes/js/swfupload/handlers.min.js b/wp-includes/js/swfupload/handlers.min.js
new file mode 100644 (file)
index 0000000..43e82f8
--- /dev/null
@@ -0,0 +1 @@
+var topWin=window.dialogArguments||opener||parent||top;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(a){jQuery(".media-blank").remove();if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".describe-toggle-on").show();jQuery(".describe-toggle-off").hide();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item child-of-'+post_id+'"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> '+a.name+"</div></div>");jQuery(".progress","#media-item-"+a.id).show();jQuery("#insert-gallery").prop("disabled",true);jQuery("#cancel-upload").prop("disabled",false)}function uploadStart(a){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(b){}return true}function uploadProgress(e,b,d){var a=jQuery("#media-items").width()-2,c=jQuery("#media-item-"+e.id);jQuery(".bar",c).width(a*b/d);jQuery(".percent",c).html(Math.ceil(b/d*100)+"%");if(b==d){jQuery(".bar",c).html('<strong class="crunching">'+swfuploadL10n.crunching+"</strong>")}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);jQuery(".bar",b).remove();jQuery(".progress",b).hide();try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.toggle",a).click(function(){jQuery(this).siblings(".slidetoggle").slideToggle(350,function(){var d=jQuery(window).height(),e=jQuery(this).offset().top,f=jQuery(this).height(),c;if(d&&e&&f){c=e+f;if(c>d&&(f+48)<d){window.scrollBy(0,c-d+13)}else{if(c>d){window.scrollTo(0,e-36)}}}});jQuery(this).siblings(".toggle").andSelf().toggle();jQuery(this).siblings("a.toggle").focus();return false});jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery("a.describe-toggle-on, .menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").slideToggle(500).siblings(".toggle").toggle()}function itemAjaxError(d,b){var c=jQuery("#media-item-"+d);var a=jQuery(".filename",c).text();c.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+b+"</div>");c.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+swfuploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function updateMediaForm(){var b=jQuery("form.type-form #media-items").children(),a=jQuery("#media-items").children();if(b.length==1){jQuery(".slidetoggle",b).slideDown(500).siblings().addClass("hidden").filter(".toggle").toggle()}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}if(a.length>1){jQuery(".insert-gallery").show()}else{jQuery(".insert-gallery").hide()}}function uploadSuccess(b,a){if(a.match("media-upload-error")){jQuery("#media-item-"+b.id).html(a);return}prepareMediaItem(b,a);updateMediaForm();if(jQuery("#media-item-"+b.id).hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function uploadComplete(a){if(swfu.getStats().files_queued==0){jQuery("#cancel-upload").prop("disabled",true);jQuery("#insert-gallery").prop("disabled",false)}}function wpQueueError(a){jQuery("#media-upload-error").show().text(a)}function wpFileError(d,c){var b=jQuery("#media-item-"+d.id);var a=jQuery(".filename",b).text();b.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+c+"</div>");b.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function fileQueueError(c,a,b){if(a==SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){wpQueueError(swfuploadL10n.queue_limit_exceeded)}else{if(a==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT){fileQueued(c);wpFileError(c,swfuploadL10n.file_exceeds_size_limit)}else{if(a==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE){fileQueued(c);wpFileError(c,swfuploadL10n.zero_byte_file)}else{if(a==SWFUpload.QUEUE_ERROR.INVALID_FILETYPE){fileQueued(c);wpFileError(c,swfuploadL10n.invalid_filetype)}else{wpQueueError(swfuploadL10n.default_error)}}}}}function fileDialogComplete(b){try{if(b>0){this.startUpload()}}catch(a){this.debug(a)}}function switchUploader(b){var c=document.getElementById(swfu.customSettings.swfupload_element_id),a=document.getElementById(swfu.customSettings.degraded_element_id);if(b){c.style.display="block";a.style.display="none"}else{c.style.display="none";a.style.display="block"}}function swfuploadPreLoad(){if(!uploaderMode){switchUploader(1)}else{switchUploader(0)}}function swfuploadLoadFailed(){switchUploader(0);jQuery(".upload-html-bypass").hide()}function uploadError(b,c,a){switch(c){case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:wpFileError(b,swfuploadL10n.missing_upload_url);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:wpFileError(b,swfuploadL10n.upload_limit_exceeded);break;case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:wpQueueError(swfuploadL10n.http_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:wpQueueError(swfuploadL10n.upload_failed);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:wpQueueError(swfuploadL10n.io_error);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:wpQueueError(swfuploadL10n.security_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:jQuery("#media-item-"+b.id).remove();break;default:wpFileError(b,swfuploadL10n.default_error)}}function cancelUpload(){swfu.cancelQueue()}jQuery(document).ready(function(a){a('input[type="radio"]',"#media-items").live("click",function(){var b=a(this).closest("tr");if(a(b).hasClass("align")){setUserSetting("align",a(this).val())}else{if(a(b).hasClass("image-size")){setUserSetting("imgsize",a(this).val())}}});a("button.button","#media-items").live("click",function(){var b=this.className||"";b=b.match(/url([^ '"]+)/);if(b&&b[1]){setUserSetting("urlbutton",b[1]);a(this).siblings(".urlfield").val(a(this).attr("title"))}})});
\ No newline at end of file
index 82290f48334c81272ff5991962951758137a08ba..030d4de59da99d070e7c679c3f42e77e2329f778 100644 (file)
Binary files a/wp-includes/js/thickbox/loadingAnimation.gif and b/wp-includes/js/thickbox/loadingAnimation.gif differ
index c6473b324ee1dae1faaacc0826639833f551116c..a032659389b33b825686d5683076585644f6df53 100644 (file)
Binary files a/wp-includes/js/thickbox/macFFBgHack.png and b/wp-includes/js/thickbox/macFFBgHack.png differ
diff --git a/wp-includes/js/thickbox/tb-close-2x.png b/wp-includes/js/thickbox/tb-close-2x.png
new file mode 100644 (file)
index 0000000..fb820d6
Binary files /dev/null and b/wp-includes/js/thickbox/tb-close-2x.png differ
index 6a48f46908e4e9250c52bcbfbf75ee7ec91bfbb1..06d04070b679900a3102736c5ee2d34931856a62 100644 (file)
Binary files a/wp-includes/js/thickbox/tb-close.png and b/wp-includes/js/thickbox/tb-close.png differ
index 43f9081de78e2fd9b3c1123320dcc951e3391584..53438f104b74af46502b321ed67d3a2b855d42c5 100644 (file)
@@ -3,12 +3,12 @@
 /* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
 /* ----------------------------------------------------------------------------------------------------------------*/
 #TB_window {
-       font: 12px "Lucida Grande", Verdana, Arial, sans-serif;
+       font: 12px sans-serif;
        color: #333333;
 }
 
 #TB_secondLine {
-       font: 10px "Lucida Grande", Verdana, Arial, sans-serif;
+       font: 10px sans-serif;
        color:#666666;
 }
 
@@ -160,3 +160,19 @@ margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = d
        margin-bottom:-1px;
        _margin-bottom:1px;
 }
+
+.tb-close-icon {
+       background: url('tb-close.png') no-repeat;
+       height: 15px;
+       width: 15px;
+}
+
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       .tb-close-icon {
+               background: url('tb-close-2x.png') no-repeat;
+               background-size: 15px;
+       }
+}
\ No newline at end of file
index e31b29d370c252d3c095e1827dd8c40b10df497d..995c60fee2691eb52133333a9a4e920f7cd23102 100644 (file)
@@ -8,9 +8,6 @@
 if ( typeof tb_pathToImage != 'string' ) {
        var tb_pathToImage = thickboxL10n.loadingAnimation;
 }
-if ( typeof tb_closeImage != 'string' ) {
-       var tb_closeImage = thickboxL10n.closeImage;
-}
 
 /*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
 
@@ -59,7 +56,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
                }
 
                if(caption===null){caption="";}
-               jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
+               jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' width='208' /></div>");//add loader to the page
                jQuery('#TB_load').show();//show loader
 
                var baseURL;
@@ -132,7 +129,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
 
                        TB_WIDTH = imageWidth + 30;
                        TB_HEIGHT = imageHeight + 60;
-                       jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='"+thickboxL10n.close+"'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='"+thickboxL10n.close+"'><img src='" + tb_closeImage + "' /></a></div>");
+                       jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='"+thickboxL10n.close+"'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='"+thickboxL10n.close+"'><div class='tb-close-icon'></div></a></div>");
 
                        jQuery("#TB_closeWindowButton").click(tb_remove);
 
@@ -200,7 +197,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
                                        urlNoQuery = url.split('TB_');
                                        jQuery("#TB_iframeContent").remove();
                                        if(params['modal'] != "true"){//iframe no modal
-                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='"+thickboxL10n.close+"'><img src='" + tb_closeImage + "' /></a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' >"+thickboxL10n.noiframes+"</iframe>");
+                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='"+thickboxL10n.close+"'><div class='tb-close-icon'></div></a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' >"+thickboxL10n.noiframes+"</iframe>");
                                        }else{//iframe modal
                                        jQuery("#TB_overlay").unbind();
                                                jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'>"+thickboxL10n.noiframes+"</iframe>");
@@ -208,7 +205,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
                        }else{// not an iframe, ajax
                                        if(jQuery("#TB_window").css("visibility") != "visible"){
                                                if(params['modal'] != "true"){//ajax no modal
-                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><img src='" + tb_closeImage + "' /></a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
+                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><div class='tb-close-icon'></div></a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
                                                }else{//ajax modal
                                                jQuery("#TB_overlay").unbind();
                                                jQuery("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
index 53d784a28a4fcafaf2eae96b0040a0342ee33047..8afafa61fd97b485b8f345b27582963c67042be2 100644 (file)
@@ -106,7 +106,7 @@ iespell_desc:"Run spell checking",
 download:"ieSpell not detected. Do you want to install it now?"
 },
 advhr:{
-advhr_desc:"Horizontale rule"
+advhr_desc:"Horizontal rule"
 },
 emotions:{
 emotions_desc:"Emotions"
@@ -278,7 +278,7 @@ blockquote_desc:"Blockquote (Alt + Shift + Q)",
 clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.",
 path:"Path",
 newdocument:"Are you sure you want to clear all contents?",
-toolbar_focus:"Jump to tool buttons - Alt + Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
+toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
 more_colors:"More colors",
 shortcuts_desc:"Accessibility Help",
 help_shortcut:" Press ALT F10 for toolbar. Press ALT 0 for help.",
@@ -400,7 +400,7 @@ playcount:"Play count",
 rate:"Rate",
 uimode:"UI Mode",
 flash_options:"Flash options",
-qt_options:"Quicktime options",
+qt_options:"QuickTime options",
 wmp_options:"Windows media player options",
 rmp_options:"Real media player options",
 shockwave_options:"Shockwave options",
@@ -463,7 +463,8 @@ add_image:"Add an Image",
 add_video:"Add Video",
 add_audio:"Add Audio",
 editgallery:"Edit Gallery",
-delgallery:"Delete Gallery"
+delgallery:"Delete Gallery",
+wp_fullscreen_desc:"Distraction Free Writing mode (Alt + Shift + W)"
 });
 
 tinyMCE.addI18n("en.wpeditimage",{
@@ -499,5 +500,5 @@ s120:"120%",
 s130:"130%",
 img_title:"Title",
 caption:"Caption",
-alt:"Alternate Text"
+alt:"Alternative Text"
 });
index f7a4ede6a73ae3bde16e56bb0845bc171bfc53cb..9de90c2e0b89b17a46828e2195e01a62e1052e8e 100644 (file)
@@ -3,14 +3,14 @@
 if ( ! defined( 'ABSPATH' ) )
        exit;
 
+if ( ! class_exists( '_WP_Editors' ) )
+       require( ABSPATH . WPINC . '/class-wp-editor.php' );
+
 // deprecated, not used
 function mce_escape($text) {
        return esc_js($text);
 }
 
-if ( ! class_exists( '_WP_Editors' ) )
-       require( ABSPATH . WPINC . '/class-wp-editor.php' );
-
 function wp_mce_translation() {
 
        $default = array(
@@ -132,7 +132,7 @@ function wp_mce_translation() {
                ),
 
                'advhr' => array(
-                       'advhr_desc' => __('Horizontale rule')
+                       'advhr_desc' => __('Horizontal rule')
                ),
 
                'emotions' => array(
@@ -446,7 +446,7 @@ function wp_mce_translation() {
                'rate' => __('Rate'),
                'uimode' => __('UI Mode'),
                'flash_options' => __('Flash options'),
-               'qt_options' => __('Quicktime options'),
+               'qt_options' => __('QuickTime options'),
                'wmp_options' => __('Windows media player options'),
                'rmp_options' => __('Real media player options'),
                'shockwave_options' => __('Shockwave options'),
@@ -509,7 +509,8 @@ function wp_mce_translation() {
                'add_video' => __('Add Video'),
                'add_audio' => __('Add Audio'),
                'editgallery' => __('Edit Gallery'),
-               'delgallery' => __('Delete Gallery')
+               'delgallery' => __('Delete Gallery'),
+               'wp_fullscreen_desc' => __('Distraction Free Writing mode (Alt + Shift + W)')
        );
 
        $wpeditimage = array(
@@ -545,7 +546,7 @@ function wp_mce_translation() {
                's130' => __('130%'),
                'img_title' => __('Title'),
                'caption' => __('Caption'),
-               'alt' => __('Alternate Text')
+               'alt' => __('Alternative Text')
        );
 
        $locale = _WP_Editors::$mce_locale;
index bce8e73995d05c6bdd18f476a595be3e633b9782..90847e78e34baeaab8c15e6da290c3ff9f1e2cc4 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(b,c){var d=this;d.editor=b;function a(e){var h=b.dom,g,f=b.selection.getSelectedBlocks();if(f.length){g=h.getAttrib(f[0],"dir");tinymce.each(f,function(i){if(!h.getParent(i.parentNode,"*[dir='"+e+"']",h.getRoot())){if(g!=e){h.setAttrib(i,"dir",e)}else{h.setAttrib(i,"dir",null)}}});b.nodeChanged()}}b.addCommand("mceDirectionLTR",function(){a("ltr")});b.addCommand("mceDirectionRTL",function(){a("rtl")});b.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});b.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});b.onNodeChange.add(d._nodeChange,d)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
\ No newline at end of file
index 205d02cd2fdc02cddcb028ef0d5819eb9656899a..c90732bbd6e46067f6cf7dcab4cf3946b9244622 100644 (file)
 
                        t.editor = ed;
 
-                       ed.addCommand('mceDirectionLTR', function() {
-                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
-                               if (e) {
-                                       if (ed.dom.getAttrib(e, "dir") != "ltr")
-                                               ed.dom.setAttrib(e, "dir", "ltr");
-                                       else
-                                               ed.dom.setAttrib(e, "dir", "");
+                       function setDir(dir) {
+                               var dom = ed.dom, curDir, blocks = ed.selection.getSelectedBlocks();
+
+                               if (blocks.length) {
+                                       curDir = dom.getAttrib(blocks[0], "dir");
+
+                                       tinymce.each(blocks, function(block) {
+                                               // Add dir to block if the parent block doesn't already have that dir
+                                               if (!dom.getParent(block.parentNode, "*[dir='" + dir + "']", dom.getRoot())) {
+                                                       if (curDir != dir) {
+                                                               dom.setAttrib(block, "dir", dir);
+                                                       } else {
+                                                               dom.setAttrib(block, "dir", null);
+                                                       }
+                                               }
+                                       });
+
+                                       ed.nodeChanged();
                                }
+                       }
 
-                               ed.nodeChanged();
+                       ed.addCommand('mceDirectionLTR', function() {
+                               setDir("ltr");
                        });
 
                        ed.addCommand('mceDirectionRTL', function() {
-                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
-                               if (e) {
-                                       if (ed.dom.getAttrib(e, "dir") != "rtl")
-                                               ed.dom.setAttrib(e, "dir", "rtl");
-                                       else
-                                               ed.dom.setAttrib(e, "dir", "");
-                               }
-
-                               ed.nodeChanged();
+                               setDir("rtl");
                        });
 
                        ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
index a6456f89dd86052508f8619cbf8070e89d54a755..a2eb0348392e93454246eca22df1c273f9524402 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
\ No newline at end of file
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().getElementsByTagName("table")[0]);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
\ No newline at end of file
index 42af070ae9803e9a3a941695c5698d4bafed7646..a24a95657fda230c9f5159eeb3863b2867c065e6 100644 (file)
@@ -65,7 +65,7 @@
 
                                        // Fixes an IE bug where the scrollbars doesn't reappear
                                        if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
-                                               s.fullscreen_html_overflow = 'auto'; 
+                                               s.fullscreen_html_overflow = 'auto';
 
                                        if (s.fullscreen_overflow == '0px')
                                                s.fullscreen_overflow = '';
                                                vp.h -= 1;
 
                                        // Use fixed position if it exists
-                                       if (tinymce.isIE6)
+                                       if (tinymce.isIE6 || document.compatMode == 'BackCompat')
                                                posCss = 'absolute;top:' + vp.y;
                                        else
                                                posCss = 'fixed;top:0';
 
                                        n = DOM.add(DOM.doc.body, 'div', {
-                                               id : 'mce_fullscreen_container', 
+                                               id : 'mce_fullscreen_container',
                                                style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
                                        DOM.add(n, 'div', {id : 'mce_fullscreen'});
 
                                                var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
 
                                                // Get outer/inner size to get a delta size that can be used to calc the new iframe size
-                                               outerSize = fed.dom.getSize(fed.getContainer().firstChild);
+                                               outerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('table')[0]);
                                                innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
 
                                                fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
 
        // Register plugin
        tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
-})();
\ No newline at end of file
+})();
index 48744fab7c46dd89f3c30c68018e467939c9be5e..e21c29c75060a2878e6e727e4d866d03300055ee 100644 (file)
@@ -3,7 +3,7 @@
 <head>
        <title></title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-       <script type="text/javascript" src="../../tiny_mce.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce.js?ver=358-20121205"></script>
        <script type="text/javascript">
                function patchCallback(settings, key) {
                        if (settings[key])
index 94abd08763fffdaa0dd5c5afb470a97294f2b94d..219139857ead162c6c83fa92e4a36eb978359b70 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif differ
index e671094cb0eb210b756117f992cf5ca2caa698fd..f957e49a3dda34867982d54bdbbf46e5b6c11298 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif differ
index 497307a85ad32e00b67c5f27d6f3b46ac566d89b..20acbbf7aec8a3fccbffbbb894f973241a045732 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif differ
index c894b2e83522ae29d32e0ed57007d1285c715a7f..d5de1cc236c9e44b2bcce92b4444f9cc7c43c551 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif differ
index bf0a03ee41fc078b2cb6453dee7876806d4a8871..a5f068385d31400ee65db006f7289de06b8343d4 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif differ
index 43a735f22c81d6d7d99c1ba9f034f38bfdd1a92b..0b4cc3682a1c62b3583d83ad83b84fce14461ec3 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif and b/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif differ
index d31ebb0c966d3c4a1cff8a4ee37263cdee5f96f1..289b7acb5454ef2c5f06eba4839bce46e0a61a22 100644 (file)
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Template for dialogs</title>
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css?ver=349-20120314" />
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css?ver=358-20121205" />
 </head>
 <body>
 
index 37b4320bd9faaafecacd72709810bff010f4e9e4..9ac42e0d21e4e9f6354f69d3ccbdf8bc9cbfddf9 100644 (file)
@@ -1 +1 @@
-(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m<f.length;m++){k=f[m][0];q={name:k,clsids:tinymce.explode(f[m][1]||""),mimes:tinymce.explode(f[m][2]||""),codebase:f[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;a+=(a?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(i,s){if(s.name==="img"&&n.dom.hasClass(s.node,"mceItemMedia")){s.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(s,t,i){if(i.nodeName==="IMG"&&i.className.indexOf("mceItemMedia")!==-1){t.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var s,i;i=n.selection.getNode();if(o(i)){s=n.dom.getAttrib(i,"data-mce-json");if(s){s=g.parse(s);tinymce.each(d,function(t){var u=n.dom.getAttrib(i,t);if(u){s[t]=u}});s.type=r.getType(i.className).name.toLowerCase()}}if(!s){s={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:s})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(s,i,t){i.setActive("media",o(t))})},convertUrl:function(k,n){var j=this,m=j.editor,l=m.settings,o=l.url_converter,i=l.url_converter_scope||j;if(!k){return k}if(n){return m.documentBaseURI.toAbsolute(k)}return o.call(i,k,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,hspace:m.hspace,vspace:m.vspace,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":g.serialize(m,"'")});n.width=m.width||(m.type=="audio"?"300":"320");n.height=m.height||(m.type=="audio"?"32":"240");return n},dataToHtml:function(i,j){return this.editor.serializer.serialize(this.dataToImg(i,j),{forced_root_block:"",force_absolute:j})},htmlToData:function(k){var j,i,l;l={type:"flash",video:{sources:[]},params:{}};j=this.editor.parser.parse(k);i=j.getAll("img")[0];if(i){l=g.parse(i.attr("data-mce-json"));l.type=this.getType(i.attr("class")).name.toLowerCase();tinymce.each(d,function(m){var n=i.attr(m);if(n){l[m]=n}})}return l},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(z,o){var u=this,p=u.editor,C,H,j,t,I,y,G,w,k,E,s,q,A,D,m,x,l,B,F;function r(i,n){var M,L,N,K,J;J=p.getParam("flash_video_player_url",u.convertUrl(u.url+"/moxieplayer.swf"));if(J){M=p.documentBaseURI;G.params.src=J;if(p.getParam("flash_video_player_absvideourl",true)){i=M.toAbsolute(i||"",true);n=M.toAbsolute(n||"",true)}N="";L=p.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(L,function(P,O){P=P.replace(/\$url/,i||"");P=P.replace(/\$poster/,n||"");if(P.length>0){N+=(N?"&":"")+O+"="+escape(P)}});if(N.length){G.params.flashvars=N}K=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(K,function(P,O){G.params[O]=""+P})}}G=z.attr("data-mce-json");if(!G){return}G=g.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}if(q.name==="Iframe"){x=new b("iframe",1);tinymce.each(d,function(i){var n=z.attr(i);if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&n.length>0){x.attr(i,n)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new b("script",1).attr("type","text/javascript");y=new b("#text",3);y.value="write"+q.name+"("+g.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new b("video",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A<k.length;A++){if(/\.mp4$/.test(k[A].src)){m=k[A].src}}if(!k[0].type){C.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;C.append(w)}if(m){r(m,l);q=u.getType("flash")}else{G.params.src=""}}if(q.name==="Audio"&&G.video.sources[0]){F=new b("audio",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);if(!k[0].type){F.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;F.append(w)}G.params.src=""}if(q.name==="EmbeddedAudio"){j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:z.attr("type")});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});G.params.src=""}if(G.params.src){if(/\.flv$/i.test(G.params.src)){r(G.params.src,"")}if(o&&o.force_absolute){G.params.src=p.documentBaseURI.toAbsolute(G.params.src)}H=new b("object",1).attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B});tinymce.each(d,function(i){var n=G[i];if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&i!="type"){H.attr(i,n)}});for(I in G.params){s=new b("param",1);s.shortEnded=true;y=G.params[I];if(I==="src"&&q.name==="WindowsMedia"){I="url"}s.attr({name:I,value:y});H.append(s)}if(this.editor.getParam("media_strict",true)){H.attr({data:G.params.src,type:q.mimes[0]})}else{H.attr({classid:"clsid:"+q.clsids[0],codebase:q.codebase});j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:q.mimes[0]});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});H.append(j)}if(G.object_html){y=new b("#text",3);y.raw=true;y.value=G.object_html;H.append(y)}if(C){C.append(H)}}if(C){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;C.append(y)}}if(F){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;F.append(y)}}var v=C||F||H||j;if(v){z.replace(v)}else{z.remove()}},objectToImg:function(C){var L,k,F,s,M,N,y,A,x,G,E,t,q,I,B,l,K,o,H=this.lookup,m,z,v=this.editor.settings.url_converter,n=this.editor.settings.url_converter_scope,w,r,D,j;function u(i){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(i)}function J(O,i){return H[(O.attr(i)||"").toLowerCase()]}function p(O){var i=O.replace(/^.*\.([^.]+)$/,"$1");return H[i.toLowerCase()||""]}if(!C.parent){return}if(C.name==="script"){if(C.firstChild){m=a.exec(C.firstChild.value)}if(!m){return}o=m[1];K={video:{},params:g.parse(m[2])};A=K.params.width;x=K.params.height}K=K||{video:{},params:{}};M=new b("img",1);M.attr({src:this.editor.theme.url+"/img/trans.gif"});N=C.name;if(N==="video"||N=="audio"){F=C;L=C.getAll("object")[0];k=C.getAll("embed")[0];A=F.attr("width");x=F.attr("height");y=F.attr("id");K.video={attrs:{},sources:[]};z=K.video.attrs;for(N in F.attributes.map){z[N]=F.attributes.map[N]}B=C.attr("src");if(B){K.video.sources.push({src:v.call(n,B,"src",C.name)})}l=F.getAll("source");for(E=0;E<l.length;E++){B=l[E].remove();K.video.sources.push({src:v.call(n,B.attr("src"),"src","source"),type:B.attr("type"),media:B.attr("media")})}if(z.poster){z.poster=v.call(n,z.poster,"poster",C.name)}}if(C.name==="object"){L=C;k=C.getAll("embed")[0]}if(C.name==="embed"){k=C}if(C.name==="iframe"){s=C;o="Iframe"}if(L){A=A||L.attr("width");x=x||L.attr("height");G=G||L.attr("style");y=y||L.attr("id");w=w||L.attr("hspace");r=r||L.attr("vspace");D=D||L.attr("align");j=j||L.attr("bgcolor");K.name=L.attr("name");I=L.getAll("param");for(E=0;E<I.length;E++){q=I[E];N=q.remove().attr("name");if(!h[N]){K.params[N]=q.attr("value")}}K.params.src=K.params.src||L.attr("data")}if(k){A=A||k.attr("width");x=x||k.attr("height");G=G||k.attr("style");y=y||k.attr("id");w=w||k.attr("hspace");r=r||k.attr("vspace");D=D||k.attr("align");j=j||k.attr("bgcolor");for(N in k.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=k.attributes.map[N]}}}if(s){A=s.attr("width");x=s.attr("height");G=G||s.attr("style");y=s.attr("id");w=s.attr("hspace");r=s.attr("vspace");D=s.attr("align");j=s.attr("bgcolor");tinymce.each(d,function(i){M.attr(i,s.attr(i))});for(N in s.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=s.attributes.map[N]}}}if(K.params.movie){K.params.src=K.params.src||K.params.movie;delete K.params.movie}if(K.params.src){K.params.src=v.call(n,K.params.src,"src","object")}if(F){if(C.name==="video"){o=H.video.name}else{if(C.name==="audio"){o=H.audio.name}}}if(L&&!o){o=(J(L,"clsid")||J(L,"classid")||J(L,"type")||{}).name}if(k&&!o){o=(J(k,"type")||p(K.params.src)||{}).name}if(k&&o=="EmbeddedAudio"){K.params.type=k.attr("type")}C.replace(M);if(k){k.remove()}if(L){t=u(L.remove());if(t){K.object_html=t}}if(F){t=u(F.remove());if(t){K.video_html=t}}K.hspace=w;K.vspace=r;K.align=D;K.bgcolor=j;M.attr({id:y,"class":"mceItemMedia mceItem"+(o||"Flash"),style:G,width:A||(C.name=="audio"?"300":"320"),height:x||(C.name=="audio"?"32":"240"),hspace:w,vspace:r,align:D,bgcolor:j,"data-mce-json":g.serialize(K,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
+(function(){var b=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),a=tinymce.makeMap(b.join(",")),f=tinymce.html.Node,d,i,h=tinymce.util.JSON,g;d=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function e(j){return typeof(j)=="string"?j.replace(/[^0-9%]/g,""):j}function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(s){return s&&s.nodeName==="IMG"&&n.dom.hasClass(s,"mceItemMedia")}r.editor=n;r.url=j;i="";for(m=0;m<d.length;m++){k=d[m][0];q={name:k,clsids:tinymce.explode(d[m][1]||""),mimes:tinymce.explode(d[m][2]||""),codebase:d[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;i+=(i?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});i=new RegExp("write("+i+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(s,t){if(t.name==="img"&&n.dom.hasClass(t.node,"mceItemMedia")){t.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(t,u,s){if(s.nodeName==="IMG"&&s.className.indexOf("mceItemMedia")!==-1){u.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var t,s;s=n.selection.getNode();if(o(s)){t=n.dom.getAttrib(s,"data-mce-json");if(t){t=h.parse(t);tinymce.each(b,function(u){var v=n.dom.getAttrib(s,u);if(v){t[u]=v}});t.type=r.getType(s.className).name.toLowerCase()}}if(!t){t={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:t})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(t,s,u){s.setActive("media",o(u))})},convertUrl:function(l,o){var k=this,n=k.editor,m=n.settings,p=m.url_converter,j=m.url_converter_scope||k;if(!l){return l}if(o){return n.documentBaseURI.toAbsolute(l)}return p.call(j,l,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,hspace:m.hspace,vspace:m.vspace,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":h.serialize(m,"'")});n.width=m.width=e(m.width||(m.type=="audio"?"300":"320"));n.height=m.height=e(m.height||(m.type=="audio"?"32":"240"));return n},dataToHtml:function(j,k){return this.editor.serializer.serialize(this.dataToImg(j,k),{forced_root_block:"",force_absolute:k})},htmlToData:function(l){var k,j,m;m={type:"flash",video:{sources:[]},params:{}};k=this.editor.parser.parse(l);j=k.getAll("img")[0];if(j){m=h.parse(j.attr("data-mce-json"));m.type=this.getType(j.attr("class")).name.toLowerCase();tinymce.each(b,function(n){var o=j.attr(n);if(o){m[n]=o}})}return m},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(z,o){var u=this,p=u.editor,C,H,j,t,I,y,G,w,k,E,s,q,A,D,m,x,l,B,F;function r(n,J){var N,M,O,L,K;K=p.getParam("flash_video_player_url",u.convertUrl(u.url+"/moxieplayer.swf"));if(K){N=p.documentBaseURI;G.params.src=K;if(p.getParam("flash_video_player_absvideourl",true)){n=N.toAbsolute(n||"",true);J=N.toAbsolute(J||"",true)}O="";M=p.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(M,function(Q,P){Q=Q.replace(/\$url/,n||"");Q=Q.replace(/\$poster/,J||"");if(Q.length>0){O+=(O?"&":"")+P+"="+escape(Q)}});if(O.length){G.params.flashvars=O}L=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(L,function(Q,P){G.params[P]=""+Q})}}G=z.attr("data-mce-json");if(!G){return}G=h.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}G.width=z.attr("width")||G.width;G.height=z.attr("height")||G.height;if(q.name==="Iframe"){x=new f("iframe",1);tinymce.each(b,function(n){var J=z.attr(n);if(n=="class"&&J){J=J.replace(/mceItem.+ ?/g,"")}if(J&&J.length>0){x.attr(n,J)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new f("script",1).attr("type","text/javascript");y=new f("#text",3);y.value="write"+q.name+"("+h.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new f("video",1).attr(tinymce.extend({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A<k.length;A++){if(/\.mp4$/.test(k[A].src)){m=k[A].src}}if(!k[0].type){C.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new f("source",1).attr(k[A]);w.shortEnded=true;C.append(w)}if(m){r(m,l);q=u.getType("flash")}else{G.params.src=""}}if(q.name==="Audio"&&G.video.sources[0]){F=new f("audio",1).attr(tinymce.extend({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);if(!k[0].type){F.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new f("source",1).attr(k[A]);w.shortEnded=true;F.append(w)}G.params.src=""}if(q.name==="EmbeddedAudio"){j=new f("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B,type:z.attr("type")});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(b,function(n){if(G[n]&&n!="type"){j.attr(n,G[n])}});G.params.src=""}if(G.params.src){if(/\.flv$/i.test(G.params.src)){r(G.params.src,"")}if(o&&o.force_absolute){G.params.src=p.documentBaseURI.toAbsolute(G.params.src)}H=new f("object",1).attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B});tinymce.each(b,function(n){var J=G[n];if(n=="class"&&J){J=J.replace(/mceItem.+ ?/g,"")}if(J&&n!="type"){H.attr(n,J)}});for(I in G.params){s=new f("param",1);s.shortEnded=true;y=G.params[I];if(I==="src"&&q.name==="WindowsMedia"){I="url"}s.attr({name:I,value:y});H.append(s)}if(this.editor.getParam("media_strict",true)){H.attr({data:G.params.src,type:q.mimes[0]})}else{H.attr({classid:"clsid:"+q.clsids[0],codebase:q.codebase});j=new f("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B,type:q.mimes[0]});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(b,function(n){if(G[n]&&n!="type"){j.attr(n,G[n])}});H.append(j)}if(G.object_html){y=new f("#text",3);y.raw=true;y.value=G.object_html;H.append(y)}if(C){C.append(H)}}if(C){if(G.video_html){y=new f("#text",3);y.raw=true;y.value=G.video_html;C.append(y)}}if(F){if(G.video_html){y=new f("#text",3);y.raw=true;y.value=G.video_html;F.append(y)}}var v=C||F||H||j;if(v){z.replace(v)}else{z.remove()}},objectToImg:function(C){var L,k,F,s,M,N,y,A,x,G,E,t,q,I,B,l,K,o,H=this.lookup,m,z,v=this.editor.settings.url_converter,n=this.editor.settings.url_converter_scope,w,r,D,j;function u(O){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(O)}function J(P,O){return H[(P.attr(O)||"").toLowerCase()]}function p(P){var O=P.replace(/^.*\.([^.]+)$/,"$1");return H[O.toLowerCase()||""]}if(!C.parent){return}if(C.name==="script"){if(C.firstChild){m=i.exec(C.firstChild.value)}if(!m){return}o=m[1];K={video:{},params:h.parse(m[2])};A=K.params.width;x=K.params.height}K=K||{video:{},params:{}};M=new f("img",1);M.attr({src:this.editor.theme.url+"/img/trans.gif"});N=C.name;if(N==="video"||N=="audio"){F=C;L=C.getAll("object")[0];k=C.getAll("embed")[0];A=F.attr("width");x=F.attr("height");y=F.attr("id");K.video={attrs:{},sources:[]};z=K.video.attrs;for(N in F.attributes.map){z[N]=F.attributes.map[N]}B=C.attr("src");if(B){K.video.sources.push({src:v.call(n,B,"src",C.name)})}l=F.getAll("source");for(E=0;E<l.length;E++){B=l[E].remove();K.video.sources.push({src:v.call(n,B.attr("src"),"src","source"),type:B.attr("type"),media:B.attr("media")})}if(z.poster){z.poster=v.call(n,z.poster,"poster",C.name)}}if(C.name==="object"){L=C;k=C.getAll("embed")[0]}if(C.name==="embed"){k=C}if(C.name==="iframe"){s=C;o="Iframe"}if(L){A=A||L.attr("width");x=x||L.attr("height");G=G||L.attr("style");y=y||L.attr("id");w=w||L.attr("hspace");r=r||L.attr("vspace");D=D||L.attr("align");j=j||L.attr("bgcolor");K.name=L.attr("name");I=L.getAll("param");for(E=0;E<I.length;E++){q=I[E];N=q.remove().attr("name");if(!a[N]){K.params[N]=q.attr("value")}}K.params.src=K.params.src||L.attr("data")}if(k){A=A||k.attr("width");x=x||k.attr("height");G=G||k.attr("style");y=y||k.attr("id");w=w||k.attr("hspace");r=r||k.attr("vspace");D=D||k.attr("align");j=j||k.attr("bgcolor");for(N in k.attributes.map){if(!a[N]&&!K.params[N]){K.params[N]=k.attributes.map[N]}}}if(s){A=e(s.attr("width"));x=e(s.attr("height"));G=G||s.attr("style");y=s.attr("id");w=s.attr("hspace");r=s.attr("vspace");D=s.attr("align");j=s.attr("bgcolor");tinymce.each(b,function(O){M.attr(O,s.attr(O))});for(N in s.attributes.map){if(!a[N]&&!K.params[N]){K.params[N]=s.attributes.map[N]}}}if(K.params.movie){K.params.src=K.params.src||K.params.movie;delete K.params.movie}if(K.params.src){K.params.src=v.call(n,K.params.src,"src","object")}if(F){if(C.name==="video"){o=H.video.name}else{if(C.name==="audio"){o=H.audio.name}}}if(L&&!o){o=(J(L,"clsid")||J(L,"classid")||J(L,"type")||{}).name}if(k&&!o){o=(J(k,"type")||p(K.params.src)||{}).name}if(k&&o=="EmbeddedAudio"){K.params.type=k.attr("type")}C.replace(M);if(k){k.remove()}if(L){t=u(L.remove());if(t){K.object_html=t}}if(F){t=u(F.remove());if(t){K.video_html=t}}K.hspace=w;K.vspace=r;K.align=D;K.bgcolor=j;M.attr({id:y,"class":"mceItemMedia mceItem"+(o||"Flash"),style:G,width:A||(C.name=="audio"?"300":"320"),height:x||(C.name=="audio"?"32":"240"),hspace:w,vspace:r,align:D,bgcolor:j,"data-mce-json":h.serialize(K,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
index a0d4ef2ae38b8a0be50b61bcaae842874e414dbc..2ca33ac0ed28ba340db084097c1f0bba173f64c5 100644 (file)
                ["Audio"]
        ];
 
+       function normalizeSize(size) {
+               return typeof(size) == "string" ? size.replace(/[^0-9%]/g, '') : size;
+       }
+
        function toArray(obj) {
                var undef, out, i;
 
                                'data-mce-json' : JSON.serialize(data, "'")
                        });
 
-                       img.width = data.width || (data.type == 'audio' ? "300" : "320");
-                       img.height = data.height || (data.type == 'audio' ? "32" : "240");
+                       img.width = data.width = normalizeSize(data.width || (data.type == 'audio' ? "300" : "320"));
+                       img.height = data.height = normalizeSize(data.height || (data.type == 'audio' ? "32" : "240"));
 
                        return img;
                },
                        data = JSON.parse(data);
                        typeItem = this.getType(node.attr('class'));
 
-                       style = node.attr('data-mce-style')
+                       style = node.attr('data-mce-style');
                        if (!style) {
                                style = node.attr('style');
 
                                        style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img'));
                        }
 
+                       // Use node width/height to override the data width/height when the placeholder is resized
+                       data.width = node.attr('width') || data.width;
+                       data.height = node.attr('height') || data.height;
+
                        // Handle iframe
                        if (typeItem.name === 'Iframe') {
                                replacement = new Node('iframe', 1);
                                // Create new object element
                                video = new Node('video', 1).attr(tinymce.extend({
                                        id : node.attr('id'),
-                                       width: node.attr('width'),
-                                       height: node.attr('height'),
+                                       width: normalizeSize(node.attr('width')),
+                                       height: normalizeSize(node.attr('height')),
                                        style : style
                                }, data.video.attrs));
 
                                // Create new object element
                                audio = new Node('audio', 1).attr(tinymce.extend({
                                        id : node.attr('id'),
-                                       width: node.attr('width'),
-                                       height: node.attr('height'),
+                                       width: normalizeSize(node.attr('width')),
+                                       height: normalizeSize(node.attr('height')),
                                        style : style
                                }, data.video.attrs));
 
                                embed.shortEnded = true;
                                embed.attr({
                                        id: node.attr('id'),
-                                       width: node.attr('width'),
-                                       height: node.attr('height'),
+                                       width: normalizeSize(node.attr('width')),
+                                       height: normalizeSize(node.attr('height')),
                                        style : style,
                                        type: node.attr('type')
                                });
                                // Create new object element
                                object = new Node('object', 1).attr({
                                        id : node.attr('id'),
-                                       width: node.attr('width'),
-                                       height: node.attr('height'),
+                                       width: normalizeSize(node.attr('width')),
+                                       height: normalizeSize(node.attr('height')),
                                        style : style
                                });
 
                                        embed.shortEnded = true;
                                        embed.attr({
                                                id: node.attr('id'),
-                                               width: node.attr('width'),
-                                               height: node.attr('height'),
+                                               width: normalizeSize(node.attr('width')),
+                                               height: normalizeSize(node.attr('height')),
                                                style : style,
                                                type: typeItem.mimes[0]
                                        });
 
                        if (iframe) {
                                // Get width/height
-                               width = iframe.attr('width');
-                               height = iframe.attr('height');
+                               width = normalizeSize(iframe.attr('width'));
+                               height = normalizeSize(iframe.attr('height'));
                                style = style || iframe.attr('style');
                                id = iframe.attr('id');
                                hspace = iframe.attr('hspace');
index 43e9ac409938e6fa19d813a445ff5d707d416d69..b21abb5f3cd6a218ccf6f1d1f1e7bd1c11693d5a 100644 (file)
@@ -78,7 +78,7 @@
                        get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media');
                        get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media');
                        get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
-                       get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');
+                       get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','image','media');
 
                        html = self.getMediaListHTML('medialist', 'src', 'media', 'media');
                        if (html == "")
                        } else {
                                src = getVal("src");
 
-                               // YouTube *NEW*
-                               if (src.match(/youtu.be\/[a-z1-9.-_]+/)) {
+                               // YouTube Embed
+                               if (src.match(/youtube\.com\/embed\/\w+/)) {
                                        data.width = 425;
                                        data.height = 350;
                                        data.params.frameborder = '0';
                                        data.type = 'iframe';
-                                       src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
                                        setVal('src', src);
                                        setVal('media_type', data.type);
+                               } else {
+                                       // YouTube *NEW*
+                                       if (src.match(/youtu\.be\/[a-z1-9.-_]+/)) {
+                                               data.width = 425;
+                                               data.height = 350;
+                                               data.params.frameborder = '0';
+                                               data.type = 'iframe';
+                                               src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
+                                               setVal('src', src);
+                                               setVal('media_type', data.type);
+                                       }
+
+                                       // YouTube
+                                       if (src.match(/youtube\.com(.+)v=([^&]+)/)) {
+                                               data.width = 425;
+                                               data.height = 350;
+                                               data.params.frameborder = '0';
+                                               data.type = 'iframe';
+                                               src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
+                                               setVal('src', src);
+                                               setVal('media_type', data.type);
+                                       }
                                }
 
-                               // YouTube
-                               if (src.match(/youtube.com(.+)v=([^&]+)/)) {
+                               // Google video
+                               if (src.match(/video\.google\.com(.+)docid=([^&]+)/)) {
+                                       data.width = 425;
+                                       data.height = 326;
+                                       data.type = 'flash';
+                                       src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en';
+                                       setVal('src', src);
+                                       setVal('media_type', data.type);
+                               }
+                               
+                               // Vimeo
+                               if (src.match(/vimeo\.com\/([0-9]+)/)) {
                                        data.width = 425;
                                        data.height = 350;
                                        data.params.frameborder = '0';
                                        data.type = 'iframe';
-                                       src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
+                                       src = 'http://player.vimeo.com/video/' + src.match(/vimeo.com\/([0-9]+)/)[1];
                                        setVal('src', src);
                                        setVal('media_type', data.type);
                                }
-
-                               // Google video
-                               if (src.match(/video.google.com(.+)docid=([^&]+)/)) {
+            
+                               // stream.cz
+                               if (src.match(/stream\.cz\/((?!object).)*\/([0-9]+)/)) {
                                        data.width = 425;
-                                       data.height = 326;
-                                       data.type = 'flash';
-                                       src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en';
+                                       data.height = 350;
+                                       data.params.frameborder = '0';
+                                       data.type = 'iframe';
+                                       src = 'http://www.stream.cz/object/' + src.match(/stream.cz\/[^/]+\/([0-9]+)/)[1];
+                                       setVal('src', src);
+                                       setVal('media_type', data.type);
+                               }
+                               
+                               // Google maps
+                               if (src.match(/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) {
+                                       data.width = 425;
+                                       data.height = 350;
+                                       data.params.frameborder = '0';
+                                       data.type = 'iframe';
+                                       src = 'http://maps.google.com/maps/ms?msid=' + src.match(/msid=(.+)/)[1] + "&output=embed";
                                        setVal('src', src);
                                        setVal('media_type', data.type);
                                }
index 44d96a0426f50503b73355d834a5ef70b72c8c7a..f52888b4f76f60929144d8a32e0d51ccc4a1b1e6 100644 (file)
@@ -2,13 +2,13 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#media_dlg.title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/media.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/validate.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/editable_selects.js?ver=349-20120314"></script>
-       <link href="css/media.css?ver=349-20120314" rel="stylesheet" type="text/css" />
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/media.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/validate.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/editable_selects.js?ver=358-20121205"></script>
+       <link href="css/media.css?ver=358-20121205" rel="stylesheet" type="text/css" />
 </head>
 <body style="display: none" role="application">
 <form onsubmit="Media.insert();return false;" action="#">
index e47a5c630afdf30eb9e8d0cb1b1ebb0024e09288..0ab05ebbb62733c04a1a4b98838f35b2dbdf00b1 100644 (file)
@@ -1 +1 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file
+(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_max_consecutive_linebreaks:2,paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(j){var h=this.editor,f=b(h,"paste_text_linebreaktype"),k=b(h,"paste_text_replacements"),g=tinymce.is;function e(m){c(m,function(n){if(n.constructor==RegExp){j=j.replace(n,"")}else{j=j.replace(n[0],n[1])}})}if((typeof(j)==="string")&&(j.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(j)){e([/[\n\r]+/g])}else{e([/\r+/g])}e([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"]]);var d=Number(b(h,"paste_max_consecutive_linebreaks"));if(d>-1){var l=new RegExp("\n{"+(d+1)+",}","g");var i="";while(i.length<d){i+="\n"}e([[l,i]])}j=h.dom.decode(tinymce.html.Entities.encodeRaw(j));if(g(k,"array")){e(k)}else{if(g(k,"string")){e(new RegExp(k,"gi"))}}if(f=="none"){e([[/\n+/g," "]])}else{if(f=="br"){e([[/\n/g,"<br />"]])}else{if(f=="p"){e([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{e([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}h.execCommand("mceInsertContent",false,j)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file
index cec4abf98727acd1f6c924e1ecad15e02d54e13a..c8230e9c9b789d386d10f9cae7ffd32bf2823321 100644 (file)
@@ -23,6 +23,7 @@
                        paste_convert_headers_to_strong : false,
                        paste_dialog_width : "450",
                        paste_dialog_height : "400",
+                       paste_max_consecutive_linebreaks: 2,
                        paste_text_use_dialog : false,
                        paste_text_sticky : false,
                        paste_text_sticky_default : false,
                        }
 
                        // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
-                       if (tinymce.isIE && document.documentMode >= 9) {
+                       if (tinymce.isIE && document.documentMode >= 9 && /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(o.content)) {
                                // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
                                process([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g, '$1']]);
 
                                        [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"],           // Table cells get tabs betweem them
                                        /<[a-z!\/?][^>]*>/gi,                                           // Delete all remaining tags
                                        [/&nbsp;/gi, " "],                                                      // Convert non-break spaces to regular spaces (remember, *plain text*)
-                                       [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars.
-                                       [/\n{3,}/g, "\n\n"]                                                     // Max. 2 consecutive linebreaks
+                                       [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"] // Cool little RegExp deletes whitespace around linebreak chars.
                                ]);
 
+                               var maxLinebreaks = Number(getParam(ed, "paste_max_consecutive_linebreaks"));
+                               if (maxLinebreaks > -1) {
+                                       var maxLinebreaksRegex = new RegExp("\n{" + (maxLinebreaks + 1) + ",}", "g");
+                                       var linebreakReplacement = "";
+
+                                       while (linebreakReplacement.length < maxLinebreaks) {
+                                               linebreakReplacement += "\n";
+                                       }
+
+                                       process([
+                                               [maxLinebreaksRegex, linebreakReplacement] // Limit max consecutive linebreaks
+                                       ]);
+                               }
+
                                content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));
 
                                // Perform default or custom replacements
index eb352ef371d4d4207fc7d3be9ef43cfc65674c0c..a1f735890c7e907ae7de0248663f98f4778b7041 100644 (file)
@@ -1,8 +1,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_text_desc}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/pastetext.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/pastetext.js?ver=358-20121205"></script>
 </head>
 <body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
                <textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
 
                <div class="mceActionPanel">
-                       <div style="float: left">
-                               <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
-                       </div>
-
-                       <div style="float: right">
-                               <input type="submit" name="insert" value="{#insert}" id="insert" />
-                       </div>
+                       <input type="submit" name="insert" value="{#insert}" id="insert" />
+                       <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
                </div>
        </form>
 </body> 
index ee9b9e8feca78f8a4bb0d90369eefd29e1dee642..0cfef68193742ca090484d867f6f9f041929f965 100644 (file)
@@ -1,8 +1,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_word_desc}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/pasteword.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/pasteword.js?ver=358-20121205"></script>
 </head>
 <body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
                <div id="iframecontainer"></div>
 
                <div class="mceActionPanel">
-                       <div style="float: left">
-                               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-                       </div>
-
-                       <div style="float: right">
-                               <input type="submit" id="insert" name="insert" value="{#insert}" />
-                       </div>
+                       <input type="submit" id="insert" name="insert" value="{#insert}" />
+                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
                </div>
        </form>
 </body>
index 38daa06627b092cf24dc9ce5da4538c69c08a227..03e4a7848ef5213b10166d8a81af03ec79935f78 100644 (file)
@@ -50,7 +50,9 @@ class GoogleSpell extends SpellChecker {
                return $osug;
        }
 
-       function &_getMatches($lang, $str) {
+       protected function &_getMatches($lang, $str) {
+               $lang = preg_replace('/[^a-z\-]/i', '', $lang);
+               $str = preg_replace('/[\x00-\x1F\x7F]/', '', $str);
                $server = "www.google.com";
                $port = 443;
                $path = "/tbproxy/spell?lang=" . $lang . "&hl=en";
@@ -105,7 +107,7 @@ class GoogleSpell extends SpellChecker {
                return $matches;
        }
 
-       function _unhtmlentities($string) {
+       protected function _unhtmlentities($string) {
                $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
                $string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
 
index 71fbb68a644154a18bd6cd0fc3099e751f6cf42f..48549c9239294c2588705e5b3a649e729c5de9ca 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(l){var g=this.editor,f=g.dom,j=g.getDoc(),h=g.selection,i=h.getBookmark(),d=[],k=l.join("|"),m=this._getSeparators(),e=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(g.getBody(),function(o){if(o.nodeType==3){d.push(o)}});c(d,function(t){var r,q,o,s,p=t.nodeValue;if(e.test(p)){p=f.encode(p);q=f.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(e,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(f.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(f.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(f.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(e,'$1<span class="mceItemHiddenSpellWord">$2</span>')}f.replace(q,t)}});h.moveToBookmark(i)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file
+(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(d){var e=this.editor,h=e.dom,g=e.selection,f=g.getRng(true);c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!d||h.decode(i.innerHTML)==d){h.remove(i,1)}}});g.setRng(f)},_markWords:function(l){var h=this.editor,g=h.dom,j=h.getDoc(),i=h.selection,d=i.getRng(true),e=[],k=l.join("|"),m=this._getSeparators(),f=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(h.getBody(),function(o){if(o.nodeType==3){e.push(o)}});c(e,function(t){var r,q,o,s,p=t.nodeValue;if(f.test(p)){p=g.encode(p);q=g.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(f,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1<span class="mceItemHiddenSpellWord">$2</span>')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file
index 0d7cc6eb97d114e3030494c36019d291e8ad5b7f..925d2f21a6078f276892d2f2e5338367e69ee0ee 100644 (file)
                },
 
                _removeWords : function(w) {
-                       var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
+                       var ed = this.editor, dom = ed.dom, se = ed.selection, r = se.getRng(true);
 
                        each(dom.select('span').reverse(), function(n) {
                                if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
                                }
                        });
 
-                       se.moveToBookmark(b);
+                       se.setRng(r);
                },
 
                _markWords : function(wl) {
-                       var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, b = se.getBookmark(), nl = [],
+                       var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, r = se.getRng(true), nl = [],
                                w = wl.join('|'), re = this._getSeparators(), rx = new RegExp('(^|[' + re + '])(' + w + ')(?=[' + re + ']|$)', 'g');
 
                        // Collect all text nodes
                                }
                        });
 
-                       se.moveToBookmark(b);
+                       se.setRng(r);
                },
 
                _showMenu : function(ed, e) {
index 42a82d112c5d568031498bb94d978777225ab35f..2c51291615f5c1e3d957904d5751d9fcb52616ca 100644 (file)
@@ -1 +1 @@
-(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
\ No newline at end of file
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
\ No newline at end of file
index a1579c85f22760df55dc01ffa04c2a00aca7917a..94f45320d600fcf930c693ce39fa83b0d02518cc 100644 (file)
@@ -22,7 +22,7 @@
                                var x, i, f, el, v;
 
                                function find(d) {
-                                       el = DOM.select(':input:enabled,*[tabindex]');
+                                       el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
 
                                        function canSelectRecursive(e) {
                                                return e.nodeName==="BODY" || (e.type != 'hidden' &&
index 5d905efc4743758f5acbfc85d14a0e4cb46ef373..e71099a0e10b04b88d189fc2fe119e865931913b 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{mceTout:0,init:function(c,d){var e=this,h=c.getParam("wordpress_adv_toolbar","toolbar2"),g=0,f,b,i;f='<img src="'+d+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){c.settings.wordpress_adv_hidden=0}c.onPostRender.add(function(){var j=c.controlManager.get(h);if(c.getParam("wordpress_adv_hidden",1)&&j){a.hide(j.id);e._resizeIframe(c,h,28)}});c.addCommand("WP_More",function(){c.execCommand("mceInsertContent",0,f)});c.addCommand("WP_Page",function(){c.execCommand("mceInsertContent",0,b)});c.addCommand("WP_Help",function(){c.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});c.addCommand("WP_Adv",function(){var j=c.controlManager,k=j.get(h).id;if("undefined"==k){return}if(a.isHidden(k)){j.setActive("wp_adv",1);a.show(k);e._resizeIframe(c,h,-28);c.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{j.setActive("wp_adv",0);a.hide(k);e._resizeIframe(c,h,28);c.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});c.addCommand("WP_Medialib",function(){var k=c.getParam("wp_fullscreen_editor_id")||c.getParam("fullscreen_editor_id")||c.id,j=tinymce.DOM.select("#wp-"+k+"-media-buttons a.thickbox");if(j&&j[0]){j=j[0]}else{return}tb_show("",j.href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});c.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});c.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});c.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});c.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});c.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/image.gif",cmd:"WP_Medialib"});c.onBeforeExecCommand.add(function(q,p,t,m,k){var w=tinymce.DOM,l,j,s,v,u,r;if("mceFullScreen"==p){if("mce_fullscreen"!=q.id&&w.select("a.thickbox").length){q.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==p||"JustifyRight"==p||"JustifyCenter"==p){l=q.selection.getNode();if(l.nodeName=="IMG"){r=p.substr(7).toLowerCase();u="align"+r;j=q.dom.getParent(l,"dl.wp-caption");s=q.dom.getParent(l,"div.mceTemp");if(j&&s){v=q.dom.hasClass(j,u)?"alignnone":u;j.className=j.className.replace(/align[^ '"]+\s?/g,"");q.dom.addClass(j,v);if(v=="aligncenter"){q.dom.addClass(s,"mceIEcenter")}else{q.dom.removeClass(s,"mceIEcenter")}k.terminate=true;q.execCommand("mceRepaint")}else{if(q.dom.hasClass(l,u)){q.dom.addClass(l,"alignnone")}else{q.dom.removeClass(l,"alignnone")}}}}});c.onInit.add(function(l){var k=l.getParam("body_class",""),j=l.getBody();if(k){k=k.split(" ")}else{k=[]}if(l.getParam("directionality","")=="rtl"){k.push("rtl")}if(tinymce.isIE9){k.push("ie9")}else{if(tinymce.isIE8){k.push("ie8")}else{if(tinymce.isIE7){k.push("ie7")}}}if(l.id!="wp_mce_fullscreen"&&l.id!="mce_fullscreen"){k.push("wp-editor")}else{if(l.id=="mce_fullscreen"){k.push("mce-fullscreen")}}tinymce.each(k,function(m){if(m){l.dom.addClass(j,m)}});l.onNodeChange.add(function(n,m,p){var o;if(p.nodeName=="IMG"){o=n.dom.getParent(p,"dl.wp-caption")}else{if(p.nodeName=="DIV"&&n.dom.hasClass(p,"mceTemp")){o=p.firstChild;if(!n.dom.hasClass(o,"wp-caption")){o=false}}}if(o){if(n.dom.hasClass(o,"alignleft")){m.setActive("justifyleft",1)}else{if(n.dom.hasClass(o,"alignright")){m.setActive("justifyright",1)}else{if(n.dom.hasClass(o,"aligncenter")){m.setActive("justifycenter",1)}}}}});l.onBeforeSetContent.add(function(m,n){if(n.content){n.content=n.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");n.content=n.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){c.onKeyUp.add(function(l,m){var j=m.keyCode||m.charCode;if(j==g){return}if(13==j||8==g||46==g){jQuery(document).triggerHandler("wpcountwords",[l.getContent({format:"raw"})])}g=j})}c.onSaveContent.addToTop(function(j,k){k.content=k.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});c.onSaveContent.add(function(j,k){if(j.getParam("wpautop",true)&&typeof(switchEditors)=="object"){if(j.isHidden()){k.content=k.element.value}else{k.content=switchEditors.pre_wpautop(k.content)}}});e._handleMoreBreak(c,d);c.addShortcut("alt+shift+c",c.getLang("justifycenter_desc"),"JustifyCenter");c.addShortcut("alt+shift+r",c.getLang("justifyright_desc"),"JustifyRight");c.addShortcut("alt+shift+l",c.getLang("justifyleft_desc"),"JustifyLeft");c.addShortcut("alt+shift+j",c.getLang("justifyfull_desc"),"JustifyFull");c.addShortcut("alt+shift+q",c.getLang("blockquote_desc"),"mceBlockQuote");c.addShortcut("alt+shift+u",c.getLang("bullist_desc"),"InsertUnorderedList");c.addShortcut("alt+shift+o",c.getLang("numlist_desc"),"InsertOrderedList");c.addShortcut("alt+shift+d",c.getLang("striketrough_desc"),"Strikethrough");c.addShortcut("alt+shift+n",c.getLang("spellchecker.desc"),"mceSpellCheck");c.addShortcut("alt+shift+a",c.getLang("link_desc"),"mceLink");c.addShortcut("alt+shift+s",c.getLang("unlink_desc"),"unlink");c.addShortcut("alt+shift+m",c.getLang("image_desc"),"WP_Medialib");c.addShortcut("alt+shift+g",c.getLang("fullscreen.desc"),"mceFullScreen");c.addShortcut("alt+shift+z",c.getLang("wp_adv_desc"),"WP_Adv");c.addShortcut("alt+shift+h",c.getLang("help_desc"),"WP_Help");c.addShortcut("alt+shift+t",c.getLang("wp_more_desc"),"WP_More");c.addShortcut("alt+shift+p",c.getLang("wp_page_desc"),"WP_Page");c.addShortcut("ctrl+s",c.getLang("save_desc"),function(){if("function"==typeof autosave){autosave()}});if(tinymce.isWebKit){c.addShortcut("alt+shift+b",c.getLang("bold_desc"),"Bold");c.addShortcut("alt+shift+i",c.getLang("italic_desc"),"Italic")}c.onInit.add(function(j){tinymce.dom.Event.add(j.getWin(),"scroll",function(k){j.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(j.getBody(),"dragstart",function(k){j.plugins.wordpress._hideButtons()})});c.onBeforeExecCommand.add(function(j,l,k,m){j.plugins.wordpress._hideButtons()});c.onSaveContent.add(function(j,k){j.plugins.wordpress._hideButtons()});c.onMouseDown.add(function(j,k){if(k.target.nodeName!="IMG"){j.plugins.wordpress._hideButtons()}});i=function(j){var k;if(j.target.id=="mceModalBlocker"||j.target.className=="ui-widget-overlay"){for(k in c.windowManager.windows){c.windowManager.close(null,k)}}};tinymce.dom.Event.remove(document.body,"click",i);tinymce.dom.Event.add(document.body,"click",i)},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"});if(this.mceTout){clearTimeout(this.mceTout)}this.mceTout=setTimeout(function(){g.plugins.wordpress._hideButtons()},5000)},_hideButtons:function(){if(!this.mceTout){return}if(document.getElementById("wp_editbtns")){tinymce.DOM.hide("wp_editbtns")}if(document.getElementById("wp_gallerybtns")){tinymce.DOM.hide("wp_gallerybtns")}clearTimeout(this.mceTout);this.mceTout=0},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{init:function(f,c){var j=this,e=f.getParam("wordpress_adv_toolbar","toolbar2"),i=0,d,b,h,g;d='<img src="'+c+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+f.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+c+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+f.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){f.settings.wordpress_adv_hidden=0}f.onPostRender.add(function(){var k=f.controlManager.get(e);if(f.getParam("wordpress_adv_hidden",1)&&k){a.hide(k.id);j._resizeIframe(f,e,28)}});f.addCommand("WP_More",function(){f.execCommand("mceInsertContent",0,d)});f.addCommand("WP_Page",function(){f.execCommand("mceInsertContent",0,b)});f.addCommand("WP_Help",function(){f.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});f.addCommand("WP_Adv",function(){var k=f.controlManager,l=k.get(e).id;if("undefined"==l){return}if(a.isHidden(l)){k.setActive("wp_adv",1);a.show(l);j._resizeIframe(f,e,-28);f.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{k.setActive("wp_adv",0);a.hide(l);j._resizeIframe(f,e,28);f.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});f.addCommand("WP_Medialib",function(){if(typeof wp!=="undefined"&&wp.media&&wp.media.editor){wp.media.editor.open(f.id)}});f.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});f.addButton("wp_page",{title:"wordpress.wp_page_desc",image:c+"/img/page.gif",cmd:"WP_Page"});f.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});f.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});f.addButton("add_media",{title:"wordpress.add_media",image:c+"/img/image.gif",cmd:"WP_Medialib"});f.onBeforeExecCommand.add(function(r,q,u,p,l){var x=tinymce.DOM,m,k,t,w,v,s;if("mceFullScreen"==q){if("mce_fullscreen"!=r.id&&x.select("a.thickbox").length){r.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==q||"JustifyRight"==q||"JustifyCenter"==q){m=r.selection.getNode();if(m.nodeName=="IMG"){s=q.substr(7).toLowerCase();v="align"+s;k=r.dom.getParent(m,"dl.wp-caption");t=r.dom.getParent(m,"div.mceTemp");if(k&&t){w=r.dom.hasClass(k,v)?"alignnone":v;k.className=k.className.replace(/align[^ '"]+\s?/g,"");r.dom.addClass(k,w);if(w=="aligncenter"){r.dom.addClass(t,"mceIEcenter")}else{r.dom.removeClass(t,"mceIEcenter")}l.terminate=true;r.execCommand("mceRepaint")}else{if(r.dom.hasClass(m,v)){r.dom.addClass(m,"alignnone")}else{r.dom.removeClass(m,"alignnone")}}}}});f.onInit.add(function(m){var l=m.getParam("body_class",""),k=m.getBody();if(l){l=l.split(" ")}else{l=[]}if(m.getParam("directionality","")=="rtl"){l.push("rtl")}if(tinymce.isIE9){l.push("ie9")}else{if(tinymce.isIE8){l.push("ie8")}else{if(tinymce.isIE7){l.push("ie7")}}}if(m.id!="wp_mce_fullscreen"&&m.id!="mce_fullscreen"){l.push("wp-editor")}else{if(m.id=="mce_fullscreen"){l.push("mce-fullscreen")}}tinymce.each(l,function(n){if(n){m.dom.addClass(k,n)}});m.onNodeChange.add(function(o,n,q){var p;if(q.nodeName=="IMG"){p=o.dom.getParent(q,"dl.wp-caption")}else{if(q.nodeName=="DIV"&&o.dom.hasClass(q,"mceTemp")){p=q.firstChild;if(!o.dom.hasClass(p,"wp-caption")){p=false}}}if(p){if(o.dom.hasClass(p,"alignleft")){n.setActive("justifyleft",1)}else{if(o.dom.hasClass(p,"alignright")){n.setActive("justifyright",1)}else{if(o.dom.hasClass(p,"aligncenter")){n.setActive("justifycenter",1)}}}}});m.onBeforeSetContent.add(function(n,p){if(p.content){p.content=p.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");p.content=p.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){f.onKeyUp.add(function(m,n){var l=n.keyCode||n.charCode;if(l==i){return}if(13==l||8==i||46==i){jQuery(document).triggerHandler("wpcountwords",[m.getContent({format:"raw"})])}i=l})}f.onSaveContent.addToTop(function(k,l){l.content=l.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});f.onSaveContent.add(function(k,l){if(k.getParam("wpautop",true)&&typeof(switchEditors)=="object"){if(k.isHidden()){l.content=l.element.value}else{l.content=switchEditors.pre_wpautop(l.content)}}});j._handleMoreBreak(f,c);g="alt+shift";f.addShortcut(g+"+c","justifycenter_desc","JustifyCenter");f.addShortcut(g+"+r","justifyright_desc","JustifyRight");f.addShortcut(g+"+l","justifyleft_desc","JustifyLeft");f.addShortcut(g+"+j","justifyfull_desc","JustifyFull");f.addShortcut(g+"+q","blockquote_desc","mceBlockQuote");f.addShortcut(g+"+u","bullist_desc","InsertUnorderedList");f.addShortcut(g+"+o","numlist_desc","InsertOrderedList");f.addShortcut(g+"+n","spellchecker.desc","mceSpellCheck");f.addShortcut(g+"+a","link_desc","WP_Link");f.addShortcut(g+"+s","unlink_desc","unlink");f.addShortcut(g+"+m","image_desc","WP_Medialib");f.addShortcut(g+"+z","wordpress.wp_adv_desc","WP_Adv");f.addShortcut(g+"+t","wordpress.wp_more_desc","WP_More");f.addShortcut(g+"+d","striketrough_desc","Strikethrough");f.addShortcut(g+"+h","help_desc","WP_Help");f.addShortcut(g+"+p","wordpress.wp_page_desc","WP_Page");f.addShortcut("ctrl+s","save_desc",function(){if("function"==typeof autosave){autosave()}});if(/\bwpfullscreen\b/.test(f.settings.plugins)){f.addShortcut(g+"+w","wordpress.wp_fullscreen_desc","wpFullScreen")}else{if(/\bfullscreen\b/.test(f.settings.plugins)){f.addShortcut(g+"+g","fullscreen.desc","mceFullScreen")}}f.onInit.add(function(k){tinymce.dom.Event.add(k.getWin(),"scroll",function(l){k.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(k.getBody(),"dragstart",function(l){k.plugins.wordpress._hideButtons()})});f.onBeforeExecCommand.add(function(k,m,l,n){k.plugins.wordpress._hideButtons()});f.onSaveContent.add(function(k,l){k.plugins.wordpress._hideButtons()});f.onMouseDown.add(function(k,l){if(l.target.nodeName!="IMG"){k.plugins.wordpress._hideButtons()}});f.onKeyDown.add(function(k,l){if(l.which==tinymce.VK.DELETE||l.which==tinymce.VK.BACKSPACE){k.plugins.wordpress._hideButtons()}});h=function(k){var l;if(k.target.id=="mceModalBlocker"||k.target.className=="ui-widget-overlay"){for(l in f.windowManager.windows){f.windowManager.close(null,l)}}};tinymce.dom.Event.remove(document.body,"click",h);tinymce.dom.Event.add(document.body,"click",h)},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"})},_hideButtons:function(){var b=tinymce.DOM;b.hide(b.select("#wp_editbtns, #wp_gallerybtns"))},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
index 40d978ff48040a251a81fcd1fd25d7e53879693e..9fecbc4c3f58eaa47ef713b12f095cd3a0d72d5f 100644 (file)
@@ -6,10 +6,8 @@
        var DOM = tinymce.DOM;
 
        tinymce.create('tinymce.plugins.WordPress', {
-               mceTout : 0,
-
                init : function(ed, url) {
-                       var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML, closeOnClick;
+                       var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML, closeOnClick, mod_key;
                        moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
                        nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
                        });
 
                        ed.addCommand('WP_Medialib', function() {
-                               var id = ed.getParam('wp_fullscreen_editor_id') || ed.getParam('fullscreen_editor_id') || ed.id,
-                                       link = tinymce.DOM.select('#wp-' + id + '-media-buttons a.thickbox');
-
-                               if ( link && link[0] )
-                                       link = link[0];
-                               else
-                                       return;
-
-                               tb_show('', link.href);
-                               tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+                               if ( typeof wp !== 'undefined' && wp.media && wp.media.editor )
+                                       wp.media.editor.open( ed.id );
                        });
 
                        // Register buttons
                        t._handleMoreBreak(ed, url);
 
                        // Add custom shortcuts
-                       ed.addShortcut('alt+shift+c', ed.getLang('justifycenter_desc'), 'JustifyCenter');
-                       ed.addShortcut('alt+shift+r', ed.getLang('justifyright_desc'), 'JustifyRight');
-                       ed.addShortcut('alt+shift+l', ed.getLang('justifyleft_desc'), 'JustifyLeft');
-                       ed.addShortcut('alt+shift+j', ed.getLang('justifyfull_desc'), 'JustifyFull');
-                       ed.addShortcut('alt+shift+q', ed.getLang('blockquote_desc'), 'mceBlockQuote');
-                       ed.addShortcut('alt+shift+u', ed.getLang('bullist_desc'), 'InsertUnorderedList');
-                       ed.addShortcut('alt+shift+o', ed.getLang('numlist_desc'), 'InsertOrderedList');
-                       ed.addShortcut('alt+shift+d', ed.getLang('striketrough_desc'), 'Strikethrough');
-                       ed.addShortcut('alt+shift+n', ed.getLang('spellchecker.desc'), 'mceSpellCheck');
-                       ed.addShortcut('alt+shift+a', ed.getLang('link_desc'), 'mceLink');
-                       ed.addShortcut('alt+shift+s', ed.getLang('unlink_desc'), 'unlink');
-                       ed.addShortcut('alt+shift+m', ed.getLang('image_desc'), 'WP_Medialib');
-                       ed.addShortcut('alt+shift+g', ed.getLang('fullscreen.desc'), 'mceFullScreen');
-                       ed.addShortcut('alt+shift+z', ed.getLang('wp_adv_desc'), 'WP_Adv');
-                       ed.addShortcut('alt+shift+h', ed.getLang('help_desc'), 'WP_Help');
-                       ed.addShortcut('alt+shift+t', ed.getLang('wp_more_desc'), 'WP_More');
-                       ed.addShortcut('alt+shift+p', ed.getLang('wp_page_desc'), 'WP_Page');
-                       ed.addShortcut('ctrl+s', ed.getLang('save_desc'), function(){if('function'==typeof autosave)autosave();});
-
-                       if ( tinymce.isWebKit ) {
-                               ed.addShortcut('alt+shift+b', ed.getLang('bold_desc'), 'Bold');
-                               ed.addShortcut('alt+shift+i', ed.getLang('italic_desc'), 'Italic');
-                       }
-
+                       mod_key = 'alt+shift';
+
+               //      if ( tinymce.isGecko ) // disable for mow, too many shortcuts conflicts
+               //              mod_key = 'ctrl+alt';
+
+                       ed.addShortcut(mod_key + '+c', 'justifycenter_desc', 'JustifyCenter');
+                       ed.addShortcut(mod_key + '+r', 'justifyright_desc', 'JustifyRight');
+                       ed.addShortcut(mod_key + '+l', 'justifyleft_desc', 'JustifyLeft');
+                       ed.addShortcut(mod_key + '+j', 'justifyfull_desc', 'JustifyFull');
+                       ed.addShortcut(mod_key + '+q', 'blockquote_desc', 'mceBlockQuote');
+                       ed.addShortcut(mod_key + '+u', 'bullist_desc', 'InsertUnorderedList');
+                       ed.addShortcut(mod_key + '+o', 'numlist_desc', 'InsertOrderedList');
+                       ed.addShortcut(mod_key + '+n', 'spellchecker.desc', 'mceSpellCheck');
+                       ed.addShortcut(mod_key + '+a', 'link_desc', 'WP_Link');
+                       ed.addShortcut(mod_key + '+s', 'unlink_desc', 'unlink');
+                       ed.addShortcut(mod_key + '+m', 'image_desc', 'WP_Medialib');
+                       ed.addShortcut(mod_key + '+z', 'wordpress.wp_adv_desc', 'WP_Adv');
+                       ed.addShortcut(mod_key + '+t', 'wordpress.wp_more_desc', 'WP_More');
+                       ed.addShortcut(mod_key + '+d', 'striketrough_desc', 'Strikethrough');
+                       ed.addShortcut(mod_key + '+h', 'help_desc', 'WP_Help');
+                       ed.addShortcut(mod_key + '+p', 'wordpress.wp_page_desc', 'WP_Page');
+                       ed.addShortcut('ctrl+s', 'save_desc', function(){if('function'==typeof autosave)autosave();});
+
+                       if ( /\bwpfullscreen\b/.test(ed.settings.plugins) )
+                               ed.addShortcut(mod_key + '+w', 'wordpress.wp_fullscreen_desc', 'wpFullScreen');
+                       else if ( /\bfullscreen\b/.test(ed.settings.plugins) )
+                               ed.addShortcut(mod_key + '+g', 'fullscreen.desc', 'mceFullScreen');
+
+                       // popup buttons for images and the gallery
                        ed.onInit.add(function(ed) {
                                tinymce.dom.Event.add(ed.getWin(), 'scroll', function(e) {
                                        ed.plugins.wordpress._hideButtons();
                                        ed.plugins.wordpress._hideButtons();
                        });
 
+                       ed.onKeyDown.add(function(ed, e){
+                               if ( e.which == tinymce.VK.DELETE || e.which == tinymce.VK.BACKSPACE )
+                                       ed.plugins.wordpress._hideButtons();
+                       });
+
                        closeOnClick = function(e){
                                var id;
 
                                'left' : X+5+'px',
                                'display' : 'block'
                        });
-
-                       if ( this.mceTout )
-                               clearTimeout(this.mceTout);
-
-                       this.mceTout = setTimeout( function(){ed.plugins.wordpress._hideButtons();}, 5000 );
                },
 
                _hideButtons : function() {
-                       if ( !this.mceTout )
-                               return;
-
-                       if ( document.getElementById('wp_editbtns') )
-                               tinymce.DOM.hide('wp_editbtns');
-
-                       if ( document.getElementById('wp_gallerybtns') )
-                               tinymce.DOM.hide('wp_gallerybtns');
-
-                       clearTimeout(this.mceTout);
-                       this.mceTout = 0;
+                       var DOM = tinymce.DOM;
+                       DOM.hide( DOM.select('#wp_editbtns, #wp_gallerybtns') );
                },
 
                // Resizes the iframe by a relative height value
index 6736e6b009f4bd3c24b9a1cc5a5292d2e34b9dff..cf464afec1a9951263e9a5b1f6f7f3d9d1e78ab0 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wordpress/img/image.gif and b/wp-includes/js/tinymce/plugins/wordpress/img/image.gif differ
index b8e0975bc779081489f7dd6dff834419525ca87e..ddd20b1279d28b11d3b6a21f8489783b3c98aa25 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wordpress/img/video.gif and b/wp-includes/js/tinymce/plugins/wordpress/img/video.gif differ
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js b/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js
deleted file mode 100644 (file)
index b45a1fd..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/**
- * popup.js
- *
- * An altered version of tinyMCEPopup to work in the same window as tinymce.
- *
- * ------------------------------------------------------------------
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-// Some global instances
-
-/**
- * TinyMCE popup/dialog helper class. This gives you easy access to the
- * parent editor instance and a bunch of other things. It's higly recommended
- * that you load this script into your dialogs.
- *
- * @static
- * @class tinyMCEPopup
- */
-var tinyMCEPopup = {
-       /**
-        * Initializes the popup this will be called automatically.
-        *
-        * @method init
-        */
-       init : function() {
-               var t = this, w, ti;
-
-               // Find window & API
-               w = t.getWin();
-               tinymce = w.tinymce;
-               tinyMCE = w.tinyMCE;
-               t.editor = tinymce.EditorManager.activeEditor;
-               t.params = t.editor.windowManager.params;
-               t.features = t.editor.windowManager.features;
-               t.dom = tinymce.dom;
-
-               // Setup on init listeners
-               t.listeners = [];
-               t.onInit = {
-                       add : function(f, s) {
-                               t.listeners.push({func : f, scope : s});
-                       }
-               };
-
-               t.isWindow = false;
-               t.id = t.features.id;
-               t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
-       },
-
-       /**
-        * Returns the reference to the parent window that opened the dialog.
-        *
-        * @method getWin
-        * @return {Window} Reference to the parent window that opened the dialog.
-        */
-       getWin : function() {
-               return window;
-       },
-
-       /**
-        * Returns a window argument/parameter by name.
-        *
-        * @method getWindowArg
-        * @param {String} n Name of the window argument to retrieve.
-        * @param {String} dv Optional default value to return.
-        * @return {String} Argument value or default value if it wasn't found.
-        */
-       getWindowArg : function(n, dv) {
-               var v = this.params[n];
-
-               return tinymce.is(v) ? v : dv;
-       },
-
-       /**
-        * Returns a editor parameter/config option value.
-        *
-        * @method getParam
-        * @param {String} n Name of the editor config option to retrieve.
-        * @param {String} dv Optional default value to return.
-        * @return {String} Parameter value or default value if it wasn't found.
-        */
-       getParam : function(n, dv) {
-               return this.editor.getParam(n, dv);
-       },
-
-       /**
-        * Returns a language item by key.
-        *
-        * @method getLang
-        * @param {String} n Language item like mydialog.something.
-        * @param {String} dv Optional default value to return.
-        * @return {String} Language value for the item like "my string" or the default value if it wasn't found.
-        */
-       getLang : function(n, dv) {
-               return this.editor.getLang(n, dv);
-       },
-
-       /**
-        * Executed a command on editor that opened the dialog/popup.
-        *
-        * @method execCommand
-        * @param {String} cmd Command to execute.
-        * @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
-        * @param {Object} val Optional value to pass with the comman like an URL.
-        * @param {Object} a Optional arguments object.
-        */
-       execCommand : function(cmd, ui, val, a) {
-               a = a || {};
-               a.skip_focus = 1;
-
-               this.restoreSelection();
-               return this.editor.execCommand(cmd, ui, val, a);
-       },
-
-       /**
-        * Resizes the dialog to the inner size of the window. This is needed since various browsers
-        * have different border sizes on windows.
-        *
-        * @method resizeToInnerSize
-        */
-       resizeToInnerSize : function() {
-               var t = this;
-
-               // Detach it to workaround a Chrome specific bug
-               // https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
-               setTimeout(function() {
-                       var vp = t.dom.getViewPort(window);
-
-                       t.editor.windowManager.resizeBy(
-                               t.getWindowArg('mce_width') - vp.w,
-                               t.getWindowArg('mce_height') - vp.h,
-                               t.id || window
-                       );
-               }, 0);
-       },
-
-       /**
-        * Will executed the specified string when the page has been loaded. This function
-        * was added for compatibility with the 2.x branch.
-        *
-        * @method executeOnLoad
-        * @param {String} s String to evalutate on init.
-        */
-       executeOnLoad : function(s) {
-               this.onInit.add(function() {
-                       eval(s);
-               });
-       },
-
-       /**
-        * Stores the current editor selection for later restoration. This can be useful since some browsers
-        * looses it's selection if a control element is selected/focused inside the dialogs.
-        *
-        * @method storeSelection
-        */
-       storeSelection : function() {
-               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
-       },
-
-       /**
-        * Restores any stored selection. This can be useful since some browsers
-        * looses it's selection if a control element is selected/focused inside the dialogs.
-        *
-        * @method restoreSelection
-        */
-       restoreSelection : function() {
-               var t = tinyMCEPopup;
-
-               if (!t.isWindow && tinymce.isIE)
-                       t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
-       },
-
-       /**
-        * Loads a specific dialog language pack. If you pass in plugin_url as a arugment
-        * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
-        *
-        * @method requireLangPack
-        */
-       requireLangPack : function() {
-               var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
-
-               if (u && t.editor.settings.language && t.features.translate_i18n !== false) {
-                       u += '/langs/' + t.editor.settings.language + '_dlg.js';
-
-                       if (!tinymce.ScriptLoader.isDone(u)) {
-                               document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
-                               tinymce.ScriptLoader.markDone(u);
-                       }
-               }
-       },
-
-       /**
-        * Executes a color picker on the specified element id. When the user
-        * then selects a color it will be set as the value of the specified element.
-        *
-        * @method pickColor
-        * @param {DOMEvent} e DOM event object.
-        * @param {string} element_id Element id to be filled with the color value from the picker.
-        */
-       pickColor : function(e, element_id) {
-               this.execCommand('mceColorPicker', true, {
-                       color : document.getElementById(element_id).value,
-                       func : function(c) {
-                               document.getElementById(element_id).value = c;
-
-                               try {
-                                       document.getElementById(element_id).onchange();
-                               } catch (ex) {
-                                       // Try fire event, ignore errors
-                               }
-                       }
-               });
-       },
-
-       /**
-        * Opens a filebrowser/imagebrowser this will set the output value from
-        * the browser as a value on the specified element.
-        *
-        * @method openBrowser
-        * @param {string} element_id Id of the element to set value in.
-        * @param {string} type Type of browser to open image/file/flash.
-        * @param {string} option Option name to get the file_broswer_callback function name from.
-        */
-       openBrowser : function(element_id, type, option) {
-               tinyMCEPopup.restoreSelection();
-               this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
-       },
-
-       /**
-        * Creates a confirm dialog. Please don't use the blocking behavior of this
-        * native version use the callback method instead then it can be extended.
-        *
-        * @method confirm
-        * @param {String} t Title for the new confirm dialog.
-        * @param {function} cb Callback function to be executed after the user has selected ok or cancel.
-        * @param {Object} s Optional scope to execute the callback in.
-        */
-       confirm : function(t, cb, s) {
-               this.editor.windowManager.confirm(t, cb, s, window);
-       },
-
-       /**
-        * Creates a alert dialog. Please don't use the blocking behavior of this
-        * native version use the callback method instead then it can be extended.
-        *
-        * @method alert
-        * @param {String} t Title for the new alert dialog.
-        * @param {function} cb Callback function to be executed after the user has selected ok.
-        * @param {Object} s Optional scope to execute the callback in.
-        */
-       alert : function(tx, cb, s) {
-               this.editor.windowManager.alert(tx, cb, s, window);
-       },
-
-       /**
-        * Closes the current window.
-        *
-        * @method close
-        */
-       close : function() {
-               var t = this;
-
-               // To avoid domain relaxing issue in Opera
-               function close() {
-                       t.editor.windowManager.close(window);
-                       t.editor = null;
-               };
-
-               if (tinymce.isOpera)
-                       t.getWin().setTimeout(close, 0);
-               else
-                       close();
-       },
-
-       // Internal functions
-
-       _restoreSelection : function() {
-               var e = window.event.srcElement;
-
-               if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
-                       tinyMCEPopup.restoreSelection();
-       },
-
-/*     _restoreSelection : function() {
-               var e = window.event.srcElement;
-
-               // If user focus a non text input or textarea
-               if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
-                       tinyMCEPopup.restoreSelection();
-       },*/
-
-       _onDOMLoaded : function() {
-               var t = tinyMCEPopup, ti = document.title, bm, h, nv;
-
-               if (t.domLoaded)
-                       return;
-
-               t.domLoaded = 1;
-
-               tinyMCEPopup.init();
-
-               // Translate page
-               if (t.features.translate_i18n !== false) {
-                       h = document.body.innerHTML;
-
-                       // Replace a=x with a="x" in IE
-                       if (tinymce.isIE)
-                               h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
-
-                       document.dir = t.editor.getParam('directionality','');
-
-                       if ((nv = t.editor.translate(h)) && nv != h)
-                               document.body.innerHTML = nv;
-
-                       if ((nv = t.editor.translate(ti)) && nv != ti)
-                               document.title = ti = nv;
-               }
-
-               document.body.style.display = '';
-
-               // Restore selection in IE when focus is placed on a non textarea or input element of the type text
-               if (tinymce.isIE) {
-                       document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
-
-                       // Add base target element for it since it would fail with modal dialogs
-                       t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
-               }
-
-               t.restoreSelection();
-
-               // Set inline title
-               if (!t.isWindow)
-                       t.editor.windowManager.setTitle(window, ti);
-               else
-                       window.focus();
-
-               if (!tinymce.isIE && !t.isWindow) {
-                       tinymce.dom.Event._add(document, 'focus', function() {
-                               t.editor.windowManager.focus(t.id);
-                       });
-               }
-
-               // Patch for accessibility
-               tinymce.each(t.dom.select('select'), function(e) {
-                       e.onkeydown = tinyMCEPopup._accessHandler;
-               });
-
-               // Call onInit
-               // Init must be called before focus so the selection won't get lost by the focus call
-               tinymce.each(t.listeners, function(o) {
-                       o.func.call(o.scope, t.editor);
-               });
-
-               // Move focus to window
-               if (t.getWindowArg('mce_auto_focus', true)) {
-                       window.focus();
-
-                       // Focus element with mceFocus class
-                       tinymce.each(document.forms, function(f) {
-                               tinymce.each(f.elements, function(e) {
-                                       if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
-                                               e.focus();
-                                               return false; // Break loop
-                                       }
-                               });
-                       });
-               }
-
-               document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
-       },
-
-       _accessHandler : function(e) {
-               e = e || window.event;
-
-               if (e.keyCode == 13 || e.keyCode == 32) {
-                       e = e.target || e.srcElement;
-
-                       if (e.onchange)
-                               e.onchange();
-
-                       return tinymce.dom.Event.cancel(e);
-               }
-       },
-
-       _closeWinKeyHandler : function(e) {
-               e = e || window.event;
-
-               if (e.keyCode == 27)
-                       tinyMCEPopup.close();
-       },
-
-       _wait : function() {
-               // Use IE method
-               if (document.attachEvent) {
-                       document.attachEvent("onreadystatechange", function() {
-                               if (document.readyState === "complete") {
-                                       document.detachEvent("onreadystatechange", arguments.callee);
-                                       tinyMCEPopup._onDOMLoaded();
-                               }
-                       });
-
-                       if (document.documentElement.doScroll && window == window.top) {
-                               (function() {
-                                       if (tinyMCEPopup.domLoaded)
-                                               return;
-
-                                       try {
-                                               // If IE is used, use the trick by Diego Perini
-                                               // http://javascript.nwbox.com/IEContentLoaded/
-                                               document.documentElement.doScroll("left");
-                                       } catch (ex) {
-                                               setTimeout(arguments.callee, 0);
-                                               return;
-                                       }
-
-                                       tinyMCEPopup._onDOMLoaded();
-                               })();
-                       }
-
-                       document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);
-               } else if (document.addEventListener) {
-                       window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);
-                       window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);
-               }
-       }
-};
index abacbd3a1f16891f58fdf4a689b14176397fc7b5..b45a1fd2e595defe6f7341991b7c63f66a0e5a82 100644 (file)
@@ -1 +1,432 @@
-var tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=tinymce.dom;b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=false;b.id=b.features.id;b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},0)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);a.editor=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;tinyMCEPopup.init();if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};
\ No newline at end of file
+/**
+ * popup.js
+ *
+ * An altered version of tinyMCEPopup to work in the same window as tinymce.
+ *
+ * ------------------------------------------------------------------
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+// Some global instances
+
+/**
+ * TinyMCE popup/dialog helper class. This gives you easy access to the
+ * parent editor instance and a bunch of other things. It's higly recommended
+ * that you load this script into your dialogs.
+ *
+ * @static
+ * @class tinyMCEPopup
+ */
+var tinyMCEPopup = {
+       /**
+        * Initializes the popup this will be called automatically.
+        *
+        * @method init
+        */
+       init : function() {
+               var t = this, w, ti;
+
+               // Find window & API
+               w = t.getWin();
+               tinymce = w.tinymce;
+               tinyMCE = w.tinyMCE;
+               t.editor = tinymce.EditorManager.activeEditor;
+               t.params = t.editor.windowManager.params;
+               t.features = t.editor.windowManager.features;
+               t.dom = tinymce.dom;
+
+               // Setup on init listeners
+               t.listeners = [];
+               t.onInit = {
+                       add : function(f, s) {
+                               t.listeners.push({func : f, scope : s});
+                       }
+               };
+
+               t.isWindow = false;
+               t.id = t.features.id;
+               t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
+       },
+
+       /**
+        * Returns the reference to the parent window that opened the dialog.
+        *
+        * @method getWin
+        * @return {Window} Reference to the parent window that opened the dialog.
+        */
+       getWin : function() {
+               return window;
+       },
+
+       /**
+        * Returns a window argument/parameter by name.
+        *
+        * @method getWindowArg
+        * @param {String} n Name of the window argument to retrieve.
+        * @param {String} dv Optional default value to return.
+        * @return {String} Argument value or default value if it wasn't found.
+        */
+       getWindowArg : function(n, dv) {
+               var v = this.params[n];
+
+               return tinymce.is(v) ? v : dv;
+       },
+
+       /**
+        * Returns a editor parameter/config option value.
+        *
+        * @method getParam
+        * @param {String} n Name of the editor config option to retrieve.
+        * @param {String} dv Optional default value to return.
+        * @return {String} Parameter value or default value if it wasn't found.
+        */
+       getParam : function(n, dv) {
+               return this.editor.getParam(n, dv);
+       },
+
+       /**
+        * Returns a language item by key.
+        *
+        * @method getLang
+        * @param {String} n Language item like mydialog.something.
+        * @param {String} dv Optional default value to return.
+        * @return {String} Language value for the item like "my string" or the default value if it wasn't found.
+        */
+       getLang : function(n, dv) {
+               return this.editor.getLang(n, dv);
+       },
+
+       /**
+        * Executed a command on editor that opened the dialog/popup.
+        *
+        * @method execCommand
+        * @param {String} cmd Command to execute.
+        * @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
+        * @param {Object} val Optional value to pass with the comman like an URL.
+        * @param {Object} a Optional arguments object.
+        */
+       execCommand : function(cmd, ui, val, a) {
+               a = a || {};
+               a.skip_focus = 1;
+
+               this.restoreSelection();
+               return this.editor.execCommand(cmd, ui, val, a);
+       },
+
+       /**
+        * Resizes the dialog to the inner size of the window. This is needed since various browsers
+        * have different border sizes on windows.
+        *
+        * @method resizeToInnerSize
+        */
+       resizeToInnerSize : function() {
+               var t = this;
+
+               // Detach it to workaround a Chrome specific bug
+               // https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
+               setTimeout(function() {
+                       var vp = t.dom.getViewPort(window);
+
+                       t.editor.windowManager.resizeBy(
+                               t.getWindowArg('mce_width') - vp.w,
+                               t.getWindowArg('mce_height') - vp.h,
+                               t.id || window
+                       );
+               }, 0);
+       },
+
+       /**
+        * Will executed the specified string when the page has been loaded. This function
+        * was added for compatibility with the 2.x branch.
+        *
+        * @method executeOnLoad
+        * @param {String} s String to evalutate on init.
+        */
+       executeOnLoad : function(s) {
+               this.onInit.add(function() {
+                       eval(s);
+               });
+       },
+
+       /**
+        * Stores the current editor selection for later restoration. This can be useful since some browsers
+        * looses it's selection if a control element is selected/focused inside the dialogs.
+        *
+        * @method storeSelection
+        */
+       storeSelection : function() {
+               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
+       },
+
+       /**
+        * Restores any stored selection. This can be useful since some browsers
+        * looses it's selection if a control element is selected/focused inside the dialogs.
+        *
+        * @method restoreSelection
+        */
+       restoreSelection : function() {
+               var t = tinyMCEPopup;
+
+               if (!t.isWindow && tinymce.isIE)
+                       t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+       },
+
+       /**
+        * Loads a specific dialog language pack. If you pass in plugin_url as a arugment
+        * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
+        *
+        * @method requireLangPack
+        */
+       requireLangPack : function() {
+               var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
+
+               if (u && t.editor.settings.language && t.features.translate_i18n !== false) {
+                       u += '/langs/' + t.editor.settings.language + '_dlg.js';
+
+                       if (!tinymce.ScriptLoader.isDone(u)) {
+                               document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
+                               tinymce.ScriptLoader.markDone(u);
+                       }
+               }
+       },
+
+       /**
+        * Executes a color picker on the specified element id. When the user
+        * then selects a color it will be set as the value of the specified element.
+        *
+        * @method pickColor
+        * @param {DOMEvent} e DOM event object.
+        * @param {string} element_id Element id to be filled with the color value from the picker.
+        */
+       pickColor : function(e, element_id) {
+               this.execCommand('mceColorPicker', true, {
+                       color : document.getElementById(element_id).value,
+                       func : function(c) {
+                               document.getElementById(element_id).value = c;
+
+                               try {
+                                       document.getElementById(element_id).onchange();
+                               } catch (ex) {
+                                       // Try fire event, ignore errors
+                               }
+                       }
+               });
+       },
+
+       /**
+        * Opens a filebrowser/imagebrowser this will set the output value from
+        * the browser as a value on the specified element.
+        *
+        * @method openBrowser
+        * @param {string} element_id Id of the element to set value in.
+        * @param {string} type Type of browser to open image/file/flash.
+        * @param {string} option Option name to get the file_broswer_callback function name from.
+        */
+       openBrowser : function(element_id, type, option) {
+               tinyMCEPopup.restoreSelection();
+               this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
+       },
+
+       /**
+        * Creates a confirm dialog. Please don't use the blocking behavior of this
+        * native version use the callback method instead then it can be extended.
+        *
+        * @method confirm
+        * @param {String} t Title for the new confirm dialog.
+        * @param {function} cb Callback function to be executed after the user has selected ok or cancel.
+        * @param {Object} s Optional scope to execute the callback in.
+        */
+       confirm : function(t, cb, s) {
+               this.editor.windowManager.confirm(t, cb, s, window);
+       },
+
+       /**
+        * Creates a alert dialog. Please don't use the blocking behavior of this
+        * native version use the callback method instead then it can be extended.
+        *
+        * @method alert
+        * @param {String} t Title for the new alert dialog.
+        * @param {function} cb Callback function to be executed after the user has selected ok.
+        * @param {Object} s Optional scope to execute the callback in.
+        */
+       alert : function(tx, cb, s) {
+               this.editor.windowManager.alert(tx, cb, s, window);
+       },
+
+       /**
+        * Closes the current window.
+        *
+        * @method close
+        */
+       close : function() {
+               var t = this;
+
+               // To avoid domain relaxing issue in Opera
+               function close() {
+                       t.editor.windowManager.close(window);
+                       t.editor = null;
+               };
+
+               if (tinymce.isOpera)
+                       t.getWin().setTimeout(close, 0);
+               else
+                       close();
+       },
+
+       // Internal functions
+
+       _restoreSelection : function() {
+               var e = window.event.srcElement;
+
+               if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
+                       tinyMCEPopup.restoreSelection();
+       },
+
+/*     _restoreSelection : function() {
+               var e = window.event.srcElement;
+
+               // If user focus a non text input or textarea
+               if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
+                       tinyMCEPopup.restoreSelection();
+       },*/
+
+       _onDOMLoaded : function() {
+               var t = tinyMCEPopup, ti = document.title, bm, h, nv;
+
+               if (t.domLoaded)
+                       return;
+
+               t.domLoaded = 1;
+
+               tinyMCEPopup.init();
+
+               // Translate page
+               if (t.features.translate_i18n !== false) {
+                       h = document.body.innerHTML;
+
+                       // Replace a=x with a="x" in IE
+                       if (tinymce.isIE)
+                               h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
+
+                       document.dir = t.editor.getParam('directionality','');
+
+                       if ((nv = t.editor.translate(h)) && nv != h)
+                               document.body.innerHTML = nv;
+
+                       if ((nv = t.editor.translate(ti)) && nv != ti)
+                               document.title = ti = nv;
+               }
+
+               document.body.style.display = '';
+
+               // Restore selection in IE when focus is placed on a non textarea or input element of the type text
+               if (tinymce.isIE) {
+                       document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
+
+                       // Add base target element for it since it would fail with modal dialogs
+                       t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
+               }
+
+               t.restoreSelection();
+
+               // Set inline title
+               if (!t.isWindow)
+                       t.editor.windowManager.setTitle(window, ti);
+               else
+                       window.focus();
+
+               if (!tinymce.isIE && !t.isWindow) {
+                       tinymce.dom.Event._add(document, 'focus', function() {
+                               t.editor.windowManager.focus(t.id);
+                       });
+               }
+
+               // Patch for accessibility
+               tinymce.each(t.dom.select('select'), function(e) {
+                       e.onkeydown = tinyMCEPopup._accessHandler;
+               });
+
+               // Call onInit
+               // Init must be called before focus so the selection won't get lost by the focus call
+               tinymce.each(t.listeners, function(o) {
+                       o.func.call(o.scope, t.editor);
+               });
+
+               // Move focus to window
+               if (t.getWindowArg('mce_auto_focus', true)) {
+                       window.focus();
+
+                       // Focus element with mceFocus class
+                       tinymce.each(document.forms, function(f) {
+                               tinymce.each(f.elements, function(e) {
+                                       if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
+                                               e.focus();
+                                               return false; // Break loop
+                                       }
+                               });
+                       });
+               }
+
+               document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
+       },
+
+       _accessHandler : function(e) {
+               e = e || window.event;
+
+               if (e.keyCode == 13 || e.keyCode == 32) {
+                       e = e.target || e.srcElement;
+
+                       if (e.onchange)
+                               e.onchange();
+
+                       return tinymce.dom.Event.cancel(e);
+               }
+       },
+
+       _closeWinKeyHandler : function(e) {
+               e = e || window.event;
+
+               if (e.keyCode == 27)
+                       tinyMCEPopup.close();
+       },
+
+       _wait : function() {
+               // Use IE method
+               if (document.attachEvent) {
+                       document.attachEvent("onreadystatechange", function() {
+                               if (document.readyState === "complete") {
+                                       document.detachEvent("onreadystatechange", arguments.callee);
+                                       tinyMCEPopup._onDOMLoaded();
+                               }
+                       });
+
+                       if (document.documentElement.doScroll && window == window.top) {
+                               (function() {
+                                       if (tinyMCEPopup.domLoaded)
+                                               return;
+
+                                       try {
+                                               // If IE is used, use the trick by Diego Perini
+                                               // http://javascript.nwbox.com/IEContentLoaded/
+                                               document.documentElement.doScroll("left");
+                                       } catch (ex) {
+                                               setTimeout(arguments.callee, 0);
+                                               return;
+                                       }
+
+                                       tinyMCEPopup._onDOMLoaded();
+                               })();
+                       }
+
+                       document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);
+               } else if (document.addEventListener) {
+                       window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);
+                       window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);
+               }
+       }
+};
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.min.js b/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.min.js
new file mode 100644 (file)
index 0000000..abacbd3
--- /dev/null
@@ -0,0 +1 @@
+var tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=tinymce.dom;b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=false;b.id=b.features.id;b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},0)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);a.editor=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;tinyMCEPopup.init();if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js b/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js
deleted file mode 100644 (file)
index 6e25a1f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-(function($){
-       $.ui.dialog.prototype.options.closeOnEscape = false;
-       $.widget("wp.wpdialog", $.ui.dialog, {
-               options: {
-                       closeOnEscape: false
-               },
-
-               open: function() {
-                       var ed;
-
-                       // Initialize tinyMCEPopup if it exists and is the editor is active.
-                       if ( tinyMCEPopup && typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) {
-                               tinyMCEPopup.init();
-                       }
-
-                       // Add beforeOpen event.
-                       if ( this._isOpen || false === this._trigger('beforeOpen') ) {
-                               return;
-                       }
-
-                       // Open the dialog.
-                       $.ui.dialog.prototype.open.apply( this, arguments );
-                       // WebKit leaves focus in the TinyMCE editor unless we shift focus.
-                       this.element.focus();
-                       this._trigger('refresh');
-               }
-       });
-})(jQuery);
index b0f0011d82213d9179632534b1ac36088d9d1f31..cb168ddfada73345b7834324f4a73eeb78052c5d 100644 (file)
@@ -1 +1,28 @@
-(function(a){a.ui.dialog.prototype.options.closeOnEscape=false;a.widget("wp.wpdialog",a.ui.dialog,{options:{closeOnEscape:false},open:function(){var b;if(tinyMCEPopup&&typeof tinyMCE!="undefined"&&(b=tinyMCE.activeEditor)&&!b.isHidden()){tinyMCEPopup.init()}if(this._isOpen||false===this._trigger("beforeOpen")){return}a.ui.dialog.prototype.open.apply(this,arguments);this.element.focus();this._trigger("refresh")}})})(jQuery);
\ No newline at end of file
+(function($){
+       $.ui.dialog.prototype.options.closeOnEscape = false;
+       $.widget('wp.wpdialog', $.ui.dialog, {
+               // Work around a bug in jQuery UI 1.9.1.
+               // http://bugs.jqueryui.com/ticket/8805
+               widgetEventPrefix: 'wpdialog',
+
+               open: function() {
+                       var ed;
+
+                       // Initialize tinyMCEPopup if it exists and the editor is active.
+                       if ( tinyMCEPopup && typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) {
+                               tinyMCEPopup.init();
+                       }
+
+                       // Add beforeOpen event.
+                       if ( this.isOpen() || false === this._trigger('beforeOpen') ) {
+                               return;
+                       }
+
+                       // Open the dialog.
+                       this._super();
+                       // WebKit leaves focus in the TinyMCE editor unless we shift focus.
+                       this.element.focus();
+                       this._trigger('refresh');
+               }
+       });
+})(jQuery);
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.min.js b/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.min.js
new file mode 100644 (file)
index 0000000..60bf4fe
--- /dev/null
@@ -0,0 +1 @@
+(function(a){a.ui.dialog.prototype.options.closeOnEscape=false;a.widget("wp.wpdialog",a.ui.dialog,{widgetEventPrefix:"wpdialog",open:function(){var b;if(tinyMCEPopup&&typeof tinyMCE!="undefined"&&(b=tinyMCE.activeEditor)&&!b.isHidden()){tinyMCEPopup.init()}if(this.isOpen()||false===this._trigger("beforeOpen")){return}this._super();this.element.focus();this._trigger("refresh")}})})(jQuery);
\ No newline at end of file
index 3b7e1566edc458bc2f225e77feb6e18fb0010a87..e380ad594a100804520975736422f6a2b24b5b1c 100644 (file)
@@ -5,25 +5,10 @@ html, body {
        padding: 0;
 }
 
-.submit input,
-.button,
-.button-primary,
-.button-secondary,
-.button-highlighted {
-       font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
-       text-decoration: none;
-       font-size: 11px !important;
-       line-height: 16px;
-       padding: 2px 8px;
-       cursor: pointer;
-       border-width: 1px;
-       border-style: solid;
-       -webkit-border-radius: 11px;
-       border-radius: 11px;
-       -moz-box-sizing: content-box;
-       -webkit-box-sizing: content-box;
-       -khtml-box-sizing: content-box;
-       box-sizing: content-box;
+body {
+       font-family: sans-serif;
+       font-size: 12px;
+       line-height: 1.4em;
 }
 
 a.button {
@@ -33,7 +18,7 @@ a.button {
 textarea,
 input,
 select {
-       font: 13px Verdana, Arial, Helvetica, sans-serif;
+       font: inherit;
        margin: 1px;
        padding: 3px;
 }
@@ -44,10 +29,6 @@ p.help {
        font-style: italic;
 }
 
-body, td {
-       font: 13px "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
-}
-
 abbr.required {
        color: #FF0000;
        text-align: left;
@@ -311,6 +292,7 @@ form {
        padding: 0 0 0 28px;
        margin: 0 1em 0 0;
 }
+
 .image-align-none-label {
        background: url(../../../../../../wp-admin/images/align-none.png) no-repeat center left;
 }
@@ -400,8 +382,9 @@ body#media-upload.rtl ul#sidemenu {
 }
 
 .rtl .show-align,
+.rtl #img_size,
 .rtl .alignright,
-.rtl #img_size {
+.rtl #img_demo.alignleft {
        float: left;
 }
 
@@ -412,7 +395,8 @@ body#media-upload.rtl ul#sidemenu {
 .rtl #img_prop label,
 .rtl #img_prop input,
 .rtl #img_size_div,
-.rtl .alignleft {
+.rtl .alignleft,
+.rtl #img_demo.alignright {
        float: right;
 }
 
@@ -429,3 +413,31 @@ body#media-upload.rtl ul#sidemenu {
 .rtl #img_size_title {
        text-align: left;
 }
+
+/**
+ * Retina display 2x icons
+ */
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+       .image-align-none-label {
+               background: url(../../../../../../wp-admin/images/align-none-2x.png) no-repeat center left;
+               background-size: auto 15px;
+       }
+
+       .image-align-left-label {
+               background: url(../../../../../../wp-admin/images/align-left-2x.png) no-repeat center left;
+               background-size: auto 15px;
+       }
+
+       .image-align-center-label {
+               background: url(../../../../../../wp-admin/images/align-center-2x.png) no-repeat center left;
+               background-size: auto 15px;
+       }
+
+       .image-align-right-label {
+               background: url(../../../../../../wp-admin/images/align-right-2x.png) no-repeat center left;
+               background-size: auto 15px;
+       }
+}
index b7460289d77a03df78f2e8ab01ac8d89cba6a3d1..32d702b1a878486f5812cd1bbe41c34ee261cd75 100644 (file)
@@ -4,13 +4,14 @@
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title></title>
 
-<link rel="stylesheet" href="css/editimage.css?ver=349-20679" type="text/css" media="all" />
-<script type="text/javascript" src="js/editimage.js?ver=349-20679"></script>
-<script type="text/javascript" src="../../utils/form_utils.js?ver=349-20592"></script>
+<link rel="stylesheet" href="css/editimage.css?ver=358-20121205" type="text/css" media="all" />
+<link rel="stylesheet" href="../../../../css/buttons.css?ver=358-20121205" type="text/css" media="all" />
+<script type="text/javascript" src="js/editimage.min.js?ver=358-20121205"></script>
+<script type="text/javascript" src="../../utils/form_utils.js?ver=358-20121205"></script>
 <base target="_self" />
 </head>
 
-<body id="media-upload" style="display:none;">
+<body id="media-upload" class="wp-core-ui" style="display:none;">
 <script type="text/javascript">
 if ( 'rtl' == tinyMCEPopup.editor.getParam('directionality','') )
        document.body.className += ' rtl';
index 34cb31ab6271981eb17fc64a9e883b02e70c7fe1..e4d1984a3ac2b754347233ed287648fd6ea0e8b9 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpEditImage",{url:"",editor:{},init:function(a,c){var d=this,b={};d.url=c;d.editor=a;d._createButtons();a.addCommand("WP_EditImage",function(){var i=a.selection.getNode(),g,h,e,f=a.dom.getAttrib(i,"class");if(f.indexOf("mceItem")!=-1||f.indexOf("wpGallery")!=-1||i.nodeName!="IMG"){return}g=tinymce.DOM.getViewPort();h=680<(g.h-70)?680:g.h-70;e=650<g.w?650:g.w;a.windowManager.open({file:c+"/editimage.html",width:e+"px",height:h+"px",inline:true})});a.onInit.add(function(e){e.dom.events.add(e.getBody(),"dragstart",function(g){var f;if(g.target.nodeName=="IMG"&&(f=e.dom.getParent(g.target,"div.mceTemp"))){e.selection.select(f)}})});a.onMouseUp.add(function(f,g){if(tinymce.isWebKit||tinymce.isOpera){return}if(b.x&&(g.clientX!=b.x||g.clientY!=b.y)){var h=f.selection.getNode();if("IMG"==h.nodeName){window.setTimeout(function(){var e=f.dom.getParent(h,"dl.wp-caption"),i;if(h.width!=b.img_w||h.height!=b.img_h){h.className=h.className.replace(/size-[^ "']+/,"")}if(e){i=f.dom.getAttrib(h,"width")||h.width;i=parseInt(i,10);f.dom.setStyle(e,"width",10+i);f.execCommand("mceRepaint")}},100)}}b={}});a.onMouseDown.add(function(f,h){var g=h.target;if(g.nodeName!="IMG"){if(g.firstChild&&g.firstChild.nodeName=="IMG"&&g.childNodes.length==1){g=g.firstChild}else{return}}if(f.dom.getAttrib(g,"class").indexOf("mceItem")==-1){b={x:h.clientX,y:h.clientY,img_w:g.clientWidth,img_h:g.clientHeight};f.plugins.wordpress._showButtons(g,"wp_editbtns")}});a.onKeyPress.add(function(f,j){var k,g,i,h;if(j.keyCode==13){k=f.selection.getNode();g=f.dom.getParent(k,"dl.wp-caption");if(g){i=f.dom.getParent(g,"div.mceTemp")}if(i){h=f.dom.create("p",{},"<br>");f.dom.insertAfter(h,i);f.selection.select(h.firstChild);if(tinymce.isIE){f.selection.setContent("")}else{f.selection.setContent('<br _moz_dirty="">');f.selection.setCursorLocation(h,0)}f.dom.events.cancel(j);return false}}});a.onBeforeSetContent.add(function(e,f){f.content=e.wpSetImgCaption(f.content)});a.onPostProcess.add(function(e,f){if(f.get){f.content=e.wpGetImgCaption(f.content)}});a.wpSetImgCaption=function(e){return d._do_shcode(e)};a.wpGetImgCaption=function(e){return d._get_shcode(e)}},_do_shcode:function(a){return a.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(j,i,h){var d,m,k,l,f,g,e=tinymce.trim;d=i.match(/id=['"]([^'"]*)['"] ?/);if(d){i=i.replace(d[0],"")}m=i.match(/align=['"]([^'"]*)['"] ?/);if(m){i=i.replace(m[0],"")}k=i.match(/width=['"]([0-9]*)['"] ?/);if(k){i=i.replace(k[0],"")}h=e(h);g=h.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i);if(g&&g[2]){l=e(g[2]);g=e(g[1])}else{l=e(i).replace(/caption=['"]/,"").replace(/['"]$/,"");g=h}d=(d&&d[1])?d[1]:"";m=(m&&m[1])?m[1]:"alignnone";k=(k&&k[1])?k[1]:"";if(!k||!l){return h}f="mceTemp";if(m=="aligncenter"){f+=" mceIEcenter"}return'<div class="'+f+'"><dl id="'+d+'" class="wp-caption '+m+'" style="width: '+(10+parseInt(k))+'px"><dt class="wp-caption-dt">'+g+'</dt><dd class="wp-caption-dd">'+l+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g,function(d,c){var e=c.replace(/<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi,function(i,f,l,j){var k,h,g;g=l.match(/width="([0-9]*)"/);g=(g&&g[1])?g[1]:"";if(!g||!j){return l}k=f.match(/id="([^"]*)"/);k=(k&&k[1])?k[1]:"";h=f.match(/class="([^"]*)"/);h=(h&&h[1])?h[1]:"";h=h.match(/align[a-z]+/)||"alignnone";j=j.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});j=j.replace(/\s*\n\s*/g,"<br />");return'[caption id="'+k+'" align="'+h+'" width="'+g+'"]'+l+" "+j+"[/caption]"});if(e.indexOf("[caption")!==0){e=c.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2")}return e})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_editbtns");d.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});e=d.add("wp_editbtns","img",{src:b.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.edit_img")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_EditImage")});c=d.add("wp_editbtns","img",{src:b.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.del_img")});tinymce.dom.Event.add(c,"mousedown",function(i){var f=tinyMCE.activeEditor,g=f.selection.getNode(),h;if(g.nodeName=="IMG"&&f.dom.getAttrib(g,"class").indexOf("mceItem")==-1){if((h=f.dom.getParent(g,"div"))&&f.dom.hasClass(h,"mceTemp")){f.dom.remove(h)}else{if((h=f.dom.getParent(g,"A"))&&h.childNodes.length==1){f.dom.remove(h)}else{f.dom.remove(g)}}f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpEditImage",{url:"",editor:{},init:function(a,c){var d=this,b={};d.url=c;d.editor=a;d._createButtons();a.addCommand("WP_EditImage",d._editImage);a.onInit.add(function(e){e.dom.events.add(e.getBody(),"mousedown",function(g){var f;if(g.target.nodeName=="IMG"&&(f=e.dom.getParent(g.target,"div.mceTemp"))){if(tinymce.isGecko){e.selection.select(f)}else{if(tinymce.isWebKit){e.dom.events.prevent(g)}}}});e.dom.events.add(e.getBody(),"keydown",function(j){var k,f,i,h,g;if(j.keyCode==13){k=e.selection.getNode();f=e.dom.getParent(k,"dl.wp-caption");if(f){i=e.dom.getParent(f,"div.mceTemp")}if(i){e.dom.events.cancel(j);h=e.dom.create("p",{},"\uFEFF");e.dom.insertAfter(h,i);e.selection.setCursorLocation(h,0);return false}}});if("ontouchstart" in window){e.dom.events.add(e.getBody(),"touchstart",function(f){d._showButtons(f)})}});a.onMouseUp.add(function(f,g){if(tinymce.isWebKit||tinymce.isOpera){return}if(b.x&&(g.clientX!=b.x||g.clientY!=b.y)){var h=f.selection.getNode();if("IMG"==h.nodeName){window.setTimeout(function(){var e=f.dom.getParent(h,"dl.wp-caption"),i;if(h.width!=b.img_w||h.height!=b.img_h){h.className=h.className.replace(/size-[^ "']+/,"")}if(e){i=f.dom.getAttrib(h,"width")||h.width;i=parseInt(i,10);f.dom.setStyle(e,"width",10+i);f.execCommand("mceRepaint")}},100)}}b={}});a.onMouseDown.add(function(f,g){d._showButtons(g)});a.onBeforeSetContent.add(function(e,f){f.content=e.wpSetImgCaption(f.content)});a.onPostProcess.add(function(e,f){if(f.get){f.content=e.wpGetImgCaption(f.content)}});a.wpSetImgCaption=function(e){return d._do_shcode(e)};a.wpGetImgCaption=function(e){return d._get_shcode(e)};a.onBeforeExecCommand.add(function(e,h,g,j){var f,i;if(h=="mceInsertContent"){f=e.dom.getParent(e.selection.getNode(),"div.mceTemp");if(!f){return}i=e.dom.create("p");e.dom.insertAfter(i,f);e.selection.setCursorLocation(i,0)}})},_do_shcode:function(a){return a.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(j,i,h){var d,m,k,l,f,g,e=tinymce.trim;d=i.match(/id=['"]([^'"]*)['"] ?/);if(d){i=i.replace(d[0],"")}m=i.match(/align=['"]([^'"]*)['"] ?/);if(m){i=i.replace(m[0],"")}k=i.match(/width=['"]([0-9]*)['"] ?/);if(k){i=i.replace(k[0],"")}h=e(h);g=h.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i);if(g&&g[2]){l=e(g[2]);g=e(g[1])}else{l=e(i).replace(/caption=['"]/,"").replace(/['"]$/,"");g=h}d=(d&&d[1])?d[1]:"";m=(m&&m[1])?m[1]:"alignnone";k=(k&&k[1])?k[1]:"";if(!k||!l){return h}f="mceTemp";if(m=="aligncenter"){f+=" mceIEcenter"}return'<div class="'+f+'"><dl id="'+d+'" class="wp-caption '+m+'" style="width: '+(10+parseInt(k))+'px"><dt class="wp-caption-dt">'+g+'</dt><dd class="wp-caption-dd">'+l+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g,function(d,c){var e=c.replace(/<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi,function(i,f,l,j){var k,h,g;g=l.match(/width="([0-9]*)"/);g=(g&&g[1])?g[1]:"";if(!g||!j){return l}k=f.match(/id="([^"]*)"/);k=(k&&k[1])?k[1]:"";h=f.match(/class="([^"]*)"/);h=(h&&h[1])?h[1]:"";h=h.match(/align[a-z]+/)||"alignnone";j=j.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});j=j.replace(/\s*\n\s*/g,"<br />");return'[caption id="'+k+'" align="'+h+'" width="'+g+'"]'+l+" "+j+"[/caption]"});if(e.indexOf("[caption")!==0){e=c.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2")}return e})},_createButtons:function(){var b=this,a=tinymce.activeEditor,d=tinymce.DOM,e,c,f;if(d.get("wp_editbtns")){return}f=(window.devicePixelRatio&&window.devicePixelRatio>1)||(window.matchMedia&&window.matchMedia("(min-resolution:130dpi)").matches);d.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});e=d.add("wp_editbtns","img",{src:f?b.url+"/img/image-2x.png":b.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.edit_img")});tinymce.dom.Event.add(e,"mousedown",function(g){b._editImage();a.plugins.wordpress._hideButtons()});c=d.add("wp_editbtns","img",{src:f?b.url+"/img/delete-2x.png":b.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.del_img")});tinymce.dom.Event.add(c,"mousedown",function(j){var g=tinymce.activeEditor,i=g.selection.getNode(),h;if(i.nodeName=="IMG"&&g.dom.getAttrib(i,"class").indexOf("mceItem")==-1){if((h=g.dom.getParent(i,"div"))&&g.dom.hasClass(h,"mceTemp")){g.dom.remove(h)}else{if(i.parentNode.nodeName=="A"&&i.parentNode.childNodes.length==1){i=i.parentNode}if(i.parentNode.nodeName=="P"&&i.parentNode.childNodes.length==1){i=i.parentNode}g.dom.remove(i)}g.execCommand("mceRepaint");return false}g.plugins.wordpress._hideButtons()})},_editImage:function(){var d=tinymce.activeEditor,e=this.url,g=d.selection.getNode(),c,f,a,b=g.className;if(b.indexOf("mceItem")!=-1||b.indexOf("wpGallery")!=-1||g.nodeName!="IMG"){return}c=tinymce.DOM.getViewPort();f=680<(c.h-70)?680:c.h-70;a=650<c.w?650:c.w;d.windowManager.open({file:e+"/editimage.html",width:a+"px",height:f+"px",inline:true})},_showButtons:function(c){var a=this.editor,b=c.target;if(b.nodeName!="IMG"){if(b.firstChild&&b.firstChild.nodeName=="IMG"&&b.childNodes.length==1){b=b.firstChild}else{a.plugins.wordpress._hideButtons();return}}if(a.dom.getAttrib(b,"class").indexOf("mceItem")==-1){mouse={x:c.clientX,y:c.clientY,img_w:b.clientWidth,img_h:b.clientHeight};if(c.type=="touchstart"){a.selection.select(b);a.dom.events.cancel(c)}a.plugins.wordpress._hideButtons();a.plugins.wordpress._showButtons(b,"wp_editbtns")}},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
\ No newline at end of file
index f771fc939624e06969800ef8d398351dddcc83f5..17aa30e206b79fc1f71f345ecf2820961229d980 100644 (file)
                        t.editor = ed;
                        t._createButtons();
 
-                       // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
-                       ed.addCommand('WP_EditImage', function() {
-                               var el = ed.selection.getNode(), vp, H, W, cls = ed.dom.getAttrib(el, 'class');
-
-                               if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' )
-                                       return;
-
-                               vp = tinymce.DOM.getViewPort();
-                               H = 680 < (vp.h - 70) ? 680 : vp.h - 70;
-                               W = 650 < vp.w ? 650 : vp.w;
-
-                               ed.windowManager.open({
-                                       file: url + '/editimage.html',
-                                       width: W+'px',
-                                       height: H+'px',
-                                       inline: true
-                               });
-                       });
+                       ed.addCommand('WP_EditImage', t._editImage);
 
                        ed.onInit.add(function(ed) {
-                               ed.dom.events.add(ed.getBody(), 'dragstart', function(e) {
+                               ed.dom.events.add(ed.getBody(), 'mousedown', function(e) {
                                        var parent;
 
                                        if ( e.target.nodeName == 'IMG' && ( parent = ed.dom.getParent(e.target, 'div.mceTemp') ) ) {
-                                               ed.selection.select(parent);
+                                               if ( tinymce.isGecko )
+                                                       ed.selection.select(parent);
+                                               else if ( tinymce.isWebKit )
+                                                       ed.dom.events.prevent(e);
+                                       }
+                               });
+
+                               // when pressing Return inside a caption move the caret to a new parapraph under it
+                               ed.dom.events.add(ed.getBody(), 'keydown', function(e) {
+                                       var n, DL, DIV, P, content;
+
+                                       if ( e.keyCode == 13 ) {
+                                               n = ed.selection.getNode();
+                                               DL = ed.dom.getParent(n, 'dl.wp-caption');
+
+                                               if ( DL )
+                                                       DIV = ed.dom.getParent(DL, 'div.mceTemp');
+
+                                               if ( DIV ) {
+                                                       ed.dom.events.cancel(e);
+                                                       P = ed.dom.create('p', {}, '\uFEFF');
+                                                       ed.dom.insertAfter( P, DIV );
+                                                       ed.selection.setCursorLocation(P, 0);
+                                                       return false;
+                                               }
                                        }
                                });
+
+                               // iOS6 doesn't show the buttons properly on click, show them on 'touchstart'
+                               if ( 'ontouchstart' in window ) {
+                                       ed.dom.events.add(ed.getBody(), 'touchstart', function(e){
+                                               t._showButtons(e);
+                                       });
+                               }
                        });
 
-                       // resize the caption <dl> when the image is soft-resized by the user (only possible in Firefox and IE)
+                       // resize the caption <dl> when the image is soft-resized by the user
                        ed.onMouseUp.add(function(ed, e) {
                                if ( tinymce.isWebKit || tinymce.isOpera )
                                        return;
                        });
 
                        // show editimage buttons
-                       ed.onMouseDown.add(function(ed, e) {
-                               var target = e.target;
-
-                               if ( target.nodeName != 'IMG' ) {
-                                       if ( target.firstChild && target.firstChild.nodeName == 'IMG' && target.childNodes.length == 1 )
-                                               target = target.firstChild;
-                                       else
-                                               return;
-                               }
-
-                               if ( ed.dom.getAttrib(target, 'class').indexOf('mceItem') == -1 ) {
-                                       mouse = {
-                                               x: e.clientX,
-                                               y: e.clientY,
-                                               img_w: target.clientWidth,
-                                               img_h: target.clientHeight
-                                       };
-
-                                       ed.plugins.wordpress._showButtons(target, 'wp_editbtns');
-                               }
-                       });
-
-                       // when pressing Return inside a caption move the caret to a new parapraph under it
-                       ed.onKeyPress.add(function(ed, e) {
-                               var n, DL, DIV, P;
-
-                               if ( e.keyCode == 13 ) {
-                                       n = ed.selection.getNode();
-                                       DL = ed.dom.getParent(n, 'dl.wp-caption');
-
-                                       if ( DL )
-                                               DIV = ed.dom.getParent(DL, 'div.mceTemp');
-
-                                       if ( DIV ) {
-                                               P = ed.dom.create('p', {}, '<br>');
-                                               ed.dom.insertAfter( P, DIV );
-                                               ed.selection.select(P.firstChild);
-
-                                               if ( tinymce.isIE ) {
-                                                       ed.selection.setContent('');
-                                               } else {
-                                                       ed.selection.setContent('<br _moz_dirty="">');
-                                                       ed.selection.setCursorLocation(P, 0);
-                                               }
-
-                                               ed.dom.events.cancel(e);
-                                               return false;
-                                       }
-                               }
+                       ed.onMouseDown.add(function(ed, e){
+                               t._showButtons(e);
                        });
 
                        ed.onBeforeSetContent.add(function(ed, o) {
                        ed.wpGetImgCaption = function(content) {
                                return t._get_shcode(content);
                        };
+
+                       // When inserting content, if the caret is inside a caption create new paragraph under
+                       // and move the caret there
+                       ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) {
+                               var node, p;
+
+                               if ( cmd == 'mceInsertContent' ) {
+                                       node = ed.dom.getParent(ed.selection.getNode(), 'div.mceTemp');
+
+                                       if ( !node )
+                                               return;
+
+                                       p = ed.dom.create('p');
+                                       ed.dom.insertAfter( p, node );
+                                       ed.selection.setCursorLocation(p, 0);
+                               }
+                       });
                },
 
                _do_shcode : function(content) {
                },
 
                _createButtons : function() {
-                       var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, editButton, dellButton;
+                       var t = this, ed = tinymce.activeEditor, DOM = tinymce.DOM, editButton, dellButton, isRetina;
+
+                       if ( DOM.get('wp_editbtns') )
+                               return;
 
-                       DOM.remove('wp_editbtns');
+                       isRetina = ( window.devicePixelRatio && window.devicePixelRatio > 1 ) || // WebKit, Opera
+                               ( window.matchMedia && window.matchMedia('(min-resolution:130dpi)').matches ); // Firefox, IE10, Opera
 
                        DOM.add(document.body, 'div', {
                                id : 'wp_editbtns',
                        });
 
                        editButton = DOM.add('wp_editbtns', 'img', {
-                               src : t.url+'/img/image.png',
+                               src : isRetina ? t.url+'/img/image-2x.png' : t.url+'/img/image.png',
                                id : 'wp_editimgbtn',
                                width : '24',
                                height : '24',
                        });
 
                        tinymce.dom.Event.add(editButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor;
-                               ed.windowManager.bookmark = ed.selection.getBookmark('simple');
-                               ed.execCommand("WP_EditImage");
+                               t._editImage();
+                               ed.plugins.wordpress._hideButtons();
                        });
 
                        dellButton = DOM.add('wp_editbtns', 'img', {
-                               src : t.url+'/img/delete.png',
+                               src : isRetina ? t.url+'/img/delete-2x.png' : t.url+'/img/delete.png',
                                id : 'wp_delimgbtn',
                                width : '24',
                                height : '24',
                        });
 
                        tinymce.dom.Event.add(dellButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor, el = ed.selection.getNode(), p;
+                               var ed = tinymce.activeEditor, el = ed.selection.getNode(), parent;
 
                                if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItem') == -1 ) {
-                                       if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
-                                               ed.dom.remove(p);
-                                       else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
-                                               ed.dom.remove(p);
-                                       else
+                                       if ( (parent = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(parent, 'mceTemp') ) {
+                                               ed.dom.remove(parent);
+                                       } else {
+                                               if ( el.parentNode.nodeName == 'A' && el.parentNode.childNodes.length == 1 )
+                                                       el = el.parentNode;
+
+                                               if ( el.parentNode.nodeName == 'P' && el.parentNode.childNodes.length == 1 )
+                                                       el = el.parentNode;
+
                                                ed.dom.remove(el);
+                                       }
 
                                        ed.execCommand('mceRepaint');
                                        return false;
                                }
+                               ed.plugins.wordpress._hideButtons();
                        });
                },
+               
+               _editImage : function() {
+                       var ed = tinymce.activeEditor, url = this.url, el = ed.selection.getNode(), vp, H, W, cls = el.className;
+
+                       if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' )
+                               return;
+
+                       vp = tinymce.DOM.getViewPort();
+                       H = 680 < (vp.h - 70) ? 680 : vp.h - 70;
+                       W = 650 < vp.w ? 650 : vp.w;
+
+                       ed.windowManager.open({
+                               file: url + '/editimage.html',
+                               width: W+'px',
+                               height: H+'px',
+                               inline: true
+                       });
+               },
+
+               _showButtons : function(e) {
+                       var ed = this.editor, target = e.target;
+
+                       if ( target.nodeName != 'IMG' ) {
+                               if ( target.firstChild && target.firstChild.nodeName == 'IMG' && target.childNodes.length == 1 ) {
+                                       target = target.firstChild;
+                               } else {
+                                       ed.plugins.wordpress._hideButtons();
+                                       return;
+                               }
+                       }
+
+                       if ( ed.dom.getAttrib(target, 'class').indexOf('mceItem') == -1 ) {
+                               mouse = {
+                                       x: e.clientX,
+                                       y: e.clientY,
+                                       img_w: target.clientWidth,
+                                       img_h: target.clientHeight
+                               };
+
+                               if ( e.type == 'touchstart' ) {
+                                       ed.selection.select(target);
+                                       ed.dom.events.cancel(e);
+                               }
+
+                               ed.plugins.wordpress._hideButtons();
+                               ed.plugins.wordpress._showButtons(target, 'wp_editbtns');
+                       }
+               },
 
                getInfo : function() {
                        return {
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/img/delete-2x.png b/wp-includes/js/tinymce/plugins/wpeditimage/img/delete-2x.png
new file mode 100644 (file)
index 0000000..859d853
Binary files /dev/null and b/wp-includes/js/tinymce/plugins/wpeditimage/img/delete-2x.png differ
index d64d8a66ebc7f512f5a44dd30f9ba88b9eb4d81c..fe537f0a707fd66fe481ffa37edbfab312a90ffa 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png and b/wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png differ
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/img/image-2x.png b/wp-includes/js/tinymce/plugins/wpeditimage/img/image-2x.png
new file mode 100644 (file)
index 0000000..b3843ce
Binary files /dev/null and b/wp-includes/js/tinymce/plugins/wpeditimage/img/image-2x.png differ
index f3d4b4490223c9429434d9f3cf9842862229bc26..ee6f0755f579dd59a80bcd06c3460ec70077967e 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wpeditimage/img/image.png and b/wp-includes/js/tinymce/plugins/wpeditimage/img/image.png differ
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js b/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js
deleted file mode 100644 (file)
index 18e7811..0000000
+++ /dev/null
@@ -1,613 +0,0 @@
-
-var tinymce = null, tinyMCEPopup, tinyMCE, wpImage;
-
-tinyMCEPopup = {
-       init: function() {
-               var t = this, w, ti;
-
-               // Find window & API
-               w = t.getWin();
-               tinymce = w.tinymce;
-               tinyMCE = w.tinyMCE;
-               t.editor = tinymce.EditorManager.activeEditor;
-               t.params = t.editor.windowManager.params;
-               t.features = t.editor.windowManager.features;
-
-               // Setup local DOM
-               t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
-               t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
-       },
-
-       getWin : function() {
-               return (!window.frameElement && window.dialogArguments) || opener || parent || top;
-       },
-
-       getParam : function(n, dv) {
-               return this.editor.getParam(n, dv);
-       },
-
-       close : function() {
-               var t = this;
-
-               // To avoid domain relaxing issue in Opera
-               function close() {
-                       t.editor.windowManager.close(window);
-                       tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
-               };
-
-               if (tinymce.isOpera)
-                       t.getWin().setTimeout(close, 0);
-               else
-                       close();
-       },
-
-       execCommand : function(cmd, ui, val, a) {
-               a = a || {};
-               a.skip_focus = 1;
-
-               this.restoreSelection();
-               return this.editor.execCommand(cmd, ui, val, a);
-       },
-
-       storeSelection : function() {
-               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
-       },
-
-       restoreSelection : function() {
-               var t = tinyMCEPopup;
-
-               if ( tinymce.isIE )
-                       t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
-       }
-}
-tinyMCEPopup.init();
-
-wpImage = {
-       preInit : function() {
-               // import colors stylesheet from parent
-               var ed = tinyMCEPopup.editor, win = tinyMCEPopup.getWin(), styles = win.document.styleSheets, url, i;
-
-               for ( i = 0; i < styles.length; i++ ) {
-                       url = styles.item(i).href;
-                       if ( url && url.indexOf('colors') != -1 ) {
-                               document.getElementsByTagName('head')[0].appendChild( ed.dom.create('link', {rel:'stylesheet', href: url}) );
-                               break;
-                       }
-               }
-       },
-
-       I : function(e) {
-               return document.getElementById(e);
-       },
-
-       current : '',
-       link : '',
-       link_rel : '',
-       target_value : '',
-       current_size_sel : 's100',
-       width : '',
-       height : '',
-       align : '',
-       img_alt : '',
-
-       setTabs : function(tab) {
-               var t = this;
-
-               if ( 'current' == tab.className ) return false;
-               t.I('div_advanced').style.display = ( 'tab_advanced' == tab.id ) ? 'block' : 'none';
-               t.I('div_basic').style.display = ( 'tab_basic' == tab.id ) ? 'block' : 'none';
-               t.I('tab_basic').className = t.I('tab_advanced').className = '';
-               tab.className = 'current';
-               return false;
-       },
-
-       img_seturl : function(u) {
-               var t = this, rel = t.I('link_rel').value;
-
-               if ( 'current' == u ) {
-                       t.I('link_href').value = t.current;
-                       t.I('link_rel').value = t.link_rel;
-               } else {
-                       t.I('link_href').value = t.link;
-                       if ( rel ) {
-                               rel = rel.replace( /attachment|wp-att-[0-9]+/gi, '' );
-                               t.I('link_rel').value = tinymce.trim(rel);
-                       }
-               }
-       },
-
-       imgAlignCls : function(v) {
-               var t = this, cls = t.I('img_classes').value;
-
-               t.I('img_demo').className = t.align = v;
-
-               cls = cls.replace( /align[^ "']+/gi, '' );
-               cls += (' ' + v);
-               cls = cls.replace( /\s+/g, ' ' ).replace( /^\s/, '' );
-
-               if ( 'aligncenter' == v ) {
-                       t.I('hspace').value = '';
-                       t.updateStyle('hspace');
-               }
-
-               t.I('img_classes').value = cls;
-       },
-
-       showSize : function(el) {
-               var t = this, demo = t.I('img_demo'), w = t.width, h = t.height, id = el.id || 's100', size;
-
-               size = parseInt(id.substring(1)) / 200;
-               demo.width = Math.round(w * size);
-               demo.height = Math.round(h * size);
-
-               t.showSizeClear();
-               el.style.borderColor = '#A3A3A3';
-               el.style.backgroundColor = '#E5E5E5';
-       },
-
-       showSizeSet : function() {
-               var t = this, s130, s120, s110;
-
-               if ( (t.width * 1.3) > parseInt(t.preloadImg.width) ) {
-                       s130 = t.I('s130'), s120 = t.I('s120'), s110 = t.I('s110');
-
-                       s130.onclick = s120.onclick = s110.onclick = null;
-                       s130.onmouseover = s120.onmouseover = s110.onmouseover = null;
-                       s130.style.color = s120.style.color = s110.style.color = '#aaa';
-               }
-       },
-
-       showSizeRem : function() {
-               var t = this, demo = t.I('img_demo'), f = document.forms[0];
-
-               demo.width = Math.round(f.width.value * 0.5);
-               demo.height = Math.round(f.height.value * 0.5);
-               t.showSizeClear();
-               t.I(t.current_size_sel).style.borderColor = '#A3A3A3';
-               t.I(t.current_size_sel).style.backgroundColor = '#E5E5E5';
-
-               return false;
-       },
-
-       showSizeClear : function() {
-               var divs = this.I('img_size').getElementsByTagName('div'), i;
-
-               for ( i = 0; i < divs.length; i++ ) {
-                       divs[i].style.borderColor = '#f1f1f1';
-                       divs[i].style.backgroundColor = '#f1f1f1';
-               }
-       },
-
-       imgEditSize : function(el) {
-               var t = this, f = document.forms[0], W, H, w, h, id;
-
-               if ( ! t.preloadImg || ! t.preloadImg.width || ! t.preloadImg.height )
-                       return;
-               
-               W = parseInt(t.preloadImg.width), H = parseInt(t.preloadImg.height), w = t.width || W, h = t.height || H, id = el.id || 's100';
-
-               size = parseInt(id.substring(1)) / 100;
-
-               w = Math.round(w * size);
-               h = Math.round(h * size);
-
-               f.width.value = Math.min(W, w);
-               f.height.value = Math.min(H, h);
-
-               t.current_size_sel = id;
-               t.demoSetSize();
-       },
-
-       demoSetSize : function(img) {
-               var demo = this.I('img_demo'), f = document.forms[0];
-
-               demo.width = f.width.value ? Math.round(f.width.value * 0.5) : '';
-               demo.height = f.height.value ? Math.round(f.height.value * 0.5) : '';
-       },
-
-       demoSetStyle : function() {
-               var f = document.forms[0], demo = this.I('img_demo'), dom = tinyMCEPopup.editor.dom;
-
-               if (demo) {
-                       dom.setAttrib(demo, 'style', f.img_style.value);
-                       dom.setStyle(demo, 'width', '');
-                       dom.setStyle(demo, 'height', '');
-               }
-       },
-
-       origSize : function() {
-               var t = this, f = document.forms[0], el = t.I('s100');
-
-               f.width.value = t.width = t.preloadImg.width;
-               f.height.value = t.height = t.preloadImg.height;
-               t.showSizeSet();
-               t.demoSetSize();
-               t.showSize(el);
-       },
-
-       init : function() {
-               var ed = tinyMCEPopup.editor, h;
-
-               h = document.body.innerHTML;
-               document.body.innerHTML = ed.translate(h);
-               window.setTimeout( function(){wpImage.setup();}, 500 );
-       },
-
-       setup : function() {
-               var t = this, c, el, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor,
-                       d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, DD, caption = '', dlc, pa;
-
-               document.dir = tinyMCEPopup.editor.getParam('directionality','');
-
-               if ( tinyMCEPopup.editor.getParam('wpeditimage_disable_captions', false) )
-                       t.I('cap_field').style.display = 'none';
-
-               tinyMCEPopup.restoreSelection();
-               el = ed.selection.getNode();
-               if (el.nodeName != 'IMG')
-                       return;
-
-               f.img_src.value = d.src = link = ed.dom.getAttrib(el, 'src');
-               ed.dom.setStyle(el, 'float', '');
-               t.getImageData();
-               c = ed.dom.getAttrib(el, 'class');
-
-               if ( DL = dom.getParent(el, 'dl') ) {
-                       dlc = ed.dom.getAttrib(DL, 'class');
-                       dlc = dlc.match(/align[^ "']+/i);
-                       if ( dlc && ! dom.hasClass(el, dlc) ) {
-                               c += ' '+dlc;
-                               tinymce.trim(c);
-                       }
-
-                       DD = ed.dom.select('dd.wp-caption-dd', DL);
-                       if ( DD && DD[0] )
-                               caption = ed.serializer.serialize(DD[0]).replace(/^<p>/, '').replace(/<\/p>$/, '');
-               }
-
-               f.img_cap_text.value = caption;
-               f.img_title.value = ed.dom.getAttrib(el, 'title');
-               f.img_alt.value = ed.dom.getAttrib(el, 'alt');
-               f.border.value = ed.dom.getAttrib(el, 'border');
-               f.vspace.value = ed.dom.getAttrib(el, 'vspace');
-               f.hspace.value = ed.dom.getAttrib(el, 'hspace');
-               f.align.value = ed.dom.getAttrib(el, 'align');
-               f.width.value = t.width = ed.dom.getAttrib(el, 'width');
-               f.height.value = t.height = ed.dom.getAttrib(el, 'height');
-               f.img_classes.value = c;
-               f.img_style.value = ed.dom.getAttrib(el, 'style');
-
-               // Move attribs to styles
-               if ( dom.getAttrib(el, 'hspace') )
-                       t.updateStyle('hspace');
-
-               if ( dom.getAttrib(el, 'border') )
-                       t.updateStyle('border');
-
-               if ( dom.getAttrib(el, 'vspace') )
-                       t.updateStyle('vspace');
-
-               if ( pa = ed.dom.getParent(el, 'A') ) {
-                       f.link_href.value = t.current = ed.dom.getAttrib(pa, 'href');
-                       f.link_title.value = ed.dom.getAttrib(pa, 'title');
-                       f.link_rel.value = t.link_rel = ed.dom.getAttrib(pa, 'rel');
-                       f.link_style.value = ed.dom.getAttrib(pa, 'style');
-                       t.target_value = ed.dom.getAttrib(pa, 'target');
-                       f.link_classes.value = ed.dom.getAttrib(pa, 'class');
-               }
-
-               f.link_target.checked = ( t.target_value && t.target_value == '_blank' ) ? 'checked' : '';
-
-               fname = link.substring( link.lastIndexOf('/') );
-               fname = fname.replace(/-[0-9]{2,4}x[0-9]{2,4}/, '' );
-               t.link = link.substring( 0, link.lastIndexOf('/') ) + fname;
-
-               if ( c.indexOf('alignleft') != -1 ) {
-                       t.I('alignleft').checked = "checked";
-                       d.className = t.align = "alignleft";
-               } else if ( c.indexOf('aligncenter') != -1 ) {
-                       t.I('aligncenter').checked = "checked";
-                       d.className = t.align = "aligncenter";
-               } else if ( c.indexOf('alignright') != -1 ) {
-                       t.I('alignright').checked = "checked";
-                       d.className = t.align = "alignright";
-               } else if ( c.indexOf('alignnone') != -1 ) {
-                       t.I('alignnone').checked = "checked";
-                       d.className = t.align = "alignnone";
-               }
-
-               if ( t.width && t.preloadImg.width )
-                       t.showSizeSet();
-               
-               document.body.style.display = '';
-       },
-
-       remove : function() {
-               var ed = tinyMCEPopup.editor, p, el;
-
-               tinyMCEPopup.restoreSelection();
-               el = ed.selection.getNode();
-               if (el.nodeName != 'IMG') return;
-
-               if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
-                       ed.dom.remove(p);
-               else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
-                       ed.dom.remove(p);
-               else ed.dom.remove(el);
-
-               ed.execCommand('mceRepaint');
-               tinyMCEPopup.close();
-               return;
-       },
-
-       update : function() {
-               var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null,
-                       DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html,
-                       id, cap_id = '', cap, DT, DD, cap_width, div_cls, lnk = '', pa, aa, caption;
-
-               tinyMCEPopup.restoreSelection();
-               el = ed.selection.getNode();
-
-               if (el.nodeName != 'IMG') return;
-               if (f.img_src.value === '') {
-                       t.remove();
-                       return;
-               }
-
-               if ( f.img_cap_text.value != '' && f.width.value != '' ) {
-                       do_caption = 1;
-                       img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
-               }
-
-               A = ed.dom.getParent(el, 'a');
-               P = ed.dom.getParent(el, 'p');
-               DL = ed.dom.getParent(el, 'dl');
-               DIV = ed.dom.getParent(el, 'div');
-
-               tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-               if ( f.width.value != el.width || f.height.value != el.height )
-                       img_class = img_class.replace(/size-[^ "']+/, '');
-
-               ed.dom.setAttribs(el, {
-                       src : f.img_src.value,
-                       title : f.img_title.value,
-                       alt : f.img_alt.value,
-                       width : f.width.value,
-                       height : f.height.value,
-                       style : f.img_style.value,
-                       'class' : img_class
-               });
-
-               if ( f.link_href.value ) {
-                       // Create new anchor elements
-                       if ( A == null ) {
-                               if ( ! f.link_href.value.match(/https?:\/\//i) )
-                                       f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
-
-                               ed.getDoc().execCommand("unlink", false, null);
-                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
-                               tinymce.each(ed.dom.select("a"), function(n) {
-                                       if ( ed.dom.getAttrib(n, 'href') == '#mce_temp_url#' ) {
-
-                                               ed.dom.setAttribs(n, {
-                                                       href : f.link_href.value,
-                                                       title : f.link_title.value,
-                                                       rel : f.link_rel.value,
-                                                       target : (f.link_target.checked == true) ? '_blank' : '',
-                                                       'class' : f.link_classes.value,
-                                                       style : f.link_style.value
-                                               });
-                                       }
-                               });
-                       } else {
-                               ed.dom.setAttribs(A, {
-                                       href : f.link_href.value,
-                                       title : f.link_title.value,
-                                       rel : f.link_rel.value,
-                                       target : (f.link_target.checked == true) ? '_blank' : '',
-                                       'class' : f.link_classes.value,
-                                       style : f.link_style.value
-                               });
-                       }
-               }
-
-               if ( do_caption ) {
-                       cap_width = 10 + parseInt(f.width.value);
-                       div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
-                       caption = f.img_cap_text.value;
-
-                       caption = caption.replace(/\r\n|\r/g, '\n').replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
-                               return a.replace(/[\r\n\t]+/, ' ');
-                       });
-
-                       caption = caption.replace(/\s*\n\s*/g, '<br />');
-
-                       if ( DL ) {
-                               ed.dom.setAttribs(DL, {
-                                       'class' : 'wp-caption '+t.align,
-                                       style : 'width: '+cap_width+'px;'
-                               });
-
-                               if ( DIV )
-                                       ed.dom.setAttrib(DIV, 'class', div_cls);
-
-                               if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
-                                       ed.dom.setHTML(DD, caption);
-
-                       } else {
-                               if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
-                                       cap_id = 'attachment_'+id[1];
-
-                               if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
-                                       if ( lnk.childNodes.length == 1 ) {
-                                               html = ed.dom.getOuterHTML(lnk);
-                                       } else {
-                                               html = ed.dom.getOuterHTML(lnk);
-                                               html = html.match(/<a [^>]+>/i);
-                                               html = html+ed.dom.getOuterHTML(el)+'</a>';
-                                       }
-                               } else {
-                                       html = ed.dom.getOuterHTML(el);
-                               }
-
-                               html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
-                               'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+caption+'</dd></dl>';
-
-                               cap = ed.dom.create('div', {'class': div_cls}, html);
-
-                               if ( P ) {
-                                       P.parentNode.insertBefore(cap, P);
-                                       if ( P.childNodes.length == 1 )
-                                               ed.dom.remove(P);
-                                       else if ( lnk && lnk.childNodes.length == 1 )
-                                               ed.dom.remove(lnk);
-                                       else ed.dom.remove(el);
-                               } else if ( pa = ed.dom.getParent(el, 'TD,TH,LI') ) {
-                                       pa.appendChild(cap);
-                                       if ( lnk && lnk.childNodes.length == 1 )
-                                               ed.dom.remove(lnk);
-                                       else ed.dom.remove(el);
-                               }
-                       }
-
-               } else {
-                       if ( DL && DIV ) {
-                               if ( f.link_href.value && (aa = ed.dom.getParent(el, 'a')) ) html = ed.dom.getOuterHTML(aa);
-                               else html = ed.dom.getOuterHTML(el);
-
-                               P = ed.dom.create('p', {}, html);
-                               DIV.parentNode.insertBefore(P, DIV);
-                               ed.dom.remove(DIV);
-                       }
-               }
-
-               if ( f.img_classes.value.indexOf('aligncenter') != -1 ) {
-                       if ( P && ( ! P.style || P.style.textAlign != 'center' ) )
-                               ed.dom.setStyle(P, 'textAlign', 'center');
-               } else {
-                       if ( P && P.style && P.style.textAlign == 'center' )
-                               ed.dom.setStyle(P, 'textAlign', '');
-               }
-
-               if ( ! f.link_href.value && A ) {
-                       b = ed.selection.getBookmark();
-                       ed.dom.remove(A, 1);
-                       ed.selection.moveToBookmark(b);
-               }
-
-               tinyMCEPopup.execCommand("mceEndUndoLevel");
-               ed.execCommand('mceRepaint');
-               tinyMCEPopup.close();
-       },
-
-       updateStyle : function(ty) {
-               var dom = tinyMCEPopup.dom, v, f = document.forms[0], img = dom.create('img', {style : f.img_style.value});
-
-               if (tinyMCEPopup.editor.settings.inline_styles) {
-                       // Handle align
-                       if (ty == 'align') {
-                               dom.setStyle(img, 'float', '');
-                               dom.setStyle(img, 'vertical-align', '');
-
-                               v = f.align.value;
-                               if (v) {
-                                       if (v == 'left' || v == 'right')
-                                               dom.setStyle(img, 'float', v);
-                                       else
-                                               img.style.verticalAlign = v;
-                               }
-                       }
-
-                       // Handle border
-                       if (ty == 'border') {
-                               dom.setStyle(img, 'border', '');
-
-                               v = f.border.value;
-                               if (v || v == '0') {
-                                       if (v == '0')
-                                               img.style.border = '0';
-                                       else
-                                               img.style.border = v + 'px solid black';
-                               }
-                       }
-
-                       // Handle hspace
-                       if (ty == 'hspace') {
-                               dom.setStyle(img, 'marginLeft', '');
-                               dom.setStyle(img, 'marginRight', '');
-
-                               v = f.hspace.value;
-                               if (v) {
-                                       img.style.marginLeft = v + 'px';
-                                       img.style.marginRight = v + 'px';
-                               }
-                       }
-
-                       // Handle vspace
-                       if (ty == 'vspace') {
-                               dom.setStyle(img, 'marginTop', '');
-                               dom.setStyle(img, 'marginBottom', '');
-
-                               v = f.vspace.value;
-                               if (v) {
-                                       img.style.marginTop = v + 'px';
-                                       img.style.marginBottom = v + 'px';
-                               }
-                       }
-
-                       // Merge
-                       f.img_style.value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
-                       this.demoSetStyle();
-               }
-       },
-
-       checkVal : function(f) {
-
-               if ( f.value == '' ) {
-       //              if ( f.id == 'width' ) f.value = this.width || this.preloadImg.width;
-       //              if ( f.id == 'height' ) f.value = this.height || this.preloadImg.height;
-                       if ( f.id == 'img_src' ) f.value = this.I('img_demo').src || this.preloadImg.src;
-               }
-       },
-
-       resetImageData : function() {
-               var f = document.forms[0];
-
-               f.width.value = f.height.value = '';
-       },
-
-       updateImageData : function() {
-               var f = document.forms[0], t = wpImage, w = f.width.value, h = f.height.value;
-
-               if ( !w && h )
-                       w = f.width.value = t.width = Math.round( t.preloadImg.width / (t.preloadImg.height / h) );
-               else if ( w && !h )
-                       h = f.height.value = t.height = Math.round( t.preloadImg.height / (t.preloadImg.width / w) );
-
-               if ( !w )
-                       f.width.value = t.width = t.preloadImg.width;
-
-               if ( !h )
-                       f.height.value = t.height = t.preloadImg.height;
-
-               t.showSizeSet();
-               t.demoSetSize();
-               if ( f.img_style.value )
-                       t.demoSetStyle();
-       },
-
-       getImageData : function() {
-               var t = wpImage, f = document.forms[0];
-
-               t.preloadImg = new Image();
-               t.preloadImg.onload = t.updateImageData;
-               t.preloadImg.onerror = t.resetImageData;
-               t.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.img_src.value);
-       }
-};
-
-window.onload = function(){wpImage.init();}
-wpImage.preInit();
-
index eebfb3d5ac589c9a6c3b50749ba7b5031d2c173e..18e781179f62ccbf3b30d07b2b057a472f3a9863 100644 (file)
@@ -1 +1,613 @@
-var tinymce=null,tinyMCEPopup,tinyMCE,wpImage;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getParam:function(b,a){return this.editor.getParam(b,a)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}}};tinyMCEPopup.init();wpImage={preInit:function(){var a=tinyMCEPopup.editor,e=tinyMCEPopup.getWin(),d=e.document.styleSheets,b,c;for(c=0;c<d.length;c++){b=d.item(c).href;if(b&&b.indexOf("colors")!=-1){document.getElementsByTagName("head")[0].appendChild(a.dom.create("link",{rel:"stylesheet",href:b}));break}}},I:function(a){return document.getElementById(a)},current:"",link:"",link_rel:"",target_value:"",current_size_sel:"s100",width:"",height:"",align:"",img_alt:"",setTabs:function(b){var a=this;if("current"==b.className){return false}a.I("div_advanced").style.display=("tab_advanced"==b.id)?"block":"none";a.I("div_basic").style.display=("tab_basic"==b.id)?"block":"none";a.I("tab_basic").className=a.I("tab_advanced").className="";b.className="current";return false},img_seturl:function(b){var c=this,a=c.I("link_rel").value;if("current"==b){c.I("link_href").value=c.current;c.I("link_rel").value=c.link_rel}else{c.I("link_href").value=c.link;if(a){a=a.replace(/attachment|wp-att-[0-9]+/gi,"");c.I("link_rel").value=tinymce.trim(a)}}},imgAlignCls:function(b){var c=this,a=c.I("img_classes").value;c.I("img_demo").className=c.align=b;a=a.replace(/align[^ "']+/gi,"");a+=(" "+b);a=a.replace(/\s+/g," ").replace(/^\s/,"");if("aligncenter"==b){c.I("hspace").value="";c.updateStyle("hspace")}c.I("img_classes").value=a},showSize:function(e){var c=this,f=c.I("img_demo"),a=c.width,d=c.height,g=e.id||"s100",b;b=parseInt(g.substring(1))/200;f.width=Math.round(a*b);f.height=Math.round(d*b);c.showSizeClear();e.style.borderColor="#A3A3A3";e.style.backgroundColor="#E5E5E5"},showSizeSet:function(){var b=this,d,c,a;if((b.width*1.3)>parseInt(b.preloadImg.width)){d=b.I("s130"),c=b.I("s120"),a=b.I("s110");d.onclick=c.onclick=a.onclick=null;d.onmouseover=c.onmouseover=a.onmouseover=null;d.style.color=c.style.color=a.style.color="#aaa"}},showSizeRem:function(){var a=this,c=a.I("img_demo"),b=document.forms[0];c.width=Math.round(b.width.value*0.5);c.height=Math.round(b.height.value*0.5);a.showSizeClear();a.I(a.current_size_sel).style.borderColor="#A3A3A3";a.I(a.current_size_sel).style.backgroundColor="#E5E5E5";return false},showSizeClear:function(){var b=this.I("img_size").getElementsByTagName("div"),a;for(a=0;a<b.length;a++){b[a].style.borderColor="#f1f1f1";b[a].style.backgroundColor="#f1f1f1"}},imgEditSize:function(g){var d=this,i=document.forms[0],a,c,b,e,j;if(!d.preloadImg||!d.preloadImg.width||!d.preloadImg.height){return}a=parseInt(d.preloadImg.width),c=parseInt(d.preloadImg.height),b=d.width||a,e=d.height||c,j=g.id||"s100";size=parseInt(j.substring(1))/100;b=Math.round(b*size);e=Math.round(e*size);i.width.value=Math.min(a,b);i.height.value=Math.min(c,e);d.current_size_sel=j;d.demoSetSize()},demoSetSize:function(a){var c=this.I("img_demo"),b=document.forms[0];c.width=b.width.value?Math.round(b.width.value*0.5):"";c.height=b.height.value?Math.round(b.height.value*0.5):""},demoSetStyle:function(){var b=document.forms[0],a=this.I("img_demo"),c=tinyMCEPopup.editor.dom;if(a){c.setAttrib(a,"style",b.img_style.value);c.setStyle(a,"width","");c.setStyle(a,"height","")}},origSize:function(){var a=this,c=document.forms[0],b=a.I("s100");c.width.value=a.width=a.preloadImg.width;c.height.value=a.height=a.preloadImg.height;a.showSizeSet();a.demoSetSize();a.showSize(b)},init:function(){var a=tinyMCEPopup.editor,b;b=document.body.innerHTML;document.body.innerHTML=a.translate(b);window.setTimeout(function(){wpImage.setup()},500)},setup:function(){var q=this,l,b,m,e,j=document.forms[0],i=tinyMCEPopup.editor,k=q.I("img_demo"),h=tinyMCEPopup.dom,a,g,p="",o,n;document.dir=tinyMCEPopup.editor.getParam("directionality","");if(tinyMCEPopup.editor.getParam("wpeditimage_disable_captions",false)){q.I("cap_field").style.display="none"}tinyMCEPopup.restoreSelection();b=i.selection.getNode();if(b.nodeName!="IMG"){return}j.img_src.value=k.src=m=i.dom.getAttrib(b,"src");i.dom.setStyle(b,"float","");q.getImageData();l=i.dom.getAttrib(b,"class");if(a=h.getParent(b,"dl")){o=i.dom.getAttrib(a,"class");o=o.match(/align[^ "']+/i);if(o&&!h.hasClass(b,o)){l+=" "+o;tinymce.trim(l)}g=i.dom.select("dd.wp-caption-dd",a);if(g&&g[0]){p=i.serializer.serialize(g[0]).replace(/^<p>/,"").replace(/<\/p>$/,"")}}j.img_cap_text.value=p;j.img_title.value=i.dom.getAttrib(b,"title");j.img_alt.value=i.dom.getAttrib(b,"alt");j.border.value=i.dom.getAttrib(b,"border");j.vspace.value=i.dom.getAttrib(b,"vspace");j.hspace.value=i.dom.getAttrib(b,"hspace");j.align.value=i.dom.getAttrib(b,"align");j.width.value=q.width=i.dom.getAttrib(b,"width");j.height.value=q.height=i.dom.getAttrib(b,"height");j.img_classes.value=l;j.img_style.value=i.dom.getAttrib(b,"style");if(h.getAttrib(b,"hspace")){q.updateStyle("hspace")}if(h.getAttrib(b,"border")){q.updateStyle("border")}if(h.getAttrib(b,"vspace")){q.updateStyle("vspace")}if(n=i.dom.getParent(b,"A")){j.link_href.value=q.current=i.dom.getAttrib(n,"href");j.link_title.value=i.dom.getAttrib(n,"title");j.link_rel.value=q.link_rel=i.dom.getAttrib(n,"rel");j.link_style.value=i.dom.getAttrib(n,"style");q.target_value=i.dom.getAttrib(n,"target");j.link_classes.value=i.dom.getAttrib(n,"class")}j.link_target.checked=(q.target_value&&q.target_value=="_blank")?"checked":"";e=m.substring(m.lastIndexOf("/"));e=e.replace(/-[0-9]{2,4}x[0-9]{2,4}/,"");q.link=m.substring(0,m.lastIndexOf("/"))+e;if(l.indexOf("alignleft")!=-1){q.I("alignleft").checked="checked";k.className=q.align="alignleft"}else{if(l.indexOf("aligncenter")!=-1){q.I("aligncenter").checked="checked";k.className=q.align="aligncenter"}else{if(l.indexOf("alignright")!=-1){q.I("alignright").checked="checked";k.className=q.align="alignright"}else{if(l.indexOf("alignnone")!=-1){q.I("alignnone").checked="checked";k.className=q.align="alignnone"}}}}if(q.width&&q.preloadImg.width){q.showSizeSet()}document.body.style.display=""},remove:function(){var a=tinyMCEPopup.editor,c,b;tinyMCEPopup.restoreSelection();b=a.selection.getNode();if(b.nodeName!="IMG"){return}if((c=a.dom.getParent(b,"div"))&&a.dom.hasClass(c,"mceTemp")){a.dom.remove(c)}else{if((c=a.dom.getParent(b,"A"))&&c.childNodes.length==1){a.dom.remove(c)}else{a.dom.remove(b)}}a.execCommand("mceRepaint");tinyMCEPopup.close();return},update:function(){var m=this,v=document.forms[0],g=tinyMCEPopup.editor,e,y,d=null,n,h,p,r,o=null,k=v.img_classes.value,l,q,u="",j,i,s,a,B,x="",c,z,w;tinyMCEPopup.restoreSelection();e=g.selection.getNode();if(e.nodeName!="IMG"){return}if(v.img_src.value===""){m.remove();return}if(v.img_cap_text.value!=""&&v.width.value!=""){o=1;k=k.replace(/align[^ "']+\s?/gi,"")}p=g.dom.getParent(e,"a");h=g.dom.getParent(e,"p");n=g.dom.getParent(e,"dl");r=g.dom.getParent(e,"div");tinyMCEPopup.execCommand("mceBeginUndoLevel");if(v.width.value!=e.width||v.height.value!=e.height){k=k.replace(/size-[^ "']+/,"")}g.dom.setAttribs(e,{src:v.img_src.value,title:v.img_title.value,alt:v.img_alt.value,width:v.width.value,height:v.height.value,style:v.img_style.value,"class":k});if(v.link_href.value){if(p==null){if(!v.link_href.value.match(/https?:\/\//i)){v.link_href.value=tinyMCEPopup.editor.documentBaseURI.toAbsolute(v.link_href.value)}g.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(g.dom.select("a"),function(b){if(g.dom.getAttrib(b,"href")=="#mce_temp_url#"){g.dom.setAttribs(b,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}})}else{g.dom.setAttribs(p,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}}if(o){a=10+parseInt(v.width.value);B=(m.align=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";w=v.img_cap_text.value;w=w.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});w=w.replace(/\s*\n\s*/g,"<br />");if(n){g.dom.setAttribs(n,{"class":"wp-caption "+m.align,style:"width: "+a+"px;"});if(r){g.dom.setAttrib(r,"class",B)}if((i=g.dom.getParent(e,"dt"))&&(s=i.nextSibling)&&g.dom.hasClass(s,"wp-caption-dd")){g.dom.setHTML(s,w)}}else{if((q=v.img_classes.value.match(/wp-image-([0-9]{1,6})/))&&q[1]){u="attachment_"+q[1]}if(v.link_href.value&&(x=g.dom.getParent(e,"a"))){if(x.childNodes.length==1){l=g.dom.getOuterHTML(x)}else{l=g.dom.getOuterHTML(x);l=l.match(/<a [^>]+>/i);l=l+g.dom.getOuterHTML(e)+"</a>"}}else{l=g.dom.getOuterHTML(e)}l='<dl id="'+u+'" class="wp-caption '+m.align+'" style="width: '+a+'px"><dt class="wp-caption-dt">'+l+'</dt><dd class="wp-caption-dd">'+w+"</dd></dl>";j=g.dom.create("div",{"class":B},l);if(h){h.parentNode.insertBefore(j,h);if(h.childNodes.length==1){g.dom.remove(h)}else{if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}else{if(c=g.dom.getParent(e,"TD,TH,LI")){c.appendChild(j);if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}}}else{if(n&&r){if(v.link_href.value&&(z=g.dom.getParent(e,"a"))){l=g.dom.getOuterHTML(z)}else{l=g.dom.getOuterHTML(e)}h=g.dom.create("p",{},l);r.parentNode.insertBefore(h,r);g.dom.remove(r)}}if(v.img_classes.value.indexOf("aligncenter")!=-1){if(h&&(!h.style||h.style.textAlign!="center")){g.dom.setStyle(h,"textAlign","center")}}else{if(h&&h.style&&h.style.textAlign=="center"){g.dom.setStyle(h,"textAlign","")}}if(!v.link_href.value&&p){y=g.selection.getBookmark();g.dom.remove(p,1);g.selection.moveToBookmark(y)}tinyMCEPopup.execCommand("mceEndUndoLevel");g.execCommand("mceRepaint");tinyMCEPopup.close()},updateStyle:function(a){var e=tinyMCEPopup.dom,c,d=document.forms[0],b=e.create("img",{style:d.img_style.value});if(tinyMCEPopup.editor.settings.inline_styles){if(a=="align"){e.setStyle(b,"float","");e.setStyle(b,"vertical-align","");c=d.align.value;if(c){if(c=="left"||c=="right"){e.setStyle(b,"float",c)}else{b.style.verticalAlign=c}}}if(a=="border"){e.setStyle(b,"border","");c=d.border.value;if(c||c=="0"){if(c=="0"){b.style.border="0"}else{b.style.border=c+"px solid black"}}}if(a=="hspace"){e.setStyle(b,"marginLeft","");e.setStyle(b,"marginRight","");c=d.hspace.value;if(c){b.style.marginLeft=c+"px";b.style.marginRight=c+"px"}}if(a=="vspace"){e.setStyle(b,"marginTop","");e.setStyle(b,"marginBottom","");c=d.vspace.value;if(c){b.style.marginTop=c+"px";b.style.marginBottom=c+"px"}}d.img_style.value=e.serializeStyle(e.parseStyle(b.style.cssText));this.demoSetStyle()}},checkVal:function(a){if(a.value==""){if(a.id=="img_src"){a.value=this.I("img_demo").src||this.preloadImg.src}}},resetImageData:function(){var a=document.forms[0];a.width.value=a.height.value=""},updateImageData:function(){var d=document.forms[0],b=wpImage,a=d.width.value,c=d.height.value;if(!a&&c){a=d.width.value=b.width=Math.round(b.preloadImg.width/(b.preloadImg.height/c))}else{if(a&&!c){c=d.height.value=b.height=Math.round(b.preloadImg.height/(b.preloadImg.width/a))}}if(!a){d.width.value=b.width=b.preloadImg.width}if(!c){d.height.value=b.height=b.preloadImg.height}b.showSizeSet();b.demoSetSize();if(d.img_style.value){b.demoSetStyle()}},getImageData:function(){var a=wpImage,b=document.forms[0];a.preloadImg=new Image();a.preloadImg.onload=a.updateImageData;a.preloadImg.onerror=a.resetImageData;a.preloadImg.src=tinyMCEPopup.editor.documentBaseURI.toAbsolute(b.img_src.value)}};window.onload=function(){wpImage.init()};wpImage.preInit();
\ No newline at end of file
+
+var tinymce = null, tinyMCEPopup, tinyMCE, wpImage;
+
+tinyMCEPopup = {
+       init: function() {
+               var t = this, w, ti;
+
+               // Find window & API
+               w = t.getWin();
+               tinymce = w.tinymce;
+               tinyMCE = w.tinyMCE;
+               t.editor = tinymce.EditorManager.activeEditor;
+               t.params = t.editor.windowManager.params;
+               t.features = t.editor.windowManager.features;
+
+               // Setup local DOM
+               t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
+               t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
+       },
+
+       getWin : function() {
+               return (!window.frameElement && window.dialogArguments) || opener || parent || top;
+       },
+
+       getParam : function(n, dv) {
+               return this.editor.getParam(n, dv);
+       },
+
+       close : function() {
+               var t = this;
+
+               // To avoid domain relaxing issue in Opera
+               function close() {
+                       t.editor.windowManager.close(window);
+                       tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
+               };
+
+               if (tinymce.isOpera)
+                       t.getWin().setTimeout(close, 0);
+               else
+                       close();
+       },
+
+       execCommand : function(cmd, ui, val, a) {
+               a = a || {};
+               a.skip_focus = 1;
+
+               this.restoreSelection();
+               return this.editor.execCommand(cmd, ui, val, a);
+       },
+
+       storeSelection : function() {
+               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
+       },
+
+       restoreSelection : function() {
+               var t = tinyMCEPopup;
+
+               if ( tinymce.isIE )
+                       t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+       }
+}
+tinyMCEPopup.init();
+
+wpImage = {
+       preInit : function() {
+               // import colors stylesheet from parent
+               var ed = tinyMCEPopup.editor, win = tinyMCEPopup.getWin(), styles = win.document.styleSheets, url, i;
+
+               for ( i = 0; i < styles.length; i++ ) {
+                       url = styles.item(i).href;
+                       if ( url && url.indexOf('colors') != -1 ) {
+                               document.getElementsByTagName('head')[0].appendChild( ed.dom.create('link', {rel:'stylesheet', href: url}) );
+                               break;
+                       }
+               }
+       },
+
+       I : function(e) {
+               return document.getElementById(e);
+       },
+
+       current : '',
+       link : '',
+       link_rel : '',
+       target_value : '',
+       current_size_sel : 's100',
+       width : '',
+       height : '',
+       align : '',
+       img_alt : '',
+
+       setTabs : function(tab) {
+               var t = this;
+
+               if ( 'current' == tab.className ) return false;
+               t.I('div_advanced').style.display = ( 'tab_advanced' == tab.id ) ? 'block' : 'none';
+               t.I('div_basic').style.display = ( 'tab_basic' == tab.id ) ? 'block' : 'none';
+               t.I('tab_basic').className = t.I('tab_advanced').className = '';
+               tab.className = 'current';
+               return false;
+       },
+
+       img_seturl : function(u) {
+               var t = this, rel = t.I('link_rel').value;
+
+               if ( 'current' == u ) {
+                       t.I('link_href').value = t.current;
+                       t.I('link_rel').value = t.link_rel;
+               } else {
+                       t.I('link_href').value = t.link;
+                       if ( rel ) {
+                               rel = rel.replace( /attachment|wp-att-[0-9]+/gi, '' );
+                               t.I('link_rel').value = tinymce.trim(rel);
+                       }
+               }
+       },
+
+       imgAlignCls : function(v) {
+               var t = this, cls = t.I('img_classes').value;
+
+               t.I('img_demo').className = t.align = v;
+
+               cls = cls.replace( /align[^ "']+/gi, '' );
+               cls += (' ' + v);
+               cls = cls.replace( /\s+/g, ' ' ).replace( /^\s/, '' );
+
+               if ( 'aligncenter' == v ) {
+                       t.I('hspace').value = '';
+                       t.updateStyle('hspace');
+               }
+
+               t.I('img_classes').value = cls;
+       },
+
+       showSize : function(el) {
+               var t = this, demo = t.I('img_demo'), w = t.width, h = t.height, id = el.id || 's100', size;
+
+               size = parseInt(id.substring(1)) / 200;
+               demo.width = Math.round(w * size);
+               demo.height = Math.round(h * size);
+
+               t.showSizeClear();
+               el.style.borderColor = '#A3A3A3';
+               el.style.backgroundColor = '#E5E5E5';
+       },
+
+       showSizeSet : function() {
+               var t = this, s130, s120, s110;
+
+               if ( (t.width * 1.3) > parseInt(t.preloadImg.width) ) {
+                       s130 = t.I('s130'), s120 = t.I('s120'), s110 = t.I('s110');
+
+                       s130.onclick = s120.onclick = s110.onclick = null;
+                       s130.onmouseover = s120.onmouseover = s110.onmouseover = null;
+                       s130.style.color = s120.style.color = s110.style.color = '#aaa';
+               }
+       },
+
+       showSizeRem : function() {
+               var t = this, demo = t.I('img_demo'), f = document.forms[0];
+
+               demo.width = Math.round(f.width.value * 0.5);
+               demo.height = Math.round(f.height.value * 0.5);
+               t.showSizeClear();
+               t.I(t.current_size_sel).style.borderColor = '#A3A3A3';
+               t.I(t.current_size_sel).style.backgroundColor = '#E5E5E5';
+
+               return false;
+       },
+
+       showSizeClear : function() {
+               var divs = this.I('img_size').getElementsByTagName('div'), i;
+
+               for ( i = 0; i < divs.length; i++ ) {
+                       divs[i].style.borderColor = '#f1f1f1';
+                       divs[i].style.backgroundColor = '#f1f1f1';
+               }
+       },
+
+       imgEditSize : function(el) {
+               var t = this, f = document.forms[0], W, H, w, h, id;
+
+               if ( ! t.preloadImg || ! t.preloadImg.width || ! t.preloadImg.height )
+                       return;
+               
+               W = parseInt(t.preloadImg.width), H = parseInt(t.preloadImg.height), w = t.width || W, h = t.height || H, id = el.id || 's100';
+
+               size = parseInt(id.substring(1)) / 100;
+
+               w = Math.round(w * size);
+               h = Math.round(h * size);
+
+               f.width.value = Math.min(W, w);
+               f.height.value = Math.min(H, h);
+
+               t.current_size_sel = id;
+               t.demoSetSize();
+       },
+
+       demoSetSize : function(img) {
+               var demo = this.I('img_demo'), f = document.forms[0];
+
+               demo.width = f.width.value ? Math.round(f.width.value * 0.5) : '';
+               demo.height = f.height.value ? Math.round(f.height.value * 0.5) : '';
+       },
+
+       demoSetStyle : function() {
+               var f = document.forms[0], demo = this.I('img_demo'), dom = tinyMCEPopup.editor.dom;
+
+               if (demo) {
+                       dom.setAttrib(demo, 'style', f.img_style.value);
+                       dom.setStyle(demo, 'width', '');
+                       dom.setStyle(demo, 'height', '');
+               }
+       },
+
+       origSize : function() {
+               var t = this, f = document.forms[0], el = t.I('s100');
+
+               f.width.value = t.width = t.preloadImg.width;
+               f.height.value = t.height = t.preloadImg.height;
+               t.showSizeSet();
+               t.demoSetSize();
+               t.showSize(el);
+       },
+
+       init : function() {
+               var ed = tinyMCEPopup.editor, h;
+
+               h = document.body.innerHTML;
+               document.body.innerHTML = ed.translate(h);
+               window.setTimeout( function(){wpImage.setup();}, 500 );
+       },
+
+       setup : function() {
+               var t = this, c, el, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor,
+                       d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, DD, caption = '', dlc, pa;
+
+               document.dir = tinyMCEPopup.editor.getParam('directionality','');
+
+               if ( tinyMCEPopup.editor.getParam('wpeditimage_disable_captions', false) )
+                       t.I('cap_field').style.display = 'none';
+
+               tinyMCEPopup.restoreSelection();
+               el = ed.selection.getNode();
+               if (el.nodeName != 'IMG')
+                       return;
+
+               f.img_src.value = d.src = link = ed.dom.getAttrib(el, 'src');
+               ed.dom.setStyle(el, 'float', '');
+               t.getImageData();
+               c = ed.dom.getAttrib(el, 'class');
+
+               if ( DL = dom.getParent(el, 'dl') ) {
+                       dlc = ed.dom.getAttrib(DL, 'class');
+                       dlc = dlc.match(/align[^ "']+/i);
+                       if ( dlc && ! dom.hasClass(el, dlc) ) {
+                               c += ' '+dlc;
+                               tinymce.trim(c);
+                       }
+
+                       DD = ed.dom.select('dd.wp-caption-dd', DL);
+                       if ( DD && DD[0] )
+                               caption = ed.serializer.serialize(DD[0]).replace(/^<p>/, '').replace(/<\/p>$/, '');
+               }
+
+               f.img_cap_text.value = caption;
+               f.img_title.value = ed.dom.getAttrib(el, 'title');
+               f.img_alt.value = ed.dom.getAttrib(el, 'alt');
+               f.border.value = ed.dom.getAttrib(el, 'border');
+               f.vspace.value = ed.dom.getAttrib(el, 'vspace');
+               f.hspace.value = ed.dom.getAttrib(el, 'hspace');
+               f.align.value = ed.dom.getAttrib(el, 'align');
+               f.width.value = t.width = ed.dom.getAttrib(el, 'width');
+               f.height.value = t.height = ed.dom.getAttrib(el, 'height');
+               f.img_classes.value = c;
+               f.img_style.value = ed.dom.getAttrib(el, 'style');
+
+               // Move attribs to styles
+               if ( dom.getAttrib(el, 'hspace') )
+                       t.updateStyle('hspace');
+
+               if ( dom.getAttrib(el, 'border') )
+                       t.updateStyle('border');
+
+               if ( dom.getAttrib(el, 'vspace') )
+                       t.updateStyle('vspace');
+
+               if ( pa = ed.dom.getParent(el, 'A') ) {
+                       f.link_href.value = t.current = ed.dom.getAttrib(pa, 'href');
+                       f.link_title.value = ed.dom.getAttrib(pa, 'title');
+                       f.link_rel.value = t.link_rel = ed.dom.getAttrib(pa, 'rel');
+                       f.link_style.value = ed.dom.getAttrib(pa, 'style');
+                       t.target_value = ed.dom.getAttrib(pa, 'target');
+                       f.link_classes.value = ed.dom.getAttrib(pa, 'class');
+               }
+
+               f.link_target.checked = ( t.target_value && t.target_value == '_blank' ) ? 'checked' : '';
+
+               fname = link.substring( link.lastIndexOf('/') );
+               fname = fname.replace(/-[0-9]{2,4}x[0-9]{2,4}/, '' );
+               t.link = link.substring( 0, link.lastIndexOf('/') ) + fname;
+
+               if ( c.indexOf('alignleft') != -1 ) {
+                       t.I('alignleft').checked = "checked";
+                       d.className = t.align = "alignleft";
+               } else if ( c.indexOf('aligncenter') != -1 ) {
+                       t.I('aligncenter').checked = "checked";
+                       d.className = t.align = "aligncenter";
+               } else if ( c.indexOf('alignright') != -1 ) {
+                       t.I('alignright').checked = "checked";
+                       d.className = t.align = "alignright";
+               } else if ( c.indexOf('alignnone') != -1 ) {
+                       t.I('alignnone').checked = "checked";
+                       d.className = t.align = "alignnone";
+               }
+
+               if ( t.width && t.preloadImg.width )
+                       t.showSizeSet();
+               
+               document.body.style.display = '';
+       },
+
+       remove : function() {
+               var ed = tinyMCEPopup.editor, p, el;
+
+               tinyMCEPopup.restoreSelection();
+               el = ed.selection.getNode();
+               if (el.nodeName != 'IMG') return;
+
+               if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
+                       ed.dom.remove(p);
+               else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
+                       ed.dom.remove(p);
+               else ed.dom.remove(el);
+
+               ed.execCommand('mceRepaint');
+               tinyMCEPopup.close();
+               return;
+       },
+
+       update : function() {
+               var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null,
+                       DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html,
+                       id, cap_id = '', cap, DT, DD, cap_width, div_cls, lnk = '', pa, aa, caption;
+
+               tinyMCEPopup.restoreSelection();
+               el = ed.selection.getNode();
+
+               if (el.nodeName != 'IMG') return;
+               if (f.img_src.value === '') {
+                       t.remove();
+                       return;
+               }
+
+               if ( f.img_cap_text.value != '' && f.width.value != '' ) {
+                       do_caption = 1;
+                       img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
+               }
+
+               A = ed.dom.getParent(el, 'a');
+               P = ed.dom.getParent(el, 'p');
+               DL = ed.dom.getParent(el, 'dl');
+               DIV = ed.dom.getParent(el, 'div');
+
+               tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+               if ( f.width.value != el.width || f.height.value != el.height )
+                       img_class = img_class.replace(/size-[^ "']+/, '');
+
+               ed.dom.setAttribs(el, {
+                       src : f.img_src.value,
+                       title : f.img_title.value,
+                       alt : f.img_alt.value,
+                       width : f.width.value,
+                       height : f.height.value,
+                       style : f.img_style.value,
+                       'class' : img_class
+               });
+
+               if ( f.link_href.value ) {
+                       // Create new anchor elements
+                       if ( A == null ) {
+                               if ( ! f.link_href.value.match(/https?:\/\//i) )
+                                       f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
+
+                               ed.getDoc().execCommand("unlink", false, null);
+                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+                               tinymce.each(ed.dom.select("a"), function(n) {
+                                       if ( ed.dom.getAttrib(n, 'href') == '#mce_temp_url#' ) {
+
+                                               ed.dom.setAttribs(n, {
+                                                       href : f.link_href.value,
+                                                       title : f.link_title.value,
+                                                       rel : f.link_rel.value,
+                                                       target : (f.link_target.checked == true) ? '_blank' : '',
+                                                       'class' : f.link_classes.value,
+                                                       style : f.link_style.value
+                                               });
+                                       }
+                               });
+                       } else {
+                               ed.dom.setAttribs(A, {
+                                       href : f.link_href.value,
+                                       title : f.link_title.value,
+                                       rel : f.link_rel.value,
+                                       target : (f.link_target.checked == true) ? '_blank' : '',
+                                       'class' : f.link_classes.value,
+                                       style : f.link_style.value
+                               });
+                       }
+               }
+
+               if ( do_caption ) {
+                       cap_width = 10 + parseInt(f.width.value);
+                       div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
+                       caption = f.img_cap_text.value;
+
+                       caption = caption.replace(/\r\n|\r/g, '\n').replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
+                               return a.replace(/[\r\n\t]+/, ' ');
+                       });
+
+                       caption = caption.replace(/\s*\n\s*/g, '<br />');
+
+                       if ( DL ) {
+                               ed.dom.setAttribs(DL, {
+                                       'class' : 'wp-caption '+t.align,
+                                       style : 'width: '+cap_width+'px;'
+                               });
+
+                               if ( DIV )
+                                       ed.dom.setAttrib(DIV, 'class', div_cls);
+
+                               if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
+                                       ed.dom.setHTML(DD, caption);
+
+                       } else {
+                               if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
+                                       cap_id = 'attachment_'+id[1];
+
+                               if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
+                                       if ( lnk.childNodes.length == 1 ) {
+                                               html = ed.dom.getOuterHTML(lnk);
+                                       } else {
+                                               html = ed.dom.getOuterHTML(lnk);
+                                               html = html.match(/<a [^>]+>/i);
+                                               html = html+ed.dom.getOuterHTML(el)+'</a>';
+                                       }
+                               } else {
+                                       html = ed.dom.getOuterHTML(el);
+                               }
+
+                               html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
+                               'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+caption+'</dd></dl>';
+
+                               cap = ed.dom.create('div', {'class': div_cls}, html);
+
+                               if ( P ) {
+                                       P.parentNode.insertBefore(cap, P);
+                                       if ( P.childNodes.length == 1 )
+                                               ed.dom.remove(P);
+                                       else if ( lnk && lnk.childNodes.length == 1 )
+                                               ed.dom.remove(lnk);
+                                       else ed.dom.remove(el);
+                               } else if ( pa = ed.dom.getParent(el, 'TD,TH,LI') ) {
+                                       pa.appendChild(cap);
+                                       if ( lnk && lnk.childNodes.length == 1 )
+                                               ed.dom.remove(lnk);
+                                       else ed.dom.remove(el);
+                               }
+                       }
+
+               } else {
+                       if ( DL && DIV ) {
+                               if ( f.link_href.value && (aa = ed.dom.getParent(el, 'a')) ) html = ed.dom.getOuterHTML(aa);
+                               else html = ed.dom.getOuterHTML(el);
+
+                               P = ed.dom.create('p', {}, html);
+                               DIV.parentNode.insertBefore(P, DIV);
+                               ed.dom.remove(DIV);
+                       }
+               }
+
+               if ( f.img_classes.value.indexOf('aligncenter') != -1 ) {
+                       if ( P && ( ! P.style || P.style.textAlign != 'center' ) )
+                               ed.dom.setStyle(P, 'textAlign', 'center');
+               } else {
+                       if ( P && P.style && P.style.textAlign == 'center' )
+                               ed.dom.setStyle(P, 'textAlign', '');
+               }
+
+               if ( ! f.link_href.value && A ) {
+                       b = ed.selection.getBookmark();
+                       ed.dom.remove(A, 1);
+                       ed.selection.moveToBookmark(b);
+               }
+
+               tinyMCEPopup.execCommand("mceEndUndoLevel");
+               ed.execCommand('mceRepaint');
+               tinyMCEPopup.close();
+       },
+
+       updateStyle : function(ty) {
+               var dom = tinyMCEPopup.dom, v, f = document.forms[0], img = dom.create('img', {style : f.img_style.value});
+
+               if (tinyMCEPopup.editor.settings.inline_styles) {
+                       // Handle align
+                       if (ty == 'align') {
+                               dom.setStyle(img, 'float', '');
+                               dom.setStyle(img, 'vertical-align', '');
+
+                               v = f.align.value;
+                               if (v) {
+                                       if (v == 'left' || v == 'right')
+                                               dom.setStyle(img, 'float', v);
+                                       else
+                                               img.style.verticalAlign = v;
+                               }
+                       }
+
+                       // Handle border
+                       if (ty == 'border') {
+                               dom.setStyle(img, 'border', '');
+
+                               v = f.border.value;
+                               if (v || v == '0') {
+                                       if (v == '0')
+                                               img.style.border = '0';
+                                       else
+                                               img.style.border = v + 'px solid black';
+                               }
+                       }
+
+                       // Handle hspace
+                       if (ty == 'hspace') {
+                               dom.setStyle(img, 'marginLeft', '');
+                               dom.setStyle(img, 'marginRight', '');
+
+                               v = f.hspace.value;
+                               if (v) {
+                                       img.style.marginLeft = v + 'px';
+                                       img.style.marginRight = v + 'px';
+                               }
+                       }
+
+                       // Handle vspace
+                       if (ty == 'vspace') {
+                               dom.setStyle(img, 'marginTop', '');
+                               dom.setStyle(img, 'marginBottom', '');
+
+                               v = f.vspace.value;
+                               if (v) {
+                                       img.style.marginTop = v + 'px';
+                                       img.style.marginBottom = v + 'px';
+                               }
+                       }
+
+                       // Merge
+                       f.img_style.value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
+                       this.demoSetStyle();
+               }
+       },
+
+       checkVal : function(f) {
+
+               if ( f.value == '' ) {
+       //              if ( f.id == 'width' ) f.value = this.width || this.preloadImg.width;
+       //              if ( f.id == 'height' ) f.value = this.height || this.preloadImg.height;
+                       if ( f.id == 'img_src' ) f.value = this.I('img_demo').src || this.preloadImg.src;
+               }
+       },
+
+       resetImageData : function() {
+               var f = document.forms[0];
+
+               f.width.value = f.height.value = '';
+       },
+
+       updateImageData : function() {
+               var f = document.forms[0], t = wpImage, w = f.width.value, h = f.height.value;
+
+               if ( !w && h )
+                       w = f.width.value = t.width = Math.round( t.preloadImg.width / (t.preloadImg.height / h) );
+               else if ( w && !h )
+                       h = f.height.value = t.height = Math.round( t.preloadImg.height / (t.preloadImg.width / w) );
+
+               if ( !w )
+                       f.width.value = t.width = t.preloadImg.width;
+
+               if ( !h )
+                       f.height.value = t.height = t.preloadImg.height;
+
+               t.showSizeSet();
+               t.demoSetSize();
+               if ( f.img_style.value )
+                       t.demoSetStyle();
+       },
+
+       getImageData : function() {
+               var t = wpImage, f = document.forms[0];
+
+               t.preloadImg = new Image();
+               t.preloadImg.onload = t.updateImageData;
+               t.preloadImg.onerror = t.resetImageData;
+               t.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.img_src.value);
+       }
+};
+
+window.onload = function(){wpImage.init();}
+wpImage.preInit();
+
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.min.js b/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.min.js
new file mode 100644 (file)
index 0000000..eebfb3d
--- /dev/null
@@ -0,0 +1 @@
+var tinymce=null,tinyMCEPopup,tinyMCE,wpImage;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getParam:function(b,a){return this.editor.getParam(b,a)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}}};tinyMCEPopup.init();wpImage={preInit:function(){var a=tinyMCEPopup.editor,e=tinyMCEPopup.getWin(),d=e.document.styleSheets,b,c;for(c=0;c<d.length;c++){b=d.item(c).href;if(b&&b.indexOf("colors")!=-1){document.getElementsByTagName("head")[0].appendChild(a.dom.create("link",{rel:"stylesheet",href:b}));break}}},I:function(a){return document.getElementById(a)},current:"",link:"",link_rel:"",target_value:"",current_size_sel:"s100",width:"",height:"",align:"",img_alt:"",setTabs:function(b){var a=this;if("current"==b.className){return false}a.I("div_advanced").style.display=("tab_advanced"==b.id)?"block":"none";a.I("div_basic").style.display=("tab_basic"==b.id)?"block":"none";a.I("tab_basic").className=a.I("tab_advanced").className="";b.className="current";return false},img_seturl:function(b){var c=this,a=c.I("link_rel").value;if("current"==b){c.I("link_href").value=c.current;c.I("link_rel").value=c.link_rel}else{c.I("link_href").value=c.link;if(a){a=a.replace(/attachment|wp-att-[0-9]+/gi,"");c.I("link_rel").value=tinymce.trim(a)}}},imgAlignCls:function(b){var c=this,a=c.I("img_classes").value;c.I("img_demo").className=c.align=b;a=a.replace(/align[^ "']+/gi,"");a+=(" "+b);a=a.replace(/\s+/g," ").replace(/^\s/,"");if("aligncenter"==b){c.I("hspace").value="";c.updateStyle("hspace")}c.I("img_classes").value=a},showSize:function(e){var c=this,f=c.I("img_demo"),a=c.width,d=c.height,g=e.id||"s100",b;b=parseInt(g.substring(1))/200;f.width=Math.round(a*b);f.height=Math.round(d*b);c.showSizeClear();e.style.borderColor="#A3A3A3";e.style.backgroundColor="#E5E5E5"},showSizeSet:function(){var b=this,d,c,a;if((b.width*1.3)>parseInt(b.preloadImg.width)){d=b.I("s130"),c=b.I("s120"),a=b.I("s110");d.onclick=c.onclick=a.onclick=null;d.onmouseover=c.onmouseover=a.onmouseover=null;d.style.color=c.style.color=a.style.color="#aaa"}},showSizeRem:function(){var a=this,c=a.I("img_demo"),b=document.forms[0];c.width=Math.round(b.width.value*0.5);c.height=Math.round(b.height.value*0.5);a.showSizeClear();a.I(a.current_size_sel).style.borderColor="#A3A3A3";a.I(a.current_size_sel).style.backgroundColor="#E5E5E5";return false},showSizeClear:function(){var b=this.I("img_size").getElementsByTagName("div"),a;for(a=0;a<b.length;a++){b[a].style.borderColor="#f1f1f1";b[a].style.backgroundColor="#f1f1f1"}},imgEditSize:function(g){var d=this,i=document.forms[0],a,c,b,e,j;if(!d.preloadImg||!d.preloadImg.width||!d.preloadImg.height){return}a=parseInt(d.preloadImg.width),c=parseInt(d.preloadImg.height),b=d.width||a,e=d.height||c,j=g.id||"s100";size=parseInt(j.substring(1))/100;b=Math.round(b*size);e=Math.round(e*size);i.width.value=Math.min(a,b);i.height.value=Math.min(c,e);d.current_size_sel=j;d.demoSetSize()},demoSetSize:function(a){var c=this.I("img_demo"),b=document.forms[0];c.width=b.width.value?Math.round(b.width.value*0.5):"";c.height=b.height.value?Math.round(b.height.value*0.5):""},demoSetStyle:function(){var b=document.forms[0],a=this.I("img_demo"),c=tinyMCEPopup.editor.dom;if(a){c.setAttrib(a,"style",b.img_style.value);c.setStyle(a,"width","");c.setStyle(a,"height","")}},origSize:function(){var a=this,c=document.forms[0],b=a.I("s100");c.width.value=a.width=a.preloadImg.width;c.height.value=a.height=a.preloadImg.height;a.showSizeSet();a.demoSetSize();a.showSize(b)},init:function(){var a=tinyMCEPopup.editor,b;b=document.body.innerHTML;document.body.innerHTML=a.translate(b);window.setTimeout(function(){wpImage.setup()},500)},setup:function(){var q=this,l,b,m,e,j=document.forms[0],i=tinyMCEPopup.editor,k=q.I("img_demo"),h=tinyMCEPopup.dom,a,g,p="",o,n;document.dir=tinyMCEPopup.editor.getParam("directionality","");if(tinyMCEPopup.editor.getParam("wpeditimage_disable_captions",false)){q.I("cap_field").style.display="none"}tinyMCEPopup.restoreSelection();b=i.selection.getNode();if(b.nodeName!="IMG"){return}j.img_src.value=k.src=m=i.dom.getAttrib(b,"src");i.dom.setStyle(b,"float","");q.getImageData();l=i.dom.getAttrib(b,"class");if(a=h.getParent(b,"dl")){o=i.dom.getAttrib(a,"class");o=o.match(/align[^ "']+/i);if(o&&!h.hasClass(b,o)){l+=" "+o;tinymce.trim(l)}g=i.dom.select("dd.wp-caption-dd",a);if(g&&g[0]){p=i.serializer.serialize(g[0]).replace(/^<p>/,"").replace(/<\/p>$/,"")}}j.img_cap_text.value=p;j.img_title.value=i.dom.getAttrib(b,"title");j.img_alt.value=i.dom.getAttrib(b,"alt");j.border.value=i.dom.getAttrib(b,"border");j.vspace.value=i.dom.getAttrib(b,"vspace");j.hspace.value=i.dom.getAttrib(b,"hspace");j.align.value=i.dom.getAttrib(b,"align");j.width.value=q.width=i.dom.getAttrib(b,"width");j.height.value=q.height=i.dom.getAttrib(b,"height");j.img_classes.value=l;j.img_style.value=i.dom.getAttrib(b,"style");if(h.getAttrib(b,"hspace")){q.updateStyle("hspace")}if(h.getAttrib(b,"border")){q.updateStyle("border")}if(h.getAttrib(b,"vspace")){q.updateStyle("vspace")}if(n=i.dom.getParent(b,"A")){j.link_href.value=q.current=i.dom.getAttrib(n,"href");j.link_title.value=i.dom.getAttrib(n,"title");j.link_rel.value=q.link_rel=i.dom.getAttrib(n,"rel");j.link_style.value=i.dom.getAttrib(n,"style");q.target_value=i.dom.getAttrib(n,"target");j.link_classes.value=i.dom.getAttrib(n,"class")}j.link_target.checked=(q.target_value&&q.target_value=="_blank")?"checked":"";e=m.substring(m.lastIndexOf("/"));e=e.replace(/-[0-9]{2,4}x[0-9]{2,4}/,"");q.link=m.substring(0,m.lastIndexOf("/"))+e;if(l.indexOf("alignleft")!=-1){q.I("alignleft").checked="checked";k.className=q.align="alignleft"}else{if(l.indexOf("aligncenter")!=-1){q.I("aligncenter").checked="checked";k.className=q.align="aligncenter"}else{if(l.indexOf("alignright")!=-1){q.I("alignright").checked="checked";k.className=q.align="alignright"}else{if(l.indexOf("alignnone")!=-1){q.I("alignnone").checked="checked";k.className=q.align="alignnone"}}}}if(q.width&&q.preloadImg.width){q.showSizeSet()}document.body.style.display=""},remove:function(){var a=tinyMCEPopup.editor,c,b;tinyMCEPopup.restoreSelection();b=a.selection.getNode();if(b.nodeName!="IMG"){return}if((c=a.dom.getParent(b,"div"))&&a.dom.hasClass(c,"mceTemp")){a.dom.remove(c)}else{if((c=a.dom.getParent(b,"A"))&&c.childNodes.length==1){a.dom.remove(c)}else{a.dom.remove(b)}}a.execCommand("mceRepaint");tinyMCEPopup.close();return},update:function(){var m=this,v=document.forms[0],g=tinyMCEPopup.editor,e,y,d=null,n,h,p,r,o=null,k=v.img_classes.value,l,q,u="",j,i,s,a,B,x="",c,z,w;tinyMCEPopup.restoreSelection();e=g.selection.getNode();if(e.nodeName!="IMG"){return}if(v.img_src.value===""){m.remove();return}if(v.img_cap_text.value!=""&&v.width.value!=""){o=1;k=k.replace(/align[^ "']+\s?/gi,"")}p=g.dom.getParent(e,"a");h=g.dom.getParent(e,"p");n=g.dom.getParent(e,"dl");r=g.dom.getParent(e,"div");tinyMCEPopup.execCommand("mceBeginUndoLevel");if(v.width.value!=e.width||v.height.value!=e.height){k=k.replace(/size-[^ "']+/,"")}g.dom.setAttribs(e,{src:v.img_src.value,title:v.img_title.value,alt:v.img_alt.value,width:v.width.value,height:v.height.value,style:v.img_style.value,"class":k});if(v.link_href.value){if(p==null){if(!v.link_href.value.match(/https?:\/\//i)){v.link_href.value=tinyMCEPopup.editor.documentBaseURI.toAbsolute(v.link_href.value)}g.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(g.dom.select("a"),function(b){if(g.dom.getAttrib(b,"href")=="#mce_temp_url#"){g.dom.setAttribs(b,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}})}else{g.dom.setAttribs(p,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}}if(o){a=10+parseInt(v.width.value);B=(m.align=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";w=v.img_cap_text.value;w=w.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});w=w.replace(/\s*\n\s*/g,"<br />");if(n){g.dom.setAttribs(n,{"class":"wp-caption "+m.align,style:"width: "+a+"px;"});if(r){g.dom.setAttrib(r,"class",B)}if((i=g.dom.getParent(e,"dt"))&&(s=i.nextSibling)&&g.dom.hasClass(s,"wp-caption-dd")){g.dom.setHTML(s,w)}}else{if((q=v.img_classes.value.match(/wp-image-([0-9]{1,6})/))&&q[1]){u="attachment_"+q[1]}if(v.link_href.value&&(x=g.dom.getParent(e,"a"))){if(x.childNodes.length==1){l=g.dom.getOuterHTML(x)}else{l=g.dom.getOuterHTML(x);l=l.match(/<a [^>]+>/i);l=l+g.dom.getOuterHTML(e)+"</a>"}}else{l=g.dom.getOuterHTML(e)}l='<dl id="'+u+'" class="wp-caption '+m.align+'" style="width: '+a+'px"><dt class="wp-caption-dt">'+l+'</dt><dd class="wp-caption-dd">'+w+"</dd></dl>";j=g.dom.create("div",{"class":B},l);if(h){h.parentNode.insertBefore(j,h);if(h.childNodes.length==1){g.dom.remove(h)}else{if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}else{if(c=g.dom.getParent(e,"TD,TH,LI")){c.appendChild(j);if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}}}else{if(n&&r){if(v.link_href.value&&(z=g.dom.getParent(e,"a"))){l=g.dom.getOuterHTML(z)}else{l=g.dom.getOuterHTML(e)}h=g.dom.create("p",{},l);r.parentNode.insertBefore(h,r);g.dom.remove(r)}}if(v.img_classes.value.indexOf("aligncenter")!=-1){if(h&&(!h.style||h.style.textAlign!="center")){g.dom.setStyle(h,"textAlign","center")}}else{if(h&&h.style&&h.style.textAlign=="center"){g.dom.setStyle(h,"textAlign","")}}if(!v.link_href.value&&p){y=g.selection.getBookmark();g.dom.remove(p,1);g.selection.moveToBookmark(y)}tinyMCEPopup.execCommand("mceEndUndoLevel");g.execCommand("mceRepaint");tinyMCEPopup.close()},updateStyle:function(a){var e=tinyMCEPopup.dom,c,d=document.forms[0],b=e.create("img",{style:d.img_style.value});if(tinyMCEPopup.editor.settings.inline_styles){if(a=="align"){e.setStyle(b,"float","");e.setStyle(b,"vertical-align","");c=d.align.value;if(c){if(c=="left"||c=="right"){e.setStyle(b,"float",c)}else{b.style.verticalAlign=c}}}if(a=="border"){e.setStyle(b,"border","");c=d.border.value;if(c||c=="0"){if(c=="0"){b.style.border="0"}else{b.style.border=c+"px solid black"}}}if(a=="hspace"){e.setStyle(b,"marginLeft","");e.setStyle(b,"marginRight","");c=d.hspace.value;if(c){b.style.marginLeft=c+"px";b.style.marginRight=c+"px"}}if(a=="vspace"){e.setStyle(b,"marginTop","");e.setStyle(b,"marginBottom","");c=d.vspace.value;if(c){b.style.marginTop=c+"px";b.style.marginBottom=c+"px"}}d.img_style.value=e.serializeStyle(e.parseStyle(b.style.cssText));this.demoSetStyle()}},checkVal:function(a){if(a.value==""){if(a.id=="img_src"){a.value=this.I("img_demo").src||this.preloadImg.src}}},resetImageData:function(){var a=document.forms[0];a.width.value=a.height.value=""},updateImageData:function(){var d=document.forms[0],b=wpImage,a=d.width.value,c=d.height.value;if(!a&&c){a=d.width.value=b.width=Math.round(b.preloadImg.width/(b.preloadImg.height/c))}else{if(a&&!c){c=d.height.value=b.height=Math.round(b.preloadImg.height/(b.preloadImg.width/a))}}if(!a){d.width.value=b.width=b.preloadImg.width}if(!c){d.height.value=b.height=b.preloadImg.height}b.showSizeSet();b.demoSetSize();if(d.img_style.value){b.demoSetStyle()}},getImageData:function(){var a=wpImage,b=document.forms[0];a.preloadImg=new Image();a.preloadImg.onload=a.updateImageData;a.preloadImg.onerror=a.resetImageData;a.preloadImg.src=tinyMCEPopup.editor.documentBaseURI.toAbsolute(b.img_src.value)}};window.onload=function(){wpImage.init()};wpImage.preInit();
\ No newline at end of file
index 1bd68c3735b61e6354272293a2169108c4d26632..686fedf29cd25f82b7be136614b4774a3e225d38 100644 (file)
@@ -1,13 +1,13 @@
-/*\r
-Distraction Free Writing mode TinyMCE Styles\r
-*/\r
-\r
-html,\r
-body {\r
-       background: transparent;\r
-       width: auto !important;\r
-       max-width: none !important;\r
-       margin: 0 !important;\r
-       padding: 0 !important;\r
-       min-height: 0 !important;\r
-}\r
+/*
+Distraction Free Writing mode TinyMCE Styles
+*/
+
+html,
+body {
+       background: transparent;
+       width: auto !important;
+       max-width: none !important;
+       margin: 0 !important;
+       padding: 0 !important;
+       min-height: 0 !important;
+}
index efc6f3dcebf5675dc050534e92412d97d276c8b0..ce779891e72447033f27ec409cf90fbf5f872010 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{init:function(a,c){var d=this,g=0,e={},f=tinymce.DOM;a.addCommand("wpFullScreenClose",function(){if(a.getParam("wp_fullscreen_is_enabled")){f.win.setTimeout(function(){tinyMCE.remove(a);f.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings},10)}});a.addCommand("wpFullScreenSave",function(){var h=tinyMCE.get("wp_mce_fullscreen"),i;h.focus();i=tinyMCE.get(h.getParam("wp_fullscreen_editor_id"));i.setContent(h.getContent({format:"raw"}),{format:"raw"})});a.addCommand("wpFullScreenInit",function(){var j,h,i;a=tinyMCE.activeEditor;j=a.getDoc();h=j.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(a.settings,function(k,l){e[l]=k});e.id="wp_mce_fullscreen";e.wp_fullscreen_is_enabled=true;e.wp_fullscreen_editor_id=a.id;e.theme_advanced_resizing=false;e.theme_advanced_statusbar_location="none";e.content_css=e.content_css?e.content_css+","+e.wp_fullscreen_content_css:e.wp_fullscreen_content_css;e.height=tinymce.isIE?h.scrollHeight:h.offsetHeight;tinymce.each(a.getParam("wp_fullscreen_settings"),function(m,l){e[l]=m});i=new tinymce.Editor("wp_mce_fullscreen",e);i.onInit.add(function(k){var m=tinymce.DOM,l=m.select("a.mceButton",m.get("wp-fullscreen-buttons"));if(!a.isHidden()){k.setContent(a.getContent())}else{k.setContent(switchEditors.wpautop(k.getElement().value))}setTimeout(function(){k.onNodeChange.add(function(o,n,p){tinymce.each(l,function(s){var r,q;if(r=m.get("wp_mce_fullscreen_"+s.id.substr(6))){q=r.className;if(q){s.className=q}}})})},1000);k.dom.addClass(k.getBody(),"wp-fullscreen-editor");k.focus()});i.render();if("undefined"!=fullscreen){i.dom.bind(i.dom.doc,"mousemove",function(k){fullscreen.bounder("showToolbar","hideToolbar",2000,k)})}});if("undefined"!=fullscreen){a.addButton("wp_fullscreen",{title:"fullscreen.desc",onclick:function(){fullscreen.on()}})}if(a.getParam("fullscreen_is_enabled")||!a.getParam("wp_fullscreen_is_enabled")){return}function b(){var j=a.getDoc(),i=tinymce.DOM,k,h;if(tinymce.isWebKit){h=j.body.offsetHeight}else{h=j.body.scrollHeight}k=(h>300)?h:300;if(g!=k){i.setStyle(i.get(a.id+"_ifr"),"height",k+"px");g=k;a.getWin().scrollTo(0,0)}}a.onInit.add(function(i,h){i.onChange.add(b);i.onSetContent.add(b);i.onPaste.add(b);i.onKeyUp.add(b);i.onPostRender.add(b);i.getBody().style.overflowY="hidden"});if(a.getParam("autoresize_on_init",true)){a.onLoadContent.add(function(i,h){setTimeout(function(){b()},1200)})}a.addCommand("wpAutoResize",b)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{resize_timeout:false,init:function(a,c){var d=this,g=0,e={},f=tinymce.DOM;a.addCommand("wpFullScreenClose",function(){if(a.getParam("wp_fullscreen_is_enabled")){f.win.setTimeout(function(){tinyMCE.remove(a);f.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings},10)}});a.addCommand("wpFullScreenSave",function(){var h=tinyMCE.get("wp_mce_fullscreen"),i;h.focus();i=tinyMCE.get(h.getParam("wp_fullscreen_editor_id"));i.setContent(h.getContent({format:"raw"}),{format:"raw"})});a.addCommand("wpFullScreenInit",function(){var j,h,i;a=tinyMCE.activeEditor;j=a.getDoc();h=j.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(a.settings,function(k,l){e[l]=k});e.id="wp_mce_fullscreen";e.wp_fullscreen_is_enabled=true;e.wp_fullscreen_editor_id=a.id;e.theme_advanced_resizing=false;e.theme_advanced_statusbar_location="none";e.content_css=e.content_css?e.content_css+","+e.wp_fullscreen_content_css:e.wp_fullscreen_content_css;e.height=tinymce.isIE?h.scrollHeight:h.offsetHeight;tinymce.each(a.getParam("wp_fullscreen_settings"),function(m,l){e[l]=m});i=new tinymce.Editor("wp_mce_fullscreen",e);i.onInit.add(function(k){var m=tinymce.DOM,l=m.select("a.mceButton",m.get("wp-fullscreen-buttons"));if(!a.isHidden()){k.setContent(a.getContent())}else{k.setContent(switchEditors.wpautop(k.getElement().value))}setTimeout(function(){k.onNodeChange.add(function(o,n,p){tinymce.each(l,function(s){var r,q;if(r=m.get("wp_mce_fullscreen_"+s.id.substr(6))){q=r.className;if(q){s.className=q}}})})},1000);k.dom.addClass(k.getBody(),"wp-fullscreen-editor");k.focus()});i.render();if("undefined"!=fullscreen){i.dom.bind(i.dom.doc,"mousemove",function(k){fullscreen.bounder("showToolbar","hideToolbar",2000,k)})}});a.addCommand("wpFullScreen",function(){if(typeof(fullscreen)=="undefined"){return}if("wp_mce_fullscreen"==a.id){fullscreen.off()}else{fullscreen.on()}});a.addButton("wp_fullscreen",{title:"wordpress.wp_fullscreen_desc",cmd:"wpFullScreen"});if(a.getParam("fullscreen_is_enabled")||!a.getParam("wp_fullscreen_is_enabled")){return}function b(j,l){var k=tinymce.DOM,i=a.getBody(),n=k.get(a.id+"_ifr"),h,m=a.dom.win.scrollY;if(d.resize_timeout){return}d.resize_timeout=true;setTimeout(function(){d.resize_timeout=false},500);h=i.scrollHeight>300?i.scrollHeight:300;if(h!=n.scrollHeight){k.setStyle(n,"height",h+"px");a.getWin().scrollTo(0,0)}if(l&&l.type=="paste"&&tinymce.isWebKit){setTimeout(function(){a.dom.win.scrollTo(0,m)},40)}}a.onInit.add(function(i,h){i.onChange.add(b);i.onSetContent.add(b);i.onPaste.add(b);i.onKeyUp.add(b);i.onPostRender.add(b);i.getBody().style.overflowY="hidden"});if(a.getParam("autoresize_on_init",true)){a.onLoadContent.add(function(i,h){setTimeout(function(){b()},1200)})}a.addCommand("wpAutoResize",b)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})();
\ No newline at end of file
index 9d33795f4991f97ad8dde1ae1434773e51a460de..c1a30759b5567b59a565f60c51039704339b5d13 100644 (file)
@@ -6,6 +6,7 @@
 
 (function() {
        tinymce.create('tinymce.plugins.wpFullscreenPlugin', {
+               resize_timeout: false,
 
                init : function(ed, url) {
                        var t = this, oldHeight = 0, s = {}, DOM = tinymce.DOM;
                                }
                        });
 
+                       ed.addCommand('wpFullScreen', function() {
+                               if ( typeof(fullscreen) == 'undefined' )
+                                       return;
+
+                               if ( 'wp_mce_fullscreen' == ed.id )
+                                       fullscreen.off();
+                               else
+                                       fullscreen.on();
+                       });
+
                        // Register buttons
-                       if ( 'undefined' != fullscreen ) {
-                               ed.addButton('wp_fullscreen', {
-                                       title : 'fullscreen.desc',
-                                       onclick : function(){ fullscreen.on(); }
-                               });
-                       }
+                       ed.addButton('wp_fullscreen', {
+                               title : 'wordpress.wp_fullscreen_desc',
+                               cmd : 'wpFullScreen'
+                       });
 
                        // END fullscreen
 //----------------------------------------------------------------
                        /**
                         * This method gets executed each time the editor needs to resize.
                         */
-                       function resize() {
-                               var d = ed.getDoc(), DOM = tinymce.DOM, resizeHeight, myHeight;
+                       function resize(editor, e) {
+                               var DOM = tinymce.DOM, body = ed.getBody(), ifr = DOM.get(ed.id + '_ifr'), height, y = ed.dom.win.scrollY;
 
-                               // Get height differently depending on the browser used
-                               if ( tinymce.isWebKit )
-                                       myHeight = d.body.offsetHeight;
-                               else
-                                       myHeight = d.body.scrollHeight;
+                               if ( t.resize_timeout )
+                                       return;
+
+                               // sometimes several events are fired few ms apart, trottle down resizing a little
+                               t.resize_timeout = true;
+                               setTimeout(function(){
+                                       t.resize_timeout = false;
+                               }, 500);
 
-                               // Don't make it smaller than 300px
-                               resizeHeight = (myHeight > 300) ? myHeight : 300;
+                               height = body.scrollHeight > 300 ? body.scrollHeight : 300;
+
+                               if ( height != ifr.scrollHeight ) {
+                                       DOM.setStyle(ifr, 'height', height + 'px');
+                                       ed.getWin().scrollTo(0, 0); // iframe window object, make sure there's no scrolling
+                               }
 
-                               // Resize content element
-                               if ( oldHeight != resizeHeight ) {
-                                       DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
-                                       oldHeight = resizeHeight;
-                                       ed.getWin().scrollTo(0,0);
+                               // WebKit scrolls to top on paste...
+                               if ( e && e.type == 'paste' && tinymce.isWebKit ) {
+                                       setTimeout(function(){
+                                               ed.dom.win.scrollTo(0, y);
+                                       }, 40);
                                }
                        };
 
                                ed.getBody().style.overflowY = "hidden";
                        });
 
-                       if (ed.getParam('autoresize_on_init', true)) {
+                       if ( ed.getParam('autoresize_on_init', true) ) {
                                ed.onLoadContent.add(function(ed, l) {
                                        // Because the content area resizes when its content CSS loads,
                                        // and we can't easily add a listener to its onload event,
index d48e5a94929da827b6a8a2dc39251cf03b921a80..6d18b2a0bba06ad5c4bbd90d28f8f3b72b803d13 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_Gallery",function(){var h=a.selection.getNode(),f,e=tinymce.DOM.getViewPort(),g=e.h-80,d=(640<e.w)?640:e.w;if(h.nodeName!="IMG"){return}if(a.dom.getAttrib(h,"class").indexOf("wpGallery")==-1){return}f=tinymce.DOM.get("post_ID").value;tb_show("",tinymce.documentBaseURL+"media-upload.php?post_id="+f+"&tab=gallery&TB_iframe=true&width="+d+"&height="+g);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wpGallery")){d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_gallerybtns");d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_Gallery")});c=d.add("wp_gallerybtns","img",{src:b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(h){var f=tinyMCE.activeEditor,g=f.selection.getNode();if(g.nodeName=="IMG"&&f.dom.hasClass(g,"wpGallery")){f.dom.remove(g);f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c.editor=a;c._createButtons();a.addCommand("WP_Gallery",function(){if(tinymce.isIE){a.selection.moveToBookmark(a.wpGalleryBookmark)}var e=a.selection.getNode(),d=wp.media.gallery,f;if(typeof wp==="undefined"||!wp.media||!wp.media.gallery){return}if(e.nodeName!="IMG"||a.dom.getAttrib(e,"class").indexOf("wpGallery")==-1){return}f=d.edit("["+a.dom.getAttrib(e,"title")+"]");f.state("gallery-edit").on("update",function(g){var h=d.shortcode(g).string().slice(1,-1);a.dom.setAttrib(e,"title",h)})});a.onInit.add(function(d){if("ontouchstart" in window){d.dom.events.add(d.getBody(),"touchstart",function(g){var f=g.target;if(f.nodeName=="IMG"&&d.dom.hasClass(f,"wpGallery")){d.selection.select(f);d.dom.events.cancel(g);d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f,"wp_gallerybtns")}})}});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wpGallery")){d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinymce.activeEditor,d=tinymce.DOM,e,c,f;if(d.get("wp_gallerybtns")){return}f=(window.devicePixelRatio&&window.devicePixelRatio>1)||(window.matchMedia&&window.matchMedia("(min-resolution:130dpi)").matches);d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/edit-2x.png":b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(h){var g=tinymce.activeEditor;g.wpGalleryBookmark=g.selection.getBookmark("simple");g.execCommand("WP_Gallery");g.plugins.wordpress._hideButtons()});c=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/delete-2x.png":b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(i){var g=tinymce.activeEditor,h=g.selection.getNode();if(h.nodeName=="IMG"&&g.dom.hasClass(h,"wpGallery")){g.dom.remove(h);g.execCommand("mceRepaint");g.dom.events.cancel(i)}g.plugins.wordpress._hideButtons()})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
index 9b2d028098e2627460aa1e07f73cb469f08fed2a..99434628e56921cd363238fa5d4fc58764c81db4 100644 (file)
@@ -6,25 +6,55 @@
                        var t = this;
 
                        t.url = url;
+                       t.editor = ed;
                        t._createButtons();
 
                        // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
                        ed.addCommand('WP_Gallery', function() {
-                               var el = ed.selection.getNode(), post_id, vp = tinymce.DOM.getViewPort(),
-                                       H = vp.h - 80, W = ( 640 < vp.w ) ? 640 : vp.w;
+                               if ( tinymce.isIE )
+                                       ed.selection.moveToBookmark( ed.wpGalleryBookmark );
 
-                               if ( el.nodeName != 'IMG' ) return;
-                               if ( ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 ) return;
+                               var el = ed.selection.getNode(),
+                                       gallery = wp.media.gallery,
+                                       frame;
 
-                               post_id = tinymce.DOM.get('post_ID').value;
-                               tb_show('', tinymce.documentBaseURL + 'media-upload.php?post_id='+post_id+'&tab=gallery&TB_iframe=true&width='+W+'&height='+H);
+                               // Check if the `wp.media.gallery` API exists.
+                               if ( typeof wp === 'undefined' || ! wp.media || ! wp.media.gallery )
+                                       return;
 
-                               tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+                               // Make sure we've selected a gallery node.
+                               if ( el.nodeName != 'IMG' || ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 )
+                                       return;
+
+                               frame = gallery.edit( '[' + ed.dom.getAttrib( el, 'title' ) + ']' );
+
+                               frame.state('gallery-edit').on( 'update', function( selection ) {
+                                       var shortcode = gallery.shortcode( selection ).string().slice( 1, -1 );
+                                       ed.dom.setAttrib( el, 'title', shortcode );
+                               });
+                       });
+
+                       ed.onInit.add(function(ed) {
+                               // iOS6 doesn't show the buttons properly on click, show them on 'touchstart'
+                               if ( 'ontouchstart' in window ) {
+                                       ed.dom.events.add(ed.getBody(), 'touchstart', function(e){
+                                               var target = e.target;
+
+                                               if ( target.nodeName == 'IMG' && ed.dom.hasClass(target, 'wpGallery') ) {
+                                                       ed.selection.select(target);
+                                                       ed.dom.events.cancel(e);
+                                                       ed.plugins.wordpress._hideButtons();
+                                                       ed.plugins.wordpress._showButtons(target, 'wp_gallerybtns');
+                                               }
+                                       });
+                               }
                        });
 
                        ed.onMouseDown.add(function(ed, e) {
-                               if ( e.target.nodeName == 'IMG' && ed.dom.hasClass(e.target, 'wpGallery') )
+                               if ( e.target.nodeName == 'IMG' && ed.dom.hasClass(e.target, 'wpGallery') ) {
+                                       ed.plugins.wordpress._hideButtons();
                                        ed.plugins.wordpress._showButtons(e.target, 'wp_gallerybtns');
+                               }
                        });
 
                        ed.onBeforeSetContent.add(function(ed, o) {
                },
 
                _createButtons : function() {
-                       var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, editButton, dellButton;
+                       var t = this, ed = tinymce.activeEditor, DOM = tinymce.DOM, editButton, dellButton, isRetina;
 
-                       DOM.remove('wp_gallerybtns');
+                       if ( DOM.get('wp_gallerybtns') )
+                               return;
+
+                       isRetina = ( window.devicePixelRatio && window.devicePixelRatio > 1 ) || // WebKit, Opera
+                               ( window.matchMedia && window.matchMedia('(min-resolution:130dpi)').matches ); // Firefox, IE10, Opera
 
                        DOM.add(document.body, 'div', {
                                id : 'wp_gallerybtns',
                        });
 
                        editButton = DOM.add('wp_gallerybtns', 'img', {
-                               src : t.url+'/img/edit.png',
+                               src : isRetina ? t.url+'/img/edit-2x.png' : t.url+'/img/edit.png',
                                id : 'wp_editgallery',
                                width : '24',
                                height : '24',
                        });
 
                        tinymce.dom.Event.add(editButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor;
-                               ed.windowManager.bookmark = ed.selection.getBookmark('simple');
+                               var ed = tinymce.activeEditor;
+                               ed.wpGalleryBookmark = ed.selection.getBookmark('simple');
                                ed.execCommand("WP_Gallery");
+                               ed.plugins.wordpress._hideButtons();
                        });
 
                        dellButton = DOM.add('wp_gallerybtns', 'img', {
-                               src : t.url+'/img/delete.png',
+                               src : isRetina ? t.url+'/img/delete-2x.png' : t.url+'/img/delete.png',
                                id : 'wp_delgallery',
                                width : '24',
                                height : '24',
                        });
 
                        tinymce.dom.Event.add(dellButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor, el = ed.selection.getNode();
+                               var ed = tinymce.activeEditor, el = ed.selection.getNode();
 
                                if ( el.nodeName == 'IMG' && ed.dom.hasClass(el, 'wpGallery') ) {
                                        ed.dom.remove(el);
 
                                        ed.execCommand('mceRepaint');
-                                       return false;
+                                       ed.dom.events.cancel(e);
                                }
+
+                               ed.plugins.wordpress._hideButtons();
                        });
                },
 
diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/delete-2x.png b/wp-includes/js/tinymce/plugins/wpgallery/img/delete-2x.png
new file mode 100644 (file)
index 0000000..859d853
Binary files /dev/null and b/wp-includes/js/tinymce/plugins/wpgallery/img/delete-2x.png differ
index d64d8a66ebc7f512f5a44dd30f9ba88b9eb4d81c..fe537f0a707fd66fe481ffa37edbfab312a90ffa 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png and b/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png differ
diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/edit-2x.png b/wp-includes/js/tinymce/plugins/wpgallery/img/edit-2x.png
new file mode 100644 (file)
index 0000000..b43dc23
Binary files /dev/null and b/wp-includes/js/tinymce/plugins/wpgallery/img/edit-2x.png differ
index 41def5115ea5a42785a380a56190c90ba4cbc1c6..793193bf92ae619476cc2fc0840218f3c3ee6c56 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png and b/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png differ
index 49b94aedb468c6a60b884773b4ca9661b2774d5c..4185316c3c581155233eda153cdee70930af5c06 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){var c=true;a.addCommand("WP_Link",function(){if(c){return}a.windowManager.open({id:"wp-link",width:480,height:"auto",wpDialog:true,title:a.getLang("advlink.link_desc")},{plugin_url:b})});a.addButton("link",{title:a.getLang("advanced.link_desc"),cmd:"WP_Link"});a.addShortcut("alt+shift+a",a.getLang("advanced.link_desc"),"WP_Link");a.onNodeChange.add(function(e,d,g,f){c=f&&g.nodeName!="A"})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){var c=true;a.addCommand("WP_Link",function(){if(c){return}a.windowManager.open({id:"wp-link",width:480,height:"auto",wpDialog:true,title:a.getLang("advlink.link_desc")},{plugin_url:b})});a.addButton("link",{title:"advanced.link_desc",cmd:"WP_Link"});a.onNodeChange.add(function(e,d,g,f){c=f&&g.nodeName!="A"})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
index ff1c4ebc29b3da2e3c65f52cfd20ca4fd596ee47..6057f5c90f47e1ead51c4b1a8ebbb32de059fc28 100644 (file)
 
                        // Register example button
                        ed.addButton('link', {
-                               title : ed.getLang('advanced.link_desc'),
+                               title : 'advanced.link_desc',
                                cmd : 'WP_Link'
                        });
 
-                       ed.addShortcut('alt+shift+a', ed.getLang('advanced.link_desc'), 'WP_Link');
-
                        ed.onNodeChange.add(function(ed, cm, n, co) {
                                disabled = co && n.nodeName != 'A';
                        });
@@ -57,4 +55,5 @@
 
        // Register plugin
        tinymce.PluginManager.add('wplink', tinymce.plugins.wpLink);
-})();
\ No newline at end of file
+})();
+
diff --git a/wp-includes/js/tinymce/plugins/wpview/editor_plugin.js b/wp-includes/js/tinymce/plugins/wpview/editor_plugin.js
new file mode 100644 (file)
index 0000000..05533d2
--- /dev/null
@@ -0,0 +1 @@
+(function(){var c=tinymce.VK,a=tinymce.dom.TreeWalker,b;tinymce.create("tinymce.plugins.wpView",{init:function(f,e){var d=this;if(typeof wp==="undefined"||!wp.mce){return}f.onPreInit.add(function(g){g.schema.addValidElements("div[*],span[*]")});f.onBeforeSetContent.add(function(g,h){if(!h.content){return}h.content=wp.mce.view.toViews(h.content)});f.onSetContent.add(function(g,h){wp.mce.view.render(g.getDoc())});f.onInit.add(function(g){g.selection.onBeforeSetContent.add(function(i,l){var h=d.getParentView(i.getNode()),k,j;if(!h){return}if(!h.nextSibling||d.isView(h.nextSibling)){j=g.getDoc().createTextNode("");g.dom.insertAfter(j,h)}else{k=new a(h.nextSibling,h.nextSibling);j=k.next()}i.select(j);i.collapse(true)});g.selection.onSetContent.add(function(h,j){if(!j.context){return}var i=h.getNode();if(!i.innerHTML){return}i.innerHTML=wp.mce.view.toViews(i.innerHTML);wp.mce.view.render(i)})});f.onPostProcess.add(function(g,h){if((!h.get&&!h.save)||!h.content){return}h.content=wp.mce.view.toText(h.content)});f.onNodeChange.addToTop(function(i,g,j,l,k){var h=d.getParentView(j);if(h){d.select(h);return false}else{d.deselect()}});f.onKeyDown.addToTop(function(i,j){var k=j.keyCode,h,g;if(!b){return}h=d.getParentView(i.selection.getNode());if(h!==b){d.deselect();return}if(k===c.DELETE||k===c.BACKSPACE){if((g=wp.mce.view.instance(b))){g.remove();d.deselect()}}if(j.metaKey||j.ctrlKey||(k>=112&&k<=123)){return}j.preventDefault()})},getParentView:function(d){while(d){if(this.isView(d)){return d}d=d.parentNode}},isView:function(d){return(/(?:^|\s)wp-view-wrap(?:\s|$)/).test(d.className)},select:function(d){if(d===b){return}this.deselect();b=d;wp.mce.view.select(b)},deselect:function(){if(b){wp.mce.view.deselect(b)}b=null},getInfo:function(){return{longname:"WordPress Views",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"1.0"}}});tinymce.PluginManager.add("wpview",tinymce.plugins.wpView)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wpview/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wpview/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..f7044c4
--- /dev/null
@@ -0,0 +1,188 @@
+/**
+ * WordPress View plugin.
+ */
+
+(function() {
+       var VK = tinymce.VK,
+               TreeWalker = tinymce.dom.TreeWalker,
+               selected;
+
+       tinymce.create('tinymce.plugins.wpView', {
+               init : function( editor, url ) {
+                       var wpView = this;
+
+                       // Check if the `wp.mce` API exists.
+                       if ( typeof wp === 'undefined' || ! wp.mce )
+                               return;
+
+                       editor.onPreInit.add( function( editor ) {
+                               // Add elements so we can set `contenteditable` to false.
+                               editor.schema.addValidElements('div[*],span[*]');
+                       });
+
+                       // When the editor's content changes, scan the new content for
+                       // matching view patterns, and transform the matches into
+                       // view wrappers. Since the editor's DOM is outdated at this point,
+                       // we'll wait to render the views.
+                       editor.onBeforeSetContent.add( function( editor, o ) {
+                               if ( ! o.content )
+                                       return;
+
+                               o.content = wp.mce.view.toViews( o.content );
+                       });
+
+                       // When the editor's content has been updated and the DOM has been
+                       // processed, render the views in the document.
+                       editor.onSetContent.add( function( editor, o ) {
+                               wp.mce.view.render( editor.getDoc() );
+                       });
+
+                       editor.onInit.add( function( editor ) {
+
+                               // When a view is selected, ensure content that is being pasted
+                               // or inserted is added to a text node (instead of the view).
+                               editor.selection.onBeforeSetContent.add( function( selection, o ) {
+                                       var view = wpView.getParentView( selection.getNode() ),
+                                               walker, target;
+
+                                       // If the selection is not within a view, bail.
+                                       if ( ! view )
+                                               return;
+
+                                       // If there are no additional nodes or the next node is a
+                                       // view, create a text node after the current view.
+                                       if ( ! view.nextSibling || wpView.isView( view.nextSibling ) ) {
+                                               target = editor.getDoc().createTextNode('');
+                                               editor.dom.insertAfter( target, view );
+
+                                       // Otherwise, find the next text node.
+                                       } else {
+                                               walker = new TreeWalker( view.nextSibling, view.nextSibling );
+                                               target = walker.next();
+                                       }
+
+                                       // Select the `target` text node.
+                                       selection.select( target );
+                                       selection.collapse( true );
+                               });
+
+                               // When the selection's content changes, scan any new content
+                               // for matching views and immediately render them.
+                               //
+                               // Runs on paste and on inserting nodes/html.
+                               editor.selection.onSetContent.add( function( selection, o ) {
+                                       if ( ! o.context )
+                                               return;
+
+                                       var node = selection.getNode();
+
+                                       if ( ! node.innerHTML )
+                                               return;
+
+                                       node.innerHTML = wp.mce.view.toViews( node.innerHTML );
+                                       wp.mce.view.render( node );
+                               });
+                       });
+
+                       // When the editor's contents are being accessed as a string,
+                       // transform any views back to their text representations.
+                       editor.onPostProcess.add( function( editor, o ) {
+                               if ( ( ! o.get && ! o.save ) || ! o.content )
+                                       return;
+
+                               o.content = wp.mce.view.toText( o.content );
+                       });
+
+                       // Triggers when the selection is changed.
+                       // Add the event handler to the top of the stack.
+                       editor.onNodeChange.addToTop( function( editor, controlManager, node, collapsed, o ) {
+                               var view = wpView.getParentView( node );
+
+                               // Update the selected view.
+                               if ( view ) {
+                                       wpView.select( view );
+
+                                       // Prevent the selection from propagating to other plugins.
+                                       return false;
+
+                               // If we've clicked off of the selected view, deselect it.
+                               } else {
+                                       wpView.deselect();
+                               }
+                       });
+
+                       editor.onKeyDown.addToTop( function( editor, event ) {
+                               var keyCode = event.keyCode,
+                                       view, instance;
+
+                               // If a view isn't selected, let the event go on its merry way.
+                               if ( ! selected )
+                                       return;
+
+                               // If the caret is not within the selected view, deselect the
+                               // view and bail.
+                               view = wpView.getParentView( editor.selection.getNode() );
+                               if ( view !== selected ) {
+                                       wpView.deselect();
+                                       return;
+                               }
+
+                               // If delete or backspace is pressed, delete the view.
+                               if ( keyCode === VK.DELETE || keyCode === VK.BACKSPACE ) {
+                                       if ( (instance = wp.mce.view.instance( selected )) ) {
+                                               instance.remove();
+                                               wpView.deselect();
+                                       }
+                               }
+
+                               // Let keypresses that involve the command or control keys through.
+                               // Also, let any of the F# keys through.
+                               if ( event.metaKey || event.ctrlKey || ( keyCode >= 112 && keyCode <= 123 ) )
+                                       return;
+
+                               event.preventDefault();
+                       });
+               },
+
+               getParentView : function( node ) {
+                       while ( node ) {
+                               if ( this.isView( node ) )
+                                       return node;
+
+                               node = node.parentNode;
+                       }
+               },
+
+               isView : function( node ) {
+                       return (/(?:^|\s)wp-view-wrap(?:\s|$)/).test( node.className );
+               },
+
+               select : function( view ) {
+                       if ( view === selected )
+                               return;
+
+                       this.deselect();
+                       selected = view;
+                       wp.mce.view.select( selected );
+               },
+
+               deselect : function() {
+                       if ( selected )
+                               wp.mce.view.deselect( selected );
+                       selected = null;
+               },
+
+               getInfo : function() {
+                       return {
+                               longname  : 'WordPress Views',
+                               author    : 'WordPress',
+                               authorurl : 'http://wordpress.org',
+                               infourl   : 'http://wordpress.org',
+                               version   : '1.0'
+                       };
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add( 'wpview', tinymce.plugins.wpView );
+})();
\ No newline at end of file
index d42b15408e0f1c556b2316b496f222bd1b55cd47..c7ff0a4c4ce31a72f6bbda26b57be7d800df94c9 100644 (file)
@@ -2,9 +2,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.about_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/about.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/about.js?ver=358-20121205"></script>
 </head>
 <body id="about" style="display: none">
                <div class="tabs">
index 6546621014d209aa98098acbeeedbb5143c914ea..6571a72d7498fbcffdb1cac173c8c508e1942daa 100644 (file)
@@ -2,8 +2,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.anchor_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/anchor.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/anchor.js?ver=358-20121205"></script>
 </head>
 <body style="display: none" role="application" aria-labelledby="app_title">
 <form onsubmit="AnchorDialog.update();return false;" action="#">
        </table>
 
        <div class="mceActionPanel">
-               <div style="float: left">
-                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-               </div>
-
-               <div style="float: right">
-                       <input type="submit" id="insert" name="insert" value="{#update}" />
-               </div>
+               <input type="submit" id="insert" name="insert" value="{#update}" />
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
        </div>
 </form>
 </body>
index 1a0b34bf2801bc79ce9009c7bcb8308d31683e0b..41bfaf178b5cbbb4856346735059529a2ba88025 100644 (file)
@@ -2,8 +2,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.charmap_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/charmap.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/charmap.js?ver=358-20121205"></script>
 </head>
 <body id="charmap" style="display:none" role="application">
 <table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">
index 08f21720299cdd39dbe340e99bb37195645a7da8..208cdbd365d76bd442c1da97997f575d060c270b 100644 (file)
@@ -2,9 +2,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.colorpicker_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/color_picker.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/color_picker.js?ver=358-20121205"></script>
 </head>
 <body id="colorpicker" style="display: none" role="application" aria-labelledby="app_label">
        <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advanced_dlg.colorpicker_title}</span>
        </div>
 
        <div class="mceActionPanel">
-               <div style="float: left">
-                       <input type="submit" id="insert" name="insert" value="{#apply}" />
-               </div>
-
-               <div id="preview"></div>
-
-               <div id="previewblock">
-                       <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" />
-               </div>
+               <input type="submit" id="insert" name="insert" value="{#apply}" />
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
+               <div id="preview_wrapper"><div id="previewblock"><label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" /></div><span id="preview"></span></div>
        </div>
 </form>
 </body>
index d85b4952ed2db712dd70ab899dbc461396ea369d..4b8d563757108b88cf121e4d72894b33cb12da50 100644 (file)
@@ -1 +1 @@
-(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]&&o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(e.isWebKit){window.focus()}v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i<n.clientWidth){i=n.clientWidth;d.setStyle(o,"width",n.clientWidth)}}if(k&&l.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+j.id+"_size",{cw:i,ch:m})}},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(x,k){var A=this,p,m,r=A.editor,B=A.settings,z,j=r.controlManager,u,l,q=[],y,w;w=j.createToolbarGroup("toolbargroup",{name:r.getLang("advanced.toolbar"),tab_focus_toolbar:r.getParam("theme_advanced_tab_focus_toolbar")});A.toolbarGroup=w;y=B.theme_advanced_toolbar_align.toLowerCase();y="mce"+A._ufirst(y);l=d.add(d.add(x,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+y,role:"presentation"});for(p=1;(z=B["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(B["theme_advanced_buttons"+p+"_add"]){z+=","+B["theme_advanced_buttons"+p+"_add"]}if(B["theme_advanced_buttons"+p+"_add_before"]){z=B["theme_advanced_buttons"+p+"_add_before"]+","+z}A._addControls(z,m);w.add(m);k.deltaHeight-=B.theme_advanced_row_height}q.push(w.renderHTML());q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{},"&#160;")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager,k=j.undoManager;i.setDisabled("undo",!k.hasUndo()&&!k.typing);i.setDisabled("redo",!k.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}r.setActive("visualaid",m.hasVisual);y._updateUndoStatus(m);r.setDisabled("outdent",!m.queryCommandState("Outdent"));C=o("A");if(G=r.get("link")){if(!C||!C.name){G.setDisabled(!C&&q);G.setActive(!!C)}}if(G=r.get("unlink")){G.setDisabled(!C&&q);G.setActive(!!C&&!C.name)}if(G=r.get("anchor")){G.setActive(!q&&!!C&&C.name)}C=o("IMG");if(G=r.get("image")){G.setActive(!q&&!!C&&D.className.indexOf("mceItem")==-1)}if(G=r.get("styleselect")){y._importClasses();j=[];f(G.items,function(n){j.push(n.value)});i=m.formatter.matchAll(j);G.select(i[0])}if(G=r.get("formatselect")){C=o(d.isBlock);if(C){G.select(C.nodeName.toLowerCase())}}o(function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}}if(m.dom.is(p,z.theme_advanced_font_selector)){if(!k&&p.style.fontSize){k=p.style.fontSize}if(!u&&p.style.fontFamily){u=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!B&&p.style.color){B=p.style.color}if(!l&&p.style.backgroundColor){l=p.style.backgroundColor}}return false});if(G=r.get("fontselect")){G.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==u})}if(G=r.get("fontsizeselect")){if(z.theme_advanced_runtime_fontsize&&!k&&!w){k=m.dom.getStyle(D,"fontSize",true)}G.select(function(n){if(n.fontSize&&n.fontSize===k){return true}if(n["class"]&&n["class"]===w){return true}})}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){C=d.get(m.id+"_path")||d.add(m.id+"_path_row","span",{id:m.id+"_path"});if(y.statusKeyboardNavigation){y.statusKeyboardNavigation.destroy();y.statusKeyboardNavigation=null}d.setHTML(C,"");o(function(H){var p=H.nodeName.toLowerCase(),s,v,t="";if(H.nodeType!=1||p==="br"||H.getAttribute("data-mce-bogus")||d.hasClass(H,"mceItemHidden")||d.hasClass(H,"mceItemRemoved")){return}if(e.isIE&&H.scopeName!=="HTML"){p=H.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(H,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(H,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(H,"href")){t+="href: "+x+" "}break;case"font":if(x=d.getAttrib(H,"face")){t+="font: "+x+" "}if(x=d.getAttrib(H,"size")){t+="size: "+x+" "}if(x=d.getAttrib(H,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(H,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(H,"id")){t+="id: "+x+" "}if(x=H.className){x=x.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(x){t+="class: "+x+" ";if(d.isBlock(H)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:H,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(F++)},p);if(C.hasChildNodes()){C.insertBefore(d.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),C.firstChild);C.insertBefore(v,C.firstChild)}else{C.appendChild(v)}},m.getBody());if(d.select("a",C).length>0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
+(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(p,m){var k,l,o=p.dom,j="",n,r;previewStyles=p.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function q(s){return s.replace(/%(\w+)/g,"")}k=m.block||m.inline||"span";l=o.create(k);f(m.styles,function(t,s){t=q(t);if(t){o.setStyle(l,s,t)}});f(m.attributes,function(t,s){t=q(t);if(t){o.setAttrib(l,s,t)}});f(m.classes,function(s){s=q(s);if(!o.hasClass(l,s)){o.addClass(l,s)}});o.setStyles(l,{position:"absolute",left:-65535});p.getBody().appendChild(l);n=o.getStyle(p.getBody(),"fontSize",true);n=/px$/.test(n)?parseInt(n,10):0;f(previewStyles.split(" "),function(s){var t=o.getStyle(l,s,true);if(s=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)){t=o.getStyle(p.getBody(),s,true);if(o.toHex(t).toLowerCase()=="#ffffff"){return}}if(s=="font-size"){if(/em|%$/.test(t)){if(n===0){return}t=parseFloat(t,10)/(/%$/.test(t)?100:1);t=(t*n)+"px"}}j+=s+":"+t+";"});o.remove(l);return j}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);n=k.settings;k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;if(!n.theme_advanced_buttons1){n=c({theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap"},n)}m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"top",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},n);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n);return false});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"toolbar"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true);q.nodeChanged()}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){H.setDisabled((!D&&r)||(D&&!D.href));H.setActive(!!D&&(!D.name&&!D.id))}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name&&!D.id)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&(D.name||(D.id&&!D.href)))}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
index 00b404a3d05c99c9f530996949282ab70f1705d9..84039ce2ac7da95b42a494dba7289250cd3657ed 100644 (file)
 (function(tinymce) {
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
 
+       // Generates a preview for a format
+       function getPreviewCss(ed, fmt) {
+               var name, previewElm, dom = ed.dom, previewCss = '', parentFontSize, previewStylesName;
+
+               previewStyles = ed.settings.preview_styles;
+
+               // No preview forced
+               if (previewStyles === false)
+                       return '';
+
+               // Default preview
+               if (!previewStyles)
+                       previewStyles = 'font-family font-size font-weight text-decoration text-transform color background-color';
+
+               // Removes any variables since these can't be previewed
+               function removeVars(val) {
+                       return val.replace(/%(\w+)/g, '');
+               };
+
+               // Create block/inline element to use for preview
+               name = fmt.block || fmt.inline || 'span';
+               previewElm = dom.create(name);
+
+               // Add format styles to preview element
+               each(fmt.styles, function(value, name) {
+                       value = removeVars(value);
+
+                       if (value)
+                               dom.setStyle(previewElm, name, value);
+               });
+
+               // Add attributes to preview element
+               each(fmt.attributes, function(value, name) {
+                       value = removeVars(value);
+
+                       if (value)
+                               dom.setAttrib(previewElm, name, value);
+               });
+
+               // Add classes to preview element
+               each(fmt.classes, function(value) {
+                       value = removeVars(value);
+
+                       if (!dom.hasClass(previewElm, value))
+                               dom.addClass(previewElm, value);
+               });
+
+               // Add the previewElm outside the visual area
+               dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
+               ed.getBody().appendChild(previewElm);
+
+               // Get parent container font size so we can compute px values out of em/% for older IE:s
+               parentFontSize = dom.getStyle(ed.getBody(), 'fontSize', true);
+               parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
+
+               each(previewStyles.split(' '), function(name) {
+                       var value = dom.getStyle(previewElm, name, true);
+
+                       // If background is transparent then check if the body has a background color we can use
+                       if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+                               value = dom.getStyle(ed.getBody(), name, true);
+
+                               // Ignore white since it's the default color, not the nicest fix
+                               if (dom.toHex(value).toLowerCase() == '#ffffff') {
+                                       return;
+                               }
+                       }
+
+                       // Old IE won't calculate the font size so we need to do that manually
+                       if (name == 'font-size') {
+                               if (/em|%$/.test(value)) {
+                                       if (parentFontSize === 0) {
+                                               return;
+                                       }
+
+                                       // Convert font size from em/% to px
+                                       value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
+                                       value = (value * parentFontSize) + 'px';
+                               }
+                       }
+
+                       previewCss += name + ':' + value + ';';
+               });
+
+               dom.remove(previewElm);
+
+               return previewCss;
+       };
+
        // Tell it to load theme specific language pack(s)
        tinymce.ThemeManager.requireLangPack('advanced');
 
 
                init : function(ed, url) {
                        var t = this, s, v, o;
-       
+
                        t.editor = ed;
                        t.url = url;
                        t.onResolveName = new tinymce.util.Dispatcher(this);
+                       s = ed.settings;
 
                        ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast();
                        ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin;
 
+                       // Setup default buttons
+                       if (!s.theme_advanced_buttons1) {
+                               s = extend({
+                                       theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
+                                       theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
+                                       theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap"
+                               }, s);
+                       }
+
                        // Default settings
                        t.settings = s = extend({
                                theme_advanced_path : true,
-                               theme_advanced_toolbar_location : 'bottom',
-                               theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
-                               theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
-                               theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
+                               theme_advanced_toolbar_location : 'top',
                                theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
-                               theme_advanced_toolbar_align : "center",
+                               theme_advanced_toolbar_align : "left",
+                               theme_advanced_statusbar_location : "bottom",
                                theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
                                theme_advanced_more_colors : 1,
                                theme_advanced_row_height : 23,
                                theme_advanced_font_selector : "span",
                                theme_advanced_show_current_color: 0,
                                readonly : ed.settings.readonly
-                       }, ed.settings);
+                       }, s);
 
                        // Setup default font_size_style_values
                        if (!s.font_size_style_values)
 
                        if (ctrl.getLength() == 0) {
                                each(ed.dom.getClasses(), function(o, idx) {
-                                       var name = 'style_' + idx;
+                                       var name = 'style_' + idx, fmt;
 
-                                       ed.formatter.register(name, {
+                                       fmt = {
                                                inline : 'span',
                                                attributes : {'class' : o['class']},
                                                selector : '*'
-                                       });
+                                       };
+
+                                       ed.formatter.register(name, fmt);
 
-                                       ctrl.add(o['class'], name);
+                                       ctrl.add(o['class'], name, {
+                                               style: function() {
+                                                       return getPreviewCss(ed, fmt);
+                                               }
+                                       });
                                });
                        }
                },
                        ctrl = ctrlMan.createListBox('styleselect', {
                                title : 'advanced.style_select',
                                onselect : function(name) {
-                                       var matches, formatNames = [];
+                                       var matches, formatNames = [], removedFormat;
 
                                        each(ctrl.items, function(item) {
                                                formatNames.push(item.value);
                                        ed.focus();
                                        ed.undoManager.add();
 
-                                       // Toggle off the current format
+                                       // Toggle off the current format(s)
                                        matches = ed.formatter.matchAll(formatNames);
-                                       if (!name || matches[0] == name) {
-                                               if (matches[0]) 
-                                                       ed.formatter.remove(matches[0]);
-                                       } else
+                                       tinymce.each(matches, function(match) {
+                                               if (!name || match == name) {
+                                                       if (match)
+                                                               ed.formatter.remove(match);
+
+                                                       removedFormat = true;
+                                               }
+                                       });
+
+                                       if (!removedFormat)
                                                ed.formatter.apply(name);
 
                                        ed.undoManager.add();
                        });
 
                        // Handle specified format
-                       ed.onInit.add(function() {
+                       ed.onPreInit.add(function() {
                                var counter = 0, formats = ed.getParam('style_formats');
 
                                if (formats) {
                                                if (keys > 1) {
                                                        name = fmt.name = fmt.name || 'style_' + (counter++);
                                                        ed.formatter.register(name, fmt);
-                                                       ctrl.add(fmt.title, name);
+                                                       ctrl.add(fmt.title, name, {
+                                                               style: function() {
+                                                                       return getPreviewCss(ed, fmt);
+                                                               }
+                                                       });
                                                } else
                                                        ctrl.add(fmt.title);
                                        });
                                } else {
                                        each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
-                                               var name;
+                                               var name, fmt;
 
                                                if (val) {
                                                        name = 'style_' + (counter++);
-
-                                                       ed.formatter.register(name, {
+                                                       fmt = {
                                                                inline : 'span',
                                                                classes : val,
                                                                selector : '*'
-                                                       });
+                                                       };
 
-                                                       ctrl.add(t.editor.translate(key), name);
+                                                       ed.formatter.register(name, fmt);
+                                                       ctrl.add(t.editor.translate(key), name, {
+                                                               style: function() {
+                                                                       return getPreviewCss(ed, fmt);
+                                                               }
+                                                       });
                                                }
                                        });
                                }
 
                        if (c) {
                                each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
-                                       c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
+                                       c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v, style: function() {
+                                               return getPreviewCss(t.editor, {block: v});
+                                       }});
                                });
                        }
 
 
                        // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
                        // Maybe actually inherit it from the original textara?
-                       n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+                       n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '') + (ed.settings.directionality == "rtl" ? ' mceRtl' : '')});
                        DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
 
                        if (!DOM.boxModel)
 
                                if (e.nodeName == 'A') {
                                        t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
-
-                                       return Event.cancel(e);
+                                       return false;
                                }
                        });
 /*
                        if (DOM.get(ed.id + '_path_row')) {
                                Event.add(ed.id + '_tbl', 'mouseover', function(e) {
                                        var re;
-       
+
                                        e = e.target;
 
                                        if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
                                        var f = Event.add(ed.id + '_external_close', 'click', function() {
                                                DOM.hide(ed.id + '_external');
                                                Event.remove(ed.id + '_external_close', 'click', f);
+                                               return false;
                                        });
 
                                        DOM.show(e);
                },
 
                _addToolbars : function(c, o) {
-                       var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup;
+                       var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;
 
                        toolbarGroup = cf.createToolbarGroup('toolbargroup', {
                                'name': ed.getLang('advanced.toolbar'),
                        a = s.theme_advanced_toolbar_align.toLowerCase();
                        a = 'mce' + t._ufirst(a);
 
-                       n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"});
+                       n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"toolbar"});
 
                        // Create toolbar and add the controls
                        for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+                               toolbarsExist = true;
                                tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
 
                                if (s['theme_advanced_buttons' + i + '_add'])
 
                                o.deltaHeight -= s.theme_advanced_row_height;
                        }
+                       // Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly
+                       if (!toolbarsExist)
+                               o.deltaHeight -= s.theme_advanced_row_height;
                        h.push(toolbarGroup.renderHTML());
                        h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
                        DOM.setHTML(n, h.join(''));
                        var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
 
                        n = DOM.add(tb, 'tr');
-                       n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); 
+                       n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
                        n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'});
                        if (s.theme_advanced_path) {
                                DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path'));
                        } else {
                                DOM.add(n, 'span', {}, '&#160;');
                        }
-                       
+
 
                        if (s.theme_advanced_resizing) {
                                DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});
                                                        width = startWidth + (e.screenX - startX);
                                                        height = startHeight + (e.screenY - startY);
                                                        t.resizeTo(width, height, true);
+
+                                                       ed.nodeChanged();
                                                };
 
                                                e.preventDefault();
 
                        p = getParent('A');
                        if (c = cm.get('link')) {
-                               if (!p || !p.name) {
-                                       c.setDisabled(!p && co);
-                                       c.setActive(!!p);
-                               }
+                               c.setDisabled((!p && co) || (p && !p.href));
+                               c.setActive(!!p && (!p.name && !p.id));
                        }
 
                        if (c = cm.get('unlink')) {
                                c.setDisabled(!p && co);
-                               c.setActive(!!p && !p.name);
+                               c.setActive(!!p && !p.name && !p.id);
                        }
 
                        if (c = cm.get('anchor')) {
-                               c.setActive(!co && !!p && p.name);
+                               c.setActive(!co && !!p && (p.name || (p.id && !p.href)));
                        }
 
                        p = getParent('IMG');
 
                                matches = ed.formatter.matchAll(formatNames);
                                c.select(matches[0]);
+                               tinymce.each(matches, function(match, index) {
+                                       if (index > 0) {
+                                               c.mark(match);
+                                       }
+                               });
                        }
 
                        if (c = cm.get('formatselect')) {
-                               p = getParent(DOM.isBlock);
+                               p = getParent(ed.dom.isBlock);
 
                                if (p)
                                        c.select(p.nodeName.toLowerCase());
 
                                        if (!fn && n.style.fontFamily)
                                                fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
-                                       
+
                                        if (!fc && n.style.color)
                                                fc = n.style.color;
 
                                                return true;
                                });
                        }
-                       
+
                        if (s.theme_advanced_show_current_color) {
                                function updateColor(controlId, color) {
                                        if (c = cm.get(controlId)) {
                                                return;
 
                                        // Handle prefix
-                                       if (tinymce.isIE && n.scopeName !== 'HTML')
+                                       if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)
                                                na = n.scopeName + ':' + na;
 
                                        // Remove internal prefix
                                                ti += 'id: ' + v + ' ';
 
                                        if (v = n.className) {
-                                               v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')
+                                               v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '');
 
                                                if (v) {
                                                        ti += 'class: ' + v + ' ';
 
-                                                       if (DOM.isBlock(n) || na == 'img' || na == 'span')
+                                                       if (ed.dom.isBlock(n) || na == 'img' || na == 'span')
                                                                na += '.' + v;
                                                }
                                        }
                        var ed = this.editor;
 
                        // Internal image object like a flash placeholder
-                       if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+                       if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)
                                return;
 
                        ed.windowManager.open({
index bb0ba653563b50784ec57785e189246a75e51e8b..1a3d72e2581a91ce4ff9dfd9fe66b0fa7f6e8211 100644 (file)
@@ -2,10 +2,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.image_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/image.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/image.js?ver=358-20121205"></script>
 </head>
 <body id="image" style="display: none">
 <form onsubmit="ImageDialog.update();return false;" action="#">
        </div>
 
        <div class="mceActionPanel">
-               <div style="float: left">
-                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-               </div>
-
-               <div style="float: right">
-                       <input type="submit" id="insert" name="insert" value="{#insert}" />
-               </div>
+               <input type="submit" id="insert" name="insert" value="{#insert}" />
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
        </div>
 </form>
 </body>
index 8a396e03fa7ec20c3bec606bb7d2d1c77deec5d7..1af3e3e6c567109ca250cb3dceb24fb320144649 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png and b/wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png differ
index 641a9e3d314f4ea051692a2274aeb281456f5df9..ca222490188b939d695f5ff8823c42c0394c65f7 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/img/icons.gif and b/wp-includes/js/tinymce/themes/advanced/img/icons.gif differ
index b6c5b695c5a11f24f58d4afecb8f843dac48f05b..a3a018635bc8373c9f4630a5b1fbbb3f3d48f379 100644 (file)
@@ -6,7 +6,7 @@ var AnchorDialog = {
 
                this.editor = ed;
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
-               v = ed.dom.getAttrib(elm, 'name');
+               v = ed.dom.getAttrib(elm, 'name') || ed.dom.getAttrib(elm, 'id');
 
                if (v) {
                        this.action = 'update';
@@ -17,7 +17,7 @@ var AnchorDialog = {
        },
 
        update : function() {
-               var ed = this.editor, elm, name = document.forms[0].anchorName.value;
+               var ed = this.editor, elm, name = document.forms[0].anchorName.value, attribName;
 
                if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {
                        tinyMCEPopup.alert('advanced_dlg.anchor_invalid');
@@ -29,12 +29,25 @@ var AnchorDialog = {
                if (this.action != 'update')
                        ed.selection.collapse(1);
 
+               var aRule = ed.schema.getElementRule('a');
+               if (!aRule || aRule.attributes.name) {
+                       attribName = 'name';
+               } else {
+                       attribName = 'id';
+               }
+
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
                if (elm) {
-                       elm.setAttribute('name', name);
-                       elm.name = name;
-               } else
-                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
+                       elm.setAttribute(attribName, name);
+                       elm[attribName] = name;
+                       ed.undoManager.add();
+               } else {
+                       // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it
+                       var attrs =  {'class' : 'mceItemAnchor'};
+                       attrs[attribName] = name;
+                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', attrs, '\uFEFF'));
+                       ed.nodeChanged();
+               }
 
                tinyMCEPopup.close();
        }
index 3cbf32c4f2fcff1ab7b7463dd20b732fa7213d62..cc891c17118d80462a1bb18a8db37cdb13535b04 100644 (file)
@@ -77,7 +77,7 @@ function init() {
                if (col)
                        updateLight(col.r, col.g, col.b);
        }
-       
+
        for (key in named) {
                value = named[key];
                namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();
@@ -93,40 +93,56 @@ function toHexColor(color) {
                return value.length > 1 ? value : '0' + value; // Padd with leading zero
        };
 
-       color = color.replace(/[\s#]+/g, '').toLowerCase();
+       color = tinymce.trim(color);
+       color = color.replace(/^[#]/, '').toLowerCase();  // remove leading '#'
        color = namedLookup[color] || color;
-       matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})|([a-f0-9])([a-f0-9])([a-f0-9])$/.exec(color);
+
+       matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color);
 
        if (matches) {
-               if (matches[1]) {
-                       red = toInt(matches[1]);
-                       green = toInt(matches[2]);
-                       blue = toInt(matches[3]);
-               } else if (matches[4]) {
-                       red = toInt(matches[4], 16);
-                       green = toInt(matches[5], 16);
-                       blue = toInt(matches[6], 16);
-               } else if (matches[7]) {
-                       red = toInt(matches[7] + matches[7], 16);
-                       green = toInt(matches[8] + matches[8], 16);
-                       blue = toInt(matches[9] + matches[9], 16);
+               red   = toInt(matches[1]);
+               green = toInt(matches[2]);
+               blue  = toInt(matches[3]);
+       } else {
+               matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color);
+
+               if (matches) {
+                       red   = toInt(matches[1], 16);
+                       green = toInt(matches[2], 16);
+                       blue  = toInt(matches[3], 16);
+               } else {
+                       matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color);
+
+                       if (matches) {
+                               red   = toInt(matches[1] + matches[1], 16);
+                               green = toInt(matches[2] + matches[2], 16);
+                               blue  = toInt(matches[3] + matches[3], 16);
+                       } else {
+                               return '';
+                       }
                }
-
-               return '#' + hex(red) + hex(green) + hex(blue);
        }
 
-       return '';
+       return '#' + hex(red) + hex(green) + hex(blue);
 }
 
 function insertAction() {
        var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
 
-       tinyMCEPopup.restoreSelection();
+       var hexColor = toHexColor(color);
 
-       if (f)
-               f(toHexColor(color));
+       if (hexColor === '') {
+               var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value');
+               tinyMCEPopup.alert(text + ': ' + color);
+       }
+       else {
+               tinyMCEPopup.restoreSelection();
+
+               if (f)
+                       f(hexColor);
 
-       tinyMCEPopup.close();
+               tinyMCEPopup.close();
+       }
 }
 
 function showColor(color, name) {
index 313ca5d17fd827acdf1be0b05ca6a456152259b8..3f93e2d3218b0c239e489336be1c335c0d320d21 100644 (file)
@@ -104,10 +104,12 @@ var ImageDialog = {
        },
 
        updateStyle : function() {
-               var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
+               var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];
 
                if (tinyMCEPopup.editor.settings.inline_styles) {
-                       st = tinyMCEPopup.dom.parseStyle(this.styleVal);
+                       tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {
+                               st[key] = value;
+                       });
 
                        // Handle align
                        v = getSelectValue(f, 'align');
index e67d868a2b4bde9250079bfca077ffefc2f3fc7b..b08b2ba9c29bd10d480c632f3b29f4c609af57f4 100644 (file)
@@ -68,10 +68,16 @@ var LinkDialog = {
                } else {
                        ed.dom.setAttribs(e, {
                                href : href,
-                               title : f.linktitle.value,
-                               target : f.target_list ? getSelectValue(f, "target_list") : null,
-                               'class' : f.class_list ? getSelectValue(f, "class_list") : null
+                               title : f.linktitle.value
                        });
+       
+                       if (f.target_list) {
+                               ed.dom.setAttrib(e, 'target', getSelectValue(f, "target_list"));
+                       }
+
+                       if (f.class_list) {
+                               ed.dom.setAttrib(e, 'class', getSelectValue(f, "class_list"));
+                       }
                }
 
                // Don't move caret if selection was image
index 9cf6b1a29cdafc3e47cb26b2daaed66a38cc231b..d4179371a025c6cc8703b0e109f3900ad4ac2435 100644 (file)
@@ -16,7 +16,7 @@ function onLoadInit() {
        document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
 
        if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
-               setWrap('soft');
+               turnWrapOn();
                document.getElementById('wraped').checked = true;
        }
 
@@ -37,11 +37,33 @@ function setWrap(val) {
        }
 }
 
-function toggleWordWrap(elm) {
-       if (elm.checked)
-               setWrap('soft');
-       else
+function setWhiteSpaceCss(value) {
+       var el = document.getElementById('htmlSource');
+       tinymce.DOM.setStyle(el, 'white-space', value);
+}
+
+function turnWrapOff() {
+       if (tinymce.isWebKit) {
+               setWhiteSpaceCss('pre');
+       } else {
                setWrap('off');
+       }
+}
+
+function turnWrapOn() {
+       if (tinymce.isWebKit) {
+               setWhiteSpaceCss('pre-wrap');
+       } else {
+               setWrap('soft');
+       }
+}
+
+function toggleWordWrap(elm) {
+       if (elm.checked) {
+               turnWrapOn();
+       } else {
+               turnWrapOff();
+       }
 }
 
 function resizeInputs() {
index 008e8ad3e6581d196b6794e6f139353f0f93cfaa..0180002be1ae59f877987fa8f58c422ca9a5aabd 100644 (file)
@@ -2,11 +2,11 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.link_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="../../utils/validate.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/link.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="../../utils/validate.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/link.js?ver=358-20121205"></script>
 </head>
 <body id="link" style="display: none">
 <form onsubmit="LinkDialog.update();return false;" action="#">
        </div>
 
        <div class="mceActionPanel">
-               <div style="float: left">
-                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-               </div>
-
-               <div style="float: right">
-                       <input type="submit" id="insert" name="insert" value="{#insert}" />
-               </div>
+               <input type="submit" id="insert" name="insert" value="{#insert}" />
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
        </div>
 </form>
 </body>
index 81cefe5736c0c4158d2ac8e2ab397c83e58a6611..781801e058ccf5b8018910baad9317f7f771cd50 100644 (file)
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
                <title>{#advanced_dlg.accessibility_help}</title>
-               <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+               <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
                <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>
        </head>
        <body id="content">
index 1f5598c694fb6928835cbfe883039d30601d4c98..8950ba3851b0f1bc3ea2d0ea0d299c8dbc28de3e 100644 (file)
@@ -105,11 +105,12 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}
 #plugintable {width:96%; margin-top:10px;}
 #pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
 #colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
 #colorpicker .panel_wrapper div.current {height:175px;}
 #colorpicker #namedcolors {width:150px;}
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
index ab2204d9ee742668bc1ce1a4f216ba3db2dc5798..2e8c658891041ce85d5e388b33537c34820051b8 100644 (file)
@@ -83,7 +83,7 @@
 .defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
 
 /* Menu */
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8; direction:ltr}
 .defaultSkin .mceNoIcons span.mceIcon {width:0;}
 .defaultSkin .mceNoIcons a .mceText {padding-left:10px}
 .defaultSkin .mceMenu table {background:#FFF}
 .defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
 .defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
 
+/* Rtl */
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
+.mceRtl .mceMenuItem .mceText {text-align: right}
+
 /* Formats */
 .defaultSkin .mce_formatPreview a {font-size:10px}
 .defaultSkin .mce_p span.mceText {}
 .defaultSkin span.mce_pagebreak {background-position:0 -40px}
 .defaultSkin span.mce_restoredraft {background-position:-20px -40px}
 .defaultSkin span.mce_spellchecker {background-position:-540px -20px}
+.defaultSkin span.mce_visualblocks {background-position: -40px -40px}
index dafcd280534e55da467704e96c54699f18b41375..fa3c31a05dcfbd339797eb7046bb81bbd0975c27 100644 (file)
@@ -94,11 +94,12 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}
 #plugintable {width:96%; margin-top:10px;}
 #pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
 #colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
 #colorpicker .panel_wrapper div.current {height:175px;}
 #colorpicker #namedcolors {width:150px;}
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
index 81da151f6ef1b1b755a0c30aa196a6c85fd652c6..86829c59c17c2114e50e5f641d1563a77e4e6b28 100644 (file)
@@ -58,7 +58,7 @@
 
 /* Menu */
 .highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
-.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; }
+.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}
 .highcontrastSkin .mceMenu table {background:white; color: black}
 .highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
 .highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
 .highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
 .highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
 
+/* Rtl */
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
+.mceRtl .mceMenuItem .mceText {text-align: right}
+
 /* Formats */
 .highcontrastSkin .mce_p span.mceText {}
 .highcontrastSkin .mce_address span.mceText {font-style:italic}
index c97d38e8f96f70c60ce2e10b16de344e4dc6034f..84d2fe9722355bacbcf2dfeb5fb96db101978af3 100644 (file)
@@ -105,11 +105,12 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}
 #plugintable {width:96%; margin-top:10px;}
 #pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
 #colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
 #colorpicker .panel_wrapper div.current {height:175px;}
 #colorpicker #namedcolors {width:150px;}
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
index c0156d2ce9f7a485c8ea3745794071b45678bd9b..abd5d8deba859b49a9d0a94bb8266cbe0a58e933 100644 (file)
@@ -86,7 +86,7 @@
 .o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
 
 /* Menu */
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}
 .o2k7Skin .mceNoIcons span.mceIcon {width:0;}
 .o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
 .o2k7Skin .mceMenu table {background:#FFF}
 .o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
 .o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
 
+/* Rtl */
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
+.mceRtl .mceMenuItem .mceText {text-align: right}
+
 /* Formats */
 .o2k7Skin .mce_formatPreview a {font-size:10px}
 .o2k7Skin .mce_p span.mceText {}
 .o2k7Skin span.mce_pagebreak {background-position:0 -40px}
 .o2k7Skin span.mce_restoredraft {background-position:-20px -40px}
 .o2k7Skin span.mce_spellchecker {background-position:-540px -20px}
+.o2k7Skin span.mce_visualblocks {background-position: -40px -40px}
index 23fef64c9a4326f02a3e4953120f451b098ea5fa..598eadf2448d04fec78a0e5f849dbdb36879bf6d 100644 (file)
@@ -43,7 +43,6 @@ body {
        line-height: 19px;
        color: #333;
        margin: 10px;
-       min-height: 100%;
 }
 
 br[data-mce-bogus] {
@@ -141,4 +140,3 @@ img.wp-oembed {
        width: 300px;
        height: 250px;
 }
-
index fe48d85728ff0337f0fb592bb265930c7c183330..6eaf010a3a864368c02813bae7ce934dd9daf4fb 100644 (file)
@@ -14,6 +14,7 @@ a:hover {color:#2B6FB6;}
 .nowrap {white-space: nowrap}
 
 /* Forms */
+form {margin: 0;}
 fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;}
 legend {color:#2B6FB6; font-weight:bold;}
 label.msg {display:none;}
@@ -27,7 +28,12 @@ input.checkbox {border:1px none #000000; background:transparent; vertical-align:
 .input_noborder {border:0;}
 
 /* Buttons */
-#insert, #cancel, #apply, .mceActionPanel .button, input.mceButton, .updateButton {
+#insert,
+#cancel,
+#apply,
+.mceActionPanel .button,
+input.mceButton,
+.updateButton {
        border: 1px solid #bbb; 
        margin:0; 
        padding:0 0 1px;
@@ -39,19 +45,29 @@ input.checkbox {border:1px none #000000; background:transparent; vertical-align:
        cursor:pointer;
        -webkit-border-radius: 3px;
        border-radius: 3px;
-       background-color: #eee; /* Fallback */
-       background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */
+       background-color: #eee;
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff));
+       background-image: -webkit-linear-gradient(bottom, #ddd, #fff);
+       background-image: -moz-linear-gradient(bottom, #ddd, #fff);
+       background-image: -o-linear-gradient(bottom, #ddd, #fff);
+       background-image: linear-gradient(to top, #ddd, #fff);
 }
-#insert:hover, #cancel:hover, input.mceButton:hover, .updateButton:hover,
-#insert:focus, #cancel:focus, input.mceButton:focus, .updateButton:focus {
+
+#insert:hover,
+#cancel:hover,
+input.mceButton:hover,
+.updateButton:hover,
+#insert:focus,
+#cancel:focus,
+input.mceButton:focus,
+.updateButton:focus {
        border: 1px solid #555;
 }
 
+.mceActionPanel #insert {
+       float: right;
+}
+
 /* Browse */
 a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
 .mceOldBoxModel a.browse span {width:22px; height:20px;}
@@ -62,6 +78,7 @@ a.pickcolor span {display:block; width:20px; height:16px; background:url(../../i
 .mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
 a.pickcolor:hover span {background-color:#B2BBD0;}
 a.pickcolor, a.browse {text-decoration:none}
+div.iframecontainer {background: #fff;}
 
 /* Charmap */
 table.charmap {border:1px solid #AAA; text-align:center}
@@ -109,11 +126,13 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}
 #plugintable {width:96%; margin-top:10px;}
 #pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper {text-align:center; padding-top:4px; white-space: nowrap; float: right;}
+#colorpicker #insert, #colorpicker #cancel {width: 90px}
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
 #colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
 #colorpicker .panel_wrapper div.current {height:175px;}
 #colorpicker #namedcolors {width:150px;}
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
index 173401ba5f118eab4be853d9fffc15c5bf88e677..09d71ede108dddb40910cfa83327c3c9913f3a0d 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/embedded.png and b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/embedded.png differ
index 803ad630c015d80b318f7b2144aba0b583efc1b6..e8c39fc889b58247fc1b89ecc4ab6e00a48f0ac2 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/gallery.png and b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/gallery.png differ
index 9ea3565692f721dea7425f0050d27e299e869be9..a7fa1b2f04b25ee164bc248a6ccac8d20048c1d3 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/page_bug.gif and b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/page_bug.gif differ
index ce4be63558b02e9837b995d2b9dd540ce6d61a6f..06812cb4109b0b236b9659c570458842e39c6416 100644 (file)
Binary files a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif and b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif differ
diff --git a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css
deleted file mode 100644 (file)
index 2097708..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* not used, included for back-compat, see wp-includes/css/editor-buttons.css */
-@import url("../../../../../../css/editor-buttons.css?ver=20111114");
index a2d3f1ae02e78f57782dc02304767a642779fa8b..5548c693e89d2ac8aa79cbeea88e86784fa33f2b 100644 (file)
@@ -1,10 +1,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.code_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
-       <script type="text/javascript" src="js/source_editor.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=358-20121205"></script>
+       <script type="text/javascript" src="js/source_editor.js?ver=358-20121205"></script>
 </head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;" spellcheck="false">
        <form name="source" onsubmit="saveContent();return false;" action="#">
                <div style="float: left" class="title"><label for="htmlSource">{#advanced_dlg.code_title}</label></div>
 
                <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
 
                <div class="mceActionPanel">
-                       <div style="float: left">
-                               <input type="button" role="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
-                       </div>
-
-                       <div style="float: right">
-                               <input type="submit" role="button" name="insert" value="{#update}" id="insert" />
-                       </div>
+                       <input type="submit" role="button" name="insert" value="{#update}" id="insert" />
+                       <input type="button" role="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
                </div>
        </form>
 </body>
index 38069d1974b794bd79235a45d86814cff98aae0c..44d9fd902df2961527d334042109fca7a332a216 100644 (file)
@@ -1 +1 @@
-(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"4.9",releaseDate:"2012-02-23",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){if(r=f[m].href){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==e}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==e){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];b.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];b.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(k,j){var h,g,f=arguments;for(h=1,g=f.length;h<g;h++){j=f[h];b.each(j,function(i,l){if(i!==e){k[l]=i}})}return k},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}b.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}b.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this;j={func:j,scope:i||this};if(!h.unloads){function g(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(d.detachEvent){d.detachEvent("onbeforeunload",k);d.detachEvent("onunload",g)}else{if(d.removeEventListener){d.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(d.CollectGarbage){CollectGarbage()}}}function k(){var l=document;if(l.readyState=="interactive"){function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l){l.attachEvent("onstop",f)}d.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}if(d.attachEvent){d.attachEvent("onunload",g);d.attachEvent("onbeforeunload",k)}else{if(d.addEventListener){d.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;b.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){return f?b.map(f.split(g||","),b.trim):f},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(c){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===e){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};b._init();d.tinymce=d.tinyMCE=b})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d.length>0?d:[g.scope]);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){if(o.hasOwnProperty(i)){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={DELETE:46,BACKSPACE:8,ENTER:13,TAB:9,SPACEBAR:32,UP:38,DOWN:40,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey}}})(tinymce);(function(l){var j=l.VK,k=j.BACKSPACE,h=j.DELETE;function c(n){var p=n.dom,o=n.selection;n.onKeyDown.add(function(r,v){var q,x,t,u,s;s=v.keyCode==h;if((s||v.keyCode==k)&&!j.modifierPressed(v)){v.preventDefault();q=o.getRng();x=p.getParent(q.startContainer,p.isBlock);if(s){x=p.getNext(x,p.isBlock)}if(x){t=x.firstChild;while(t&&t.nodeType==3&&t.nodeValue.length==0){t=t.nextSibling}if(t&&t.nodeName==="SPAN"){u=t.cloneNode(false)}}r.getDoc().execCommand(s?"ForwardDelete":"Delete",false,null);x=p.getParent(q.startContainer,p.isBlock);l.each(p.select("span.Apple-style-span,font.Apple-style-span",x),function(y){var z=o.getBookmark();if(u){p.replace(u.cloneNode(false),y,true)}else{p.remove(y,true)}o.moveToBookmark(z)})}})}function d(n){function o(r){var q=n.dom.create("body");var s=r.cloneContents();q.appendChild(s);return n.selection.serializer.serialize(q,{format:"html"})}function p(q){var s=o(q);var t=n.dom.createRng();t.selectNode(n.getBody());var r=o(t);return s===r}n.onKeyDown.addToTop(function(r,t){var s=t.keyCode;if(s==h||s==k){var q=r.selection.getRng(true);if(!q.collapsed&&p(q)){r.setContent("",{format:"raw"});r.nodeChanged();t.preventDefault()}}})}function b(n){n.dom.bind(n.getDoc(),"focusin",function(){n.selection.setRng(n.selection.getRng())})}function e(n){n.onKeyDown.add(function(o,r){if(r.keyCode===k){if(o.selection.isCollapsed()&&o.selection.getRng(true).startOffset===0){var q=o.selection.getNode();var p=q.previousSibling;if(p&&p.nodeName&&p.nodeName.toLowerCase()==="hr"){o.dom.remove(p);l.dom.Event.cancel(r)}}}})}function g(n){if(!Range.prototype.getClientRects){n.onMouseDown.add(function(p,q){if(q.target.nodeName==="HTML"){var o=p.getBody();o.blur();setTimeout(function(){o.focus()},0)}})}}function f(n){n.onClick.add(function(o,p){p=p.target;if(/^(IMG|HR)$/.test(p.nodeName)){o.selection.getSel().setBaseAndExtent(p,0,p,1)}if(p.nodeName=="A"&&o.dom.hasClass(p,"mceItemAnchor")){o.selection.select(p)}o.nodeChanged()})}function i(n){n.onKeyDown.add(function(o,p){function q(r){var s=r.selection.getNode();var t="h1,h2,h3,h4,h5,h6";return r.dom.is(s,t)||r.dom.getParent(s,t)!==null}if(p.keyCode===j.ENTER&&!j.modifierPressed(p)&&q(o)){setTimeout(function(){var r=o.selection.getNode();if(o.dom.is(r,"p")){o.dom.setAttrib(r,"style",null);o.execCommand("mceCleanup")}},0)}})}function m(n){var p,o;n.dom.bind(n.getDoc(),"selectionchange",function(){if(o){clearTimeout(o);o=0}o=window.setTimeout(function(){var q=n.selection.getRng();if(!p||!l.dom.RangeUtils.compareRanges(q,p)){n.nodeChanged();p=q}},50)})}function a(n){document.body.setAttribute("role","application")}l.create("tinymce.util.Quirks",{Quirks:function(n){if(l.isWebKit){c(n);d(n);b(n);f(n);if(l.isIDevice){m(n)}}if(l.isIE){e(n);d(n);a(n);i(n)}if(l.isGecko){e(n);g(n)}}})})(tinymce);(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/\uFEFF[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:\uFEFF]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(m){var h={},j,l,g,f,c={},b,e,d=m.makeMap,k=m.each;function i(o,n){return o.split(n||",")}function a(r,q){var o,p={};function n(s){return s.replace(/[A-Z]+/g,function(t){return n(r[t])})}for(o in r){if(r.hasOwnProperty(o)){r[o]=n(r[o])}}n(q).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(v,t,s,u){s=i(s,"|");p[t]={attributes:d(s),attributesOrder:s,children:d(u,"|",{"#comment":{}})}});return p}l="h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,noscript,menu,isindex,samp,header,footer,article,section,hgroup,aside,audio,canvas,figcaption,figure,nav,output,video";l=d(l,",",d(l.toUpperCase()));h=a({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]");j=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,autoplay,loop,controls");g=d("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source");f=m.extend(d("td,th,iframe,video,audio,object"),g);b=d("pre,script,style,textarea");e=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");m.html.Schema=function(r){var A=this,n={},o={},y=[],q,p;r=r||{};if(r.verify_html===false){r.valid_elements="*[*]"}if(r.valid_styles){q={};k(r.valid_styles,function(C,B){q[B]=m.explode(C)})}p=r.whitespace_elements?d(r.whitespace_elements):b;function z(B){return new RegExp("^"+B.replace(/([?+*])/g,".$1")+"$")}function t(I){var H,D,W,S,X,C,F,R,U,N,V,Z,L,G,T,B,P,E,Y,aa,M,Q,K=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,O=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,J=/[*?+]/;if(I){I=i(I);if(n["@"]){P=n["@"].attributes;E=n["@"].attributesOrder}for(H=0,D=I.length;H<D;H++){C=K.exec(I[H]);if(C){T=C[1];N=C[2];B=C[3];U=C[4];L={};G=[];F={attributes:L,attributesOrder:G};if(T==="#"){F.paddEmpty=true}if(T==="-"){F.removeEmpty=true}if(P){for(aa in P){L[aa]=P[aa]}G.push.apply(G,E)}if(U){U=i(U,"|");for(W=0,S=U.length;W<S;W++){C=O.exec(U[W]);if(C){R={};Z=C[1];V=C[2].replace(/::/g,":");T=C[3];Q=C[4];if(Z==="!"){F.attributesRequired=F.attributesRequired||[];F.attributesRequired.push(V);R.required=true}if(Z==="-"){delete L[V];G.splice(m.inArray(G,V),1);continue}if(T){if(T==="="){F.attributesDefault=F.attributesDefault||[];F.attributesDefault.push({name:V,value:Q});R.defaultValue=Q}if(T===":"){F.attributesForced=F.attributesForced||[];F.attributesForced.push({name:V,value:Q});R.forcedValue=Q}if(T==="<"){R.validValues=d(Q,"?")}}if(J.test(V)){F.attributePatterns=F.attributePatterns||[];R.pattern=z(V);F.attributePatterns.push(R)}else{if(!L[V]){G.push(V)}L[V]=R}}}}if(!P&&N=="@"){P=L;E=G}if(B){F.outputName=N;n[B]=F}if(J.test(N)){F.pattern=z(N);y.push(F)}else{n[N]=F}}}}}function v(B){n={};y=[];t(B);k(h,function(D,C){o[C]=D.children})}function s(C){var B=/^(~)?(.+)$/;if(C){k(i(C),function(G){var E=B.exec(G),F=E[1]==="~",H=F?"span":"div",D=E[2];o[D]=o[H];c[D]=H;if(!F){l[D]={}}k(o,function(I,J){if(I[H]){I[D]=I[H]}})})}}function u(C){var B=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(C){k(i(C),function(G){var F=B.exec(G),D,E;if(F){E=F[1];if(E){D=o[F[2]]}else{D=o[F[2]]={"#comment":{}}}D=o[F[2]];k(i(F[3],"|"),function(H){if(E==="-"){delete D[H]}else{D[H]={}}})}})}}function x(B){var D=n[B],C;if(D){return D}C=y.length;while(C--){D=y[C];if(D.pattern.test(B)){return D}}}if(!r.valid_elements){k(h,function(C,B){n[B]={attributes:C.attributes,attributesOrder:C.attributesOrder};o[B]=C.children});k(i("strong/b,em/i"),function(B){B=i(B,"/");n[B[1]].outputName=B[0]});n.img.attributesDefault=[{name:"alt",value:""}];k(i("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr"),function(B){n[B].removeEmpty=true});k(i("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(B){n[B].paddEmpty=true})}else{v(r.valid_elements)}s(r.custom_elements);u(r.valid_children);t(r.extended_valid_elements);u("+ol[ul|ol],+ul[ul|ol]");if(!x("span")){t("span[!data-mce-type|*]")}if(r.invalid_elements){m.each(m.explode(r.invalid_elements),function(B){if(n[B]){delete n[B]}})}A.children=o;A.styles=q;A.getBoolAttrs=function(){return j};A.getBlockElements=function(){return l};A.getShortEndedElements=function(){return g};A.getSelfClosingElements=function(){return e};A.getNonEmptyElements=function(){return f};A.getWhiteSpaceElements=function(){return p};A.isValidChild=function(B,D){var C=o[B];return !!(C&&C[D])};A.getElementRule=x;A.getCustomElements=function(){return c};A.addValidElements=t;A.setValidElements=v;A.addCustomElements=s;A.addValidChildren=u};m.html.Schema.boolAttrMap=j;m.html.Schema.blockElementsMap=l})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(D){var n=this,g,F=0,H,A,z=[],M,P,B,q,y,r,L,G,N,u,m,k,s,Q,o,O,E,R,K,f,I,l,C,J,h,v=0,j=a.html.Entities.decode,x,p;function t(S){var U,T;U=z.length;while(U--){if(z[U].name===S){break}}if(U>=0){for(T=z.length-1;T>=U;T--){S=z[T];if(S.valid){n.end(S.name)}}z.length=U}}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([^\\s\\/<>]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/)>))","g");C=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;J={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};L=e.getShortEndedElements();I=e.getSelfClosingElements();G=e.getBoolAttrs();u=c.validate;r=c.remove_internals;x=c.fix_self_closing;p=a.isIE;o=/^:/;while(g=l.exec(D)){if(F<g.index){n.text(j(D.substr(F,g.index-F)))}if(H=g[6]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}t(H)}else{if(H=g[7]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}N=H in L;if(x&&I[H]&&z.length>0&&z[z.length-1].name===H){t(H)}if(!u||(m=e.getElementRule(H))){k=true;if(u){O=m.attributes;E=m.attributePatterns}if(Q=g[8]){y=Q.indexOf("data-mce-type")!==-1;if(y&&r){k=false}M=[];M.map={};Q.replace(C,function(T,S,X,W,V){var Y,U;S=S.toLowerCase();X=S in G?S:j(X||W||V||"");if(u&&!y&&S.indexOf("data-")!==0){Y=O[S];if(!Y&&E){U=E.length;while(U--){Y=E[U];if(Y.pattern.test(S)){break}}if(U===-1){Y=null}}if(!Y){return}if(Y.validValues&&!(X in Y.validValues)){return}}M.map[S]=X;M.push({name:S,value:X})})}else{M=[];M.map={}}if(u&&!y){R=m.attributesRequired;K=m.attributesDefault;f=m.attributesForced;if(f){P=f.length;while(P--){s=f[P];q=s.name;h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}if(K){P=K.length;while(P--){s=K[P];q=s.name;if(!(q in M.map)){h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}}if(R){P=R.length;while(P--){if(R[P] in M.map){break}}if(P===-1){k=false}}if(M.map["data-mce-bogus"]){k=false}}if(k){n.start(H,M,N)}}else{k=false}if(A=J[H]){A.lastIndex=F=g.index+g[0].length;if(g=A.exec(D)){if(k){B=D.substr(F,g.index-F)}F=g.index+g[0].length}else{B=D.substr(F);F=D.length}if(k&&B.length>0){n.text(B,true)}if(k){n.end(H)}l.lastIndex=F;continue}if(!N){if(!Q||Q.indexOf("/")!=Q.length-1){z.push({name:H,valid:k})}else{if(k){n.end(H)}}}}else{if(H=g[1]){n.comment(H)}else{if(H=g[2]){n.cdata(H)}else{if(H=g[3]){n.doctype(H)}else{if(H=g[4]){n.pi(H,g[5])}}}}}}F=g.index+g[0].length}if(F<D.length){n.text(j(D.substr(F)))}for(P=z.length-1;P>=0;P--){H=z[P];if(H.valid){n.end(H.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,H,A,z,C,B,x,r,E,K,y,o,D,J=[],t,k,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;y=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();D=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;function F(){var L=H.firstChild,l,M;while(L){l=L.next;if(L.type==3||(L.type==1&&L.name!=="p"&&!o[L.name]&&!L.attr("data-mce-type"))){if(!M){M=I(q,1);H.insert(M,L);M.append(L)}else{M.append(L)}}else{M=null}L=l}}function I(l,L){var M=new a(l,L),N;if(l in e){N=i[l];if(N){N.push(M)}else{i[l]=[M]}}return M}function G(M){var N,l,L;for(N=M.prev;N&&N.type===3;){l=N.value.replace(t,"");if(l.length>0){N.value=l;N=N.prev}else{L=N.prev;N.remove();N=L}}}n=new b.html.SaxParser({validate:y,fix_self_closing:!y,cdata:function(l){A.append(I("#cdata",4)).value=l},text:function(M,l){var L;if(!s[A.name]){M=M.replace(k," ");if(A.lastChild&&o[A.lastChild.name]){M=M.replace(D,"")}}if(M.length!==0){L=I("#text",3);L.raw=!!l;A.append(L).value=M}},comment:function(l){A.append(I("#comment",8)).value=l},pi:function(l,L){A.append(I(l,7)).value=L;G(A)},doctype:function(L){var l;l=A.append(I("#doctype",10));l.value=L;G(A)},start:function(l,T,M){var R,O,N,L,P,U,S,Q;N=y?h.getElementRule(l):{};if(N){R=I(N.outputName||l,1);R.attributes=T;R.shortEnded=M;A.append(R);Q=p[A.name];if(Q&&p[R.name]&&!Q[R.name]){J.push(R)}O=d.length;while(O--){P=d[O].name;if(P in T.map){E=c[P];if(E){E.push(R)}else{c[P]=[R]}}}if(o[l]){G(R)}if(!M){A=R}}},end:function(l){var P,M,O,L,N;M=y?h.getElementRule(l):{};if(M){if(o[l]){if(!s[A.name]){for(P=A.firstChild;P&&P.type===3;){O=P.value.replace(D,"");if(O.length>0){P.value=O;P=P.next}else{L=P.next;P.remove();P=L}}for(P=A.lastChild;P&&P.type===3;){O=P.value.replace(t,"");if(O.length>0){P.value=O;P=P.prev}else{L=P.prev;P.remove();P=L}}}P=A.prev;if(P&&P.type===3){O=P.value.replace(D,"");if(O.length>0){P.value=O}else{P.remove()}}}if(M.removeEmpty||M.paddEmpty){if(A.isEmpty(u)){if(M.paddEmpty){A.empty().append(new a("#text","3")).value="\u00a0"}else{if(!A.attributes.map.name){N=A.parent;A.empty().remove();A=N;return}}}}A=A.parent}}},h);H=A=new a(m.context||g.root_name,11);n.parse(v);if(y&&J.length){if(!m.context){j(J)}else{m.invalid=true}}if(q&&H.name=="body"){F()}if(!m.invalid){for(K in i){E=e[K];z=i[K];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(C=0,B=E.length;C<B;C++){E[C](z,K,m)}}for(C=0,B=d.length;C<B;C++){E=d[C];if(E.name in c){z=c[E.name];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(x=0,r=E.callbacks.length;x<r;x++){E.callbacks[x](z,E.name,m)}}}}return H};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,u=h.getBlockElements(),k=h.getNonEmptyElements(),s,p,t;u.body=1;for(r=0;r<q;r++){o=n[r];s=o.parent;if(u[o.parent.name]&&o===s.lastChild){p=o.prev;while(p){t=p.name;if(t!=="span"||p.attr("data-mce-type")!=="bookmark"){if(t!=="br"){break}if(t==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(s.isEmpty(k)){elementRule=h.getElementRule(s.name);if(elementRule){if(elementRule.removeEmpty){s.remove()}else{if(elementRule.paddEmpty){s.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);(function(h){var f=h.each,e=h.is,d=h.isWebKit,b=h.isIE,c=h.html.Entities,a=/^([a-z0-9],?)+$/i,g=h.html.Schema.blockElementsMap,i=/^[ \t\r\n]*$/;h.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,m){var l=this,j,k;l.doc=o;l.win=window;l.files={};l.cssFlicker=false;l.counter=0;l.stdMode=!h.isIE||o.documentMode>=8;l.boxModel=!h.isIE||o.compatMode=="CSS1Compat"||l.stdMode;l.hasOuterHTML="outerHTML" in o.createElement("a");l.settings=m=h.extend({keep_values:false,hex_colors:1},m);l.schema=m.schema;l.styles=new h.html.Styles({url_converter:m.url_converter,url_converter_scope:m.url_converter_scope},m.schema);if(h.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(n){l.cssFlicker=true}}if(b&&m.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(p){o.createElement(p)});for(k in m.schema.getCustomElements()){o.createElement(k)}}h.addUnload(l.destroy,l)},getRoot:function(){var j=this,k=j.settings;return(k&&j.get(k.root_element))||j.doc.body},getViewPort:function(k){var l,j;k=!k?this.win:k;l=k.document;j=this.boxModel?l.documentElement:l.body;return{x:k.pageXOffset||j.scrollLeft,y:k.pageYOffset||j.scrollTop,w:k.innerWidth||j.clientWidth,h:k.innerHeight||j.clientHeight}},getRect:function(m){var l,j=this,k;m=j.get(m);l=j.getPos(m);k=j.getSize(m);return{x:l.x,y:l.y,w:k.w,h:k.h}},getSize:function(m){var k=this,j,l;m=k.get(m);j=k.getStyle(m,"width");l=k.getStyle(m,"height");if(j.indexOf("px")===-1){j=0}if(l.indexOf("px")===-1){l=0}return{w:parseInt(j)||m.offsetWidth||m.clientWidth,h:parseInt(l)||m.offsetHeight||m.clientHeight}},getParent:function(l,k,j){return this.getParents(l,k,j,false)},getParents:function(u,p,l,s){var k=this,j,m=k.settings,q=[];u=k.get(u);s=s===undefined;if(m.strict_root){l=l||k.getRoot()}if(e(p,"string")){j=p;if(p==="*"){p=function(o){return o.nodeType==1}}else{p=function(o){return k.is(o,j)}}}while(u){if(u==l||!u.nodeType||u.nodeType===9){break}if(!p||p(u)){if(s){q.push(u)}else{return u}}u=u.parentNode}return s?q:null},get:function(j){var k;if(j&&this.doc&&typeof(j)=="string"){k=j;j=this.doc.getElementById(j);if(j&&j.id!==k){return this.doc.getElementsByName(k)[1]}}return j},getNext:function(k,j){return this._findSib(k,j,"nextSibling")},getPrev:function(k,j){return this._findSib(k,j,"previousSibling")},select:function(l,k){var j=this;return h.dom.Sizzle(l,j.get(k)||j.get(j.settings.root_element)||j.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(a.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return h.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(m,q,j,l,o){var k=this;return this.run(m,function(s){var r,n;r=e(q,"string")?k.doc.createElement(q):q;k.setAttribs(r,j);if(l){if(l.nodeType){r.appendChild(l)}else{k.setHTML(r,l)}}return !o?s.appendChild(r):r})},create:function(l,j,k){return this.add(this.doc.createElement(l),l,j,k,1)},createHTML:function(r,j,p){var q="",m=this,l;q+="<"+r;for(l in j){if(j.hasOwnProperty(l)){q+=" "+l+'="'+m.encode(j[l])+'"'}}if(typeof(p)!="undefined"){return q+">"+p+"</"+r+">"}return q+" />"},remove:function(j,k){return this.run(j,function(m){var n,l=m.parentNode;if(!l){return null}if(k){while(n=m.firstChild){if(!h.isIE||n.nodeType!==3||n.nodeValue){l.insertBefore(n,m)}else{m.removeChild(n)}}}return l.removeChild(m)})},setStyle:function(m,j,k){var l=this;return l.run(m,function(p){var o,n;o=p.style;j=j.replace(/-(\D)/g,function(r,q){return q.toUpperCase()});if(l.pixelStyles.test(j)&&(h.is(k,"number")||/^[\-0-9\.]+$/.test(k))){k+="px"}switch(j){case"opacity":if(b){o.filter=k===""?"":"alpha(opacity="+(k*100)+")";if(!m.currentStyle||!m.currentStyle.hasLayout){o.display="inline-block"}}o[j]=o["-moz-opacity"]=o["-khtml-opacity"]=k||"";break;case"float":b?o.styleFloat=k:o.cssFloat=k;break;default:o[j]=k||""}if(l.settings.update_styles){l.setAttrib(p,"data-mce-style")}})},getStyle:function(m,j,l){m=this.get(m);if(!m){return}if(this.doc.defaultView&&l){j=j.replace(/[A-Z]/g,function(n){return"-"+n});try{return this.doc.defaultView.getComputedStyle(m,null).getPropertyValue(j)}catch(k){return null}}j=j.replace(/-(\D)/g,function(o,n){return n.toUpperCase()});if(j=="float"){j=b?"styleFloat":"cssFloat"}if(m.currentStyle&&l){return m.currentStyle[j]}return m.style?m.style[j]:undefined},setStyles:function(m,n){var k=this,l=k.settings,j;j=l.update_styles;l.update_styles=0;f(n,function(o,p){k.setStyle(m,p,o)});l.update_styles=j;if(l.update_styles){k.setAttrib(m,l.cssText)}},removeAllAttribs:function(j){return this.run(j,function(m){var l,k=m.attributes;for(l=k.length-1;l>=0;l--){m.removeAttributeNode(k.item(l))}})},setAttrib:function(l,m,j){var k=this;if(!l||!m){return}if(k.settings.strict){m=m.toLowerCase()}return this.run(l,function(q){var p=k.settings;var n=q.getAttribute(m);if(j!==null){switch(m){case"style":if(!e(j,"string")){f(j,function(r,s){k.setStyle(q,s,r)});return}if(p.keep_values){if(j&&!k._isRes(j)){q.setAttribute("data-mce-style",j,2)}else{q.removeAttribute("data-mce-style",2)}}q.style.cssText=j;break;case"class":q.className=j||"";break;case"src":case"href":if(p.keep_values){if(p.url_converter){j=p.url_converter.call(p.url_converter_scope||k,j,m,q)}k.setAttrib(q,"data-mce-"+m,j,2)}break;case"shape":q.setAttribute("data-mce-style",j);break}}if(e(j)&&j!==null&&j.length!==0){q.setAttribute(m,""+j,2)}else{q.removeAttribute(m,2)}if(tinyMCE.activeEditor&&n!=j){var o=tinyMCE.activeEditor;o.onSetAttrib.dispatch(o,q,m,j)}})},setAttribs:function(k,l){var j=this;return this.run(k,function(m){f(l,function(o,p){j.setAttrib(m,p,o)})})},getAttrib:function(o,p,l){var j,k=this,m;o=k.get(o);if(!o||o.nodeType!==1){return l===m?false:l}if(!e(l)){l=""}if(/^(src|href|style|coords|shape)$/.test(p)){j=o.getAttribute("data-mce-"+p);if(j){return j}}if(b&&k.props[p]){j=o[k.props[p]];j=j&&j.nodeValue?j.nodeValue:j}if(!j){j=o.getAttribute(p,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(p)){if(o[k.props[p]]===true&&j===""){return p}return j?p:""}if(o.nodeName==="FORM"&&o.getAttributeNode(p)){return o.getAttributeNode(p).nodeValue}if(p==="style"){j=j||o.style.cssText;if(j){j=k.serializeStyle(k.parseStyle(j),o.nodeName);if(k.settings.keep_values&&!k._isRes(j)){o.setAttribute("data-mce-style",j)}}}if(d&&p==="class"&&j){j=j.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(p){case"rowspan":case"colspan":if(j===1){j=""}break;case"size":if(j==="+0"||j===20||j===0){j=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(j===0){j=""}break;case"hspace":if(j===-1){j=""}break;case"maxlength":case"tabindex":if(j===32768||j===2147483647||j==="32768"){j=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(j===65535){return p}return l;case"shape":j=j.toLowerCase();break;default:if(p.indexOf("on")===0&&j){j=h._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+j)}}}return(j!==m&&j!==null&&j!=="")?""+j:l},getPos:function(s,m){var k=this,j=0,q=0,o,p=k.doc,l;s=k.get(s);m=m||p.body;if(s){if(s.getBoundingClientRect){s=s.getBoundingClientRect();o=k.boxModel?p.documentElement:p.body;j=s.left+(p.documentElement.scrollLeft||p.body.scrollLeft)-o.clientTop;q=s.top+(p.documentElement.scrollTop||p.body.scrollTop)-o.clientLeft;return{x:j,y:q}}l=s;while(l&&l!=m&&l.nodeType){j+=l.offsetLeft||0;q+=l.offsetTop||0;l=l.offsetParent}l=s.parentNode;while(l&&l!=m&&l.nodeType){j-=l.scrollLeft||0;q-=l.scrollTop||0;l=l.parentNode}}return{x:j,y:q}},parseStyle:function(j){return this.styles.parse(j)},serializeStyle:function(k,j){return this.styles.serialize(k,j)},loadCSS:function(j){var l=this,m=l.doc,k;if(!j){j=""}k=l.select("head")[0];f(j.split(","),function(n){var o;if(l.files[n]){return}l.files[n]=true;o=l.create("link",{rel:"stylesheet",href:h._addVer(n)});if(b&&m.documentMode&&m.recalc){o.onload=function(){if(m.recalc){m.recalc()}o.onload=null}}k.appendChild(o)})},addClass:function(j,k){return this.run(j,function(l){var m;if(!k){return 0}if(this.hasClass(l,k)){return l.className}m=this.removeClass(l,k);return l.className=(m!=""?(m+" "):"")+k})},removeClass:function(l,m){var j=this,k;return j.run(l,function(o){var n;if(j.hasClass(o,m)){if(!k){k=new RegExp("(^|\\s+)"+m+"(\\s+|$)","g")}n=o.className.replace(k," ");n=h.trim(n!=" "?n:"");o.className=n;if(!n){o.removeAttribute("class");o.removeAttribute("className")}return n}return o.className})},hasClass:function(k,j){k=this.get(k);if(!k||!j){return false}return(" "+k.className+" ").indexOf(" "+j+" ")!==-1},show:function(j){return this.setStyle(j,"display","block")},hide:function(j){return this.setStyle(j,"display","none")},isHidden:function(j){j=this.get(j);return !j||j.style.display=="none"||this.getStyle(j,"display")=="none"},uniqueId:function(j){return(!j?"mce_":j)+(this.counter++)},setHTML:function(l,k){var j=this;return j.run(l,function(n){if(b){while(n.firstChild){n.removeChild(n.firstChild)}try{n.innerHTML="<br />"+k;n.removeChild(n.firstChild)}catch(m){n=j.create("div");n.innerHTML="<br />"+k;f(n.childNodes,function(p,o){if(o){n.appendChild(p)}})}}else{n.innerHTML=k}return k})},getOuterHTML:function(l){var k,j=this;l=j.get(l);if(!l){return null}if(l.nodeType===1&&j.hasOuterHTML){return l.outerHTML}k=(l.ownerDocument||j.doc).createElement("body");k.appendChild(l.cloneNode(true));return k.innerHTML},setOuterHTML:function(m,k,n){var j=this;function l(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){j.insertAfter(s.cloneNode(true),p);s=s.previousSibling}j.remove(p)}return this.run(m,function(p){p=j.get(p);if(p.nodeType==1){n=n||p.ownerDocument||j.doc;if(b){try{if(b&&p.nodeType==1){p.outerHTML=k}else{l(p,k,n)}}catch(o){l(p,k,n)}}else{l(p,k,n)}}})},decode:c.decode,encode:c.encodeAllRaw,insertAfter:function(j,k){k=this.get(k);return this.run(j,function(m){var l,n;l=k.parentNode;n=k.nextSibling;if(n){l.insertBefore(m,n)}else{l.appendChild(m)}return m})},isBlock:function(k){var j=k.nodeType;if(j){return !!(j===1&&g[k.nodeName])}return !!g[k]},replace:function(p,m,j){var l=this;if(e(m,"array")){p=p.cloneNode(true)}return l.run(m,function(k){if(j){f(h.grep(k.childNodes),function(n){p.appendChild(n)})}return k.parentNode.replaceChild(p,k)})},rename:function(m,j){var l=this,k;if(m.nodeName!=j.toUpperCase()){k=l.create(j);f(l.getAttribs(m),function(n){l.setAttrib(k,n.nodeName,l.getAttrib(m,n.nodeName))});l.replace(k,m,1)}return k||m},findCommonAncestor:function(l,j){var m=l,k;while(m){k=j;while(k&&m!=k){k=k.parentNode}if(m==k){break}m=m.parentNode}if(!m&&l.ownerDocument){return l.ownerDocument.documentElement}return m},toHex:function(j){var l=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(j);function k(m){m=parseInt(m).toString(16);return m.length>1?m:"0"+m}if(l){j="#"+k(l[1])+k(l[2])+k(l[3]);return j}return j},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(r){f(r.imports,function(s){q(s)});f(r.cssRules||r.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){f(s.selectorText.split(","),function(t){t=t.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(t)||!/\.[\w\-]+$/.test(t)){return}l=t;t=h._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",t);if(p&&!(t=p(t,l))){return}if(!o[t]){j.push({"class":t});o[t]=1}})}break;case 3:q(s.styleSheet);break}})}try{f(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(m,l,k){var j=this,n;if(j.doc&&typeof(m)==="string"){m=j.get(m)}if(!m){return false}k=k||this;if(!m.nodeType&&(m.length||m.length===0)){n=[];f(m,function(p,o){if(p){if(typeof(p)=="string"){p=j.doc.getElementById(p)}n.push(l.call(k,p,o))}});return n}return l.call(k,m)},getAttribs:function(k){var j;k=this.get(k);if(!k){return[]}if(b){j=[];if(k.nodeName=="OBJECT"){return k.attributes}if(k.nodeName==="OPTION"&&this.getAttrib(k,"selected")){j.push({specified:1,nodeName:"selected"})}k.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(l){j.push({specified:1,nodeName:l})});return j}return k.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p;m=m.firstChild;if(m){j=new h.dom.TreeWalker(m);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){p=m.parentNode;if(l==="br"&&r.isBlock(p)&&p.firstChild===m&&p.lastChild===m){continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!i.test(m.nodeValue))){return false}}while(m=j.next())}return true},destroy:function(k){var j=this;if(j.events){j.events.destroy()}j.win=j.doc=j.root=j.events=null;if(!k){h.removeUnload(j.destroy)}},createRng:function(){var j=this.doc;return j.createRange?j.createRange():new h.dom.Range(this)},nodeIndex:function(n,o){var j=0,l,m,k;if(n){for(l=n.nodeType,n=n.previousSibling,m=n;n;n=n.previousSibling){k=n.nodeType;if(o&&k==3){if(k==l||!n.nodeValue.length){continue}}j++;l=k}}return j},split:function(n,m,q){var s=this,j=s.createRng(),o,l,p;function k(x){var u,t=x.childNodes,v=x.nodeType;function y(B){var A=B.previousSibling&&B.previousSibling.nodeName=="SPAN";var z=B.nextSibling&&B.nextSibling.nodeName=="SPAN";return A&&z}if(v==1&&x.getAttribute("data-mce-type")=="bookmark"){return}for(u=t.length-1;u>=0;u--){k(t[u])}if(v!=9){if(v==3&&x.nodeValue.length>0){var r=h.trim(x.nodeValue).length;if(!s.isBlock(x.parentNode)||r>0||r==0&&y(x)){return}}else{if(v==1){t=x.childNodes;if(t.length==1&&t[0]&&t[0].nodeType==1&&t[0].getAttribute("data-mce-type")=="bookmark"){x.parentNode.insertBefore(t[0],x)}if(t.length||/^(br|hr|input|img)$/i.test(x.nodeName)){return}}}s.remove(x)}return x}if(n&&m){j.setStart(n.parentNode,s.nodeIndex(n));j.setEnd(m.parentNode,s.nodeIndex(m));o=j.extractContents();j=s.createRng();j.setStart(m.parentNode,s.nodeIndex(m)+1);j.setEnd(n.parentNode,s.nodeIndex(n)+1);l=j.extractContents();p=n.parentNode;p.insertBefore(k(o),n);if(q){p.replaceChild(q,m)}else{p.insertBefore(m,n)}p.insertBefore(k(l),n);s.remove(n);return q||m}},bind:function(n,j,m,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.add(n,j,m,l||this)},unbind:function(m,j,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.remove(m,j,l)},_findSib:function(m,j,k){var l=this,n=j;if(m){if(e(n,"string")){n=function(o){return l.is(o,j)}}for(m=m[k];m;m=m[k]){if(n(m)){return m}}}return null},_isRes:function(j){return/^(top|left|bottom|right|width|height)/i.test(j)||/;\s*(top|left|bottom|right|width|height)/i.test(j)}});h.DOM=new h.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z<Y){return -1}return 1}aa=V;while(aa&&aa.parentNode!=X){aa=aa.parentNode}if(aa){W=0;t=X.firstChild;while(t!=aa&&W<Z){W++;t=t.nextSibling}if(Z<=W){return -1}return 1}aa=X;while(aa&&aa.parentNode!=V){aa=aa.parentNode}if(aa){W=0;t=V.firstChild;while(t!=aa&&W<Y){W++;t=t.nextSibling}if(W<Y){return -1}return 1}ab=c.findCommonAncestor(X,V);ad=X;while(ad&&ad.parentNode!=ab){ad=ad.parentNode}if(!ad){ad=ab}ac=V;while(ac&&ac.parentNode!=ab){ac=ac.parentNode}if(!ac){ac=ab}if(ad==ac){return 0}t=ab.firstChild;while(t){if(t==ad){return -1}if(t==ac){return 1}t=t.nextSibling}}function B(V,Y,X){var t,W;if(V){N[h]=Y;N[U]=X}else{N[P]=Y;N[z]=X}t=N[P];while(t.parentNode){t=t.parentNode}W=N[h];while(W.parentNode){W=W.parentNode}if(W==t){if(G(N[h],N[U],N[P],N[z])>0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}k.setEndPoint(j?"EndToStart":"EndToEnd",i);if(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)>0){k=i.duplicate();k.collapse(j);o=-1;while(s==k.parentElement()){if(k.move("character",-1)==0){break}o++}}o=o||k.text.replace("\r\n"," ").length}else{k.collapse(true);k.setEndPoint(j?"StartToStart":"StartToEnd",i);o=k.text.replace("\r\n"," ").length}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var u,t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{t=r.createTextNode("\uFEFF");u.appendChild(t);x.moveToElementText(t.parentNode);x.collapse(c)}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1&&p==q-1){if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}return r};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(y,e,z){var x;if(!y){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.leftMatch[v].exec(y))){var r=u[1];u.splice(1,1);if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");x=f.find[v](u,e,z);if(x!=null){y=y.replace(f.match[v],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(C,B,F,u){var s=C,H=[],z=B,x,e,y=B&&B[0]&&b.isXML(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.leftMatch[A].exec(C))!=null&&x[2]){var r=f.filter[A],G,E,t=x[1];e=false;x.splice(1,1);if(t.substr(t.length-1)==="\\"){continue}if(z===H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,u,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var v=0;(E=z[v])!=null;v++){if(E){G=r(E,x,v,z);var D=u^!!G;if(F&&G!=null){if(D){e=true}else{z[v]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C===s){if(e==null){b.error(C)}else{break}}s=C}return z};b.error=function(e){throw"Syntax error, unrecognized expression: "+e};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,r){var t=typeof r==="string",v=t&&!/\W/.test(r),y=t&&!v;if(v){r=r.toLowerCase()}for(var s=0,e=x.length,u;s<e;s++){if((u=x[s])){while((u=u.previousSibling)&&u.nodeType!==1){}x[s]=y||u&&u.nodeName.toLowerCase()===r?u||false:u===r}}if(y){b.filter(r,x,true)}},">":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s<e;s++){v=x[s];if(v){var t=v.parentNode;x[s]=t.nodeName.toLowerCase()===r?t:false}}}else{for(;s<e;s++){v=x[s];if(v){x[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,x,true)}}},"":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,x,y){t=" "+t[1].replace(/\\/g,"")+" ";if(y){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(x^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v<u;v++){if(t[v]===s){return false}}return true}else{b.error("Syntax error, unrecognized expression: "+e)}}}},CHILD:function(e,t){var x=t[1],r=e;switch(x){case"only":case"first":while((r=r.previousSibling)){if(r.nodeType===1){return false}}if(x==="first"){return true}r=e;case"last":while((r=r.nextSibling)){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],A=t[3];if(s===1&&A===0){return true}var v=t[0],z=e.parentNode;if(z&&(z.sizcache!==v||!e.nodeIndex)){var u=0;for(r=z.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}z.sizcache=v}var y=e.nodeIndex-A;if(s===0){return y===0}else{return(y%s===0&&y/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s<e;s++){r.push(u[s])}}else{for(;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){if(!r.compareDocumentPosition||!e.compareDocumentPosition){if(r==e){o=true}return r.compareDocumentPosition?-1:1}var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){o=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){if(!r.sourceIndex||!e.sourceIndex){if(r==e){o=true}return r.sourceIndex?-1:1}var s=r.sourceIndex-e.sourceIndex;if(s===0){o=true}return s}}else{if(document.createRange){c=function(t,r){if(!t.ownerDocument||!r.ownerDocument){if(t==r){o=true}return t.ownerDocument?-1:1}var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){o=true}return u}}}}b.getText=function(e){var r="",t;for(var s=0;e[s];s++){t=e[s];if(t.nodeType===3||t.nodeType===4){r+=t.nodeValue}else{if(t.nodeType!==8){r+=b.getText(t.childNodes)}}}return r};(function(){var r=document.createElement("div"),s="script"+(new Date()).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName.toLowerCase()===x){u=e;break}e=e[r]}A[t]=u}}}function q(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof x!=="string"){if(e===x){u=true;break}}else{if(b.filter(x,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x<r;x++){b(e,s[x],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.readyState==="complete"){g._pageInit(i);return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}if(c.isIE&&i.boxModel){this._fixIESelection()}c.addUnload(f.destroy,f)},setCursorLocation:function(h,i){var f=this;var g=f.dom.createRng();g.setStart(h,i);g.setEnd(h,i);f.setRng(g);f.collapse(false)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";g.forced_root_block="";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML="<br>"+(h.item?h.item(0).outerHTML:h.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(g,i){var n=this,f=n.getRng(),j,k=n.win.document,m,l;i=i||{format:"html"};i.set=true;g=i.content=g;if(!i.no_events){n.onBeforeSetContent.dispatch(n,i)}g=i.content;if(f.insertNode){g+='<span id="__caret">_</span>';if(f.startContainer==k&&f.endContainer==k){k.body.innerHTML=g}else{f.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=g}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(g))}else{m=k.createDocumentFragment();l=k.createElement("div");m.appendChild(l);l.outerHTML=g;f.insertNode(m)}}}j=n.dom.get("__caret");f=k.createRange();f.setStartBefore(j);f.setEndBefore(j);n.setRng(f);n.dom.remove("__caret");try{n.setRng(f)}catch(h){}}else{if(f.item){k.execCommand("Delete",false,null);f=n.getRng()}if(/^\s+/.test(g)){f.pasteHTML('<span id="__mce_tmp">_</span>'+g);n.dom.remove("__mce_tmp")}else{f.pasteHTML(g)}}if(!i.no_events){n.onSetContent.dispatch(n,i)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}if(v.tridentSel){return v.tridentSel.getBookmark(r)}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+u+'">'+l+"</span>");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+u+'">'+l+"</span>")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(r.tridentSel){return r.tridentSel.moveToBookmark(n)}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'<br data-mce-bogus="1" />':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.rangeCount>0?h.getRangeAt(0):null}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(o,g){var m=this,j=m.dom,l,k,h,i=[];l=j.getParent(o||m.getStart(),j.isBlock);k=j.getParent(g||m.getEnd(),j.isBlock);if(l){i.push(l)}if(l&&k&&l!=k){h=l;var f=new c.dom.TreeWalker(l,j.getRoot());while((h=f.next())&&h!=k){if(j.isBlock(h)){i.push(h)}}}if(k&&l!=k){i.push(k)}return i},normalize:function(){var g=this,f,i;if(c.isIE){return}function h(p){var k,o,n,m=g.dom,j=m.getRoot(),l;k=f[(p?"start":"end")+"Container"];o=f[(p?"start":"end")+"Offset"];if(k.nodeType===9){k=k.body;o=0}if(k===j){if(k.hasChildNodes()){k=k.childNodes[Math.min(!p&&o>0?o-1:o,k.childNodes.length-1)];o=0;if(k.hasChildNodes()){l=k;n=new c.dom.TreeWalker(k,j);do{if(l.nodeType===3){o=p?0:l.nodeValue.length-1;k=l;i=true;break}if(/^(BR|IMG)$/.test(l.nodeName)){o=m.nodeIndex(l);k=l.parentNode;if(l.nodeName=="IMG"&&!p){o++}i=true;break}}while(l=(p?n.next():n.prev()))}}}if(i){f["set"+(p?"Start":"End")](k,o)}}f=g.getRng();h(true);if(!f.collapsed){h()}if(i){g.setRng(f)}},destroy:function(g){var f=this;f.win=null;if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/\s*mce(Item\w+|Selected)\s*/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF|\u200B/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var h=this,i,j,g;if(f!=h.selectedIndex){i=c.get(h.id+"_text");g=c.get(h.id+"_voiceDesc");j=h.items[f];if(j){h.selectedValue=j.value;h.selectedIndex=f;c.setHTML(i,c.encode(j.title));c.setHTML(g,h.settings.title+" - "+j.title);c.removeClass(i,"mceTitle");c.setAttrib(h.id,"aria-valuenow",j.title)}else{c.setHTML(i,c.encode(h.settings.title));c.setHTML(g,c.encode(h.settings.title));c.addClass(i,"mceTitle");h.selectedValue=h.selectedIndex=null;c.setAttrib(h.id,"aria-valuenow",h.settings.title)}i=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<span role="listbox" aria-haspopup="true" aria-labelledby="'+f.id+'_voiceDesc" aria-describedby="'+f.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("span",{id:f.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},f.settings.title);i+=c.createHTML("a",{id:f.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";i+="</tr></tbody></table></span>";return i},showMenu:function(){var g=this,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(j){if(j.value===g.selectedValue){f.items[j.id].setSelected(1);g.oldID=j.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.role="option";h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(d.isWebKit&&(k.keyCode==37||k.keyCode==39)){return b.prevent(k)}if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return a.cancel(i)});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher,i=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit,d=n.is,h=n.ThemeManager,c=n.PluginManager,p=n.inArray,m=n.grep,g=n.explode,j=n.VK;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.isNotDirty=false;q.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:n.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",validate:true,entity_encoding:"named",url_converter:q.convertURL,url_converter_scope:q,ie7_compat:true},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=n.baseURI;q.contentCSS=[];q.execCallback("setup",q)},render:function(u){var v=this,x=v.settings,y=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}tinyMCE.settings=x;if(!v.getElement()){return}if(n.isIDevice&&!n.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&x.hidden_input&&o.getParent(y,"form")){o.insertAfter(o.create("input",{type:"hidden",name:y}),y)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(x.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(x.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(x.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(x.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){n.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(x.language&&x.language_load!==false){q.add(n.baseURL+"/langs/"+x.language+".js")}if(x.theme&&x.theme.charAt(0)!="-"&&!h.urls[x.theme]){h.load(x.theme,"themes/"+x.theme+"/editor_template"+n.suffix+".js")}i(g(x.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(A){var z={prefix:"plugins/",resource:A,suffix:"/editor_plugin"+n.suffix+".js"};var A=c.createUrl(z,A);c.load(A.resource,A)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+n.suffix+".js"})}}});q.loadQueue(function(){if(!v.removed){v.init()}})}r()},init:function(){var v,I=this,J=I.settings,F,B,E=I.getElement(),r,q,G,z,D,H,A,x=[];n.add(I);J.aria_label=J.aria_label||o.getAttrib(E,"aria-label",I.getLang("aria.rich_text_area"));if(J.theme){J.theme=J.theme.replace(/-/,"");r=h.get(J.theme);I.theme=new r();if(I.theme.init&&J.init_theme){I.theme.init(I,h.urls[J.theme]||n.documentBaseURL.replace(/\/$/,""))}}function C(K){var L=c.get(K),t=c.urls[K]||n.documentBaseURL.replace(/\/$/,""),s;if(L&&n.inArray(x,K)===-1){i(c.dependencies(K),function(u){C(u)});s=new L(I,t);I.plugins[K]=s;if(s.init){s.init(I,t);x.push(K)}}}i(g(J.plugins.replace(/\-/g,"")),C);if(J.popup_css!==false){if(J.popup_css){J.popup_css=I.documentBaseURI.toAbsolute(J.popup_css)}else{J.popup_css=I.baseURI.toAbsolute("themes/"+J.theme+"/skins/"+J.skin+"/dialog.css")}}if(J.popup_css_add){J.popup_css+=","+I.documentBaseURI.toAbsolute(J.popup_css_add)}I.controlManager=new n.ControlManager(I);if(J.custom_undo_redo){I.onBeforeExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.beforeChange()}});I.onExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.add()}})}I.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){I.nodeChanged()}});if(a){function y(s,t){if(!t||!t.initial){I.execCommand("mceRepaint")}}I.onUndo.add(y);I.onRedo.add(y);I.onSetContent.add(y)}I.onBeforeRenderUI.dispatch(I,I.controlManager);if(J.render_ui){F=J.width||E.style.width||E.offsetWidth;B=J.height||E.style.height||E.offsetHeight;I.orgDisplay=E.style.display;H=/^[0-9\.]+(|px)$/i;if(H.test(""+F)){F=Math.max(parseInt(F)+(r.deltaWidth||0),100)}if(H.test(""+B)){B=Math.max(parseInt(B)+(r.deltaHeight||0),100)}r=I.theme.renderUI({targetNode:E,width:F,height:B,deltaWidth:J.delta_width,deltaHeight:J.delta_height});I.editorContainer=r.editorContainer}if(document.domain&&location.hostname!=document.domain){n.relaxedDomain=document.domain}o.setStyles(r.sizeContainer||r.editorContainer,{width:F,height:B});if(J.content_css){n.each(g(J.content_css),function(s){I.contentCSS.push(I.documentBaseURI.toAbsolute(s))})}B=(r.iframeHeight||B)+(typeof(B)=="number"?(r.deltaHeight||0):"");if(B<100){B=100}I.iframeHTML=J.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(J.document_base_url!=n.documentBaseURL){I.iframeHTML+='<base href="'+I.documentBaseURI.getURI()+'" />'}if(J.ie7_compat){I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}I.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(A=0;A<I.contentCSS.length;A++){I.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+I.contentCSS[A]+'" />'}I.contentCSS=[];z=J.body_id||"tinymce";if(z.indexOf("=")!=-1){z=I.getParam("body_id","","hash");z=z[I.id]||z}D=J.body_class||"";if(D.indexOf("=")!=-1){D=I.getParam("body_class","","hash");D=D[I.id]||""}I.iframeHTML+='</head><body id="'+z+'" class="mceContentBody '+D+'" onload="window.parent.tinyMCE.get(\''+I.id+"').onLoad.dispatch();\"><br></body></html>";if(n.relaxedDomain&&(b||(n.isOpera&&parseFloat(opera.version())<11))){G='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+I.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}v=o.add(r.iframeContainer,"iframe",{id:I.id+"_ifr",src:G||'javascript:""',frameBorder:"0",allowTransparency:"true",title:J.aria_label,style:{width:"100%",height:B,display:"block"}});I.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=I.orgDisplay;o.get(I.id).style.display="none";o.setAttrib(I.id,"aria-hidden",true);if(!n.relaxedDomain||!G){I.setupIframe()}E=v=r=null},setupIframe:function(){var r=this,x=r.settings,y=o.get(r.id),z=r.getDoc(),v,q;if(!b||!n.relaxedDomain){z.open();z.write(r.iframeHTML);z.close();if(n.relaxedDomain){z.domain=n.relaxedDomain}}q=r.getBody();q.disabled=true;if(!x.readonly){q.contentEditable=true}q.disabled=false;r.schema=new n.html.Schema(x);r.dom=new n.dom.DOMUtils(r.getDoc(),{keep_values:true,url_converter:r.convertURL,url_converter_scope:r,hex_colors:x.force_hex_style_colors,class_filter:x.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:r.schema});r.parser=new n.html.DomParser(x,r.schema);if(!r.settings.allow_html_in_named_anchor){r.parser.addAttributeFilter("name",function(s,t){var B=s.length,D,A,C,E;while(B--){E=s[B];if(E.name==="a"&&E.firstChild){C=E.parent;D=E.lastChild;do{A=D.prev;C.insert(D,E);D=A}while(D)}}})}r.parser.addAttributeFilter("src,href,style",function(s,t){var A=s.length,C,E=r.dom,D,B;while(A--){C=s[A];D=C.attr(t);B="data-mce-"+t;if(!C.attributes.map[B]){if(t==="style"){C.attr(B,E.serializeStyle(E.parseStyle(D),C.name))}else{C.attr(B,r.convertURL(D,t,C.name))}}}});r.parser.addNodeFilter("script",function(s,t){var A=s.length,B;while(A--){B=s[A];B.attr("type","mce-"+(B.attr("type")||"text/javascript"))}});r.parser.addNodeFilter("#cdata",function(s,t){var A=s.length,B;while(A--){B=s[A];B.type=8;B.name="#comment";B.value="[CDATA["+B.value+"]]"}});r.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,A){var B=t.length,C,s=r.schema.getNonEmptyElements();while(B--){C=t[B];if(C.isEmpty(s)){C.empty().append(new n.html.Node("br",1)).shortEnded=true}}});r.serializer=new n.dom.Serializer(x,r.dom,r.schema);r.selection=new n.dom.Selection(r.dom,r.getWin(),r.serializer);r.formatter=new n.Formatter(this);r.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(s){return true},onformat:function(A,s,t){i(t,function(C,B){r.dom.setAttrib(A,B,C)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){r.formatter.register(s,{block:s,remove:"all"})});r.formatter.register(r.settings.formats);r.undoManager=new n.UndoManager(r);r.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return r.onChange.dispatch(r,s,t)}});r.undoManager.onUndo.add(function(t,s){return r.onUndo.dispatch(r,s,t)});r.undoManager.onRedo.add(function(t,s){return r.onRedo.dispatch(r,s,t)});r.forceBlocks=new n.ForceBlocks(r,{forced_root_block:x.forced_root_block});r.editorCommands=new n.EditorCommands(r);r.serializer.onPreProcess.add(function(s,t){return r.onPreProcess.dispatch(r,t,s)});r.serializer.onPostProcess.add(function(s,t){return r.onPostProcess.dispatch(r,t,s)});r.onPreInit.dispatch(r);if(!x.gecko_spellcheck){r.getBody().spellcheck=0}if(!x.readonly){r._addEvents()}r.controlManager.onPostRender.dispatch(r,r.controlManager);r.onPostRender.dispatch(r);r.quirks=new n.util.Quirks(this);if(x.directionality){r.getBody().dir=x.directionality}if(x.nowrap){r.getBody().style.whiteSpace="nowrap"}if(x.handle_node_change_callback){r.onNodeChange.add(function(t,s,A){r.execCallback("handle_node_change_callback",r.id,A,-1,-1,true,r.selection.isCollapsed())})}if(x.save_callback){r.onSaveContent.add(function(s,A){var t=r.execCallback("save_callback",r.id,A.content,r.getBody());if(t){A.content=t}})}if(x.onchange_callback){r.onChange.add(function(t,s){r.execCallback("onchange_callback",r,s)})}if(x.protect){r.onBeforeSetContent.add(function(s,t){if(x.protect){i(x.protect,function(A){t.content=t.content.replace(A,function(B){return"<!--mce:protected "+escape(B)+"-->"})})}})}if(x.convert_newlines_to_brs){r.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(x.preformatted){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(x.verify_css_classes){r.serializer.attribValueFilter=function(C,A){var B,t;if(C=="class"){if(!r.classesRE){t=r.dom.getClasses();if(t.length>0){B="";i(t,function(s){B+=(B?"|":"")+s["class"]});r.classesRE=new RegExp("("+B+")","gi")}}return !r.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(A)||r.classesRE.test(A)?A:""}return A}}if(x.cleanup_callback){r.onBeforeSetContent.add(function(s,t){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)});r.onPreProcess.add(function(s,t){if(t.set){r.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){r.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});r.onPostProcess.add(function(s,t){if(t.set){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=r.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(x.save_callback){r.onGetContent.add(function(s,t){if(t.save){t.content=r.execCallback("save_callback",r.id,t.content,r.getBody())}})}if(x.handle_event_callback){r.onEvent.add(function(s,t,A){if(r.execCallback("handle_event_callback",t,s,A)===false){k.cancel(t)}})}r.onSetContent.add(function(){r.addVisual(r.getBody())});if(x.padd_empty_editor){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function u(s,t){i(s.dom.select("a"),function(B){var A=B.parentNode;if(s.dom.isBlock(A)&&A.lastChild===B){s.dom.add(A,"br",{"data-mce-bogus":1})}})}r.onExecCommand.add(function(s,t){if(t==="CreateLink"){u(s)}});r.onSetContent.add(r.selection.onSetContent.add(u))}r.load({initial:true,format:"html"});r.startContent=r.getContent({format:"raw"});r.undoManager.add();r.initialized=true;r.onInit.dispatch(r);r.execCallback("setupcontent_callback",r.id,r.getBody(),r.getDoc());r.execCallback("init_instance_callback",r);r.focus(true);r.nodeChanged({initial:1});i(r.contentCSS,function(s){r.dom.loadCSS(s)});if(x.auto_focus){setTimeout(function(){var s=n.get(x.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}y=null},focus:function(v){var z,r=this,u=r.selection,y=r.settings.content_editable,s,q,x=r.getDoc();if(!v){s=u.getRng();if(s.item){q=s.item(0)}r._refreshContentEditable();if(!y){r.getWin().focus()}if(n.isGecko){r.getBody().focus()}if(q&&q.ownerDocument==x){s=x.body.createControlRange();s.addElement(q);s.select()}}if(n.activeEditor!=r){if((z=n.activeEditor)!=null){z.onDeactivate.dispatch(z,r)}r.onActivate.dispatch(r,z)}n._setActive(r)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=n.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return n.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(x,s,q){var t=n.trim,r=d(this.settings[x])?this.settings[x]:s,u;if(q==="hash"){u={};if(d(r,"string")){i(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(y){y=y.split("=");if(y.length>1){u[t(y[0])]=t(y[1])}else{u[t(y[0])]=t(y)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getStart()||q.getBody();if(q.initialized){u=u||{};v=b&&v.ownerDocument!=q.getDoc()?q.getBody():v;u.parents=[];q.dom.getParent(v,function(s){if(s.nodeName=="BODY"){return true}u.parents.push(s)});q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(q,s,r){this.execCommands[q]={func:s,scope:r||this}},addQueryStateHandler:function(q,s,r){this.queryStateCommands[q]={func:s,scope:r||this}},addQueryValueHandler:function(q,s,r){this.queryValueCommands[q]={func:s,scope:r||this}},addShortcut:function(s,v,q,u){var r=this,x;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){x=q;q=function(){r.execCommand(x,false,null)}}if(d(q,"object")){x=q;q=function(){r.execCommand(x[0],x[1],x[2])}}i(g(s),function(t){var y={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(z){switch(z){case"alt":case"ctrl":case"shift":y[z]=true;break;default:y.charCode=z.charCodeAt(0);y.keyCode=z.toUpperCase().charCodeAt(0)}});r.shortcuts[(y.ctrl?"ctrl":"")+","+(y.alt?"alt":"")+","+(y.shift?"shift":"")+","+y.keyCode]=y});return true},execCommand:function(y,x,A,q){var u=this,v=0,z,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(y)&&(!q||!q.skip_focus)){u.focus()}q=f({},q);u.onBeforeExecCommand.dispatch(u,y,x,A,q);if(q.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(z=u.execCommands[y]){r=z.func.call(z.scope,x,A);if(r!==true){u.onExecCommand.dispatch(u,y,x,A,q);return r}}i(u.plugins,function(s){if(s.execCommand&&s.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(u.editorCommands.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}u.getDoc().execCommand(y,x,A);u.onExecCommand.dispatch(u,y,x,A,q)},queryCommandState:function(v){var r=this,x,u;if(r._isHidden()){return}if(x=r.queryStateCommands[v]){u=x.func.call(x.scope);if(u!==true){return u}}x=r.editorCommands.queryCommandState(v);if(x!==-1){return x}try{return this.getDoc().queryCommandState(v)}catch(q){}},queryCommandValue:function(x){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[x]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(x);if(d(v)){return v}try{return this.getDoc().queryCommandValue(x)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=false;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){i(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(v,t){var s=this,r,q=s.getBody(),u;t=t||{};t.format=t.format||"html";t.set=true;t.content=v;if(!t.no_events){s.onBeforeSetContent.dispatch(s,t)}v=t.content;if(!n.isIE&&(v.length===0||/^\s+$/.test(v))){u=s.settings.forced_root_block;if(u){v="<"+u+'><br data-mce-bogus="1"></'+u+">"}else{v='<br data-mce-bogus="1">'}q.innerHTML=v;s.selection.select(q,true);s.selection.collapse(true);return}if(t.format!=="raw"){v=new n.html.Serializer({},s.schema).serialize(s.parser.parse(v))}t.content=n.trim(v);s.dom.setHTML(q,t.content);if(!t.no_events){s.onSetContent.dispatch(s,t)}s.selection.normalize();return t.content},getContent:function(r){var q=this,s;r=r||{};r.format=r.format||"html";r.get=true;if(!r.no_events){q.onBeforeGetContent.dispatch(q,r)}if(r.format=="raw"){s=q.getBody().innerHTML}else{s=q.serializer.serialize(q.getBody(),r)}r.content=n.trim(s);if(!r.no_events){q.onGetContent.dispatch(q,r)}return r.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,y,x){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,x,true,y)}if(!v.convert_urls||(x&&x.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}i(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];n.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var D=this,u,E=D.settings,r=D.dom,y={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function q(t,F){var s=t.type;if(D.removed){return}if(D.onEvent.dispatch(D,t,F)!==false){D[y[t.fakeType||t.type]].dispatch(D,t,F)}}i(y,function(t,s){switch(s){case"contextmenu":r.bind(D.getDoc(),s,q);break;case"paste":r.bind(D.getBody(),s,function(F){q(F)});break;case"submit":case"reset":r.bind(D.getElement().form||o.getParent(D.id,"form"),s,q);break;default:r.bind(E.content_editable?D.getBody():D.getDoc(),s,q)}});r.bind(E.content_editable?D.getBody():(a?D.getDoc():D.getWin()),"focus",function(s){D.focus(true)});if(n.isGecko){r.bind(D.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=D.documentBaseURI.toAbsolute(s)}})}if(a){function v(){var G=this,I=G.getDoc(),H=G.settings;if(a&&!H.readonly){G._refreshContentEditable();try{I.execCommand("styleWithCSS",0,false)}catch(F){if(!G._isHidden()){try{I.execCommand("useCSS",0,true)}catch(F){}}}if(!H.table_inline_editing){try{I.execCommand("enableInlineTableEditing",false,false)}catch(F){}}if(!H.object_resizing){try{I.execCommand("enableObjectResizing",false,false)}catch(F){}}}}D.onBeforeExecCommand.add(v);D.onMouseDown.add(v)}D.onMouseUp.add(D.nodeChanged);D.onKeyUp.add(function(s,t){var F=t.keyCode;if((F>=33&&F<=36)||(F>=37&&F<=40)||F==13||F==45||F==46||F==8||(n.isMac&&(F==91||F==93))||t.ctrlKey){D.nodeChanged()}});D.onKeyDown.add(function(t,F){if(F.keyCode!=j.BACKSPACE){return}var s=t.selection.getRng();if(!s.collapsed){return}var H=s.startContainer;var G=s.startOffset;while(H&&H.nodeType&&H.nodeType!=1&&H.parentNode){H=H.parentNode}if(H&&H.parentNode&&H.parentNode.tagName==="BLOCKQUOTE"&&H.parentNode.firstChild==H&&G==0){t.formatter.toggle("blockquote",null,H.parentNode);s.setStart(H,0);s.setEnd(H,0);t.selection.setRng(s);t.selection.collapse(false)}});D.onReset.add(function(){D.setContent(D.startContent,{format:"raw"})});if(E.custom_shortcuts){if(E.custom_undo_redo_keyboard_shortcuts){D.addShortcut("ctrl+z",D.getLang("undo_desc"),"Undo");D.addShortcut("ctrl+y",D.getLang("redo_desc"),"Redo")}D.addShortcut("ctrl+b",D.getLang("bold_desc"),"Bold");D.addShortcut("ctrl+i",D.getLang("italic_desc"),"Italic");D.addShortcut("ctrl+u",D.getLang("underline_desc"),"Underline");for(u=1;u<=6;u++){D.addShortcut("ctrl+"+u,"",["FormatBlock",false,"h"+u])}D.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);D.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);D.addShortcut("ctrl+9","",["FormatBlock",false,"address"]);function x(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(D.shortcuts,function(F){if(n.isMac&&F.ctrl!=t.metaKey){return}else{if(!n.isMac&&F.ctrl!=t.ctrlKey){return}}if(F.alt!=t.altKey){return}if(F.shift!=t.shiftKey){return}if(t.keyCode==F.keyCode||(t.charCode&&t.charCode==F.charCode)){s=F;return false}});return s}D.onKeyUp.add(function(s,t){var F=x(t);if(F){return k.cancel(t)}});D.onKeyPress.add(function(s,t){var F=x(t);if(F){return k.cancel(t)}});D.onKeyDown.add(function(s,t){var F=x(t);if(F){F.func.call(F.scope);return k.cancel(t)}})}if(n.isIE){r.bind(D.getDoc(),"controlselect",function(F){var t=D.resizeInfo,s;F=F.target;if(F.nodeName!=="IMG"){return}if(t){r.unbind(t.node,t.ev,t.cb)}if(!r.hasClass(F,"mceItemNoResize")){ev="resizeend";s=r.bind(F,ev,function(H){var G;H=H.target;if(G=r.getStyle(H,"width")){r.setAttrib(H,"width",G.replace(/[^0-9%]+/g,""));r.setStyle(H,"width","")}if(G=r.getStyle(H,"height")){r.setAttrib(H,"height",G.replace(/[^0-9%]+/g,""));r.setStyle(H,"height","")}})}else{ev="resizestart";s=r.bind(F,"resizestart",k.cancel,k)}t=D.resizeInfo={node:F,ev:ev,cb:s}})}if(n.isOpera){D.onClick.add(function(s,t){k.prevent(t)})}if(E.custom_undo_redo){function A(){D.undoManager.typing=false;D.undoManager.add()}var z=n.isGecko?"blur":"focusout";r.bind(D.getDoc(),z,function(s){if(!D.removed&&D.undoManager.typing){A()}});D.dom.bind(D.dom.getRoot(),"dragend",function(s){A()});D.onKeyUp.add(function(s,F){var t=F.keyCode;if((t>=33&&t<=36)||(t>=37&&t<=40)||t==13||t==45||F.ctrlKey){A()}});D.onKeyDown.add(function(s,G){var F=G.keyCode,t;if(F==8){t=D.getDoc().selection;if(t&&t.createRange&&t.createRange().item){D.undoManager.beforeChange();s.dom.remove(t.createRange().item(0));A();return k.cancel(G)}}if((F>=33&&F<=36)||(F>=37&&F<=40)||F==13||F==45){if(n.isIE&&F==13){D.undoManager.beforeChange()}if(D.undoManager.typing){A()}return}if((F<16||F>20)&&F!=224&&F!=91&&!D.undoManager.typing){D.undoManager.beforeChange();D.undoManager.typing=true;D.undoManager.add()}});D.onMouseDown.add(function(){if(D.undoManager.typing){A()}})}if(n.isGecko){function C(){var s=D.dom.getAttribs(D.selection.getStart().cloneNode(false));return function(){var t=D.selection.getStart();if(t!==D.getBody()){D.dom.setAttrib(t,"style",null);i(s,function(F){t.setAttributeNode(F.cloneNode(true))})}}}function B(){var t=D.selection;return !t.isCollapsed()&&t.getStart()!=t.getEnd()}D.onKeyPress.add(function(s,F){var t;if((F.keyCode==8||F.keyCode==46)&&B()){t=C();D.getDoc().execCommand("delete",false,null);t();return k.cancel(F)}});D.dom.bind(D.getDoc(),"cut",function(t){var s;if(B()){s=C();D.onKeyUp.addToTop(k.cancel,k);setTimeout(function(){s();D.onKeyUp.remove(k.cancel,k)},0)}})}},_refreshContentEditable:function(){var r=this,q,s;if(r._isHidden()){q=r.getBody();s=q.parentNode;s.removeChild(q);s.appendChild(q);q.focus()}},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return b}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return b}function u(v,x){x=x||"exec";d(v,function(z,y){d(y.toLowerCase().split(","),function(A){j[x][A]=z})})}c.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===e){x=b}if(v===e){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:e)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);d("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=c.explode(k.font_size_style_values);v=c.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return b}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new c.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=c.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){d(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[p.getNode()]:p.getSelectedBlocks();var y=c.map(v,function(A){return !!q.matchNode(A,x)});return c.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");if(k.custom_undo_redo){u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(f){var d,e=0,h=[],c;function g(){return b.trim(f.getContent({format:"raw",no_events:1}))}return d={typing:false,onAdd:new a(d),onUndo:new a(d),onRedo:new a(d),beforeChange:function(){c=f.selection.getBookmark(2,true)},add:function(m){var j,k=f.settings,l;m=m||{};m.content=g();l=h[e];if(l&&l.content==m.content){return null}if(h[e]){h[e].beforeBookmark=c}if(k.custom_undo_redo_levels){if(h.length>k.custom_undo_redo_levels){for(j=0;j<h.length-1;j++){h[j]=h[j+1]}h.length--;e=h.length}}m.bookmark=f.selection.getBookmark(2,true);if(e<h.length-1){h.length=e+1}h.push(m);e=h.length-1;d.onAdd.dispatch(d,m);f.isNotDirty=0;return m},undo:function(){var k,j;if(d.typing){d.add();d.typing=false}if(e>0){k=h[--e];f.setContent(k.content,{format:"raw"});f.selection.moveToBookmark(k.beforeBookmark);d.onUndo.dispatch(d,k)}return k},redo:function(){var i;if(e<h.length-1){i=h[++e];f.setContent(i.content,{format:"raw"});f.selection.moveToBookmark(i.bookmark);d.onRedo.dispatch(d,i)}return i},clear:function(){h=[];e=0;d.typing=false},hasUndo:function(){return e>0||this.typing},hasRedo:function(){return e<h.length-1&&!this.typing}}}})(tinymce);(function(l){var j=l.dom.Event,c=l.isIE,a=l.isGecko,b=l.isOpera,i=l.each,h=l.extend,d=true,g=false;function k(o){var p,n,m;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(o.nodeName)){if(p){n=o.cloneNode(false);n.appendChild(p);p=n}else{p=m=o.cloneNode(false)}p.removeAttribute("id")}}while(o=o.parentNode);if(p){return{wrapper:p,inner:m}}}function f(n,o){var m=o.ownerDocument.createRange();m.setStart(n.endContainer,n.endOffset);m.setEndAfter(o);return m.cloneContents().textContent.length==0}function e(o,q,m){var n,p;if(q.isEmpty(m)){n=q.getParent(m,"ul,ol");if(!q.getParent(n.parentNode,"ul,ol")){q.split(n,m);p=q.create("p",0,'<br data-mce-bogus="1" />');q.replace(p,m);o.select(p,1)}return g}return d}l.create("tinymce.ForceBlocks",{ForceBlocks:function(m){var n=this,o=m.settings,p;n.editor=m;n.dom=m.dom;p=(o.forced_root_block||"p").toLowerCase();o.element=p.toUpperCase();m.onPreInit.add(n.setup,n)},setup:function(){var n=this,m=n.editor,p=m.settings,u=m.dom,o=m.selection,q=m.schema.getBlockElements();if(p.forced_root_block){function v(){var y=o.getStart(),t=m.getBody(),s,z,D,F,E,x,A,B=-16777215;if(!y||y.nodeType!==1){return}while(y!=t){if(q[y.nodeName]){return}y=y.parentNode}s=o.getRng();if(s.setStart){z=s.startContainer;D=s.startOffset;F=s.endContainer;E=s.endOffset}else{if(s.item){s=m.getDoc().body.createTextRange();s.moveToElementText(s.item(0))}tmpRng=s.duplicate();tmpRng.collapse(true);D=tmpRng.move("character",B)*-1;if(!tmpRng.collapsed){tmpRng=s.duplicate();tmpRng.collapse(false);E=(tmpRng.move("character",B)*-1)-D}}for(y=t.firstChild;y;y){if(y.nodeType===3||(y.nodeType==1&&!q[y.nodeName])){if(!x){x=u.create(p.forced_root_block);y.parentNode.insertBefore(x,y)}A=y;y=y.nextSibling;x.appendChild(A)}else{x=null;y=y.nextSibling}}if(s.setStart){s.setStart(z,D);s.setEnd(F,E);o.setRng(s)}else{try{s=m.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(true);s.moveStart("character",D);if(E>0){s.moveEnd("character",E)}s.select()}catch(C){}}m.nodeChanged()}m.onKeyUp.add(v);m.onClick.add(v)}if(p.force_br_newlines){if(c){m.onKeyPress.add(function(s,t){var x;if(t.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});x=u.get("__");x.removeAttribute("id");o.select(x);o.collapse();return j.cancel(t)}})}}if(p.force_p_newlines){if(!c){m.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!n.insertPara(t)){j.cancel(t)}})}else{l.addUnload(function(){n._previousFormats=0});m.onKeyPress.add(function(s,t){n._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&p.keep_styles){n._previousFormats=k(s.selection.getStart())}});m.onKeyUp.add(function(t,y){if(y.keyCode==13&&!y.shiftKey){var x=t.selection.getStart(),s=n._previousFormats;if(!x.hasChildNodes()&&s){x=u.getParent(x,u.isBlock);if(x&&x.nodeName!="LI"){x.innerHTML="";if(n._previousFormats){x.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{x.innerHTML="\uFEFF"}o.select(x,1);o.collapse(true);t.getDoc().execCommand("Delete",false,null);n._previousFormats=0}}}})}if(a){m.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){n.backspaceDelete(t,t.keyCode==8)}})}}if(l.isWebKit){function r(t){var s=o.getRng(),x,A=u.create("div",null," "),z,y=u.getViewPort(t.getWin()).h;s.insertNode(x=u.create("br"));s.setStartAfter(x);s.setEndAfter(x);o.setRng(s);if(o.getSel().focusNode==x.previousSibling){o.select(u.insertAfter(u.doc.createTextNode("\u00a0"),x));o.collapse(d)}u.insertAfter(A,x);z=u.getPos(A).y;u.remove(A);if(z>y){t.getWin().scrollTo(0,z)}}m.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(p.force_br_newlines&&!u.getParent(o.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){r(s);j.cancel(t)}})}if(c){if(p.element!="P"){m.onKeyPress.add(function(s,t){n.lastElm=o.getNode().nodeName});m.onKeyUp.add(function(t,x){var z,y=o.getNode(),s=t.getBody();if(s.childNodes.length===1&&y.nodeName=="P"){y=u.rename(y,p.element);o.select(y);o.collapse();t.nodeChanged()}else{if(x.keyCode==13&&!x.shiftKey&&n.lastElm!="P"){z=u.getParent(y,"p");if(z){u.rename(z,p.element);t.nodeChanged()}}}})}}},getParentBlock:function(o){var m=this.dom;return m.getParent(o,m.isBlock)},insertPara:function(Q){var E=this,v=E.editor,M=v.dom,R=v.getDoc(),V=v.settings,F=v.selection.getSel(),G=F.getRangeAt(0),U=R.body;var J,K,H,O,N,q,o,u,z,m,C,T,p,x,I,L=M.getViewPort(v.getWin()),B,D,A;v.undoManager.beforeChange();J=R.createRange();J.setStart(F.anchorNode,F.anchorOffset);J.collapse(d);K=R.createRange();K.setStart(F.focusNode,F.focusOffset);K.collapse(d);H=J.compareBoundaryPoints(J.START_TO_END,K)<0;O=H?F.anchorNode:F.focusNode;N=H?F.anchorOffset:F.focusOffset;q=H?F.focusNode:F.anchorNode;o=H?F.focusOffset:F.anchorOffset;if(O===q&&/^(TD|TH)$/.test(O.nodeName)){if(O.firstChild.nodeName=="BR"){M.remove(O.firstChild)}if(O.childNodes.length==0){v.dom.add(O,V.element,null,"<br />");T=v.dom.add(O,V.element,null,"<br />")}else{I=O.innerHTML;O.innerHTML="";v.dom.add(O,V.element,null,I);T=v.dom.add(O,V.element,null,"<br />")}G=R.createRange();G.selectNodeContents(T);G.collapse(1);v.selection.setRng(G);return g}if(O==U&&q==U&&U.firstChild&&v.dom.isBlock(U.firstChild)){O=q=O.firstChild;N=o=0;J=R.createRange();J.setStart(O,0);K=R.createRange();K.setStart(q,0)}if(!R.body.hasChildNodes()){R.body.appendChild(M.create("br"))}O=O.nodeName=="HTML"?R.body:O;O=O.nodeName=="BODY"?O.firstChild:O;q=q.nodeName=="HTML"?R.body:q;q=q.nodeName=="BODY"?q.firstChild:q;u=E.getParentBlock(O);z=E.getParentBlock(q);m=u?u.nodeName:V.element;if(I=E.dom.getParent(u,"li,pre")){if(I.nodeName=="LI"){return e(v.selection,E.dom,I)}return d}if(u&&(u.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;u=null}if(z&&(z.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;z=null}if(/(TD|TABLE|TH|CAPTION)/.test(m)||(u&&m=="DIV"&&/left|right/gi.test(M.getStyle(u,"float",1)))){m=V.element;u=z=null}C=(u&&u.nodeName==m)?u.cloneNode(0):v.dom.create(m);T=(z&&z.nodeName==m)?z.cloneNode(0):v.dom.create(m);T.removeAttribute("id");if(/^(H[1-6])$/.test(m)&&f(G,u)){T=v.dom.create(V.element)}I=p=O;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}p=I}while((I=I.previousSibling?I.previousSibling:I.parentNode));I=x=q;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}x=I}while((I=I.nextSibling?I.nextSibling:I.parentNode));if(p.nodeName==m){J.setStart(p,0)}else{J.setStartBefore(p)}J.setEnd(O,N);C.appendChild(J.cloneContents()||R.createTextNode(""));try{K.setEndAfter(x)}catch(P){}K.setStart(q,o);T.appendChild(K.cloneContents()||R.createTextNode(""));G=R.createRange();if(!p.previousSibling&&p.parentNode.nodeName==m){G.setStartBefore(p.parentNode)}else{if(J.startContainer.nodeName==m&&J.startOffset==0){G.setStartBefore(J.startContainer)}else{G.setStart(J.startContainer,J.startOffset)}}if(!x.nextSibling&&x.parentNode.nodeName==m){G.setEndAfter(x.parentNode)}else{G.setEnd(K.endContainer,K.endOffset)}G.deleteContents();if(b){v.getWin().scrollTo(0,L.y)}if(C.firstChild&&C.firstChild.nodeName==m){C.innerHTML=C.firstChild.innerHTML}if(T.firstChild&&T.firstChild.nodeName==m){T.innerHTML=T.firstChild.innerHTML}function S(y,s){var r=[],X,W,t;y.innerHTML="";if(V.keep_styles){W=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(W.nodeName)){X=W.cloneNode(g);M.setAttrib(X,"id","");r.push(X)}}while(W=W.parentNode)}if(r.length>0){for(t=r.length-1,X=y;t>=0;t--){X=X.appendChild(r[t])}r[0].innerHTML=b?"\u00a0":"<br />";return r[0]}else{y.innerHTML=b?"\u00a0":"<br />"}}if(M.isEmpty(C)){S(C,O)}if(M.isEmpty(T)){A=S(T,q)}if(b&&parseFloat(opera.version())<9.5){G.insertNode(C);G.insertNode(T)}else{G.insertNode(T);G.insertNode(C)}T.normalize();C.normalize();v.selection.select(T,true);v.selection.collapse(true);B=v.dom.getPos(T).y;if(B<L.y||B+25>L.y+L.h){v.getWin().scrollTo(0,B<L.y?B:B-L.h+25)}v.undoManager.add();return g},backspaceDelete:function(u,B){var C=this,s=C.editor,y=s.getBody(),q=s.dom,p,v=s.selection,o=v.getRng(),x=o.startContainer,p,z,A,m;if(!B&&o.collapsed&&x.nodeType==1&&o.startOffset==x.childNodes.length){m=new l.dom.TreeWalker(x.lastChild,x);for(p=x.lastChild;p;p=m.prev()){if(p.nodeType==3){o.setStart(p,p.nodeValue.length);o.collapse(true);v.setRng(o);return}}}if(x&&s.dom.isBlock(x)&&!/^(TD|TH)$/.test(x.nodeName)&&B){if(x.childNodes.length==0||(x.childNodes.length==1&&x.firstChild.nodeName=="BR")){p=x;while((p=p.previousSibling)&&!s.dom.isBlock(p)){}if(p){if(x!=y.firstChild){z=s.dom.doc.createTreeWalker(p,NodeFilter.SHOW_TEXT,null,g);while(A=z.nextNode()){p=A}o=s.getDoc().createRange();o.setStart(p,p.nodeValue?p.nodeValue.length:0);o.setEnd(p,p.nodeValue?p.nodeValue.length:0);v.setRng(o);s.dom.remove(x)}return j.cancel(u)}}}}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(V){var M={},P=a.each,c=V.dom,q=V.selection,t=a.dom.TreeWalker,K=new a.dom.RangeUtils(c),d=V.schema.isValidChild,F=c.isBlock,l=V.settings.forced_root_block,s=c.nodeIndex,E="\uFEFF",e=/^(src|href|style)$/,S=false,B=true,p;function z(W){return W instanceof Array}function m(X,W){return c.getParents(X,W,c.getRoot())}function b(W){return W.nodeType===1&&W.id==="_mce_caret"}function R(W){return W?M[W]:M}function k(W,X){if(W){if(typeof(W)!=="string"){P(W,function(Z,Y){k(Y,Z)})}else{X=X.length?X:[X];P(X,function(Y){if(Y.deep===p){Y.deep=!Y.selector}if(Y.split===p){Y.split=!Y.selector||Y.inline}if(Y.remove===p&&Y.selector&&!Y.inline){Y.remove="none"}if(Y.selector&&Y.inline){Y.mixed=true;Y.block_expand=true}if(typeof(Y.classes)==="string"){Y.classes=Y.classes.split(/\s+/)}});M[W]=X}}}var i=function(X){var W;V.dom.getParent(X,function(Y){W=V.dom.getStyle(Y,"text-decoration");return W&&W!=="none"});return W};var I=function(W){var X;if(W.nodeType===1&&W.parentNode&&W.parentNode.nodeType===1){X=i(W.parentNode);if(V.dom.getStyle(W,"color")&&X){V.dom.setStyle(W,"text-decoration",X)}else{if(V.dom.getStyle(W,"textdecoration")===X){V.dom.setStyle(W,"text-decoration",null)}}}};function T(Z,ag,ab){var ac=R(Z),ah=ac[0],af,X,ae,ad=q.isCollapsed();function W(al,ak){ak=ak||ah;if(al){if(ak.onformat){ak.onformat(al,ak,ag,ab)}P(ak.styles,function(an,am){c.setStyle(al,am,r(an,ag))});P(ak.attributes,function(an,am){c.setAttrib(al,am,r(an,ag))});P(ak.classes,function(am){am=r(am,ag);if(!c.hasClass(al,am)){c.addClass(al,am)}})}}function aa(){function am(at,aq){var ar=new t(aq);for(ab=ar.current();ab;ab=ar.prev()){if(ab.childNodes.length>1||ab==at){return ab}}}var al=V.selection.getRng();var ap=al.startContainer;var ak=al.endContainer;if(ap!=ak&&al.endOffset==0){var ao=am(ap,ak);var an=ao.nodeType==3?ao.length:ao.childNodes.length;al.setEnd(ao,an)}return al}function Y(an,at,aq,ap,al){var ak=[],am=-1,ar,av=-1,ao=-1,au;P(an.childNodes,function(ax,aw){if(ax.nodeName==="UL"||ax.nodeName==="OL"){am=aw;ar=ax;return false}});P(an.childNodes,function(ax,aw){if(ax.nodeName==="SPAN"&&c.getAttrib(ax,"data-mce-type")=="bookmark"){if(ax.id==at.id+"_start"){av=aw}else{if(ax.id==at.id+"_end"){ao=aw}}}});if(am<=0||(av<am&&ao>am)){P(a.grep(an.childNodes),al);return 0}else{au=aq.cloneNode(S);P(a.grep(an.childNodes),function(ax,aw){if((av<am&&aw<am)||(av>am&&aw>am)){ak.push(ax);ax.parentNode.removeChild(ax)}});if(av<am){an.insertBefore(au,ar)}else{if(av>am){an.insertBefore(au,ar.nextSibling)}}ap.push(au);P(ak,function(aw){au.appendChild(aw)});return au}}function ai(al,an,ap){var ak=[],ao,am;ao=ah.inline||ah.block;am=c.create(ao);W(am);K.walk(al,function(aq){var ar;function at(au){var ax=au.nodeName.toLowerCase(),aw=au.parentNode.nodeName.toLowerCase(),av;if(g(ax,"br")){ar=0;if(ah.block){c.remove(au)}return}if(ah.wrapper&&x(au,Z,ag)){ar=0;return}if(ah.block&&!ah.wrapper&&G(ax)){au=c.rename(au,ao);W(au);ak.push(au);ar=0;return}if(ah.selector){P(ac,function(ay){if("collapsed" in ay&&ay.collapsed!==ad){return}if(c.is(au,ay.selector)&&!b(au)){W(au,ay);av=true}});if(!ah.inline||av){ar=0;return}}if(d(ao,ax)&&d(aw,ao)&&!(!ap&&au.nodeType===3&&au.nodeValue.length===1&&au.nodeValue.charCodeAt(0)===65279)&&!b(au)){if(!ar){ar=am.cloneNode(S);au.parentNode.insertBefore(ar,au);ak.push(ar)}ar.appendChild(au)}else{if(ax=="li"&&an){ar=Y(au,an,am,ak,at)}else{ar=0;P(a.grep(au.childNodes),at);ar=0}}}P(aq,at)});if(ah.wrap_links===false){P(ak,function(aq){function ar(aw){var av,au,at;if(aw.nodeName==="A"){au=am.cloneNode(S);ak.push(au);at=a.grep(aw.childNodes);for(av=0;av<at.length;av++){au.appendChild(at[av])}aw.appendChild(au)}P(a.grep(aw.childNodes),ar)}ar(aq)})}P(ak,function(at){var aq;function au(aw){var av=0;P(aw.childNodes,function(ax){if(!f(ax)&&!H(ax)){av++}});return av}function ar(av){var ax,aw;P(av.childNodes,function(ay){if(ay.nodeType==1&&!H(ay)&&!b(ay)){ax=ay;return S}});if(ax&&h(ax,ah)){aw=ax.cloneNode(S);W(aw);c.replace(aw,av,B);c.remove(ax,1)}return aw||av}aq=au(at);if((ak.length>1||!F(at))&&aq===0){c.remove(at,1);return}if(ah.inline||ah.wrapper){if(!ah.exact&&aq===1){at=ar(at)}P(ac,function(av){P(c.select(av.inline,at),function(ax){var aw;if(av.wrap_links===false){aw=ax.parentNode;do{if(aw.nodeName==="A"){return}}while(aw=aw.parentNode)}U(av,ag,ax,av.exact?ax:null)})});if(x(at.parentNode,Z,ag)){c.remove(at,1);at=0;return B}if(ah.merge_with_parents){c.getParent(at.parentNode,function(av){if(x(av,Z,ag)){c.remove(at,1);at=0;return B}})}if(at&&ah.merge_siblings!==false){at=u(C(at),at);at=u(at,C(at,B))}}})}if(ah){if(ab){if(ab.nodeType){X=c.createRng();X.setStartBefore(ab);X.setEndAfter(ab);ai(o(X,ac),null,true)}else{ai(ab,null,true)}}else{if(!ad||!ah.inline||c.select("td.mceSelected,th.mceSelected").length){var aj=V.selection.getNode();V.selection.setRng(aa());af=q.getBookmark();ai(o(q.getRng(B),ac),af);if(ah.styles&&(ah.styles.color||ah.styles.textDecoration)){a.walk(aj,I,"childNodes");I(aj)}q.moveToBookmark(af);N(q.getRng(B));V.nodeChanged()}else{Q("apply",Z,ag)}}}}function A(Y,ag,aa){var ab=R(Y),ai=ab[0],af,ae,X;function Z(an){var am,al,ak;am=a.grep(an.childNodes);for(al=0,ak=ab.length;al<ak;al++){if(U(ab[al],ag,an,an)){break}}if(ai.deep){for(al=0,ak=am.length;al<ak;al++){Z(am[al])}}}function ac(ak){var al;P(m(ak.parentNode).reverse(),function(am){var an;if(!al&&am.id!="_start"&&am.id!="_end"){an=x(am,Y,ag);if(an&&an.split!==false){al=am}}});return al}function W(an,ak,ap,at){var au,ar,aq,am,ao,al;if(an){al=an.parentNode;for(au=ak.parentNode;au&&au!=al;au=au.parentNode){ar=au.cloneNode(S);for(ao=0;ao<ab.length;ao++){if(U(ab[ao],ag,ar,ar)){ar=0;break}}if(ar){if(aq){ar.appendChild(aq)}if(!am){am=ar}aq=ar}}if(at&&(!ai.mixed||!F(an))){ak=c.split(an,ak)}if(aq){ap.parentNode.insertBefore(aq,ap);am.appendChild(ap)}}return ak}function ah(ak){return W(ac(ak),ak,ak,true)}function ad(am){var al=c.get(am?"_start":"_end"),ak=al[am?"firstChild":"lastChild"];if(H(ak)){ak=ak[am?"firstChild":"lastChild"]}c.remove(al,true);return ak}function aj(ak){var al,am;ak=o(ak,ab,B);if(ai.split){al=J(ak,B);am=J(ak);if(al!=am){al=O(al,"span",{id:"_start","data-mce-type":"bookmark"});am=O(am,"span",{id:"_end","data-mce-type":"bookmark"});ah(al);ah(am);al=ad(B);am=ad()}else{al=am=ah(al)}ak.startContainer=al.parentNode;ak.startOffset=s(al);ak.endContainer=am.parentNode;ak.endOffset=s(am)+1}K.walk(ak,function(an){P(an,function(ao){Z(ao);if(ao.nodeType===1&&V.dom.getStyle(ao,"text-decoration")==="underline"&&ao.parentNode&&i(ao.parentNode)==="underline"){U({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,ao)}})})}if(aa){if(aa.nodeType){X=c.createRng();X.setStartBefore(aa);X.setEndAfter(aa);aj(X)}else{aj(aa)}return}if(!q.isCollapsed()||!ai.inline||c.select("td.mceSelected,th.mceSelected").length){af=q.getBookmark();aj(q.getRng(B));q.moveToBookmark(af);if(ai.inline&&j(Y,ag,q.getStart())){N(q.getRng(true))}V.nodeChanged()}else{Q("remove",Y,ag)}if(a.isWebKit){V.execCommand("mceCleanup")}}function D(X,Z,Y){var W=R(X);if(j(X,Z,Y)&&(!("toggle" in W[0])||W[0]["toggle"])){A(X,Z,Y)}else{T(X,Z,Y)}}function x(X,W,ac,aa){var Y=R(W),ad,ab,Z;function ae(ai,ak,al){var ah,aj,af=ak[al],ag;if(ak.onmatch){return ak.onmatch(ai,ak,al)}if(af){if(af.length===p){for(ah in af){if(af.hasOwnProperty(ah)){if(al==="attributes"){aj=c.getAttrib(ai,ah)}else{aj=L(ai,ah)}if(aa&&!aj&&!ak.exact){return}if((!aa||ak.exact)&&!g(aj,r(af[ah],ac))){return}}}}else{for(ag=0;ag<af.length;ag++){if(al==="attributes"?c.getAttrib(ai,af[ag]):L(ai,af[ag])){return ak}}}}return ak}if(Y&&X){for(ab=0;ab<Y.length;ab++){ad=Y[ab];if(h(X,ad)&&ae(X,ad,"attributes")&&ae(X,ad,"styles")){if(Z=ad.classes){for(ab=0;ab<Z.length;ab++){if(!c.hasClass(X,Z[ab])){return}}}return ad}}}}function j(Y,aa,Z){var X;function W(ab){ab=c.getParent(ab,function(ac){return !!x(ac,Y,aa,true)});return x(ab,Y,aa)}if(Z){return W(Z)}Z=q.getNode();if(W(Z)){return B}X=q.getStart();if(X!=Z){if(W(X)){return B}}return S}function v(ad,ac){var aa,ab=[],Z={},Y,X,W;aa=q.getStart();c.getParent(aa,function(ag){var af,ae;for(af=0;af<ad.length;af++){ae=ad[af];if(!Z[ae]&&x(ag,ae,ac)){Z[ae]=true;ab.push(ae)}}});return ab}function y(aa){var ac=R(aa),Z,Y,ab,X,W;if(ac){Z=q.getStart();Y=m(Z);for(X=ac.length-1;X>=0;X--){W=ac[X].selector;if(!W){return B}for(ab=Y.length-1;ab>=0;ab--){if(c.is(Y[ab],W)){return B}}}}return S}a.extend(this,{get:R,register:k,apply:T,remove:A,toggle:D,match:j,matchAll:v,matchNode:x,canApply:y});function h(W,X){if(g(W,X.inline)){return B}if(g(W,X.block)){return B}if(X.selector){return c.is(W,X.selector)}}function g(X,W){X=X||"";W=W||"";X=""+(X.nodeName||X);W=""+(W.nodeName||W);return X.toLowerCase()==W.toLowerCase()}function L(X,W){var Y=c.getStyle(X,W);if(W=="color"||W=="backgroundColor"){Y=c.toHex(Y)}if(W=="fontWeight"&&Y==700){Y="bold"}return""+Y}function r(W,X){if(typeof(W)!="string"){W=W(X)}else{if(X){W=W.replace(/%(\w+)/g,function(Z,Y){return X[Y]||Z})}}return W}function f(W){return W&&W.nodeType===3&&/^([\t \r\n]+|)$/.test(W.nodeValue)}function O(Y,X,W){var Z=c.create(X,W);Y.parentNode.insertBefore(Z,Y);Z.appendChild(Y);return Z}function o(W,ai,Z){var Y=W.startContainer,ad=W.startOffset,al=W.endContainer,af=W.endOffset,ak,ah,ac,ag;function aj(ar){var am,ap,aq,ao,an;am=ap=ar?Y:al;an=ar?"previousSibling":"nextSibling";root=c.getRoot();if(am.nodeType==3&&!f(am)){if(ar?ad>0:af<am.nodeValue.length){return am}}for(;;){if(!ai[0].block_expand&&F(ap)){return ap}for(ao=ap[an];ao;ao=ao[an]){if(!H(ao)&&!f(ao)){return ap}}if(ap.parentNode==root){am=ap;break}ap=ap.parentNode}return am}function ab(am,an){if(an===p){an=am.nodeType===3?am.length:am.childNodes.length}while(am&&am.hasChildNodes()){am=am.childNodes[an];if(am){an=am.nodeType===3?am.length:am.childNodes.length}}return{node:am,offset:an}}if(Y.nodeType==1&&Y.hasChildNodes()){ah=Y.childNodes.length-1;Y=Y.childNodes[ad>ah?ah:ad];if(Y.nodeType==3){ad=0}}if(al.nodeType==1&&al.hasChildNodes()){ah=al.childNodes.length-1;al=al.childNodes[af>ah?ah:af-1];if(al.nodeType==3){af=al.nodeValue.length}}if(H(Y.parentNode)||H(Y)){Y=H(Y)?Y:Y.parentNode;Y=Y.nextSibling||Y;if(Y.nodeType==3){ad=0}}if(H(al.parentNode)||H(al)){al=H(al)?al:al.parentNode;al=al.previousSibling||al;if(al.nodeType==3){af=al.length}}if(ai[0].inline){if(W.collapsed){function ae(an,ar,au){var aq,ao,at,am;function ap(aw,ay){var az,av,ax=aw.nodeValue;if(typeof(ay)=="undefined"){ay=au?ax.length:0}if(au){az=ax.lastIndexOf(" ",ay);av=ax.lastIndexOf("\u00a0",ay);az=az>av?az:av;if(az!==-1&&!Z){az++}}else{az=ax.indexOf(" ",ay);av=ax.indexOf("\u00a0",ay);az=az!==-1&&(av===-1||az<av)?az:av}return az}if(an.nodeType===3){at=ap(an,ar);if(at!==-1){return{container:an,offset:at}}am=an}aq=new t(an,c.getParent(an,F)||V.getBody());while(ao=aq[au?"prev":"next"]()){if(ao.nodeType===3){am=ao;at=ap(ao);if(at!==-1){return{container:ao,offset:at}}}else{if(F(ao)){break}}}if(am){if(au){ar=0}else{ar=am.length}return{container:am,offset:ar}}}ag=ae(Y,ad,true);if(ag){Y=ag.container;ad=ag.offset}ag=ae(al,af);if(ag){al=ag.container;af=ag.offset}}ac=ab(al,af);if(ac.node){while(ac.node&&ac.offset===0&&ac.node.previousSibling){ac=ab(ac.node.previousSibling)}if(ac.node&&ac.offset>0&&ac.node.nodeType===3&&ac.node.nodeValue.charAt(ac.offset-1)===" "){if(ac.offset>1){al=ac.node;al.splitText(ac.offset-1)}else{if(ac.node.previousSibling){}}}}}if(ai[0].inline||ai[0].block_expand){if(!ai[0].inline||(Y.nodeType!=3||ad===0)){Y=aj(true)}if(!ai[0].inline||(al.nodeType!=3||af===al.nodeValue.length)){al=aj()}}if(ai[0].selector&&ai[0].expand!==S&&!ai[0].inline){function aa(an,am){var ao,ap,ar,aq;if(an.nodeType==3&&an.nodeValue.length==0&&an[am]){an=an[am]}ao=m(an);for(ap=0;ap<ao.length;ap++){for(ar=0;ar<ai.length;ar++){aq=ai[ar];if("collapsed" in aq&&aq.collapsed!==W.collapsed){continue}if(c.is(ao[ap],aq.selector)){return ao[ap]}}}return an}Y=aa(Y,"previousSibling");al=aa(al,"nextSibling")}if(ai[0].block||ai[0].selector){function X(an,am,ap){var ao;if(!ai[0].wrapper){ao=c.getParent(an,ai[0].block)}if(!ao){ao=c.getParent(an.nodeType==3?an.parentNode:an,F)}if(ao&&ai[0].wrapper){ao=m(ao,"ul,ol").reverse()[0]||ao}if(!ao){ao=an;while(ao[am]&&!F(ao[am])){ao=ao[am];if(g(ao,"br")){break}}}return ao||an}Y=X(Y,"previousSibling");al=X(al,"nextSibling");if(ai[0].block){if(!F(Y)){Y=aj(true)}if(!F(al)){al=aj()}}}if(Y.nodeType==1){ad=s(Y);Y=Y.parentNode}if(al.nodeType==1){af=s(al)+1;al=al.parentNode}return{startContainer:Y,startOffset:ad,endContainer:al,endOffset:af}}function U(ac,ab,Z,W){var Y,X,aa;if(!h(Z,ac)){return S}if(ac.remove!="all"){P(ac.styles,function(ae,ad){ae=r(ae,ab);if(typeof(ad)==="number"){ad=ae;W=0}if(!W||g(L(W,ad),ae)){c.setStyle(Z,ad,"")}aa=1});if(aa&&c.getAttrib(Z,"style")==""){Z.removeAttribute("style");Z.removeAttribute("data-mce-style")}P(ac.attributes,function(af,ad){var ae;af=r(af,ab);if(typeof(ad)==="number"){ad=af;W=0}if(!W||g(c.getAttrib(W,ad),af)){if(ad=="class"){af=c.getAttrib(Z,ad);if(af){ae="";P(af.split(/\s+/),function(ag){if(/mce\w+/.test(ag)){ae+=(ae?" ":"")+ag}});if(ae){c.setAttrib(Z,ad,ae);return}}}if(ad=="class"){Z.removeAttribute("className")}if(e.test(ad)){Z.removeAttribute("data-mce-"+ad)}Z.removeAttribute(ad)}});P(ac.classes,function(ad){ad=r(ad,ab);if(!W||c.hasClass(W,ad)){c.removeClass(Z,ad)}});X=c.getAttribs(Z);for(Y=0;Y<X.length;Y++){if(X[Y].nodeName.indexOf("_")!==0){return S}}}if(ac.remove!="none"){n(Z,ac);return B}}function n(Y,Z){var W=Y.parentNode,X;if(Z.block){if(!l){function aa(ac,ab,ad){ac=C(ac,ab,ad);return !ac||(ac.nodeName=="BR"||F(ac))}if(F(Y)&&!F(W)){if(!aa(Y,S)&&!aa(Y.firstChild,B,1)){Y.insertBefore(c.create("br"),Y.firstChild)}if(!aa(Y,B)&&!aa(Y.lastChild,S,1)){Y.appendChild(c.create("br"))}}}else{if(W==c.getRoot()){if(!Z.list_block||!g(Y,Z.list_block)){P(a.grep(Y.childNodes),function(ab){if(d(l,ab.nodeName.toLowerCase())){if(!X){X=O(ab,l)}else{X.appendChild(ab)}}else{X=0}})}}}}if(Z.selector&&Z.inline&&!g(Z.inline,Y)){return}c.remove(Y,1)}function C(X,W,Y){if(X){W=W?"nextSibling":"previousSibling";for(X=Y?X:X[W];X;X=X[W]){if(X.nodeType==1||!f(X)){return X}}}}function H(W){return W&&W.nodeType==1&&W.getAttribute("data-mce-type")=="bookmark"}function u(aa,Z){var W,Y,X;function ac(af,ae){if(af.nodeName!=ae.nodeName){return S}function ad(ah){var ai={};P(c.getAttribs(ah),function(aj){var ak=aj.nodeName.toLowerCase();if(ak.indexOf("_")!==0&&ak!=="style"){ai[ak]=c.getAttrib(ah,ak)}});return ai}function ag(ak,aj){var ai,ah;for(ah in ak){if(ak.hasOwnProperty(ah)){ai=aj[ah];if(ai===p){return S}if(ak[ah]!=ai){return S}delete aj[ah]}}for(ah in aj){if(aj.hasOwnProperty(ah)){return S}}return B}if(!ag(ad(af),ad(ae))){return S}if(!ag(c.parseStyle(c.getAttrib(af,"style")),c.parseStyle(c.getAttrib(ae,"style")))){return S}return B}if(aa&&Z){function ab(ae,ad){for(Y=ae;Y;Y=Y[ad]){if(Y.nodeType==3&&Y.nodeValue.length!==0){return ae}if(Y.nodeType==1&&!H(Y)){return Y}}return ae}aa=ab(aa,"previousSibling");Z=ab(Z,"nextSibling");if(ac(aa,Z)){for(Y=aa.nextSibling;Y&&Y!=Z;){X=Y;Y=Y.nextSibling;aa.appendChild(X)}c.remove(Z);P(a.grep(Z.childNodes),function(ad){aa.appendChild(ad)});return aa}}return Z}function G(W){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(W)}function J(X,ab){var W,aa,Y,Z;W=X[ab?"startContainer":"endContainer"];aa=X[ab?"startOffset":"endOffset"];if(W.nodeType==1){Y=W.childNodes.length-1;if(!ab&&aa){aa--}W=W.childNodes[aa>Y?Y:aa]}if(W.nodeType===3&&ab&&aa>=W.nodeValue.length){W=new t(W,V.getBody()).next()||W}if(W.nodeType===3&&!ab&&aa==0){W=new t(W,V.getBody()).prev()||W}return W}function Q(af,W,ad){var ai,ag="_mce_caret",X=V.settings.caret_debug;ai=a.isGecko?"\u200B":E;function Y(ak){var aj=c.create("span",{id:ag,"data-mce-bogus":true,style:X?"color:red":""});if(ak){aj.appendChild(V.getDoc().createTextNode(ai))}return aj}function ae(ak,aj){while(ak){if((ak.nodeType===3&&ak.nodeValue!==ai)||ak.childNodes.length>1){return false}if(aj&&ak.nodeType===1){aj.push(ak)}ak=ak.firstChild}return true}function ab(aj){while(aj){if(aj.id===ag){return aj}aj=aj.parentNode}}function aa(aj){var ak;if(aj){ak=new t(aj,aj);for(aj=ak.current();aj;aj=ak.next()){if(aj.nodeType===3){return aj}}}}function Z(al,ak){var am,aj;if(!al){al=ab(q.getStart());if(!al){while(al=c.get(ag)){Z(al,false)}}}else{aj=q.getRng(true);if(ae(al)){if(ak!==false){aj.setStartBefore(al);aj.setEndBefore(al)}c.remove(al)}else{am=aa(al);if(am.nodeValue.charAt(0)===E){am=am.deleteData(0,1)}c.remove(al,1)}q.setRng(aj)}}function ac(){var al,aj,ap,ao,am,ak,an;al=q.getRng(true);ao=al.startOffset;ak=al.startContainer;an=ak.nodeValue;aj=ab(q.getStart());if(aj){ap=aa(aj)}if(an&&ao>0&&ao<an.length&&/\w/.test(an.charAt(ao))&&/\w/.test(an.charAt(ao-1))){am=q.getBookmark();al.collapse(true);al=o(al,R(W));al=K.split(al);T(W,ad,al);q.moveToBookmark(am)}else{if(!aj||ap.nodeValue!==ai){aj=Y(true);ap=aj.firstChild;al.insertNode(aj);ao=1;T(W,ad,aj)}else{T(W,ad,aj)}q.setCursorLocation(ap,ao)}}function ah(){var aj=q.getRng(true),ak,am,ap,ao,al,at,ar=[],an,aq;ak=aj.startContainer;am=aj.startOffset;al=ak;if(ak.nodeType==3){if(am!=ak.nodeValue.length||ak.nodeValue===ai){ao=true}al=al.parentNode}while(al){if(x(al,W,ad)){at=al;break}if(al.nextSibling){ao=true}ar.push(al);al=al.parentNode}if(!at){return}if(ao){ap=q.getBookmark();aj.collapse(true);aj=o(aj,R(W),true);aj=K.split(aj);A(W,ad,aj);q.moveToBookmark(ap)}else{aq=Y();al=aq;for(an=ar.length-1;an>=0;an--){al.appendChild(ar[an].cloneNode(false));al=al.firstChild}al.appendChild(c.doc.createTextNode(ai));al=al.firstChild;c.insertAfter(aq,at);q.setCursorLocation(al,1)}}if(!self._hasCaretEvents){V.onBeforeGetContent.addToTop(function(){var aj=[],ak;if(ae(ab(q.getStart()),aj)){ak=aj.length;while(ak--){c.setAttrib(aj[ak],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(aj){V[aj].addToTop(function(){Z()})});V.onKeyDown.addToTop(function(aj,al){var ak=al.keyCode;if(ak==8||ak==37||ak==39){Z(ab(q.getStart()))}});self._hasCaretEvents=true}if(af=="apply"){ac()}else{ah()}}function N(X){var W=X.startContainer,ac=X.startOffset,ab,aa,Y,Z;if(W.nodeType==3&&ac>=W.nodeValue.length-1){W=W.parentNode;ac=s(W)+1}if(W.nodeType==1){Y=W.childNodes;W=Y[Math.min(ac,Y.length-1)];ab=new t(W);if(ac>Y.length-1){ab.next()}for(aa=ab.current();aa;aa=ab.next()){if(aa.nodeType==3&&!f(aa)){Z=c.create("a",null,E);aa.parentNode.insertBefore(Z,aa);X.setStart(aa,0);q.setRng(X);c.remove(Z);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_legacy_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});
+(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.8",releaseDate:"2012-11-20",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&c.isArray(g)){return true}return typeof(g)==f},isArray:Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&Object.prototype.toString.call(o)==="[object Array]"){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(a){var j=tinymce.VK,f=j.BACKSPACE,k=j.DELETE,e=a.dom,l=a.selection,H=a.settings,v=a.parser,o=a.serializer,E=tinymce.each;function A(N,M){try{a.getDoc().execCommand(N,false,M)}catch(L){}}function n(){var L=a.getDoc().documentMode;return L?L:6}function z(L){return L.isDefaultPrevented()}function J(){function L(O){var M,Q,N,P;M=l.getRng();Q=e.getParent(M.startContainer,e.isBlock);if(O){Q=e.getNext(Q,e.isBlock)}if(Q){N=Q.firstChild;while(N&&N.nodeType==3&&N.nodeValue.length===0){N=N.nextSibling}if(N&&N.nodeName==="SPAN"){P=N.cloneNode(false)}}E(e.select("span",Q),function(R){R.setAttribute("data-mce-mark","1")});a.getDoc().execCommand(O?"ForwardDelete":"Delete",false,null);Q=e.getParent(M.startContainer,e.isBlock);E(e.select("span",Q),function(R){var S=l.getBookmark();if(P){e.replace(P.cloneNode(false),R,true)}else{if(!R.getAttribute("data-mce-mark")){e.remove(R,true)}else{R.removeAttribute("data-mce-mark")}}l.moveToBookmark(S)})}a.onKeyDown.add(function(M,O){var N;N=O.keyCode==k;if(!z(O)&&(N||O.keyCode==f)&&!j.modifierPressed(O)){O.preventDefault();L(N)}});a.addCommand("Delete",function(){L()})}function q(){function L(O){var N=e.create("body");var P=O.cloneContents();N.appendChild(P);return l.serializer.serialize(N,{format:"html"})}function M(N){var P=L(N);var Q=e.createRng();Q.selectNode(a.getBody());var O=L(Q);return P===O}a.onKeyDown.add(function(O,Q){var P=Q.keyCode,N;if(!z(Q)&&(P==k||P==f)){N=O.selection.isCollapsed();if(N&&!e.isEmpty(O.getBody())){return}if(tinymce.isIE&&!N){return}if(!N&&!M(O.selection.getRng())){return}O.setContent("");O.selection.setCursorLocation(O.getBody(),0);O.nodeChanged()}})}function I(){a.onKeyDown.add(function(L,M){if(!z(M)&&M.keyCode==65&&j.metaKeyPressed(M)){M.preventDefault();L.execCommand("SelectAll")}})}function K(){if(!a.settings.content_editable){e.bind(a.getDoc(),"focusin",function(L){l.setRng(l.getRng())});e.bind(a.getDoc(),"mousedown",function(L){if(L.target==a.getDoc().documentElement){a.getWin().focus();l.setRng(l.getRng())}})}}function B(){a.onKeyDown.add(function(L,O){if(!z(O)&&O.keyCode===f){if(l.isCollapsed()&&l.getRng(true).startOffset===0){var N=l.getNode();var M=N.previousSibling;if(M&&M.nodeName&&M.nodeName.toLowerCase()==="hr"){e.remove(M);tinymce.dom.Event.cancel(O)}}}})}function y(){if(!Range.prototype.getClientRects){a.onMouseDown.add(function(M,N){if(!z(N)&&N.target.nodeName==="HTML"){var L=M.getBody();L.blur();setTimeout(function(){L.focus()},0)}})}}function h(){a.onClick.add(function(L,M){M=M.target;if(/^(IMG|HR)$/.test(M.nodeName)){l.getSel().setBaseAndExtent(M,0,M,1)}if(M.nodeName=="A"&&e.hasClass(M,"mceItemAnchor")){l.select(M)}L.nodeChanged()})}function c(){function M(){var O=e.getAttribs(l.getStart().cloneNode(false));return function(){var P=l.getStart();if(P!==a.getBody()){e.setAttrib(P,"style",null);E(O,function(Q){P.setAttributeNode(Q.cloneNode(true))})}}}function L(){return !l.isCollapsed()&&e.getParent(l.getStart(),e.isBlock)!=e.getParent(l.getEnd(),e.isBlock)}function N(O,P){P.preventDefault();return false}a.onKeyPress.add(function(O,Q){var P;if(!z(Q)&&(Q.keyCode==8||Q.keyCode==46)&&L()){P=M();O.getDoc().execCommand("delete",false,null);P();Q.preventDefault();return false}});e.bind(a.getDoc(),"cut",function(P){var O;if(!z(P)&&L()){O=M();a.onKeyUp.addToTop(N);setTimeout(function(){O();a.onKeyUp.remove(N)},0)}})}function b(){var M,L;e.bind(a.getDoc(),"selectionchange",function(){if(L){clearTimeout(L);L=0}L=window.setTimeout(function(){var N=l.getRng();if(!M||!tinymce.dom.RangeUtils.compareRanges(N,M)){a.nodeChanged();M=N}},50)})}function x(){document.body.setAttribute("role","application")}function t(){a.onKeyDown.add(function(L,N){if(!z(N)&&N.keyCode===f){if(l.isCollapsed()&&l.getRng(true).startOffset===0){var M=l.getNode().previousSibling;if(M&&M.nodeName&&M.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(N)}}}})}function C(){if(n()>7){return}A("RespectVisibilityInDesign",true);a.contentStyles.push(".mceHideBrInPre pre br {display: none}");e.addClass(a.getBody(),"mceHideBrInPre");v.addNodeFilter("pre",function(L,N){var O=L.length,Q,M,R,P;while(O--){Q=L[O].getAll("br");M=Q.length;while(M--){R=Q[M];P=R.prev;if(P&&P.type===3&&P.value.charAt(P.value-1)!="\n"){P.value+="\n"}else{R.parent.insert(new tinymce.html.Node("#text",3),R,true).value="\n"}}}});o.addNodeFilter("pre",function(L,N){var O=L.length,Q,M,R,P;while(O--){Q=L[O].getAll("br");M=Q.length;while(M--){R=Q[M];P=R.prev;if(P&&P.type==3){P.value=P.value.replace(/\r?\n$/,"")}}}})}function g(){e.bind(a.getBody(),"mouseup",function(N){var M,L=l.getNode();if(L.nodeName=="IMG"){if(M=e.getStyle(L,"width")){e.setAttrib(L,"width",M.replace(/[^0-9%]+/g,""));e.setStyle(L,"width","")}if(M=e.getStyle(L,"height")){e.setAttrib(L,"height",M.replace(/[^0-9%]+/g,""));e.setStyle(L,"height","")}}})}function d(){a.onKeyDown.add(function(R,S){var Q,L,M,O,P,T,N;Q=S.keyCode==k;if(!z(S)&&(Q||S.keyCode==f)&&!j.modifierPressed(S)){L=l.getRng();M=L.startContainer;O=L.startOffset;N=L.collapsed;if(M.nodeType==3&&M.nodeValue.length>0&&((O===0&&!N)||(N&&O===(Q?0:1)))){nonEmptyElements=R.schema.getNonEmptyElements();S.preventDefault();P=e.create("br",{id:"__tmp"});M.parentNode.insertBefore(P,M);R.getDoc().execCommand(Q?"ForwardDelete":"Delete",false,null);M=l.getRng().startContainer;T=M.previousSibling;if(T&&T.nodeType==1&&!e.isBlock(T)&&e.isEmpty(T)&&!nonEmptyElements[T.nodeName.toLowerCase()]){e.remove(T)}e.remove("__tmp")}}})}function G(){a.onKeyDown.add(function(P,Q){var N,M,R,L,O;if(z(Q)||Q.keyCode!=j.BACKSPACE){return}N=l.getRng();M=N.startContainer;R=N.startOffset;L=e.getRoot();O=M;if(!N.collapsed||R!==0){return}while(O&&O.parentNode&&O.parentNode.firstChild==O&&O.parentNode!=L){O=O.parentNode}if(O.tagName==="BLOCKQUOTE"){P.formatter.toggle("blockquote",null,O);N=e.createRng();N.setStart(M,0);N.setEnd(M,0);l.setRng(N)}})}function F(){function L(){a._refreshContentEditable();A("StyleWithCSS",false);A("enableInlineTableEditing",false);if(!H.object_resizing){A("enableObjectResizing",false)}}if(!H.readonly){a.onBeforeExecCommand.add(L);a.onMouseDown.add(L)}}function s(){function L(M,N){E(e.select("a"),function(Q){var O=Q.parentNode,P=e.getRoot();if(O.lastChild===Q){while(O&&!e.isBlock(O)){if(O.parentNode.lastChild!==O||O===P){return}O=O.parentNode}e.add(O,"br",{"data-mce-bogus":1})}})}a.onExecCommand.add(function(M,N){if(N==="CreateLink"){L(M)}});a.onSetContent.add(l.onSetContent.add(L))}function m(){if(H.forced_root_block){a.onInit.add(function(){A("DefaultParagraphSeparator",H.forced_root_block)})}}function p(){function L(N,M){if(!N||!M.initial){a.execCommand("mceRepaint")}}a.onUndo.add(L);a.onRedo.add(L);a.onSetContent.add(L)}function i(){a.onKeyDown.add(function(M,N){var L;if(!z(N)&&N.keyCode==f){L=M.getDoc().selection.createRange();if(L&&L.item){N.preventDefault();M.undoManager.beforeChange();e.remove(L.item(0));M.undoManager.add()}}})}function r(){var L;if(n()>=10){L="";E("p div h1 h2 h3 h4 h5 h6".split(" "),function(M,N){L+=(N>0?",":"")+M+":empty"});a.contentStyles.push(L+"{padding-right: 1px !important}")}}function u(){var N,M,ad,L,Y,ab,Z,ac,O,P,aa,W,V,X=document,T=a.getDoc();if(!H.object_resizing||H.webkit_fake_resize===false){return}A("enableObjectResizing",false);aa={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function R(ah){var ag,af;ag=ah.screenX-ab;af=ah.screenY-Z;W=ag*Y[2]+ac;V=af*Y[3]+O;W=W<5?5:W;V=V<5?5:V;if(j.modifierPressed(ah)||(ad.nodeName=="IMG"&&Y[2]*Y[3]!==0)){W=Math.round(V/P);V=Math.round(W*P)}e.setStyles(L,{width:W,height:V});if(Y[2]<0&&L.clientWidth<=W){e.setStyle(L,"left",N+(ac-W))}if(Y[3]<0&&L.clientHeight<=V){e.setStyle(L,"top",M+(O-V))}}function ae(){function af(ag,ah){if(ah){if(ad.style[ag]||!a.schema.isValid(ad.nodeName.toLowerCase(),ag)){e.setStyle(ad,ag,ah)}else{e.setAttrib(ad,ag,ah)}}}af("width",W);af("height",V);e.unbind(T,"mousemove",R);e.unbind(T,"mouseup",ae);if(X!=T){e.unbind(X,"mousemove",R);e.unbind(X,"mouseup",ae)}e.remove(L);Q(ad)}function Q(ai){var ag,ah,af;S();ag=e.getPos(ai);N=ag.x;M=ag.y;ah=ai.offsetWidth;af=ai.offsetHeight;if(ad!=ai){ad=ai;W=V=0}E(aa,function(al,aj){var ak;ak=e.get("mceResizeHandle"+aj);if(!ak){ak=e.add(T.documentElement,"div",{id:"mceResizeHandle"+aj,"class":"mceResizeHandle",style:"cursor:"+aj+"-resize; margin:0; padding:0"});e.bind(ak,"mousedown",function(am){am.preventDefault();ae();ab=am.screenX;Z=am.screenY;ac=ad.clientWidth;O=ad.clientHeight;P=O/ac;Y=al;L=ad.cloneNode(true);e.addClass(L,"mceClonedResizable");e.setStyles(L,{left:N,top:M,margin:0});T.documentElement.appendChild(L);e.bind(T,"mousemove",R);e.bind(T,"mouseup",ae);if(X!=T){e.bind(X,"mousemove",R);e.bind(X,"mouseup",ae)}})}else{e.show(ak)}e.setStyles(ak,{left:(ah*al[0]+N)-(ak.offsetWidth/2),top:(af*al[1]+M)-(ak.offsetHeight/2)})});if(!tinymce.isOpera&&ad.nodeName=="IMG"){ad.setAttribute("data-mce-selected","1")}}function S(){if(ad){ad.removeAttribute("data-mce-selected")}for(var af in aa){e.hide("mceResizeHandle"+af)}}a.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function U(){var af=e.getParent(l.getNode(),"table,img");E(e.select("img[data-mce-selected]"),function(ag){ag.removeAttribute("data-mce-selected")});if(af){Q(af)}else{S()}}a.onNodeChange.add(U);e.bind(T,"selectionchange",U);a.serializer.addAttributeFilter("data-mce-selected",function(af,ag){var ah=af.length;while(ah--){af[ah].attr(ag,null)}})}function D(){if(n()<9){v.addNodeFilter("noscript",function(L){var M=L.length,N,O;while(M--){N=L[M];O=N.firstChild;if(O){N.attr("data-mce-innertext",O.value)}}});o.addNodeFilter("noscript",function(L){var M=L.length,N,P,O;while(M--){N=L[M];P=L[M].firstChild;if(P){P.value=tinymce.html.Entities.decode(P.value)}else{O=N.attributes.map["data-mce-innertext"];if(O){N.attr("data-mce-innertext",null);P=new tinymce.html.Node("#text",3);P.value=O;P.raw=true;N.append(P)}}}})}}t();G();q();if(tinymce.isWebKit){d();J();K();h();m();if(tinymce.isIDevice){b()}else{u();I()}}if(tinymce.isIE){B();x();C();g();i();r();D()}if(tinymce.isGecko){B();y();c();F();s();p()}if(tinymce.isOpera){u()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script noscript style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object",z);textBlockElementsMap=m("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");v=m("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",textBlockElementsMap);function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G.toUpperCase()]={};v[G]={}}if(!s[G]){s[G]=s[K]}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getTextBlockElements=function(){return textBlockElementsMap};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.isValid=function(F,E){var H,G,I=B(F);if(I){if(E){if(I.attributes[E]){return true}H=I.attributePatterns;if(H){G=H.length;while(G--){if(H[G].pattern.test(F)){return true}}}}else{return true}}return false};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x;u.elements=s}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-mce-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(n){var p,q,y,x,A,o,r,l,u,v,k,t,m,z,s;t=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();m=h.getTextBlockElements();for(p=0;p<n.length;p++){q=n[p];if(!q.parent||q.fixed){continue}if(m[q.name]&&q.parent.name=="li"){z=q.next;while(z){if(m[z.name]){z.name="li";z.fixed=true;q.parent.insert(z,q.parent)}else{break}z=z.next}q.unwrap(q);continue}x=[q];for(y=q.parent;y&&!h.isValidChild(y.name,q.name)&&!t[y.name];y=y.parent){x.push(y)}if(y&&x.length>1){x.reverse();A=o=f.filterNode(x[0].clone());for(u=0;u<x.length-1;u++){if(h.isValidChild(o.name,x[u].name)){r=f.filterNode(x[u].clone());o.append(r)}else{r=o}for(l=x[u].firstChild;l&&l!=x[u+1];){s=l.next;r.append(l);l=s}o=r}if(!A.isEmpty(k)){y.insert(A,x[0],true);y.insert(q,A)}else{y.insert(q,x[0],true)}y=x[0];if(y.isEmpty(k)||y.firstChild===y.lastChild&&y.firstChild.name==="br"){y.empty().remove()}}else{if(q.parent){if(q.name==="li"){z=q.prev;if(z&&(z.name==="ul"||z.name==="ul")){z.append(q);continue}z=q.next;if(z&&(z.name==="ul"||z.name==="ul")){z.insert(q,z.firstChild,true);continue}q.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(q.parent.name,"div")&&h.isValidChild("div",q.name)){q.wrap(f.filterNode(new a("div",1)))}else{if(q.name==="style"||q.name==="script"){q.empty().remove()}else{q.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,J,B,A,D,C,x,r,F,N,z,o,E,M=[],L,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var O=J.firstChild,l,P;while(O){l=O.next;if(O.type==3||(O.type==1&&O.name!=="p"&&!o[O.name]&&!O.attr("data-mce-type"))){if(!P){P=K(q,1);J.insert(P,O);P.append(O)}else{P.append(O)}}else{P=null}O=l}}function K(l,O){var P=new a(l,O),Q;if(l in e){Q=i[l];if(Q){Q.push(P)}else{i[l]=[P]}}return P}function I(P){var Q,l,O;for(Q=P.prev;Q&&Q.type===3;){l=Q.value.replace(t,"");if(l.length>0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,N,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return J};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("id,name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild&&!q.attr("href")){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(k.readyState=="complete"){i();return}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v.length;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){if(!r.preventDefault){r=a(r)}r.preventDefault();return false};q.stop=function(r){if(!r.stopPropagation){r=a(r)}r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){if(!q){return false}var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":b?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="<br />"+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){g(s.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:q(s.styleSheet);break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab<aa){return -1}return 1}ac=X;while(ac&&ac.parentNode!=Z){ac=ac.parentNode}if(ac){Y=0;t=Z.firstChild;while(t!=ac&&Y<ab){Y++;t=t.nextSibling}if(ab<=Y){return -1}return 1}ac=Z;while(ac&&ac.parentNode!=X){ac=ac.parentNode}if(ac){Y=0;t=X.firstChild;while(t!=ac&&Y<aa){Y++;t=t.nextSibling}if(Y<aa){return -1}return 1}ad=c.findCommonAncestor(Z,X);af=Z;while(af&&af.parentNode!=ad){af=af.parentNode}if(!af){af=ad}ae=X;while(ae&&ae.parentNode!=ad){ae=ae.parentNode}if(!ae){ae=ad}if(af==ae){return 0}t=ad.firstChild;while(t){if(t==af){return -1}if(t==ae){return 1}t=t.nextSibling}}function C(X,aa,Z){var t,Y;if(X){O[h]=aa;O[W]=Z}else{O[Q]=aa;O[A]=Z}t=O[Q];while(t.parentNode){t=t.parentNode}Y=O[h];while(Y.parentNode){Y=Y.parentNode}if(Y==t){if(H(O[h],O[W],O[Q],O[A])>0){O.collapse(X)}}else{O.collapse(X)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ad){var ac,Z=0,af=0,X,ab,Y,aa,t,ae;if(O[h]==O[Q]){return f(ad)}for(ac=O[Q],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[h]){return r(ac,ad)}++Z}for(ac=O[h],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[Q]){return V(ac,ad)}++af}ab=af-Z;Y=O[h];while(ab>0){Y=Y.parentNode;ab--}aa=O[Q];while(ab<0){aa=aa.parentNode;ab++}for(t=Y.parentNode,ae=aa.parentNode;t!=ae;t=t.parentNode,ae=ae.parentNode){Y=t;aa=ae}return o(Y,aa,ad)}function f(ac){var ae,af,t,Y,Z,ad,aa,X,ab;if(ac!=j){ae=x()}if(O[W]==O[A]){return ae}if(O[h].nodeType==3){af=O[h].nodeValue;t=af.substring(O[W],O[A]);if(ac!=F){Y=O[h];X=O[W];ab=O[A]-O[W];if(X===0&&ab>=Y.nodeValue.length-1){Y.parentNode.removeChild(Y)}else{Y.deleteData(X,ab)}O.collapse(E)}if(ac==j){return}if(t.length>0){ae.appendChild(e.createTextNode(t))}return ae}Y=P(O[h],O[W]);Z=O[A]-O[W];while(Y&&Z>0){ad=Y.nextSibling;aa=z(Y,ac);if(ae){ae.appendChild(aa)}--Z;Y=ad}if(ac!=F){O.collapse(E)}return ae}function r(ad,aa){var ac,ab,X,t,Z,Y;if(aa!=j){ac=x()}ab=i(ad,aa);if(ac){ac.appendChild(ab)}X=n(ad);t=X-O[W];if(t<=0){if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}ab=ad.previousSibling;while(t>0){Z=ab.previousSibling;Y=z(ab,aa);if(ac){ac.insertBefore(Y,ac.firstChild)}--t;ab=Z}if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}function V(ab,aa){var ad,X,ac,t,Z,Y;if(aa!=j){ad=x()}ac=R(ab,aa);if(ad){ad.appendChild(ac)}X=n(ab);++X;t=O[A]-X;ac=ab.nextSibling;while(ac&&t>0){Z=ac.nextSibling;Y=z(ac,aa);if(ad){ad.appendChild(Y)}--t;ac=Z}if(aa!=F){O.setStartAfter(ab);O.collapse(E)}return ad}function o(ab,t,ae){var Y,ag,aa,ac,ad,X,af,Z;if(ae!=j){ag=x()}Y=R(ab,ae);if(ag){ag.appendChild(Y)}aa=ab.parentNode;ac=n(ab);ad=n(t);++ac;X=ad-ac;af=ab.nextSibling;while(X>0){Z=af.nextSibling;Y=z(af,ae);if(ag){ag.appendChild(Y)}af=Z;--X}Y=i(t,ae);if(ag){ag.appendChild(Y)}if(ae!=F){O.setStartAfter(ab);O.collapse(E)}return ag}function i(ac,ad){var Y=P(O[Q],O[A]-1),ae,ab,aa,t,X,Z=Y!=O[Q];if(Y==ac){return M(Y,Z,S,ad)}ae=Y.parentNode;ab=M(ae,S,S,ad);while(ae){while(Y){aa=Y.previousSibling;t=M(Y,Z,S,ad);if(ad!=j){ab.insertBefore(t,ab.firstChild)}Z=E;Y=aa}if(ae==ac){return ab}Y=ae.previousSibling;ae=ae.parentNode;X=M(ae,S,S,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function R(ac,ad){var Z=P(O[h],O[W]),aa=Z!=O[h],ae,ab,Y,t,X;if(Z==ac){return M(Z,aa,E,ad)}ae=Z.parentNode;ab=M(ae,S,E,ad);while(ae){while(Z){Y=Z.nextSibling;t=M(Z,aa,E,ad);if(ad!=j){ab.appendChild(t)}aa=E;Z=Y}if(ae==ac){return ab}Z=ae.nextSibling;ae=ae.parentNode;X=M(ae,S,E,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function M(t,aa,ad,ae){var Z,Y,ab,X,ac;if(aa){return z(t,ae)}if(t.nodeType==3){Z=t.nodeValue;if(ad){X=O[W];Y=Z.substring(X);ab=Z.substring(0,X)}else{X=O[A];Y=Z.substring(0,X);ab=Z.substring(X)}if(ae!=F){t.nodeValue=ab}if(ae==j){return}ac=c.clone(t,S);ac.nodeValue=Y;return ac}if(ae==j){return}return c.clone(t,S)}function z(X,t){if(t!=j){return t==F?c.clone(X,E):X}X.parentNode.removeChild(X)}function T(){return c.create("body",null,d()).outerText}return O}a.Range=b;b.prototype.toString=function(){return this.toStringIE()}})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,v,q,t,s=d.dom.doc,m=s.body,r,u;function j(C){var y,B,x,A,z;x=h.create("a");y=C?k:v;B=C?p:q;A=n.duplicate();if(y==s||y==s.documentElement){y=m;B=0}if(y.nodeType==3){y.parentNode.insertBefore(x,y);A.moveToElementText(x);A.moveStart("character",B);h.remove(x);n.setEndPoint(C?"StartToStart":"EndToEnd",A)}else{z=y.childNodes;if(z.length){if(B>=z.length){h.insertAfter(x,z[z.length-1])}else{y.insertBefore(x,z[B])}A.moveToElementText(x)}else{if(y.canHaveHTML){y.innerHTML="<span>\uFEFF</span>";x=y.firstChild;A.moveToElementText(x);A.collapse(f)}}n.setEndPoint(C?"StartToStart":"EndToEnd",A);h.remove(x)}}k=i.startContainer;p=i.startOffset;v=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==v&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){t=k.previousSibling;if(t&&!t.hasChildNodes()&&h.isBlock(t)){t.innerHTML="\uFEFF"}else{t=null}k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";if(t){t.innerHTML=""}return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{u=k.childNodes[p];l=m.createControlRange();l.addElement(u);l.select();r=d.getRng();if(r.item&&u===r.item(0)){return}}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(k,j,i,h){var g=this;g.dom=k;g.win=j;g.serializer=i;g.editor=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(l){g[l]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&k.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var i=this,h=i.getRng(),j,g,l,k;if(h.duplicate||h.item){if(h.item){return h.item(0)}l=h.duplicate();l.collapse(1);j=l.parentElement();if(j.ownerDocument!==i.dom.doc){j=i.dom.getRoot()}g=k=h.parentElement();while(k=k.parentNode){if(k==j){j=g;break}}return j}else{j=h.startContainer;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[Math.min(j.childNodes.length-1,h.startOffset)]}if(j&&j.nodeType==3){return j.parentNode}return j}},getEnd:function(){var h=this,g=h.getRng(),j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);j=g.parentElement();if(j.ownerDocument!==h.dom.doc){j=h.dom.getRoot()}if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=g.endContainer;i=g.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[i>0?i-1:i]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){return{rng:y.getRng()}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(o){var s=this,m=s.dom,j,i,g,r,k,u,p,q;function h(A){var t=o[A?"start":"end"],x,y,z,v;if(t){z=t[0];for(y=r,x=t.length-1;x>=1;x--){v=y.childNodes;if(t[x]>v.length-1){return}y=v[t[x]]}if(y.nodeType===3){z=Math.min(t[0],y.nodeValue.length)}if(y.nodeType===1){z=Math.min(t[0],y.childNodes.length)}if(A){g.setStart(y,z)}else{g.setEnd(y,z)}}return true}function l(B){var v=m.get(o.id+"_"+B),A,t,y,z,x=o.keep;if(v){A=v.parentNode;if(B=="start"){if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}k=u=A;p=q=t}else{if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}u=A;q=t}if(!x){z=v.previousSibling;y=v.nextSibling;e(d.grep(v.childNodes),function(C){if(C.nodeType==3){C.nodeValue=C.nodeValue.replace(/\uFEFF/g,"")}});while(v=m.get(o.id+"_"+B)){m.remove(v,1)}if(z&&y&&z.nodeType==y.nodeType&&z.nodeType==3&&!d.isOpera){t=z.nodeValue.length;z.appendData(y.nodeValue);m.remove(y);if(B=="start"){k=u=z;p=q=t}else{u=z;q=t}}}}}function n(t){if(m.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(o){if(o.start){g=m.createRng();r=m.getRoot();if(s.tridentSel){return s.tridentSel.moveToBookmark(o)}if(h(true)&&h()){s.setRng(g)}}else{if(o.id){l("start");l("end");if(k){g=m.createRng();g.setStart(n(k),p);g.setEnd(n(u),q);s.setRng(g)}}else{if(o.name){s.select(m.select(o.name)[o.index])}else{if(o.rng){s.setRng(o.rng)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},selectorChanged:function(g,j){var h=this,i;if(!h.selectorChangedData){h.selectorChangedData={};i={};h.editor.onNodeChange.addToTop(function(l,k,o){var p=h.dom,m=p.getParents(o,null,p.getRoot()),n={};e(h.selectorChangedData,function(r,q){e(m,function(s){if(p.is(s,q)){if(!i[q]){e(r,function(t){t(true,{node:s,selector:q,parents:m})});i[q]=r}n[q]=r;return false}})});e(i,function(r,q){if(!n[q]){delete i[q];e(r,function(s){s(false,{node:o,selector:q,parents:m})})}})})}if(!h.selectorChangedData[g]){h.selectorChangedData[g]=[]}h.selectorChangedData[g].push(j);return h},scrollIntoView:function(k){var j,h,g=this,i=g.dom;h=i.getViewPort(g.editor.getWin());j=i.getPos(k).y;if(j<h.y||j+25>h.y+h.h){g.editor.getWin().scrollTo(0,j<h.y?j:j-h.h+25)}},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("noscript",function(j){var k=j.length,l;while(k--){l=j[k].firstChild;if(l){l.value=a.html.Entities.decode(l.value)}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=document.createElement("script");s.id=n;s.type="text/javascript";s.src=a._addVer(m);if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var q=this,n=e.root,m=e.items,o=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,l=e.excludeFromTabOrder,k,h,p,d,g;f=f||b.DOM;k=function(r){g=r.target.id};h=function(r){f.setAttrib(r.target.id,"tabindex","-1")};d=function(r){var s=f.get(g);f.setAttrib(s,"tabindex","0");s.focus()};q.focus=function(){f.get(g).focus()};q.destroy=function(){c(m,function(s){var t=f.get(s.id);f.unbind(t,"focus",k);f.unbind(t,"blur",h)});var r=f.get(n);f.unbind(r,"focus",d);f.unbind(r,"keydown",p);m=f=n=q.focus=k=h=p=d=null;q.destroy=function(){}};q.moveFocus=function(v,s){var r=-1,u=q.controls,t;if(!g){return}c(m,function(y,x){if(y.id===g){r=x;return false}});r+=v;if(r<0){r=m.length-1}else{if(r>=m.length){r=0}}t=m[r];f.setAttrib(g,"tabindex","-1");f.setAttrib(t.id,"tabindex","0");f.get(t.id).focus();if(e.actOnFocus){e.onAction(t.id)}if(s){a.cancel(s)}};p=function(z){var v=37,u=39,y=38,A=40,r=27,t=14,s=13,x=32;switch(z.keyCode){case v:if(i){q.moveFocus(-1)}break;case u:if(i){q.moveFocus(1)}break;case y:if(o){q.moveFocus(-1)}break;case A:if(o){q.moveFocus(1)}break;case r:if(e.onCancel){e.onCancel();a.cancel(z)}break;case t:case s:case x:if(e.onAction){e.onAction(g);a.cancel(z)}break}};c(m,function(t,r){var s,u;if(!t.id){t.id=f.uniqueId("_mce_item_")}u=f.get(t.id);if(l){f.bind(u,"blur",h);s="-1"}else{s=(r===0?"0":"-1")}u.setAttribute("tabindex",s);f.bind(u,"focus",k)});if(m[0]){g=m[0].id}f.setAttrib(n,"tabindex","-1");var j=f.get(n);f.bind(j,"focus",d);f.bind(j,"keydown",p)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<span class="mceIcon '+e["class"]+'"><img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" /></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(l){var k;b.remove(h.id,"change",i);j=false;k=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",k)});if(e.isWebKit&&(l.keyCode==37||l.keyCode==39)){return b.prevent(l)}if(l.keyCode==13||l.keyCode==32){g(l);return b.cancel(l)}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.keyboardNav=new d.ui.KeyboardNavigation({root:f.id+"_menu",items:c.select("a",f.id+"_menu"),onCancel:function(){f.hideMenu();f.focus()}});f.keyboardNav.focus();f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch();f.keyboardNav.destroy()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){var f=this;f.parent();a.clear(f.id+"_menu");a.clear(f.id+"_more");c.remove(f.id+"_menu");if(f.keyboardNav){f.keyboardNav.destroy()}}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}if(!this.editors.hasOwnProperty(l)){return a}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"advanced",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.contentStyles=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(!q.content_editable){p.orgVisibility=p.getElement().style.visibility;p.getElement().style.visibility="hidden"}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&typeof q.theme!="function"&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,G=this,H=G.settings,D,y,z,C=G.getElement(),p,m,E,v,B,F,x,r=[];k.add(G);H.aria_label=H.aria_label||l.getAttrib(C,"aria-label",G.getLang("aria.rich_text_area"));if(H.theme){if(typeof H.theme!="function"){H.theme=H.theme.replace(/-/,"");p=h.get(H.theme);G.theme=new p();if(G.theme.init){G.theme.init(G,h.urls[H.theme]||k.documentBaseURL.replace(/\/$/,""))}}else{G.theme=H.theme}}function A(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){A(u)});n=new t(G,o);G.plugins[s]=n;if(n.init){n.init(G,o);r.push(s)}}}i(g(H.plugins.replace(/\-/g,"")),A);if(H.popup_css!==false){if(H.popup_css){H.popup_css=G.documentBaseURI.toAbsolute(H.popup_css)}else{H.popup_css=G.baseURI.toAbsolute("themes/"+H.theme+"/skins/"+H.skin+"/dialog.css")}}if(H.popup_css_add){H.popup_css+=","+G.documentBaseURI.toAbsolute(H.popup_css_add)}G.controlManager=new k.ControlManager(G);G.onBeforeRenderUI.dispatch(G,G.controlManager);if(H.render_ui&&G.theme){G.orgDisplay=C.style.display;if(typeof H.theme!="function"){D=H.width||C.style.width||C.offsetWidth;y=H.height||C.style.height||C.offsetHeight;z=H.min_height||100;F=/^[0-9\.]+(|px)$/i;if(F.test(""+D)){D=Math.max(parseInt(D,10)+(p.deltaWidth||0),100)}if(F.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),z)}p=G.theme.renderUI({targetNode:C,width:D,height:y,deltaWidth:H.delta_width,deltaHeight:H.delta_height});l.setStyles(p.sizeContainer||p.editorContainer,{width:D,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<z){y=z}}else{p=H.theme(G,C);if(p.editorContainer.nodeType){p.editorContainer=p.editorContainer.id=p.editorContainer.id||G.id+"_parent"}if(p.iframeContainer.nodeType){p.iframeContainer=p.iframeContainer.id=p.iframeContainer.id||G.id+"_iframecontainer"}y=p.iframeHeight||C.offsetHeight;if(b){G.onInit.add(function(n){n.dom.bind(n.getBody(),"beforedeactivate keydown",function(){n.lastIERng=n.selection.getRng()})})}}G.editorContainer=p.editorContainer}if(H.content_css){i(g(H.content_css),function(n){G.contentCSS.push(G.documentBaseURI.toAbsolute(n))})}if(H.content_style){G.contentStyles.push(H.content_style)}if(H.content_editable){C=q=p=null;return G.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}G.iframeHTML=H.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(H.document_base_url!=k.documentBaseURL){G.iframeHTML+='<base href="'+G.documentBaseURI.getURI()+'" />'}if(k.isIE8){if(H.ie7_compat){G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}}G.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<G.contentCSS.length;x++){G.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+G.contentCSS[x]+'" />'}G.contentCSS=[];v=H.body_id||"tinymce";if(v.indexOf("=")!=-1){v=G.getParam("body_id","","hash");v=v[G.id]||v}B=H.body_class||"";if(B.indexOf("=")!=-1){B=G.getParam("body_class","","hash");B=B[G.id]||""}G.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+B+'" onload="window.parent.tinyMCE.get(\''+G.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){E='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+G.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:G.id+"_ifr",src:E||'javascript:""',frameBorder:"0",allowTransparency:"true",title:H.aria_label,style:{width:"100%",height:y,display:"block"}});G.contentAreaContainer=p.iframeContainer;if(p.editorContainer){l.get(p.editorContainer).style.display=G.orgDisplay}C.style.visibility=G.orgVisibility;l.get(G.id).style.display="none";l.setAttrib(G.id,"aria-hidden",true);if(!k.relaxedDomain||!E){G.initContentBody()}C=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m,s;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(t,u){var v=t.length,y,A=n.dom,z,x;while(v--){y=t[v];z=y.attr(u);x="data-mce-"+u;if(!y.attributes.map[x]){if(u==="style"){y.attr(x,A.serializeStyle(A.parseStyle(z),y.name))}else{y.attr(x,n.convertURL(z,u,y.name))}}}});n.parser.addNodeFilter("script",function(t,u){var v=t.length,x;while(v--){x=t[v];x.attr("type","mce-"+(x.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(t,u){var v=t.length,x;while(v--){x=t[v];x.type=8;x.name="#comment";x.value="[CDATA["+x.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(u,v){var x=u.length,y,t=n.schema.getNonEmptyElements();while(x--){y=u[x];if(y.isEmpty(t)){y.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer,n);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.onExecCommand.add(function(t,u){if(!/^(FontName|FontSize)$/.test(u)){n.nodeChanged()}});n.serializer.onPreProcess.add(function(t,u){return n.onPreProcess.dispatch(n,u,t)});n.serializer.onPostProcess.add(function(t,u){return n.onPostProcess.dispatch(n,u,t)});n.onPreInit.dispatch(n);if(!p.browser_spellcheck&&!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(t,u){i(p.protect,function(v){u.content=u.content.replace(v,function(x){return"<!--mce:protected "+escape(x)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(t,u){u.content=u.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});if(n.contentStyles.length>0){s="";i(n.contentStyles,function(t){s+=t+"\r\n"});n.dom.addStyle(s)}i(n.contentCSS,function(t){n.dom.loadCSS(t)});if(p.auto_focus){setTimeout(function(){var t=k.get(p.auto_focus);t.selection.select(t.getBody(),1);t.selection.collapse(1);t.getBody().focus();t.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){if(u.lastIERng){t.setRng(u.lastIERng)}n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}if(!o.settings.content_editable||document.activeElement===o.getBody()){o.selection.normalize()}return p.content},getContent:function(o){var n=this,p,m=n.getBody();o=o||{};o.format=o.format||"html";o.get=true;o.getInner=true;if(!o.no_events){n.onBeforeGetContent.dispatch(n,o)}if(o.format=="raw"){p=m.innerHTML}else{if(o.format=="text"){p=m.innerText||m.textContent}else{p=n.serializer.serialize(m,o)}}if(o.format!="text"){o.content=k.trim(p)}else{o.content=p}if(!o.no_events){n.onGetContent.dispatch(n,o)}return o.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":if(!p.getAttrib(s,"href",false)){r=p.getAttrib(s,"name")||s.id;m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,o=m.getContainer(),n=m.getDoc();if(!m.removed){m.removed=1;if(b&&n){n.execCommand("SelectAll")}m.save();l.setStyle(m.id,"display",m.orgDisplay);if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(o);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(o)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){g.preventDefault();g.stopPropagation()}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(i,m){if(m.keyCode!=65||!a.VK.metaKeyPressed(m)){l.selection.normalize()}l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k(i,n)}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=p.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceToggleFormat:function(y,x,v){s(v)},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();if(p.getRng().setStart){v.setStart(x,0);v.setEnd(x,x.childNodes.length);p.setRng(v)}else{f("SelectAll")}}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(x){var v=m.getParent(p.getNode(),"ul,ol");return v&&(x==="insertunorderedlist"&&v.tagName==="UL"||x==="insertorderedlist"&&v.tagName==="OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}onBeforeAdd=new a(l);k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getBody(),"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onBeforeAdd:onBeforeAdd,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();l.onBeforeAdd.dispatch(l,p);o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,s,q,i,l,m=-16777215,p,r;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;s=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}r=g.parentElement().ownerDocument===c.getDoc();tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(j.nodeType===3&&j.nodeValue.length==0){l=j;j=j.nextSibling;e.remove(l);continue}if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(p){if(g.setStart){g.setStart(k,o);g.setEnd(s,q);a.setRng(g)}else{if(r){try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}}c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(j){var o,k,g,h=this,m=h.editor,n,f;if(!h.controlFactories){h.controlFactories=[];d(m.plugins,function(i){if(i.createControl){h.controlFactories.push(i)}})}n=h.controlFactories;for(k=0,g=n.length;k<g;k++){o=n[k].createControl(j,h);if(o){return h.add(o)}}if(j==="|"||j==="separator"){return h.createSeparator()}if(m.buttons&&(o=m.buttons[j])){return h.createButton(j,o)}return h.add(o)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(aa){var Q={},T=a.each,c=aa.dom,r=aa.selection,t=a.dom.TreeWalker,N=new a.dom.RangeUtils(c),d=aa.schema.isValidChild,A=a.isArray,H=c.isBlock,m=aa.settings.forced_root_block,s=c.nodeIndex,G="\uFEFF",e=/^(src|href|style)$/,X=false,C=true,P,D,x=c.getContentEditable;function I(ab){return !!aa.schema.getTextBlocks()[ab.toLowerCase()]}function n(ac,ab){return c.getParents(ac,ab,c.getRoot())}function b(ab){return ab.nodeType===1&&ab.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(ab){return true},onformat:function(ad,ab,ac){T(ac,function(af,ae){c.setAttrib(ad,ae,af)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});T("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(ab){l(ab,{block:ab,remove:"all"})});l(aa.settings.formats)}function W(){aa.addShortcut("ctrl+b","bold_desc","Bold");aa.addShortcut("ctrl+i","italic_desc","Italic");aa.addShortcut("ctrl+u","underline_desc","Underline");for(var ab=1;ab<=6;ab++){aa.addShortcut("ctrl+"+ab,"",["FormatBlock",false,"h"+ab])}aa.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);aa.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);aa.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function V(ab){return ab?Q[ab]:Q}function l(ab,ac){if(ab){if(typeof(ab)!=="string"){T(ab,function(ae,ad){l(ad,ae)})}else{ac=ac.length?ac:[ac];T(ac,function(ad){if(ad.deep===D){ad.deep=!ad.selector}if(ad.split===D){ad.split=!ad.selector||ad.inline}if(ad.remove===D&&ad.selector&&!ad.inline){ad.remove="none"}if(ad.selector&&ad.inline){ad.mixed=true;ad.block_expand=true}if(typeof(ad.classes)==="string"){ad.classes=ad.classes.split(/\s+/)}});Q[ab]=ac}}}var i=function(ac){var ab;aa.dom.getParent(ac,function(ad){ab=aa.dom.getStyle(ad,"text-decoration");return ab&&ab!=="none"});return ab};var L=function(ab){var ac;if(ab.nodeType===1&&ab.parentNode&&ab.parentNode.nodeType===1){ac=i(ab.parentNode);if(aa.dom.getStyle(ab,"color")&&ac){aa.dom.setStyle(ab,"text-decoration",ac)}else{if(aa.dom.getStyle(ab,"textdecoration")===ac){aa.dom.setStyle(ab,"text-decoration",null)}}}};function Y(ae,al,ag){var ah=V(ae),am=ah[0],ak,ac,aj,ai=r.isCollapsed();function ab(aq,ap){ap=ap||am;if(aq){if(ap.onformat){ap.onformat(aq,ap,al,ag)}T(ap.styles,function(at,ar){c.setStyle(aq,ar,q(at,al))});T(ap.attributes,function(at,ar){c.setAttrib(aq,ar,q(at,al))});T(ap.classes,function(ar){ar=q(ar,al);if(!c.hasClass(aq,ar)){c.addClass(aq,ar)}})}}function af(){function ar(ay,aw){var ax=new t(aw);for(ag=ax.current();ag;ag=ax.prev()){if(ag.childNodes.length>1||ag==ay||ag.tagName=="BR"){return ag}}}var aq=aa.selection.getRng();var av=aq.startContainer;var ap=aq.endContainer;if(av!=ap&&aq.endOffset===0){var au=ar(av,ap);var at=au.nodeType==3?au.length:au.childNodes.length;aq.setEnd(au,at)}return aq}function ad(at,ay,aw,av,aq){var ap=[],ar=-1,ax,aA=-1,au=-1,az;T(at.childNodes,function(aC,aB){if(aC.nodeName==="UL"||aC.nodeName==="OL"){ar=aB;ax=aC;return false}});T(at.childNodes,function(aC,aB){if(aC.nodeName==="SPAN"&&c.getAttrib(aC,"data-mce-type")=="bookmark"){if(aC.id==ay.id+"_start"){aA=aB}else{if(aC.id==ay.id+"_end"){au=aB}}}});if(ar<=0||(aA<ar&&au>ar)){T(a.grep(at.childNodes),aq);return 0}else{az=c.clone(aw,X);T(a.grep(at.childNodes),function(aC,aB){if((aA<ar&&aB<ar)||(aA>ar&&aB>ar)){ap.push(aC);aC.parentNode.removeChild(aC)}});if(aA<ar){at.insertBefore(az,ax)}else{if(aA>ar){at.insertBefore(az,ax.nextSibling)}}av.push(az);T(ap,function(aB){az.appendChild(aB)});return az}}function an(aq,at,aw){var ap=[],av,ar,au=true;av=am.inline||am.block;ar=c.create(av);ab(ar);N.walk(aq,function(ax){var ay;function az(aA){var aF,aD,aB,aC,aE;aE=au;aF=aA.nodeName.toLowerCase();aD=aA.parentNode.nodeName.toLowerCase();if(aA.nodeType===1&&x(aA)){aE=au;au=x(aA)==="true";aC=true}if(g(aF,"br")){ay=0;if(am.block){c.remove(aA)}return}if(am.wrapper&&y(aA,ae,al)){ay=0;return}if(au&&!aC&&am.block&&!am.wrapper&&I(aF)){aA=c.rename(aA,av);ab(aA);ap.push(aA);ay=0;return}if(am.selector){T(ah,function(aG){if("collapsed" in aG&&aG.collapsed!==ai){return}if(c.is(aA,aG.selector)&&!b(aA)){ab(aA,aG);aB=true}});if(!am.inline||aB){ay=0;return}}if(au&&!aC&&d(av,aF)&&d(aD,av)&&!(!aw&&aA.nodeType===3&&aA.nodeValue.length===1&&aA.nodeValue.charCodeAt(0)===65279)&&!b(aA)){if(!ay){ay=c.clone(ar,X);aA.parentNode.insertBefore(ay,aA);ap.push(ay)}ay.appendChild(aA)}else{if(aF=="li"&&at){ay=ad(aA,at,ar,ap,az)}else{ay=0;T(a.grep(aA.childNodes),az);if(aC){au=aE}ay=0}}}T(ax,az)});if(am.wrap_links===false){T(ap,function(ax){function ay(aC){var aB,aA,az;if(aC.nodeName==="A"){aA=c.clone(ar,X);ap.push(aA);az=a.grep(aC.childNodes);for(aB=0;aB<az.length;aB++){aA.appendChild(az[aB])}aC.appendChild(aA)}T(a.grep(aC.childNodes),ay)}ay(ax)})}T(ap,function(az){var ax;function aA(aC){var aB=0;T(aC.childNodes,function(aD){if(!f(aD)&&!K(aD)){aB++}});return aB}function ay(aB){var aD,aC;T(aB.childNodes,function(aE){if(aE.nodeType==1&&!K(aE)&&!b(aE)){aD=aE;return X}});if(aD&&h(aD,am)){aC=c.clone(aD,X);ab(aC);c.replace(aC,aB,C);c.remove(aD,1)}return aC||aB}ax=aA(az);if((ap.length>1||!H(az))&&ax===0){c.remove(az,1);return}if(am.inline||am.wrapper){if(!am.exact&&ax===1){az=ay(az)}T(ah,function(aB){T(c.select(aB.inline,az),function(aD){var aC;if(aB.wrap_links===false){aC=aD.parentNode;do{if(aC.nodeName==="A"){return}}while(aC=aC.parentNode)}Z(aB,al,aD,aB.exact?aD:null)})});if(y(az.parentNode,ae,al)){c.remove(az,1);az=0;return C}if(am.merge_with_parents){c.getParent(az.parentNode,function(aB){if(y(aB,ae,al)){c.remove(az,1);az=0;return C}})}if(az&&am.merge_siblings!==false){az=u(E(az),az);az=u(az,E(az,C))}}})}if(am){if(ag){if(ag.nodeType){ac=c.createRng();ac.setStartBefore(ag);ac.setEndAfter(ag);an(p(ac,ah),null,true)}else{an(ag,null,true)}}else{if(!ai||!am.inline||c.select("td.mceSelected,th.mceSelected").length){var ao=aa.selection.getNode();if(!m&&ah[0].defaultBlock&&!c.getParent(ao,c.isBlock)){Y(ah[0].defaultBlock)}aa.selection.setRng(af());ak=r.getBookmark();an(p(r.getRng(C),ah),ak);if(am.styles&&(am.styles.color||am.styles.textDecoration)){a.walk(ao,L,"childNodes");L(ao)}r.moveToBookmark(ak);R(r.getRng(C));aa.nodeChanged()}else{U("apply",ae,al)}}}}function B(ad,am,af){var ag=V(ad),ao=ag[0],ak,aj,ac,al=true;function ae(av){var au,at,ar,aq,ax,aw;if(av.nodeType===3){return}if(av.nodeType===1&&x(av)){ax=al;al=x(av)==="true";aw=true}au=a.grep(av.childNodes);if(al&&!aw){for(at=0,ar=ag.length;at<ar;at++){if(Z(ag[at],am,av,av)){break}}}if(ao.deep){if(au.length){for(at=0,ar=au.length;at<ar;at++){ae(au[at])}if(aw){al=ax}}}}function ah(aq){var ar;T(n(aq.parentNode).reverse(),function(at){var au;if(!ar&&at.id!="_start"&&at.id!="_end"){au=y(at,ad,am);if(au&&au.split!==false){ar=at}}});return ar}function ab(au,aq,aw,az){var aA,ay,ax,at,av,ar;if(au){ar=au.parentNode;for(aA=aq.parentNode;aA&&aA!=ar;aA=aA.parentNode){ay=c.clone(aA,X);for(av=0;av<ag.length;av++){if(Z(ag[av],am,ay,ay)){ay=0;break}}if(ay){if(ax){ay.appendChild(ax)}if(!at){at=ay}ax=ay}}if(az&&(!ao.mixed||!H(au))){aq=c.split(au,aq)}if(ax){aw.parentNode.insertBefore(ax,aw);at.appendChild(aw)}}return aq}function an(aq){return ab(ah(aq),aq,aq,true)}function ai(at){var ar=c.get(at?"_start":"_end"),aq=ar[at?"firstChild":"lastChild"];if(K(aq)){aq=aq[at?"firstChild":"lastChild"]}c.remove(ar,true);return aq}function ap(aq){var at,au,ar;aq=p(aq,ag,C);if(ao.split){at=M(aq,C);au=M(aq);if(at!=au){if(/^(TR|TD)$/.test(at.nodeName)&&at.firstChild){at=(at.nodeName=="TD"?at.firstChild:at.firstChild.firstChild)||at}at=S(at,"span",{id:"_start","data-mce-type":"bookmark"});au=S(au,"span",{id:"_end","data-mce-type":"bookmark"});an(at);an(au);at=ai(C);au=ai()}else{at=au=an(at)}aq.startContainer=at.parentNode;aq.startOffset=s(at);aq.endContainer=au.parentNode;aq.endOffset=s(au)+1}N.walk(aq,function(av){T(av,function(aw){ae(aw);if(aw.nodeType===1&&aa.dom.getStyle(aw,"text-decoration")==="underline"&&aw.parentNode&&i(aw.parentNode)==="underline"){Z({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aw)}})})}if(af){if(af.nodeType){ac=c.createRng();ac.setStartBefore(af);ac.setEndAfter(af);ap(ac)}else{ap(af)}return}if(!r.isCollapsed()||!ao.inline||c.select("td.mceSelected,th.mceSelected").length){ak=r.getBookmark();ap(r.getRng(C));r.moveToBookmark(ak);if(ao.inline&&k(ad,am,r.getStart())){R(r.getRng(true))}aa.nodeChanged()}else{U("remove",ad,am)}}function F(ac,ae,ad){var ab=V(ac);if(k(ac,ae,ad)&&(!("toggle" in ab[0])||ab[0].toggle)){B(ac,ae,ad)}else{Y(ac,ae,ad)}}function y(ac,ab,ah,af){var ad=V(ab),ai,ag,ae;function aj(an,ap,aq){var am,ao,ak=ap[aq],al;if(ap.onmatch){return ap.onmatch(an,ap,aq)}if(ak){if(ak.length===D){for(am in ak){if(ak.hasOwnProperty(am)){if(aq==="attributes"){ao=c.getAttrib(an,am)}else{ao=O(an,am)}if(af&&!ao&&!ap.exact){return}if((!af||ap.exact)&&!g(ao,q(ak[am],ah))){return}}}}else{for(al=0;al<ak.length;al++){if(aq==="attributes"?c.getAttrib(an,ak[al]):O(an,ak[al])){return ap}}}}return ap}if(ad&&ac){for(ag=0;ag<ad.length;ag++){ai=ad[ag];if(h(ac,ai)&&aj(ac,ai,"attributes")&&aj(ac,ai,"styles")){if(ae=ai.classes){for(ag=0;ag<ae.length;ag++){if(!c.hasClass(ac,ae[ag])){return}}}return ai}}}}function k(ad,af,ae){var ac;function ab(ag){ag=c.getParent(ag,function(ah){return !!y(ah,ad,af,true)});return y(ag,ad,af)}if(ae){return ab(ae)}ae=r.getNode();if(ab(ae)){return C}ac=r.getStart();if(ac!=ae){if(ab(ac)){return C}}return X}function v(ai,ah){var af,ag=[],ae={},ad,ac,ab;af=r.getStart();c.getParent(af,function(al){var ak,aj;for(ak=0;ak<ai.length;ak++){aj=ai[ak];if(!ae[aj]&&y(al,aj,ah)){ae[aj]=true;ag.push(aj)}}},c.getRoot());return ag}function z(af){var ah=V(af),ae,ad,ag,ac,ab;if(ah){ae=r.getStart();ad=n(ae);for(ac=ah.length-1;ac>=0;ac--){ab=ah[ac].selector;if(!ab){return C}for(ag=ad.length-1;ag>=0;ag--){if(c.is(ad[ag],ab)){return C}}}}return X}function J(ab,ae,ac){var ad;if(!P){P={};ad={};aa.onNodeChange.addToTop(function(ag,af,ai){var ah=n(ai),aj={};T(P,function(ak,al){T(ah,function(am){if(y(am,al,{},ak.similar)){if(!ad[al]){T(ak,function(an){an(true,{node:am,format:al,parents:ah})});ad[al]=ak}aj[al]=ak;return false}})});T(ad,function(ak,al){if(!aj[al]){delete ad[al];T(ak,function(am){am(false,{node:ai,format:al,parents:ah})})}})})}T(ab.split(","),function(af){if(!P[af]){P[af]=[];P[af].similar=ac}P[af].push(ae)});return this}a.extend(this,{get:V,register:l,apply:Y,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z,formatChanged:J});j();W();function h(ab,ac){if(g(ab,ac.inline)){return C}if(g(ab,ac.block)){return C}if(ac.selector){return c.is(ab,ac.selector)}}function g(ac,ab){ac=ac||"";ab=ab||"";ac=""+(ac.nodeName||ac);ab=""+(ab.nodeName||ab);return ac.toLowerCase()==ab.toLowerCase()}function O(ac,ab){var ad=c.getStyle(ac,ab);if(ab=="color"||ab=="backgroundColor"){ad=c.toHex(ad)}if(ab=="fontWeight"&&ad==700){ad="bold"}return""+ad}function q(ab,ac){if(typeof(ab)!="string"){ab=ab(ac)}else{if(ac){ab=ab.replace(/%(\w+)/g,function(ae,ad){return ac[ad]||ae})}}return ab}function f(ab){return ab&&ab.nodeType===3&&/^([\t \r\n]+|)$/.test(ab.nodeValue)}function S(ad,ac,ab){var ae=c.create(ac,ab);ad.parentNode.insertBefore(ae,ad);ae.appendChild(ad);return ae}function p(ab,am,ae){var ap,an,ah,al,ad=ab.startContainer,ai=ab.startOffset,ar=ab.endContainer,ak=ab.endOffset;function ao(aA){var au,ax,az,aw,av,at;au=ax=aA?ad:ar;av=aA?"previousSibling":"nextSibling";at=c.getRoot();function ay(aB){return aB.nodeName=="BR"&&aB.getAttribute("data-mce-bogus")&&!aB.nextSibling}if(au.nodeType==3&&!f(au)){if(aA?ai>0:ak<au.nodeValue.length){return au}}for(;;){if(!am[0].block_expand&&H(ax)){return ax}for(aw=ax[av];aw;aw=aw[av]){if(!K(aw)&&!f(aw)&&!ay(aw)){return ax}}if(ax.parentNode==at){au=ax;break}ax=ax.parentNode}return au}function ag(at,au){if(au===D){au=at.nodeType===3?at.length:at.childNodes.length}while(at&&at.hasChildNodes()){at=at.childNodes[au];if(at){au=at.nodeType===3?at.length:at.childNodes.length}}return{node:at,offset:au}}if(ad.nodeType==1&&ad.hasChildNodes()){an=ad.childNodes.length-1;ad=ad.childNodes[ai>an?an:ai];if(ad.nodeType==3){ai=0}}if(ar.nodeType==1&&ar.hasChildNodes()){an=ar.childNodes.length-1;ar=ar.childNodes[ak>an?an:ak-1];if(ar.nodeType==3){ak=ar.nodeValue.length}}function aq(au){var at=au;while(at){if(at.nodeType===1&&x(at)){return x(at)==="false"?at:au}at=at.parentNode}return au}function aj(au,ay,aA){var ax,av,az,at;function aw(aC,aE){var aF,aB,aD=aC.nodeValue;if(typeof(aE)=="undefined"){aE=aA?aD.length:0}if(aA){aF=aD.lastIndexOf(" ",aE);aB=aD.lastIndexOf("\u00a0",aE);aF=aF>aB?aF:aB;if(aF!==-1&&!ae){aF++}}else{aF=aD.indexOf(" ",aE);aB=aD.indexOf("\u00a0",aE);aF=aF!==-1&&(aB===-1||aF<aB)?aF:aB}return aF}if(au.nodeType===3){az=aw(au,ay);if(az!==-1){return{container:au,offset:az}}at=au}ax=new t(au,c.getParent(au,H)||aa.getBody());while(av=ax[aA?"prev":"next"]()){if(av.nodeType===3){at=av;az=aw(av);if(az!==-1){return{container:av,offset:az}}}else{if(H(av)){break}}}if(at){if(aA){ay=0}else{ay=at.length}return{container:at,offset:ay}}}function af(au,at){var av,aw,ay,ax;if(au.nodeType==3&&au.nodeValue.length===0&&au[at]){au=au[at]}av=n(au);for(aw=0;aw<av.length;aw++){for(ay=0;ay<am.length;ay++){ax=am[ay];if("collapsed" in ax&&ax.collapsed!==ab.collapsed){continue}if(c.is(av[aw],ax.selector)){return av[aw]}}}return au}function ac(au,at,aw){var av;if(!am[0].wrapper){av=c.getParent(au,am[0].block)}if(!av){av=c.getParent(au.nodeType==3?au.parentNode:au,I)}if(av&&am[0].wrapper){av=n(av,"ul,ol").reverse()[0]||av}if(!av){av=au;while(av[at]&&!H(av[at])){av=av[at];if(g(av,"br")){break}}}return av||au}ad=aq(ad);ar=aq(ar);if(K(ad.parentNode)||K(ad)){ad=K(ad)?ad:ad.parentNode;ad=ad.nextSibling||ad;if(ad.nodeType==3){ai=0}}if(K(ar.parentNode)||K(ar)){ar=K(ar)?ar:ar.parentNode;ar=ar.previousSibling||ar;if(ar.nodeType==3){ak=ar.length}}if(am[0].inline){if(ab.collapsed){al=aj(ad,ai,true);if(al){ad=al.container;ai=al.offset}al=aj(ar,ak);if(al){ar=al.container;ak=al.offset}}ah=ag(ar,ak);if(ah.node){while(ah.node&&ah.offset===0&&ah.node.previousSibling){ah=ag(ah.node.previousSibling)}if(ah.node&&ah.offset>0&&ah.node.nodeType===3&&ah.node.nodeValue.charAt(ah.offset-1)===" "){if(ah.offset>1){ar=ah.node;ar.splitText(ah.offset-1)}}}}if(am[0].inline||am[0].block_expand){if(!am[0].inline||(ad.nodeType!=3||ai===0)){ad=ao(true)}if(!am[0].inline||(ar.nodeType!=3||ak===ar.nodeValue.length)){ar=ao()}}if(am[0].selector&&am[0].expand!==X&&!am[0].inline){ad=af(ad,"previousSibling");ar=af(ar,"nextSibling")}if(am[0].block||am[0].selector){ad=ac(ad,"previousSibling");ar=ac(ar,"nextSibling");if(am[0].block){if(!H(ad)){ad=ao(true)}if(!H(ar)){ar=ao()}}}if(ad.nodeType==1){ai=s(ad);ad=ad.parentNode}if(ar.nodeType==1){ak=s(ar)+1;ar=ar.parentNode}return{startContainer:ad,startOffset:ai,endContainer:ar,endOffset:ak}}function Z(ah,ag,ae,ab){var ad,ac,af;if(!h(ae,ah)){return X}if(ah.remove!="all"){T(ah.styles,function(aj,ai){aj=q(aj,ag);if(typeof(ai)==="number"){ai=aj;ab=0}if(!ab||g(O(ab,ai),aj)){c.setStyle(ae,ai,"")}af=1});if(af&&c.getAttrib(ae,"style")==""){ae.removeAttribute("style");ae.removeAttribute("data-mce-style")}T(ah.attributes,function(ak,ai){var aj;ak=q(ak,ag);if(typeof(ai)==="number"){ai=ak;ab=0}if(!ab||g(c.getAttrib(ab,ai),ak)){if(ai=="class"){ak=c.getAttrib(ae,ai);if(ak){aj="";T(ak.split(/\s+/),function(al){if(/mce\w+/.test(al)){aj+=(aj?" ":"")+al}});if(aj){c.setAttrib(ae,ai,aj);return}}}if(ai=="class"){ae.removeAttribute("className")}if(e.test(ai)){ae.removeAttribute("data-mce-"+ai)}ae.removeAttribute(ai)}});T(ah.classes,function(ai){ai=q(ai,ag);if(!ab||c.hasClass(ab,ai)){c.removeClass(ae,ai)}});ac=c.getAttribs(ae);for(ad=0;ad<ac.length;ad++){if(ac[ad].nodeName.indexOf("_")!==0){return X}}}if(ah.remove!="none"){o(ae,ah);return C}}function o(ad,ae){var ab=ad.parentNode,ac;function af(ah,ag,ai){ah=E(ah,ag,ai);return !ah||(ah.nodeName=="BR"||H(ah))}if(ae.block){if(!m){if(H(ad)&&!H(ab)){if(!af(ad,X)&&!af(ad.firstChild,C,1)){ad.insertBefore(c.create("br"),ad.firstChild)}if(!af(ad,C)&&!af(ad.lastChild,X,1)){ad.appendChild(c.create("br"))}}}else{if(ab==c.getRoot()){if(!ae.list_block||!g(ad,ae.list_block)){T(a.grep(ad.childNodes),function(ag){if(d(m,ag.nodeName.toLowerCase())){if(!ac){ac=S(ag,m)}else{ac.appendChild(ag)}}else{ac=0}})}}}}if(ae.selector&&ae.inline&&!g(ae.inline,ad)){return}c.remove(ad,1)}function E(ac,ab,ad){if(ac){ab=ab?"nextSibling":"previousSibling";for(ac=ad?ac:ac[ab];ac;ac=ac[ab]){if(ac.nodeType==1||!f(ac)){return ac}}}}function K(ab){return ab&&ab.nodeType==1&&ab.getAttribute("data-mce-type")=="bookmark"}function u(af,ae){var ab,ad,ac;function ah(ak,aj){if(ak.nodeName!=aj.nodeName){return X}function ai(am){var an={};T(c.getAttribs(am),function(ao){var ap=ao.nodeName.toLowerCase();if(ap.indexOf("_")!==0&&ap!=="style"){an[ap]=c.getAttrib(am,ap)}});return an}function al(ap,ao){var an,am;for(am in ap){if(ap.hasOwnProperty(am)){an=ao[am];if(an===D){return X}if(ap[am]!=an){return X}delete ao[am]}}for(am in ao){if(ao.hasOwnProperty(am)){return X}}return C}if(!al(ai(ak),ai(aj))){return X}if(!al(c.parseStyle(c.getAttrib(ak,"style")),c.parseStyle(c.getAttrib(aj,"style")))){return X}return C}function ag(aj,ai){for(ad=aj;ad;ad=ad[ai]){if(ad.nodeType==3&&ad.nodeValue.length!==0){return aj}if(ad.nodeType==1&&!K(ad)){return ad}}return aj}if(af&&ae){af=ag(af,"previousSibling");ae=ag(ae,"nextSibling");if(ah(af,ae)){for(ad=af.nextSibling;ad&&ad!=ae;){ac=ad;ad=ad.nextSibling;af.appendChild(ac)}c.remove(ae);T(a.grep(ae.childNodes),function(ai){af.appendChild(ai)});return af}}return ae}function I(ab){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(ab)}function M(ac,ag){var ab,af,ad,ae;ab=ac[ag?"startContainer":"endContainer"];af=ac[ag?"startOffset":"endOffset"];if(ab.nodeType==1){ad=ab.childNodes.length-1;if(!ag&&af){af--}ab=ab.childNodes[af>ad?ad:af]}if(ab.nodeType===3&&ag&&af>=ab.nodeValue.length){ab=new t(ab,aa.getBody()).next()||ab}if(ab.nodeType===3&&!ag&&af===0){ab=new t(ab,aa.getBody()).prev()||ab}return ab}function U(ak,ab,ai){var al="_mce_caret",ac=aa.settings.caret_debug;function ad(ap){var ao=c.create("span",{id:al,"data-mce-bogus":true,style:ac?"color:red":""});if(ap){ao.appendChild(aa.getDoc().createTextNode(G))}return ao}function aj(ap,ao){while(ap){if((ap.nodeType===3&&ap.nodeValue!==G)||ap.childNodes.length>1){return false}if(ao&&ap.nodeType===1){ao.push(ap)}ap=ap.firstChild}return true}function ag(ao){while(ao){if(ao.id===al){return ao}ao=ao.parentNode}}function af(ao){var ap;if(ao){ap=new t(ao,ao);for(ao=ap.current();ao;ao=ap.next()){if(ao.nodeType===3){return ao}}}}function ae(aq,ap){var ar,ao;if(!aq){aq=ag(r.getStart());if(!aq){while(aq=c.get(al)){ae(aq,false)}}}else{ao=r.getRng(true);if(aj(aq)){if(ap!==false){ao.setStartBefore(aq);ao.setEndBefore(aq)}c.remove(aq)}else{ar=af(aq);if(ar.nodeValue.charAt(0)===G){ar=ar.deleteData(0,1)}c.remove(aq,1)}r.setRng(ao)}}function ah(){var aq,ao,av,au,ar,ap,at;aq=r.getRng(true);au=aq.startOffset;ap=aq.startContainer;at=ap.nodeValue;ao=ag(r.getStart());if(ao){av=af(ao)}if(at&&au>0&&au<at.length&&/\w/.test(at.charAt(au))&&/\w/.test(at.charAt(au-1))){ar=r.getBookmark();aq.collapse(true);aq=p(aq,V(ab));aq=N.split(aq);Y(ab,ai,aq);r.moveToBookmark(ar)}else{if(!ao||av.nodeValue!==G){ao=ad(true);av=ao.firstChild;aq.insertNode(ao);au=1;Y(ab,ai,ao)}else{Y(ab,ai,ao)}r.setCursorLocation(av,au)}}function am(){var ao=r.getRng(true),ap,ar,av,au,aq,ay,ax=[],at,aw;ap=ao.startContainer;ar=ao.startOffset;aq=ap;if(ap.nodeType==3){if(ar!=ap.nodeValue.length||ap.nodeValue===G){au=true}aq=aq.parentNode}while(aq){if(y(aq,ab,ai)){ay=aq;break}if(aq.nextSibling){au=true}ax.push(aq);aq=aq.parentNode}if(!ay){return}if(au){av=r.getBookmark();ao.collapse(true);ao=p(ao,V(ab),true);ao=N.split(ao);B(ab,ai,ao);r.moveToBookmark(av)}else{aw=ad();aq=aw;for(at=ax.length-1;at>=0;at--){aq.appendChild(c.clone(ax[at],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;c.insertAfter(aw,ay);r.setCursorLocation(aq,1)}}function an(){var ap,ao,aq;ao=ag(r.getStart());if(ao&&!c.isEmpty(ao)){a.walk(ao,function(ar){if(ar.nodeType==1&&ar.id!==al&&!c.isEmpty(ar)){c.setAttrib(ar,"data-mce-bogus",null)}},"childNodes")}}if(!self._hasCaretEvents){aa.onBeforeGetContent.addToTop(function(){var ao=[],ap;if(aj(ag(r.getStart()),ao)){ap=ao.length;while(ap--){c.setAttrib(ao[ap],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(ao){aa[ao].addToTop(function(){ae();an()})});aa.onKeyDown.addToTop(function(ao,aq){var ap=aq.keyCode;if(ap==8||ap==37||ap==39){ae(ag(r.getStart()))}an()});r.onSetContent.add(an);self._hasCaretEvents=true}if(ak=="apply"){ah()}else{am()}}function R(ac){var ab=ac.startContainer,ai=ac.startOffset,ae,ah,ag,ad,af;if(ab.nodeType==3&&ai>=ab.nodeValue.length){ai=s(ab);ab=ab.parentNode;ae=true}if(ab.nodeType==1){ad=ab.childNodes;ab=ad[Math.min(ai,ad.length-1)];ah=new t(ab,c.getParent(ab,c.isBlock));if(ai>ad.length-1||ae){ah.next()}for(ag=ah.current();ag;ag=ah.next()){if(ag.nodeType==3&&!f(ag)){af=c.create("a",null,G);ag.parentNode.insertBefore(af,ag);ac.setStart(ag,0);r.setRng(ac);c.remove(af);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(f){var i=f.dom,e=f.selection,d=f.settings,h=f.undoManager,c=f.schema.getNonEmptyElements();function g(A){var v=e.getRng(true),G,j,z,u,p,M,B,o,k,n,t,J,x,C;function E(N){return N&&i.isBlock(N)&&!/^(TD|TH|CAPTION|FORM)$/.test(N.nodeName)&&!/^(fixed|absolute)/i.test(N.style.position)&&i.getContentEditable(N)!=="true"}function F(O){var N;if(b.isIE&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function y(P){var O=P,Q=[],N;while(O=O.firstChild){if(i.isBlock(O)){return}if(O.nodeType==1&&!c[O.nodeName.toLowerCase()]){Q.push(O)}}N=Q.length;while(N--){O=Q[N];if(!O.hasChildNodes()||(O.firstChild==O.lastChild&&O.firstChild.nodeValue==="")){i.remove(O)}else{if(O.nodeName=="A"&&(O.innerText||O.textContent)===" "){i.remove(O)}}}}function m(O){var T,R,N,U,S,Q=O,P;N=i.createRng();if(O.hasChildNodes()){T=new a(O,O);while(R=T.current()){if(R.nodeType==3){N.setStart(R,0);N.setEnd(R,0);break}if(c[R.nodeName.toLowerCase()]){N.setStartBefore(R);N.setEndBefore(R);break}Q=R;R=T.next()}if(!R){N.setStart(Q,0);N.setEnd(Q,0)}}else{if(O.nodeName=="BR"){if(O.nextSibling&&i.isBlock(O.nextSibling)){if(!M||M<9){P=i.create("br");O.parentNode.insertBefore(P,O)}N.setStartBefore(O);N.setEndBefore(O)}else{N.setStartAfter(O);N.setEndAfter(O)}}else{N.setStart(O,0);N.setEnd(O,0)}}e.setRng(N);i.remove(P);S=i.getViewPort(f.getWin());U=i.getPos(O).y;if(U<S.y||U+25>S.y+S.h){f.getWin().scrollTo(0,U<S.y?U:U-S.h+25)}}function r(O){var P=z,R,Q,N;R=O||t=="TABLE"?i.create(O||x):p.cloneNode(false);N=R;if(d.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(P.nodeName)){if(P.id=="_mce_caret"){continue}Q=P.cloneNode(false);i.setAttrib(Q,"id","");if(R.hasChildNodes()){Q.appendChild(R.firstChild);R.appendChild(Q)}else{N=Q;R.appendChild(Q)}}}while(P=P.parentNode)}if(!b.isIE){N.innerHTML='<br data-mce-bogus="1">'}return R}function q(Q){var P,O,N;if(z.nodeType==3&&(Q?u>0:u<z.nodeValue.length)){return false}if(z.parentNode==p&&C&&!Q){return true}if(Q&&z.nodeType==1&&z==p.firstChild){return true}if(z.nodeName==="TABLE"||(z.previousSibling&&z.previousSibling.nodeName=="TABLE")){return(C&&!Q)||(!C&&Q)}P=new a(z,p);if(z.nodeType==3){if(Q&&u==0){P.prev()}else{if(!Q&&u==z.nodeValue.length){P.next()}}}while(O=P.current()){if(O.nodeType===1){if(!O.getAttribute("data-mce-bogus")){N=O.nodeName.toLowerCase();if(c[N]&&N!=="br"){return false}}}else{if(O.nodeType===3&&!/^[ \t\r\n]*$/.test(O.nodeValue)){return false}}if(Q){P.prev()}else{P.next()}}return true}function l(N,T){var U,S,P,R,Q,O=x||"P";S=i.getParent(N,i.isBlock);if(!S||!E(S)){S=S||j;if(!S.hasChildNodes()){U=i.create(O);S.appendChild(U);v.setStart(U,0);v.setEnd(U,0);return U}R=N;while(R.parentNode!=S){R=R.parentNode}while(R&&!i.isBlock(R)){P=R;R=R.previousSibling}if(P){U=i.create(O);P.parentNode.insertBefore(U,P);R=P;while(R&&!i.isBlock(R)){Q=R.nextSibling;U.appendChild(R);R=Q}v.setStart(N,T);v.setEnd(N,T)}}return N}function H(){function N(P){var O=n[P?"firstChild":"lastChild"];while(O){if(O.nodeType==1){break}O=O[P?"nextSibling":"previousSibling"]}return O===p}o=x?r(x):i.create("BR");if(N(true)&&N()){i.replace(o,n)}else{if(N(true)){n.parentNode.insertBefore(o,n)}else{if(N()){i.insertAfter(o,n);F(o)}else{G=v.cloneRange();G.setStartAfter(p);G.setEndAfter(n);k=G.extractContents();i.insertAfter(k,n);i.insertAfter(o,n)}}}i.remove(p);m(o);h.add()}function D(){var O=new a(z,p),N;while(N=O.current()){if(N.nodeName=="BR"){return true}N=O.next()}}function L(){var P,O,N;if(z&&z.nodeType==3&&u>=z.nodeValue.length){if(!b.isIE&&!D()){P=i.create("br");v.insertNode(P);v.setStartAfter(P);v.setEndAfter(P);O=true}}P=i.create("br");v.insertNode(P);if(b.isIE&&t=="PRE"&&(!M||M<8)){P.parentNode.insertBefore(i.doc.createTextNode("\r"),P)}N=i.create("span",{},"&nbsp;");P.parentNode.insertBefore(N,P);e.scrollIntoView(N);i.remove(N);if(!O){v.setStartAfter(P);v.setEndAfter(P)}else{v.setStartBefore(P);v.setEndBefore(P)}e.setRng(v);h.add()}function s(N){do{if(N.nodeType===3){N.nodeValue=N.nodeValue.replace(/^[\r\n]+/,"")}N=N.firstChild}while(N)}function K(P){var N=i.getRoot(),O,Q;O=P;while(O!==N&&i.getContentEditable(O)!=="false"){if(i.getContentEditable(O)==="true"){Q=O}O=O.parentNode}return O!==N?Q:N}function I(O){var N;if(!b.isIE){O.normalize();N=O.lastChild;if(!N||(/^(left|right)$/gi.test(i.getStyle(N,"float",true)))){i.add(O,"br")}}}if(!v.collapsed){f.execCommand("Delete");return}if(A.isDefaultPrevented()){return}z=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;B=A.shiftKey;if(z.nodeType==1&&z.hasChildNodes()){C=u>z.childNodes.length-1;z=z.childNodes[Math.min(u,z.childNodes.length-1)]||z;if(C&&z.nodeType==3){u=z.nodeValue.length}else{u=0}}j=K(z);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||B){L()}return}if((x&&!B)||(!x&&B)){z=l(z,u)}p=i.getParent(z,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(J=="LI"&&!A.ctrlKey){p=n;t=J}if(t=="LI"){if(!x&&B){L();return}if(i.isEmpty(p)){if(/^(UL|OL|LI)$/.test(n.parentNode.nodeName)){return false}H();return}}if(t=="PRE"&&d.br_in_pre!==false){if(!B){L();return}}else{if((!x&&!B&&t!="LI")||(x&&B)){L();return}}x=x||"P";if(q()){if(/^(H[1-6]|PRE)$/.test(t)&&J!="HGROUP"){o=r(x)}else{o=r()}if(d.end_container_on_empty_block&&E(n)&&i.isEmpty(p)){o=i.split(n,p)}else{i.insertAfter(o,p)}m(o)}else{if(q(true)){o=p.parentNode.insertBefore(r(),p);F(o)}else{G=v.cloneRange();G.setEndAfter(p);k=G.extractContents();s(k);o=k.firstChild;i.insertAfter(k,p);y(o);I(p);m(o)}}i.setAttrib(o,"id","");h.add()}f.onKeyDown.add(function(k,j){if(j.keyCode==13){if(g(j)!==false){j.preventDefault()}}})}})(tinymce);
\ No newline at end of file
index f859d24e6a6788d5890a02f76f96c81ff2749580..bb8e58c88a6b86169d25a1b15ea6be5a8031d6f0 100644 (file)
@@ -2,4 +2,4 @@
 // Uncomment and change this document.domain value if you are loading the script cross subdomains
 // document.domain = 'moxiecode.com';
 
-var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
\ No newline at end of file
+var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){b.dom.bind(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){var b=a.target||a.srcElement;if(b.onchange){b.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init();
\ No newline at end of file
index 43dbe297641164baab8778c5f57561de3595114b..88c728b447df7982562a6a137320559993cc79f5 100644 (file)
@@ -13,8 +13,8 @@ header('Content-Type: text/html; charset=' . get_bloginfo('charset'));
 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
 <head>
 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
-<title><?php _e('Rich Editor Help') ?></title>
-<script type="text/javascript" src="tiny_mce_popup.js?ver=342"></script>
+<title><?php _e('Rich Editor Help'); ?></title>
+<script type="text/javascript" src="tiny_mce_popup.js?ver=358-20121205"></script>
 <?php
 wp_admin_css( 'wp-admin', true );
 ?>
@@ -111,6 +111,8 @@ wp_admin_css( 'wp-admin', true );
        }
        .keys {
                margin-bottom: 15px;
+               width: 100%;
+               border: 0 none;
        }
        .keys p {
                display: inline-block;
@@ -130,20 +132,10 @@ wp_admin_css( 'wp-admin', true );
        #buttoncontainer a, #buttoncontainer a:hover {
                border-bottom: 0px;
        }
-
-       .mac,
-       .macos .win {
+       .macos .win,
+       .windows .mac {
                display: none;
        }
-
-       .macos span.mac {
-               display: inline;
-       }
-
-       .macwebkit tr.mac {
-               display: table-row;
-       }
-
 </style>
 <?php if ( is_rtl() ) : ?>
 <style type="text/css">
@@ -159,111 +151,77 @@ wp_admin_css( 'wp-admin', true );
        td b { font-family: Tahoma, "Times New Roman", Times, serif }
 </style>
 <?php endif; ?>
+</head>
+<body class="windows wp-core-ui">
 <script type="text/javascript">
-       function d(id) { return document.getElementById(id); }
-
-       function flipTab(n) {
-               for (i=1;i<=4;i++) {
-                       c = d('content'+i.toString());
-                       t = d('tab'+i.toString());
-                       if ( n == i ) {
-                               c.className = '';
-                               t.className = 'current';
-                       } else {
-                               c.className = 'hidden';
-                               t.className = '';
-                       }
-               }
-       }
-
-    tinyMCEPopup.onInit.add(function() {
-        var win = tinyMCEPopup.getWin();
-
-               document.getElementById('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
-        document.getElementById('date').innerHTML = tinymce.releaseDate;
-
-               if ( win.fullscreen && win.fullscreen.settings.visible ) {
-                       d('content1').className = 'hidden';
-                       d('tabs').className = 'hidden';
-                       d('content3').className = 'dfw';
-               }
-
-               if ( tinymce.isMac )
-                       document.body.className = 'macos';
-
-               if ( tinymce.isMac && tinymce.isWebKit )
-                       document.body.className = 'macos macwebkit';
-
-    });
+if ( tinymce.isMac )
+       document.body.className = document.body.className.replace(/windows/, 'macos');
 </script>
-</head>
-<body>
 
 <ul id="tabs">
-       <li><a id="tab1" href="javascript:flipTab(1)" title="<?php esc_attr_e('Basics of Rich Editing') ?>" accesskey="1" tabindex="1" class="current"><?php _e('Basics') ?></a></li>
-       <li><a id="tab2" href="javascript:flipTab(2)" title="<?php esc_attr_e('Advanced use of the Rich Editor') ?>" accesskey="2" tabindex="2"><?php _e('Advanced') ?></a></li>
-       <li><a id="tab3" href="javascript:flipTab(3)" title="<?php esc_attr_e('Hotkeys') ?>" accesskey="3" tabindex="3"><?php _e('Hotkeys') ?></a></li>
-       <li><a id="tab4" href="javascript:flipTab(4)" title="<?php esc_attr_e('About the software') ?>" accesskey="4" tabindex="4"><?php _e('About') ?></a></li>
+       <li><a id="tab1" href="javascript:flipTab(1)" title="<?php esc_attr_e('Basics of Rich Editing'); ?>" accesskey="1" class="current"><?php _e('Basics'); ?></a></li>
+       <li><a id="tab2" href="javascript:flipTab(2)" title="<?php esc_attr_e('Advanced use of the Rich Editor'); ?>" accesskey="2"><?php _e('Advanced'); ?></a></li>
+       <li><a id="tab3" href="javascript:flipTab(3)" title="<?php esc_attr_e('Hotkeys'); ?>" accesskey="3"><?php _e('Hotkeys'); ?></a></li>
+       <li><a id="tab4" href="javascript:flipTab(4)" title="<?php esc_attr_e('About the software'); ?>" accesskey="4"><?php _e('About'); ?></a></li>
 </ul>
 
 <div id="flipper" class="wrap">
 
 <div id="content1">
-       <h2><?php _e('Rich Editing Basics') ?></h2>
-       <p><?php _e('<em>Rich editing</em>, also called WYSIWYG for What You See Is What You Get, means your text is formatted as you type. The rich editor creates HTML code behind the scenes while you concentrate on writing. Font styles, links and images all appear approximately as they will on the internet.') ?></p>
-       <p><?php _e('WordPress includes a rich HTML editor that works well in all major web browsers used today. However editing HTML is not the same as typing text. Each web page has two major components: the structure, which is the actual HTML code and is produced by the editor as you type, and the display, that is applied to it by the currently selected WordPress theme and is defined in style.css. WordPress is producing valid XHTML 1.0 which means that inserting multiple line breaks (BR tags) after a paragraph would not produce white space on the web page. The BR tags will be removed as invalid by the internal HTML correcting functions.') ?></p>
-       <p><?php _e('While using the editor, most basic keyboard shortcuts work like in any other text editor. For example: Shift+Enter inserts line break, Ctrl+C = copy, Ctrl+X = cut, Ctrl+Z = undo, Ctrl+Y = redo, Ctrl+A = select all, etc. (on Mac use the Command key instead of Ctrl). See the Hotkeys tab for all available keyboard shortcuts.') ?></p>
-    <p><?php _e('If you do not like the way the rich editor works, you may turn it off from Your Profile submenu, under Users in the admin menu.') ?></p>
+       <h2><?php _e('Rich Editing Basics'); ?></h2>
+       <p><?php _e('<em>Rich editing</em>, also called WYSIWYG for What You See Is What You Get, means your text is formatted as you type. The rich editor creates HTML code behind the scenes while you concentrate on writing. Font styles, links and images all appear approximately as they will on the internet.'); ?></p>
+       <p><?php _e('WordPress includes a rich HTML editor that works well in all major web browsers used today. However editing HTML is not the same as typing text. Each web page has two major components: the structure, which is the actual HTML code and is produced by the editor as you type, and the display, that is applied to it by the currently selected WordPress theme and is defined in style.css. WordPress is producing valid XHTML 1.0 which means that inserting multiple line breaks (BR tags) after a paragraph would not produce white space on the web page. The BR tags will be removed as invalid by the internal HTML correcting functions.'); ?></p>
+       <p><?php _e('While using the editor, most basic keyboard shortcuts work like in any other text editor. For example: Shift+Enter inserts line break, Ctrl+C = copy, Ctrl+X = cut, Ctrl+Z = undo, Ctrl+Y = redo, Ctrl+A = select all, etc. (on Mac use the Command key instead of Ctrl). See the Hotkeys tab for all available keyboard shortcuts.'); ?></p>
+    <p><?php _e('If you do not like the way the rich editor works, you may turn it off from Your Profile submenu, under Users in the admin menu.'); ?></p>
 </div>
 
 <div id="content2" class="hidden">
-       <h2><?php _e('Advanced Rich Editing') ?></h2>
-       <h3><?php _e('Images and Attachments') ?></h3>
-       <p><?php _e('There is a button in the editor toolbar for inserting images that are already hosted somewhere on the internet. If you have a URL for an image, click this button and enter the URL in the box which appears.') ?></p>
-       <p><?php _e('If you need to upload an image or another media file from your computer, you can use the Media Library buttons above the editor. The media library will attempt to create a thumbnail-sized copy from each uploaded image. To insert your image into the post, first click on the thumbnail to reveal a menu of options. When you have selected the options you like, click "Send to Editor" and your image or file will appear in the post you are editing. If you are inserting a movie, there are additional options in the "Media" dialog that can be opened from the second toolbar row.') ?></p>
-       <h3><?php _e('HTML in the Rich Editor') ?></h3>
-       <p><?php _e('Any HTML entered directly into the rich editor will show up as text when the post is viewed. What you see is what you get. When you want to include HTML elements that cannot be generated with the toolbar buttons, you must enter it by hand in the HTML editor. Examples are tables and &lt;code&gt;. To do this, click the HTML tab and edit the code, then switch back to Visual mode. If the code is valid and understood by the editor, you should see it rendered immediately.') ?></p>
-       <h3><?php _e('Pasting in the Rich Editor') ?></h3>
-       <p><?php _e('When pasting content from another web page the results can be inconsistent and depend on your browser and on the web page you are pasting from. The editor tries to correct any invalid HTML code that was pasted, but for best results try using the HTML tab or one of the paste buttons that are on the second row. Alternatively try pasting paragraph by paragraph. In most browsers to select one paragraph at a time, triple-click on it.') ?></p>
-       <p><?php _e('Pasting content from another application, like Word or Excel, is best done with the Paste from Word button on the second row, or in HTML mode.') ?></p>
+       <h2><?php _e('Advanced Rich Editing'); ?></h2>
+       <h3><?php _e('Images and Attachments'); ?></h3>
+       <p><?php _e('There is a button in the editor toolbar for inserting images that are already hosted somewhere on the internet. If you have a URL for an image, click this button and enter the URL in the box which appears.'); ?></p>
+       <p><?php _e('If you need to upload an image or another media file from your computer, you can use the Media Library button above the editor. The media library will attempt to create a thumbnail-sized copy from each uploaded image. To insert your image into the post, first click on the thumbnail to reveal a menu of options. When you have selected the options you like, click "Insert into Post" and your image or file will appear in the post you are editing.'); ?></p>
+       <h3><?php _e('HTML in the Rich Editor'); ?></h3>
+       <p><?php _e('Any HTML entered directly into the rich editor will show up as text when the post is viewed. What you see is what you get. When you want to include HTML elements that cannot be generated with the toolbar buttons, you must enter it by hand in the Text editor. Examples are tables and &lt;code&gt;. To do this, click the Text tab and edit the code, then switch back to Visual mode. If the code is valid and understood by the editor, you should see it rendered immediately.'); ?></p>
+       <h3><?php _e('Pasting in the Rich Editor'); ?></h3>
+       <p><?php _e('When pasting content from another web page the results can be inconsistent and depend on your browser and on the web page you are pasting from. The editor tries to correct any invalid HTML code that was pasted, but for best results try using the Text tab or one of the paste buttons that are on the second row. Alternatively try pasting paragraph by paragraph. In most browsers to select one paragraph at a time, triple-click on it.'); ?></p>
+       <p><?php _e('Pasting content from another application, like Word or Excel, is best done with the Paste from Word button on the second row, or in Text mode.'); ?></p>
 </div>
 
 <div id="content3" class="hidden">
-       <h2><?php _e('Writing at Full Speed') ?></h2>
-    <p><?php _e('Rather than reaching for your mouse to click on the toolbar, use these access keys. Windows and Linux use Ctrl + letter. Macintosh uses Command + letter.') ?></p>
+       <h2><?php _e('Writing at Full Speed'); ?></h2>
+    <p><?php _e('Rather than reaching for your mouse to click on the toolbar, use these access keys. Windows and Linux use Ctrl + letter. Macintosh uses Command + letter.'); ?></p>
 
-       <table class="keys" width="100%" style="border: 0 none;">
-               <tr class="top"><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th></tr>
-               <tr><th>c</th><td><?php _e('Copy') ?></td><th>v</th><td><?php _e('Paste') ?></td></tr>
-               <tr><th>a</th><td><?php _e('Select all') ?></td><th>x</th><td><?php _e('Cut') ?></td></tr>
-               <tr><th>z</th><td><?php _e('Undo') ?></td><th>y</th><td><?php _e('Redo') ?></td></tr>
+       <table class="keys">
+               <tr class="top"><th class="key center"><?php _e('Letter'); ?></th><th class="left"><?php _e('Action'); ?></th><th class="key center"><?php _e('Letter'); ?></th><th class="left"><?php _e('Action'); ?></th></tr>
+               <tr><th>c</th><td><?php _e('Copy'); ?></td><th>v</th><td><?php _e('Paste'); ?></td></tr>
+               <tr><th>a</th><td><?php _e('Select all'); ?></td><th>x</th><td><?php _e('Cut'); ?></td></tr>
+               <tr><th>z</th><td><?php _e('Undo'); ?></td><th>y</th><td><?php _e('Redo'); ?></td></tr>
 
-               <tr class="win"><th>b</th><td><?php _e('Bold') ?></td><th>i</th><td><?php _e('Italic') ?></td></tr>
-               <tr class="win"><th>u</th><td><?php _e('Underline') ?></td><th>1</th><td><?php _e('Heading 1') ?></td></tr>
-               <tr class="win"><th>2</th><td><?php _e('Heading 2') ?></td><th>3</th><td><?php _e('Heading 3') ?></td></tr>
-               <tr class="win"><th>4</th><td><?php _e('Heading 4') ?></td><th>5</th><td><?php _e('Heading 5') ?></td></tr>
-               <tr class="win"><th>6</th><td><?php _e('Heading 6') ?></td><th>9</th><td><?php _e('Address') ?></td></tr>
+               <tr><th>b</th><td><?php _e('Bold'); ?></td><th>i</th><td><?php _e('Italic'); ?></td></tr>
+               <tr><th>u</th><td><?php _e('Underline'); ?></td><th>1</th><td><?php _e('Heading 1'); ?></td></tr>
+               <tr><th>2</th><td><?php _e('Heading 2'); ?></td><th>3</th><td><?php _e('Heading 3'); ?></td></tr>
+               <tr><th>4</th><td><?php _e('Heading 4'); ?></td><th>5</th><td><?php _e('Heading 5'); ?></td></tr>
+               <tr><th>6</th><td><?php _e('Heading 6'); ?></td><th>9</th><td><?php _e('Address'); ?></td></tr>
        </table>
 
-       <p><?php _e('The following shortcuts use different access keys: Alt + Shift + letter.') ?></p>
-       <table class="keys" width="100%" style="border: 0 none;">
-               <tr class="top"><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th></tr>
-               <tr class="mac"><th>b</th><td><?php _e('Bold') ?></td><th>i</th><td><?php _e('Italic') ?></td></tr>
-
-               <tr><th>n</th><td><?php _e('Check Spelling') ?></td><th>l</th><td><?php _e('Align Left') ?></td></tr>
-               <tr><th>j</th><td><?php _e('Justify Text') ?></td><th>c</th><td><?php _e('Align Center') ?></td></tr>
-               <tr><th>d</th><td><span style="text-decoration: line-through;"><?php _e('Strikethrough') ?></span></td><th>r</th><td><?php _e('Align Right') ?></td></tr>
-               <tr><th>u</th><td><strong>&bull;</strong> <?php _e('List') ?></td><th>a</th><td><?php _e('Insert link') ?></td></tr>
-               <tr><th>o</th><td>1. <?php _e('List') ?></td><th>s</th><td><?php _e('Remove link') ?></td></tr>
-               <tr><th>q</th><td><?php _e('Quote') ?></td><th>m</th><td><?php _e('Insert Image') ?></td></tr>
-               <tr><th>g</th><td><?php _e('Full Screen') ?></td><th>t</th><td><?php _e('Insert More Tag') ?></td></tr>
-               <tr><th>p</th><td><?php _e('Insert Page Break tag') ?></td><th>h</th><td><?php _e('Help') ?></td></tr>
-               <tr><th>e</th><td colspan="3"><?php _e('Switch to HTML mode') ?></td></tr>
+       <p><?php _e('The following shortcuts use different access keys: Alt + Shift + letter.'); ?></p>
+       <table class="keys">
+               <tr class="top"><th class="key center"><?php _e('Letter'); ?></th><th class="left"><?php _e('Action'); ?></th><th class="key center"><?php _e('Letter'); ?></th><th class="left"><?php _e('Action'); ?></th></tr>
+               <tr><th>n</th><td><?php _e('Check Spelling'); ?></td><th>l</th><td><?php _e('Align Left'); ?></td></tr>
+               <tr><th>j</th><td><?php _e('Justify Text'); ?></td><th>c</th><td><?php _e('Align Center'); ?></td></tr>
+               <tr><th>d</th><td><span style="text-decoration: line-through;"><?php _e('Strikethrough'); ?></span></td><th>r</th><td><?php _e('Align Right'); ?></td></tr>
+               <tr><th>u</th><td><strong>&bull;</strong> <?php _e('List'); ?></td><th>a</th><td><?php _e('Insert link'); ?></td></tr>
+               <tr><th>o</th><td>1. <?php _e('List'); ?></td><th>s</th><td><?php _e('Remove link'); ?></td></tr>
+               <tr><th>q</th><td><?php _e('Quote'); ?></td><th>m</th><td><?php _e('Insert Image'); ?></td></tr>
+               <tr><th>w</th><td><?php _e('Distraction Free Writing mode'); ?></td><th>t</th><td><?php _e('Insert More Tag'); ?></td></tr>
+               <tr><th>p</th><td><?php _e('Insert Page Break tag'); ?></td><th>h</th><td><?php _e('Help'); ?></td></tr>
+       </table>
 
-               <tr><th colspan="4" style="font-weight: normal;padding: 15px 10px 10px;"><?php _e('Editor width in Distraction-free writing mode:'); ?></th></tr>
-               <tr><th><span class="win">Alt +</span><span class="mac">Ctrl +</span></th><td><?php _e('Wider') ?></td>
-                       <th><span class="win">Alt -</span><span class="mac">Ctrl -</span></th><td><?php _e('Narrower') ?></td></tr>
-               <tr><th><span class="win">Alt 0</span><span class="mac">Ctrl 0</span></th><td><?php _e('Default width') ?></td><th></th><td></td></tr>
+       <p style="padding: 15px 10px 10px;"><?php _e('Editor width in Distraction Free Writing mode:'); ?></p>
+       <table class="keys">
+               <tr><th><span class="win">Alt +</span><span class="mac">Ctrl +</span></th><td><?php _e('Wider'); ?></td>
+                       <th><span class="win">Alt -</span><span class="mac">Ctrl -</span></th><td><?php _e('Narrower'); ?></td></tr>
+               <tr><th><span class="win">Alt 0</span><span class="mac">Ctrl 0</span></th><td><?php _e('Default width'); ?></td><th></th><td></td></tr>
        </table>
 </div>
 
@@ -271,12 +229,12 @@ wp_admin_css( 'wp-admin', true );
        <h2><?php _e('About TinyMCE'); ?></h2>
 
     <p><?php _e('Version:'); ?> <span id="version"></span> (<span id="date"></span>)</p>
-       <p><?php printf(__('TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor released as Open Source under %sLGPL</a> by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.'), '<a href="'.home_url('/wp-includes/js/tinymce/license.txt').'" target="_blank" title="'.esc_attr__('GNU Library General Public Licence').'">') ?></p>
-       <p><?php _e('Copyright &copy; 2003-2011, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.') ?></p>
-       <p><?php _e('For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.') ?></p>
+       <p><?php printf(__('TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor released as Open Source under %sLGPL</a> by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.'), '<a href="'.home_url('/wp-includes/js/tinymce/license.txt').'" target="_blank" title="'.esc_attr__('GNU Library General Public License').'">'); ?></p>
+       <p><?php _e('Copyright &copy; 2003-2011, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.'); ?></p>
+       <p><?php _e('For more information about this software visit the <a href="http://tinymce.com" target="_blank">TinyMCE website</a>.'); ?></p>
 
        <div id="buttoncontainer">
-               <a href="http://www.moxiecode.com" target="_blank"><img src="themes/advanced/img/gotmoxie.png" alt="<?php esc_attr_e('Got Moxie?') ?>" style="border: 0" /></a>
+               <a href="http://www.moxiecode.com" target="_blank"><img src="themes/advanced/img/gotmoxie.png" alt="<?php esc_attr_e('Got Moxie?'); ?>" style="border: 0" /></a>
        </div>
 
 </div>
@@ -287,6 +245,37 @@ wp_admin_css( 'wp-admin', true );
                <input type="button" id="cancel" name="cancel" value="<?php esc_attr_e('Close'); ?>" title="<?php esc_attr_e('Close'); ?>" onclick="tinyMCEPopup.close();" />
        </div>
 </div>
+<script type="text/javascript">
+       function d(id) { return document.getElementById(id); }
 
+       function flipTab(n) {
+               var i, c, t;
+
+               for ( i = 1; i <= 4; i++ ) {
+                       c = d('content'+i.toString());
+                       t = d('tab'+i.toString());
+                       if ( n == i ) {
+                               c.className = '';
+                               t.className = 'current';
+                       } else {
+                               c.className = 'hidden';
+                               t.className = '';
+                       }
+               }
+       }
+
+    tinyMCEPopup.onInit.add(function() {
+        var win = tinyMCEPopup.getWin();
+
+               d('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
+        d('date').innerHTML = tinymce.releaseDate;
+
+               if ( win.fullscreen && win.fullscreen.settings.visible ) {
+                       d('content1').className = 'hidden';
+                       d('tabs').className = 'hidden';
+                       d('content3').className = 'dfw';
+               }
+    });
+</script>
 </body>
 </html>
diff --git a/wp-includes/js/tinymce/wp-tinymce-schema.js b/wp-includes/js/tinymce/wp-tinymce-schema.js
new file mode 100644 (file)
index 0000000..999687e
--- /dev/null
@@ -0,0 +1,940 @@
+/**
+ * TinyMCE Schema.js
+ *
+ * Duck-punched by WordPress core to support a sane schema superset.
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+(function(tinymce) {
+       var mapCache = {}, makeMap = tinymce.makeMap, each = tinymce.each;
+
+       function split(str, delim) {
+               return str.split(delim || ',');
+       };
+
+       /**
+        * Unpacks the specified lookup and string data it will also parse it into an object
+        * map with sub object for it's children. This will later also include the attributes.
+        */
+       function unpack(lookup, data) {
+               var key, elements = {};
+
+               function replace(value) {
+                       return value.replace(/[A-Z]+/g, function(key) {
+                               return replace(lookup[key]);
+                       });
+               };
+
+               // Unpack lookup
+               for (key in lookup) {
+                       if (lookup.hasOwnProperty(key))
+                               lookup[key] = replace(lookup[key]);
+               }
+
+               // Unpack and parse data into object map
+               replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) {
+                       attributes = split(attributes, '|');
+
+                       elements[name] = {
+                               attributes : makeMap(attributes),
+                               attributesOrder : attributes,
+                               children : makeMap(children, '|', {'#comment' : {}})
+                       }
+               });
+
+               return elements;
+       };
+
+       /**
+        * Returns the HTML5 schema and caches it in the mapCache.
+        */
+       function getHTML5() {
+               var html5 = mapCache.html5;
+
+               if (!html5) {
+                       html5 = mapCache.html5 = unpack({
+                                       A : 'accesskey|class|contextmenu|dir|draggable|dropzone|hidden|id|inert|itemid|itemprop|itemref|itemscope|itemtype|lang|spellcheck|style|tabindex|title|translate|item|role|subject|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',
+                                       B : '#|a|abbr|area|audio|b|bdi|bdo|br|button|canvas|cite|code|command|data|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|math|meta|meter|noscript|object|output|progress|q|ruby|s|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|u|var|video|wbr',
+                                       C : '#|a|abbr|area|address|article|aside|audio|b|bdi|bdo|blockquote|br|button|canvas|cite|code|command|data|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|math|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|s|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|u|ul|var|video|wbr'
+                               }, 'html[A|manifest][body|head]' +
+                                       'head[A][base|command|link|meta|noscript|script|style|title]' +
+                                       'title[A][#]' +
+                                       'base[A|href|target][]' +
+                                       'link[A|href|rel|media|type|sizes|crossorigin|hreflang][]' +
+                                       'meta[A|http-equiv|name|content|charset][]' +
+                                       'style[A|type|media|scoped][#]' +
+                                       'script[A|charset|type|src|defer|async|crossorigin][#]' +
+                                       'noscript[A][C]' +
+                                       'body[A|onafterprint|onbeforeprint|onbeforeunload|onblur|onerror|onfocus|onfullscreenchange|onfullscreenerror|onhashchange|onload|onmessage|onoffline|ononline|onpagehide|onpageshow|onpopstate|onresize|onscroll|onstorage|onunload][C]' +
+                                       'section[A][C]' +
+                                       'nav[A][C]' +
+                                       'article[A][C]' +
+                                       'aside[A][C]' +
+                                       'h1[A][B]' +
+                                       'h2[A][B]' +
+                                       'h3[A][B]' +
+                                       'h4[A][B]' +
+                                       'h5[A][B]' +
+                                       'h6[A][B]' +
+                                       'hgroup[A][h1|h2|h3|h4|h5|h6]' +
+                                       'header[A][C]' +
+                                       'footer[A][C]' +
+                                       'address[A][C]' +
+                                       'p[A][B]' +
+                                       'br[A][]' +
+                                       'pre[A][B]' +
+                                       'dialog[A|open][C|dd|dt]' +
+                                       'blockquote[A|cite][C]' +
+                                       'ol[A|start|reversed][li]' +
+                                       'ul[A][li]' +
+                                       'li[A|value][C]' +
+                                       'dl[A][dd|dt]' +
+                                       'dt[A][C|B]' +
+                                       'dd[A][C]' +
+                                       'a[A|href|target|download|ping|rel|media|type][C|B]' +
+                                       'em[A][B]' +
+                                       'strong[A][B]' +
+                                       'small[A][B]' +
+                                       's[A][B]' +
+                                       'cite[A][B]' +
+                                       'q[A|cite][B]' +
+                                       'dfn[A][B]' +
+                                       'abbr[A][B]' +
+                                       'code[A][B]' +
+                                       'var[A][B]' +
+                                       'samp[A][B]' +
+                                       'kbd[A][B]' +
+                                       'sub[A][B]' +
+                                       'sup[A][B]' +
+                                       'i[A][B]' +
+                                       'b[A][B]' +
+                                       'u[A][B]' +
+                                       'mark[A][B]' +
+                                       'progress[A|value|max][B]' +
+                                       'meter[A|value|min|max|low|high|optimum][B]' +
+                                       'time[A|datetime][B]' +
+                                       'ruby[A][B|rt|rp]' +
+                                       'rt[A][B]' +
+                                       'rp[A][B]' +
+                                       'bdi[A][B]' +
+                                       'bdo[A][B]' +
+                                       'span[A][B]' +
+                                       'ins[A|cite|datetime][C|B]' +
+                                       'del[A|cite|datetime][C|B]' +
+                                       'figure[A][C|legend|figcaption]' +
+                                       'figcaption[A][C]' +
+                                       'img[A|alt|src|srcset|crossorigin|usemap|ismap|width|height][]' +
+                                       'iframe[A|name|src|srcdoc|height|width|sandbox|seamless|allowfullscreen][C|B]' +
+                                       'embed[A|src|height|width|type][]' +
+                                       'object[A|data|type|typemustmatch|name|usemap|form|width|height][C|B|param]' +
+                                       'param[A|name|value][]' +
+                                       'summary[A][B]' +
+                                       'details[A|open][C|legend|summary]' +
+                                       'command[A|type|label|icon|disabled|checked|radiogroup|command][]' +
+                                       'menu[A|type|label][C|li]' +
+                                       'legend[A][C|B]' +
+                                       'div[A][C]' +
+                                       'source[A|src|type|media][]' +
+                                       'track[A|kind|src|srclang|label|default][]' +
+                                       'audio[A|src|autobuffer|autoplay|loop|controls|crossorigin|preload|mediagroup|muted][C|source|track]' +
+                                       'video[A|src|autobuffer|autoplay|loop|controls|width|height|poster|crossorigin|preload|mediagroup|muted][C|source|track]' +
+                                       'hr[A][]' +
+                                       'form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]' +
+                                       'fieldset[A|disabled|form|name][C|legend]' +
+                                       'label[A|form|for][B]' +
+                                       'input[A|type|accept|alt|autocomplete|autofocus|checked|dirname|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|inputmode|list|max|maxlength|min|multiple|name|pattern|placeholder|readonly|required|size|src|step|value|width|files][]' +
+                                       'button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|type|value][B]' +
+                                       'select[A|autofocus|disabled|form|multiple|name|required|size][option|optgroup]' +
+                                       'data[A|value][B]' +
+                                       'datalist[A][B|option]' +
+                                       'optgroup[A|disabled|label][option]' +
+                                       'option[A|disabled|selected|label|value][#]' +
+                                       'textarea[A|autocomplete|autofocus|cols|dirname|disabled|form|inputmode|maxlength|name|placeholder|readonly|required|rows|wrap][#]' +
+                                       'keygen[A|autofocus|challenge|disabled|form|keytype|name][]' +
+                                       'output[A|for|form|name][B]' +
+                                       'canvas[A|width|height][a|button|input]' +
+                                       'map[A|name][C|B]' +
+                                       'area[A|alt|coords|shape|href|target|download|ping|rel|media|hreflang|type][]' +
+                                       'math[A][]' +
+                                       'svg[A][]' +
+                                       'table[A][caption|colgroup|thead|tfoot|tbody|tr]' +
+                                       'caption[A][C]' +
+                                       'colgroup[A|span][col]' +
+                                       'col[A|span][]' +
+                                       'thead[A][tr]' +
+                                       'tfoot[A][tr]' +
+                                       'tbody[A][tr]' +
+                                       'tr[A][th|td]' +
+                                       'th[A|headers|rowspan|colspan|scope][C]' +
+                                       'td[A|headers|rowspan|colspan][C]' +
+                                       'wbr[A][]'
+                       );
+               }
+
+               return html5;
+       };
+
+       /**
+        * Returns the HTML4 schema and caches it in the mapCache.
+        */
+       function getHTML4() {
+               var html4 = mapCache.html4;
+
+               if (!html4) {
+                       // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size
+                       html4 = mapCache.html4 = unpack({
+                               Z : 'H|K|N|O|P',
+                               Y : 'X|form|R|Q',
+                               ZG : 'E|span|width|align|char|charoff|valign',
+                               X : 'p|T|div|U|W|isindex|fieldset|table',
+                               ZF : 'E|align|char|charoff|valign',
+                               W : 'pre|hr|blockquote|address|center|noframes',
+                               ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height',
+                               ZD : '[E][S]',
+                               U : 'ul|ol|dl|menu|dir',
+                               ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',
+                               T : 'h1|h2|h3|h4|h5|h6',
+                               ZB : 'X|S|Q',
+                               S : 'R|P',
+                               ZA : 'a|G|J|M|O|P',
+                               R : 'a|H|K|N|O',
+                               Q : 'noscript|P',
+                               P : 'ins|del|script',
+                               O : 'input|select|textarea|label|button',
+                               N : 'M|L',
+                               M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',
+                               L : 'sub|sup',
+                               K : 'J|I',
+                               J : 'tt|i|b|u|s|strike',
+                               I : 'big|small|font|basefont',
+                               H : 'G|F',
+                               G : 'br|span|bdo',
+                               F : 'object|applet|img|map|iframe',
+                               E : 'A|B|C',
+                               D : 'accesskey|tabindex|onfocus|onblur',
+                               C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',
+                               B : 'lang|xml:lang|dir',
+                               A : 'id|class|style|title'
+                       }, 'script[id|charset|type|language|src|defer|xml:space][]' +
+                               'style[B|id|type|media|title|xml:space][]' +
+                               'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' +
+                               'param[id|name|value|valuetype|type][]' +
+                               'p[E|align][#|S]' +
+                               'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' +
+                               'br[A|clear][]' +
+                               'span[E][#|S]' +
+                               'bdo[A|C|B][#|S]' +
+                               'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' +
+                               'h1[E|align][#|S]' +
+                               'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' +
+                               'map[B|C|A|name][X|form|Q|area]' +
+                               'h2[E|align][#|S]' +
+                               'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' +
+                               'h3[E|align][#|S]' +
+                               'tt[E][#|S]' +
+                               'i[E][#|S]' +
+                               'b[E][#|S]' +
+                               'u[E][#|S]' +
+                               's[E][#|S]' +
+                               'strike[E][#|S]' +
+                               'big[E][#|S]' +
+                               'small[E][#|S]' +
+                               'font[A|B|size|color|face][#|S]' +
+                               'basefont[id|size|color|face][]' +
+                               'em[E][#|S]' +
+                               'strong[E][#|S]' +
+                               'dfn[E][#|S]' +
+                               'code[E][#|S]' +
+                               'q[E|cite][#|S]' +
+                               'samp[E][#|S]' +
+                               'kbd[E][#|S]' +
+                               'var[E][#|S]' +
+                               'cite[E][#|S]' +
+                               'abbr[E][#|S]' +
+                               'acronym[E][#|S]' +
+                               'sub[E][#|S]' +
+                               'sup[E][#|S]' +
+                               'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' +
+                               'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' +
+                               'optgroup[E|disabled|label][option]' +
+                               'option[E|selected|disabled|label|value][]' +
+                               'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' +
+                               'label[E|for|accesskey|onfocus|onblur][#|S]' +
+                               'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' +
+                               'h4[E|align][#|S]' +
+                               'ins[E|cite|datetime][#|Y]' +
+                               'h5[E|align][#|S]' +
+                               'del[E|cite|datetime][#|Y]' +
+                               'h6[E|align][#|S]' +
+                               'div[E|align][#|Y]' +
+                               'ul[E|type|compact][li]' +
+                               'li[E|type|value][#|Y]' +
+                               'ol[E|type|compact|start][li]' +
+                               'dl[E|compact][dt|dd]' +
+                               'dt[E][#|S]' +
+                               'dd[E][#|Y]' +
+                               'menu[E|compact][li]' +
+                               'dir[E|compact][li]' +
+                               'pre[E|width|xml:space][#|ZA]' +
+                               'hr[E|align|noshade|size|width][]' +
+                               'blockquote[E|cite][#|Y]' +
+                               'address[E][#|S|p]' +
+                               'center[E][#|Y]' +
+                               'noframes[E][#|Y]' +
+                               'isindex[A|B|prompt][]' +
+                               'fieldset[E][#|legend|Y]' +
+                               'legend[E|accesskey|align][#|S]' +
+                               'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' +
+                               'caption[E|align][#|S]' +
+                               'col[ZG][]' +
+                               'colgroup[ZG][col]' +
+                               'thead[ZF][tr]' +
+                               'tr[ZF|bgcolor][th|td]' +
+                               'th[E|ZE][#|Y]' +
+                               'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' +
+                               'noscript[E][#|Y]' +
+                               'td[E|ZE][#|Y]' +
+                               'tfoot[ZF][tr]' +
+                               'tbody[ZF][tr]' +
+                               'area[E|D|shape|coords|href|nohref|alt|target][]' +
+                               'base[id|href|target][]' +
+                               'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]'
+                       );
+               }
+
+               return html4;
+       };
+
+       /**
+        * WordPress Core
+        *
+        * Returns a schema that is the result of a deep merge between the HTML5
+        * and HTML4 schemas.
+        */
+       function getSaneSchema() {
+               var cachedMapCache = mapCache,
+                       html5, html4;
+
+               if ( mapCache.sane )
+                       return mapCache.sane;
+
+               // Bust the mapCache so we're not dealing with the other schema objects.
+               mapCache = {};
+               html5 = getHTML5();
+               html4 = getHTML4();
+               mapCache = cachedMapCache;
+
+               each( html4, function( html4settings, tag ) {
+                       var html5settings = html5[ tag ],
+                               difference = [];
+
+                       // Merge tags missing in HTML5 mode.
+                       if ( ! html5settings ) {
+                               html5[ tag ] = html4settings;
+                               return;
+                       }
+
+                       // Merge attributes missing from this HTML5 tag.
+                       each( html4settings.attributes, function( attribute, key ) {
+                               if ( ! html5settings.attributes[ key ] )
+                                       html5settings.attributes[ key ] = attribute;
+                       });
+
+                       // Merge any missing attributes into the attributes order.
+                       each( html4settings.attributesOrder, function( key ) {
+                               if ( -1 === tinymce.inArray( html5settings.attributesOrder, key ) )
+                                       difference.push( key );
+                       });
+
+                       html5settings.attributesOrder = html5settings.attributesOrder.concat( difference );
+
+                       // Merge children missing from this HTML5 tag.
+                       each( html4settings.children, function( child, key ) {
+                               if ( ! html5settings.children[ key ] )
+                                       html5settings.children[ key ] = child;
+                       });
+               });
+
+               return mapCache.sane = html5;
+       }
+
+       /**
+        * Schema validator class.
+        *
+        * @class tinymce.html.Schema
+        * @example
+        *  if (tinymce.activeEditor.schema.isValidChild('p', 'span'))
+        *    alert('span is valid child of p.');
+        *
+        *  if (tinymce.activeEditor.schema.getElementRule('p'))
+        *    alert('P is a valid element.');
+        *
+        * @class tinymce.html.Schema
+        * @version 3.4
+        */
+
+       /**
+        * Constructs a new Schema instance.
+        *
+        * @constructor
+        * @method Schema
+        * @param {Object} settings Name/value settings object.
+        */
+       tinymce.html.Schema = function(settings) {
+               var self = this, elements = {}, children = {}, patternElements = [], validStyles, schemaItems;
+               var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, blockElementsMap, nonEmptyElementsMap, customElementsMap = {};
+
+               // Creates an lookup table map object for the specified option or the default value
+               function createLookupTable(option, default_value, extend) {
+                       var value = settings[option];
+
+                       if (!value) {
+                               // Get cached default map or make it if needed
+                               value = mapCache[option];
+
+                               if (!value) {
+                                       value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
+                                       value = tinymce.extend(value, extend);
+
+                                       mapCache[option] = value;
+                               }
+                       } else {
+                               // Create custom map
+                               value = makeMap(value, ',', makeMap(value.toUpperCase(), ' '));
+                       }
+
+                       return value;
+               };
+
+               settings = settings || {};
+
+               /**
+                * WordPress core uses a sane schema in place of the default "HTML5" schema.
+                */
+               schemaItems = settings.schema == "html5" ? getSaneSchema() : getHTML4();
+
+               // Allow all elements and attributes if verify_html is set to false
+               if (settings.verify_html === false)
+                       settings.valid_elements = '*[*]';
+
+               // Build styles list
+               if (settings.valid_styles) {
+                       validStyles = {};
+
+                       // Convert styles into a rule list
+                       each(settings.valid_styles, function(value, key) {
+                               validStyles[key] = tinymce.explode(value);
+                       });
+               }
+
+               // Setup map objects
+               whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea');
+               selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
+               shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link meta param embed source wbr');
+               boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls');
+               nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object', shortEndedElementsMap);
+               textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
+                                               'blockquote center dir fieldset header footer article section hgroup aside nav figure');
+               blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
+                                               'th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup', textBlockElementsMap);
+
+               // Converts a wildcard expression string to a regexp for example *a will become /.*a/.
+               function patternToRegExp(str) {
+                       return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
+               };
+
+               // Parses the specified valid_elements string and adds to the current rules
+               // This function is a bit hard to read since it's heavily optimized for speed
+               function addValidElements(valid_elements) {
+                       var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
+                               prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,
+                               elementRuleRegExp = /^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,
+                               attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
+                               hasPatternsRegExp = /[*?+]/;
+
+                       if (valid_elements) {
+                               // Split valid elements into an array with rules
+                               valid_elements = split(valid_elements);
+
+                               if (elements['@']) {
+                                       globalAttributes = elements['@'].attributes;
+                                       globalAttributesOrder = elements['@'].attributesOrder;
+                               }
+
+                               // Loop all rules
+                               for (ei = 0, el = valid_elements.length; ei < el; ei++) {
+                                       // Parse element rule
+                                       matches = elementRuleRegExp.exec(valid_elements[ei]);
+                                       if (matches) {
+                                               // Setup local names for matches
+                                               prefix = matches[1];
+                                               elementName = matches[2];
+                                               outputName = matches[3];
+                                               attrData = matches[4];
+
+                                               // Create new attributes and attributesOrder
+                                               attributes = {};
+                                               attributesOrder = [];
+
+                                               // Create the new element
+                                               element = {
+                                                       attributes : attributes,
+                                                       attributesOrder : attributesOrder
+                                               };
+
+                                               // Padd empty elements prefix
+                                               if (prefix === '#')
+                                                       element.paddEmpty = true;
+
+                                               // Remove empty elements prefix
+                                               if (prefix === '-')
+                                                       element.removeEmpty = true;
+
+                                               // Copy attributes from global rule into current rule
+                                               if (globalAttributes) {
+                                                       for (key in globalAttributes)
+                                                               attributes[key] = globalAttributes[key];
+
+                                                       attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
+                                               }
+
+                                               // Attributes defined
+                                               if (attrData) {
+                                                       attrData = split(attrData, '|');
+                                                       for (ai = 0, al = attrData.length; ai < al; ai++) {
+                                                               matches = attrRuleRegExp.exec(attrData[ai]);
+                                                               if (matches) {
+                                                                       attr = {};
+                                                                       attrType = matches[1];
+                                                                       attrName = matches[2].replace(/::/g, ':');
+                                                                       prefix = matches[3];
+                                                                       value = matches[4];
+
+                                                                       // Required
+                                                                       if (attrType === '!') {
+                                                                               element.attributesRequired = element.attributesRequired || [];
+                                                                               element.attributesRequired.push(attrName);
+                                                                               attr.required = true;
+                                                                       }
+
+                                                                       // Denied from global
+                                                                       if (attrType === '-') {
+                                                                               delete attributes[attrName];
+                                                                               attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1);
+                                                                               continue;
+                                                                       }
+
+                                                                       // Default value
+                                                                       if (prefix) {
+                                                                               // Default value
+                                                                               if (prefix === '=') {
+                                                                                       element.attributesDefault = element.attributesDefault || [];
+                                                                                       element.attributesDefault.push({name: attrName, value: value});
+                                                                                       attr.defaultValue = value;
+                                                                               }
+
+                                                                               // Forced value
+                                                                               if (prefix === ':') {
+                                                                                       element.attributesForced = element.attributesForced || [];
+                                                                                       element.attributesForced.push({name: attrName, value: value});
+                                                                                       attr.forcedValue = value;
+                                                                               }
+
+                                                                               // Required values
+                                                                               if (prefix === '<')
+                                                                                       attr.validValues = makeMap(value, '?');
+                                                                       }
+
+                                                                       // Check for attribute patterns
+                                                                       if (hasPatternsRegExp.test(attrName)) {
+                                                                               element.attributePatterns = element.attributePatterns || [];
+                                                                               attr.pattern = patternToRegExp(attrName);
+                                                                               element.attributePatterns.push(attr);
+                                                                       } else {
+                                                                               // Add attribute to order list if it doesn't already exist
+                                                                               if (!attributes[attrName])
+                                                                                       attributesOrder.push(attrName);
+
+                                                                               attributes[attrName] = attr;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Global rule, store away these for later usage
+                                               if (!globalAttributes && elementName == '@') {
+                                                       globalAttributes = attributes;
+                                                       globalAttributesOrder = attributesOrder;
+                                               }
+
+                                               // Handle substitute elements such as b/strong
+                                               if (outputName) {
+                                                       element.outputName = elementName;
+                                                       elements[outputName] = element;
+                                               }
+
+                                               // Add pattern or exact element
+                                               if (hasPatternsRegExp.test(elementName)) {
+                                                       element.pattern = patternToRegExp(elementName);
+                                                       patternElements.push(element);
+                                               } else
+                                                       elements[elementName] = element;
+                                       }
+                               }
+                       }
+               };
+
+               function setValidElements(valid_elements) {
+                       elements = {};
+                       patternElements = [];
+
+                       addValidElements(valid_elements);
+
+                       each(schemaItems, function(element, name) {
+                               children[name] = element.children;
+                       });
+               };
+
+               // Adds custom non HTML elements to the schema
+               function addCustomElements(custom_elements) {
+                       var customElementRegExp = /^(~)?(.+)$/;
+
+                       if (custom_elements) {
+                               each(split(custom_elements), function(rule) {
+                                       var matches = customElementRegExp.exec(rule),
+                                               inline = matches[1] === '~',
+                                               cloneName = inline ? 'span' : 'div',
+                                               name = matches[2];
+
+                                       children[name] = children[cloneName];
+                                       customElementsMap[name] = cloneName;
+
+                                       // If it's not marked as inline then add it to valid block elements
+                                       if (!inline) {
+                                               blockElementsMap[name.toUpperCase()] = {};
+                                               blockElementsMap[name] = {};
+                                       }
+
+                                       // Add elements clone if needed
+                                       if (!elements[name]) {
+                                               elements[name] = elements[cloneName];
+                                       }
+
+                                       // Add custom elements at span/div positions
+                                       each(children, function(element, child) {
+                                               if (element[cloneName])
+                                                       element[name] = element[cloneName];
+                                       });
+                               });
+                       }
+               };
+
+               // Adds valid children to the schema object
+               function addValidChildren(valid_children) {
+                       var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
+
+                       if (valid_children) {
+                               each(split(valid_children), function(rule) {
+                                       var matches = childRuleRegExp.exec(rule), parent, prefix;
+
+                                       if (matches) {
+                                               prefix = matches[1];
+
+                                               // Add/remove items from default
+                                               if (prefix)
+                                                       parent = children[matches[2]];
+                                               else
+                                                       parent = children[matches[2]] = {'#comment' : {}};
+
+                                               parent = children[matches[2]];
+
+                                               each(split(matches[3], '|'), function(child) {
+                                                       if (prefix === '-')
+                                                               delete parent[child];
+                                                       else
+                                                               parent[child] = {};
+                                               });
+                                       }
+                               });
+                       }
+               };
+
+               function getElementRule(name) {
+                       var element = elements[name], i;
+
+                       // Exact match found
+                       if (element)
+                               return element;
+
+                       // No exact match then try the patterns
+                       i = patternElements.length;
+                       while (i--) {
+                               element = patternElements[i];
+
+                               if (element.pattern.test(name))
+                                       return element;
+                       }
+               };
+
+               if (!settings.valid_elements) {
+                       // No valid elements defined then clone the elements from the schema spec
+                       each(schemaItems, function(element, name) {
+                               elements[name] = {
+                                       attributes : element.attributes,
+                                       attributesOrder : element.attributesOrder
+                               };
+
+                               children[name] = element.children;
+                       });
+
+                       // Switch these on HTML4
+                       if (settings.schema != "html5") {
+                               each(split('strong/b,em/i'), function(item) {
+                                       item = split(item, '/');
+                                       elements[item[1]].outputName = item[0];
+                               });
+                       }
+
+                       // Add default alt attribute for images
+                       elements.img.attributesDefault = [{name: 'alt', value: ''}];
+
+                       // Remove these if they are empty by default
+                       each(split('ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i'), function(name) {
+                               if (elements[name]) {
+                                       elements[name].removeEmpty = true;
+                               }
+                       });
+
+                       // Padd these by default
+                       each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) {
+                               elements[name].paddEmpty = true;
+                       });
+               } else
+                       setValidElements(settings.valid_elements);
+
+               addCustomElements(settings.custom_elements);
+               addValidChildren(settings.valid_children);
+               addValidElements(settings.extended_valid_elements);
+
+               // Todo: Remove this when we fix list handling to be valid
+               addValidChildren('+ol[ul|ol],+ul[ul|ol]');
+
+               // Delete invalid elements
+               if (settings.invalid_elements) {
+                       tinymce.each(tinymce.explode(settings.invalid_elements), function(item) {
+                               if (elements[item])
+                                       delete elements[item];
+                       });
+               }
+
+               // If the user didn't allow span only allow internal spans
+               if (!getElementRule('span'))
+                       addValidElements('span[!data-mce-type|*]');
+
+               /**
+                * Name/value map object with valid parents and children to those parents.
+                *
+                * @example
+                * children = {
+                *    div:{p:{}, h1:{}}
+                * };
+                * @field children
+                * @type {Object}
+                */
+               self.children = children;
+
+               /**
+                * Name/value map object with valid styles for each element.
+                *
+                * @field styles
+                * @type {Object}
+                */
+               self.styles = validStyles;
+
+               /**
+                * Returns a map with boolean attributes.
+                *
+                * @method getBoolAttrs
+                * @return {Object} Name/value lookup map for boolean attributes.
+                */
+               self.getBoolAttrs = function() {
+                       return boolAttrMap;
+               };
+
+               /**
+                * Returns a map with block elements.
+                *
+                * @method getBlockElements
+                * @return {Object} Name/value lookup map for block elements.
+                */
+               self.getBlockElements = function() {
+                       return blockElementsMap;
+               };
+
+               /**
+                * Returns a map with text block elements. Such as: p,h1-h6,div,address
+                *
+                * @method getTextBlockElements
+                * @return {Object} Name/value lookup map for block elements.
+                */
+               self.getTextBlockElements = function() {
+                       return textBlockElementsMap;
+               };
+
+               /**
+                * Returns a map with short ended elements such as BR or IMG.
+                *
+                * @method getShortEndedElements
+                * @return {Object} Name/value lookup map for short ended elements.
+                */
+               self.getShortEndedElements = function() {
+                       return shortEndedElementsMap;
+               };
+
+               /**
+                * Returns a map with self closing tags such as <li>.
+                *
+                * @method getSelfClosingElements
+                * @return {Object} Name/value lookup map for self closing tags elements.
+                */
+               self.getSelfClosingElements = function() {
+                       return selfClosingElementsMap;
+               };
+
+               /**
+                * Returns a map with elements that should be treated as contents regardless if it has text
+                * content in them or not such as TD, VIDEO or IMG.
+                *
+                * @method getNonEmptyElements
+                * @return {Object} Name/value lookup map for non empty elements.
+                */
+               self.getNonEmptyElements = function() {
+                       return nonEmptyElementsMap;
+               };
+
+               /**
+                * Returns a map with elements where white space is to be preserved like PRE or SCRIPT.
+                *
+                * @method getWhiteSpaceElements
+                * @return {Object} Name/value lookup map for white space elements.
+                */
+               self.getWhiteSpaceElements = function() {
+                       return whiteSpaceElementsMap;
+               };
+
+               /**
+                * Returns true/false if the specified element and it's child is valid or not
+                * according to the schema.
+                *
+                * @method isValidChild
+                * @param {String} name Element name to check for.
+                * @param {String} child Element child to verify.
+                * @return {Boolean} True/false if the element is a valid child of the specified parent.
+                */
+               self.isValidChild = function(name, child) {
+                       var parent = children[name];
+
+                       return !!(parent && parent[child]);
+               };
+
+               /**
+                * Returns true/false if the specified element name and optional attribute is
+                * valid according to the schema.
+                *
+                * @method isValid
+                * @param {String} name Name of element to check.
+                * @param {String} attr Optional attribute name to check for.
+                * @return {Boolean} True/false if the element and attribute is valid.
+                */
+               self.isValid = function(name, attr) {
+                       var attrPatterns, i, rule = getElementRule(name);
+
+                       // Check if it's a valid element
+                       if (rule) {
+                               if (attr) {
+                                       // Check if attribute name exists
+                                       if (rule.attributes[attr]) {
+                                               return true;
+                                       }
+
+                                       // Check if attribute matches a regexp pattern
+                                       attrPatterns = rule.attributePatterns;
+                                       if (attrPatterns) {
+                                               i = attrPatterns.length;
+                                               while (i--) {
+                                                       if (attrPatterns[i].pattern.test(name)) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               } else {
+                                       return true;
+                               }
+                       }
+
+                       // No match
+                       return false;
+               };
+
+               /**
+                * Returns true/false if the specified element is valid or not
+                * according to the schema.
+                *
+                * @method getElementRule
+                * @param {String} name Element name to check for.
+                * @return {Object} Element object or undefined if the element isn't valid.
+                */
+               self.getElementRule = getElementRule;
+
+               /**
+                * Returns an map object of all custom elements.
+                *
+                * @method getCustomElements
+                * @return {Object} Name/value map object of all custom elements.
+                */
+               self.getCustomElements = function() {
+                       return customElementsMap;
+               };
+
+               /**
+                * Parses a valid elements string and adds it to the schema. The valid elements format is for example "element[attr=default|otherattr]".
+                * Existing rules will be replaced with the ones specified, so this extends the schema.
+                *
+                * @method addValidElements
+                * @param {String} valid_elements String in the valid elements format to be parsed.
+                */
+               self.addValidElements = addValidElements;
+
+               /**
+                * Parses a valid elements string and sets it to the schema. The valid elements format is for example "element[attr=default|otherattr]".
+                * Existing rules will be replaced with the ones specified, so this extends the schema.
+                *
+                * @method setValidElements
+                * @param {String} valid_elements String in the valid elements format to be parsed.
+                */
+               self.setValidElements = setValidElements;
+
+               /**
+                * Adds custom non HTML elements to the schema.
+                *
+                * @method addCustomElements
+                * @param {String} custom_elements Comma separated list of custom elements to add.
+                */
+               self.addCustomElements = addCustomElements;
+
+               /**
+                * Parses a valid children string and adds them to the schema structure. The valid children format is for example: "element[child1|child2]".
+                *
+                * @method addValidChildren
+                * @param {String} valid_children Valid children elements string to parse
+                */
+               self.addValidChildren = addValidChildren;
+
+               self.elements = elements;
+       };
+})(tinymce);
index b8ed7249f3534e25d275a094be803c9813e16c68..55d01ff113e87f3426fef82254ab6340ae6b76b6 100644 (file)
Binary files a/wp-includes/js/tinymce/wp-tinymce.js.gz and b/wp-includes/js/tinymce/wp-tinymce.js.gz differ
index 449f0e25f95cf2c28bdabb19aec700972d1862fc..83a003d720e12b396dd6a78f345838b63f42f93d 100644 (file)
@@ -19,7 +19,7 @@ function get_file($path) {
        return @file_get_contents($path);
 }
 
-$expires_offset = 31536000;
+$expires_offset = 31536000; // 1 year
 
 header('Content-Type: application/x-javascript; charset=UTF-8');
 header('Vary: Accept-Encoding'); // Handle proxies
@@ -33,5 +33,6 @@ if ( isset($_GET['c']) && 1 == $_GET['c'] && isset($_SERVER['HTTP_ACCEPT_ENCODIN
        echo $file;
 } else {
        echo get_file($basepath . '/tiny_mce.js');
+       echo get_file($basepath . '/wp-tinymce-schema.js');
 }
 exit;
diff --git a/wp-includes/js/tw-sack.dev.js b/wp-includes/js/tw-sack.dev.js
deleted file mode 100644 (file)
index f93f2a4..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Simple AJAX Code-Kit (SACK) v1.6.1 */
-/* ©2005 Gregory Wild-Smith */
-/* www.twilightuniverse.com */
-/* Software licenced under a modified X11 licence,
-   see documentation or authors website for more details */
-
-function sack(file) {
-       this.xmlhttp = null;
-
-       this.resetData = function() {
-               this.method = "POST";
-               this.queryStringSeparator = "?";
-               this.argumentSeparator = "&";
-               this.URLString = "";
-               this.encodeURIString = true;
-               this.execute = false;
-               this.element = null;
-               this.elementObj = null;
-               this.requestFile = file;
-               this.vars = new Object();
-               this.responseStatus = new Array(2);
-       };
-
-       this.resetFunctions = function() {
-               this.onLoading = function() { };
-               this.onLoaded = function() { };
-               this.onInteractive = function() { };
-               this.onCompletion = function() { };
-               this.onError = function() { };
-               this.onFail = function() { };
-       };
-
-       this.reset = function() {
-               this.resetFunctions();
-               this.resetData();
-       };
-
-       this.createAJAX = function() {
-               try {
-                       this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
-               } catch (e1) {
-                       try {
-                               this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
-                       } catch (e2) {
-                               this.xmlhttp = null;
-                       }
-               }
-
-               if (! this.xmlhttp) {
-                       if (typeof XMLHttpRequest != "undefined") {
-                               this.xmlhttp = new XMLHttpRequest();
-                       } else {
-                               this.failed = true;
-                       }
-               }
-       };
-
-       this.setVar = function(name, value){
-               this.vars[name] = Array(value, false);
-       };
-
-       this.encVar = function(name, value, returnvars) {
-               if (true == returnvars) {
-                       return Array(encodeURIComponent(name), encodeURIComponent(value));
-               } else {
-                       this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
-               }
-       }
-
-       this.processURLString = function(string, encode) {
-               encoded = encodeURIComponent(this.argumentSeparator);
-               regexp = new RegExp(this.argumentSeparator + "|" + encoded);
-               varArray = string.split(regexp);
-               for (i = 0; i < varArray.length; i++){
-                       urlVars = varArray[i].split("=");
-                       if (true == encode){
-                               this.encVar(urlVars[0], urlVars[1]);
-                       } else {
-                               this.setVar(urlVars[0], urlVars[1]);
-                       }
-               }
-       }
-
-       this.createURLString = function(urlstring) {
-               if (this.encodeURIString && this.URLString.length) {
-                       this.processURLString(this.URLString, true);
-               }
-
-               if (urlstring) {
-                       if (this.URLString.length) {
-                               this.URLString += this.argumentSeparator + urlstring;
-                       } else {
-                               this.URLString = urlstring;
-                       }
-               }
-
-               // prevents caching of URLString
-               this.setVar("rndval", new Date().getTime());
-
-               urlstringtemp = new Array();
-               for (key in this.vars) {
-                       if (false == this.vars[key][1] && true == this.encodeURIString) {
-                               encoded = this.encVar(key, this.vars[key][0], true);
-                               delete this.vars[key];
-                               this.vars[encoded[0]] = Array(encoded[1], true);
-                               key = encoded[0];
-                       }
-
-                       urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
-               }
-               if (urlstring){
-                       this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
-               } else {
-                       this.URLString += urlstringtemp.join(this.argumentSeparator);
-               }
-       }
-
-       this.runResponse = function() {
-               eval(this.response);
-       }
-
-       this.runAJAX = function(urlstring) {
-               if (this.failed) {
-                       this.onFail();
-               } else {
-                       this.createURLString(urlstring);
-                       if (this.element) {
-                               this.elementObj = document.getElementById(this.element);
-                       }
-                       if (this.xmlhttp) {
-                               var self = this;
-                               if (this.method == "GET") {
-                                       totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
-                                       this.xmlhttp.open(this.method, totalurlstring, true);
-                               } else {
-                                       this.xmlhttp.open(this.method, this.requestFile, true);
-                                       try {
-                                               this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
-                                       } catch (e) { }
-                               }
-
-                               this.xmlhttp.onreadystatechange = function() {
-                                       switch (self.xmlhttp.readyState) {
-                                               case 1:
-                                                       self.onLoading();
-                                                       break;
-                                               case 2:
-                                                       self.onLoaded();
-                                                       break;
-                                               case 3:
-                                                       self.onInteractive();
-                                                       break;
-                                               case 4:
-                                                       self.response = self.xmlhttp.responseText;
-                                                       self.responseXML = self.xmlhttp.responseXML;
-                                                       self.responseStatus[0] = self.xmlhttp.status;
-                                                       self.responseStatus[1] = self.xmlhttp.statusText;
-
-                                                       if (self.execute) {
-                                                               self.runResponse();
-                                                       }
-
-                                                       if (self.elementObj) {
-                                                               elemNodeName = self.elementObj.nodeName;
-                                                               elemNodeName.toLowerCase();
-                                                               if (elemNodeName == "input"
-                                                               || elemNodeName == "select"
-                                                               || elemNodeName == "option"
-                                                               || elemNodeName == "textarea") {
-                                                                       self.elementObj.value = self.response;
-                                                               } else {
-                                                                       self.elementObj.innerHTML = self.response;
-                                                               }
-                                                       }
-                                                       if (self.responseStatus[0] == "200") {
-                                                               self.onCompletion();
-                                                       } else {
-                                                               self.onError();
-                                                       }
-
-                                                       self.URLString = "";
-                                                       break;
-                                       }
-                               };
-
-                               this.xmlhttp.send(this.URLString);
-                       }
-               }
-       };
-
-       this.reset();
-       this.createAJAX();
-}
index d1b5561e5050e027c04b35afe577df84bd6ca434..f93f2a429c7c3c1ca92fbfce67f3b742b0a2f03d 100644 (file)
@@ -1 +1,193 @@
-function sack(file){this.xmlhttp=null;this.resetData=function(){this.method="POST";this.queryStringSeparator="?";this.argumentSeparator="&";this.URLString="";this.encodeURIString=true;this.execute=false;this.element=null;this.elementObj=null;this.requestFile=file;this.vars=new Object();this.responseStatus=new Array(2)};this.resetFunctions=function(){this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onError=function(){};this.onFail=function(){}};this.reset=function(){this.resetFunctions();this.resetData()};this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e1){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(e2){this.xmlhttp=null}}if(!this.xmlhttp){if(typeof XMLHttpRequest!="undefined"){this.xmlhttp=new XMLHttpRequest()}else{this.failed=true}}};this.setVar=function(name,value){this.vars[name]=Array(value,false)};this.encVar=function(name,value,returnvars){if(true==returnvars){return Array(encodeURIComponent(name),encodeURIComponent(value))}else{this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true)}};this.processURLString=function(string,encode){encoded=encodeURIComponent(this.argumentSeparator);regexp=new RegExp(this.argumentSeparator+"|"+encoded);varArray=string.split(regexp);for(i=0;i<varArray.length;i++){urlVars=varArray[i].split("=");if(true==encode){this.encVar(urlVars[0],urlVars[1])}else{this.setVar(urlVars[0],urlVars[1])}}};this.createURLString=function(urlstring){if(this.encodeURIString&&this.URLString.length){this.processURLString(this.URLString,true)}if(urlstring){if(this.URLString.length){this.URLString+=this.argumentSeparator+urlstring}else{this.URLString=urlstring}}this.setVar("rndval",new Date().getTime());urlstringtemp=new Array();for(key in this.vars){if(false==this.vars[key][1]&&true==this.encodeURIString){encoded=this.encVar(key,this.vars[key][0],true);delete this.vars[key];this.vars[encoded[0]]=Array(encoded[1],true);key=encoded[0]}urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0]}if(urlstring){this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator)}else{this.URLString+=urlstringtemp.join(this.argumentSeparator)}};this.runResponse=function(){eval(this.response)};this.runAJAX=function(urlstring){if(this.failed){this.onFail()}else{this.createURLString(urlstring);if(this.element){this.elementObj=document.getElementById(this.element)}if(this.xmlhttp){var self=this;if(this.method=="GET"){totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true)}else{this.xmlhttp.open(this.method,this.requestFile,true);try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}}this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;if(self.execute){self.runResponse()}if(self.elementObj){elemNodeName=self.elementObj.nodeName;elemNodeName.toLowerCase();if(elemNodeName=="input"||elemNodeName=="select"||elemNodeName=="option"||elemNodeName=="textarea"){self.elementObj.value=self.response}else{self.elementObj.innerHTML=self.response}}if(self.responseStatus[0]=="200"){self.onCompletion()}else{self.onError()}self.URLString="";break}};this.xmlhttp.send(this.URLString)}}};this.reset();this.createAJAX()};
\ No newline at end of file
+/* Simple AJAX Code-Kit (SACK) v1.6.1 */
+/* ©2005 Gregory Wild-Smith */
+/* www.twilightuniverse.com */
+/* Software licenced under a modified X11 licence,
+   see documentation or authors website for more details */
+
+function sack(file) {
+       this.xmlhttp = null;
+
+       this.resetData = function() {
+               this.method = "POST";
+               this.queryStringSeparator = "?";
+               this.argumentSeparator = "&";
+               this.URLString = "";
+               this.encodeURIString = true;
+               this.execute = false;
+               this.element = null;
+               this.elementObj = null;
+               this.requestFile = file;
+               this.vars = new Object();
+               this.responseStatus = new Array(2);
+       };
+
+       this.resetFunctions = function() {
+               this.onLoading = function() { };
+               this.onLoaded = function() { };
+               this.onInteractive = function() { };
+               this.onCompletion = function() { };
+               this.onError = function() { };
+               this.onFail = function() { };
+       };
+
+       this.reset = function() {
+               this.resetFunctions();
+               this.resetData();
+       };
+
+       this.createAJAX = function() {
+               try {
+                       this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+               } catch (e1) {
+                       try {
+                               this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+                       } catch (e2) {
+                               this.xmlhttp = null;
+                       }
+               }
+
+               if (! this.xmlhttp) {
+                       if (typeof XMLHttpRequest != "undefined") {
+                               this.xmlhttp = new XMLHttpRequest();
+                       } else {
+                               this.failed = true;
+                       }
+               }
+       };
+
+       this.setVar = function(name, value){
+               this.vars[name] = Array(value, false);
+       };
+
+       this.encVar = function(name, value, returnvars) {
+               if (true == returnvars) {
+                       return Array(encodeURIComponent(name), encodeURIComponent(value));
+               } else {
+                       this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
+               }
+       }
+
+       this.processURLString = function(string, encode) {
+               encoded = encodeURIComponent(this.argumentSeparator);
+               regexp = new RegExp(this.argumentSeparator + "|" + encoded);
+               varArray = string.split(regexp);
+               for (i = 0; i < varArray.length; i++){
+                       urlVars = varArray[i].split("=");
+                       if (true == encode){
+                               this.encVar(urlVars[0], urlVars[1]);
+                       } else {
+                               this.setVar(urlVars[0], urlVars[1]);
+                       }
+               }
+       }
+
+       this.createURLString = function(urlstring) {
+               if (this.encodeURIString && this.URLString.length) {
+                       this.processURLString(this.URLString, true);
+               }
+
+               if (urlstring) {
+                       if (this.URLString.length) {
+                               this.URLString += this.argumentSeparator + urlstring;
+                       } else {
+                               this.URLString = urlstring;
+                       }
+               }
+
+               // prevents caching of URLString
+               this.setVar("rndval", new Date().getTime());
+
+               urlstringtemp = new Array();
+               for (key in this.vars) {
+                       if (false == this.vars[key][1] && true == this.encodeURIString) {
+                               encoded = this.encVar(key, this.vars[key][0], true);
+                               delete this.vars[key];
+                               this.vars[encoded[0]] = Array(encoded[1], true);
+                               key = encoded[0];
+                       }
+
+                       urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
+               }
+               if (urlstring){
+                       this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
+               } else {
+                       this.URLString += urlstringtemp.join(this.argumentSeparator);
+               }
+       }
+
+       this.runResponse = function() {
+               eval(this.response);
+       }
+
+       this.runAJAX = function(urlstring) {
+               if (this.failed) {
+                       this.onFail();
+               } else {
+                       this.createURLString(urlstring);
+                       if (this.element) {
+                               this.elementObj = document.getElementById(this.element);
+                       }
+                       if (this.xmlhttp) {
+                               var self = this;
+                               if (this.method == "GET") {
+                                       totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
+                                       this.xmlhttp.open(this.method, totalurlstring, true);
+                               } else {
+                                       this.xmlhttp.open(this.method, this.requestFile, true);
+                                       try {
+                                               this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
+                                       } catch (e) { }
+                               }
+
+                               this.xmlhttp.onreadystatechange = function() {
+                                       switch (self.xmlhttp.readyState) {
+                                               case 1:
+                                                       self.onLoading();
+                                                       break;
+                                               case 2:
+                                                       self.onLoaded();
+                                                       break;
+                                               case 3:
+                                                       self.onInteractive();
+                                                       break;
+                                               case 4:
+                                                       self.response = self.xmlhttp.responseText;
+                                                       self.responseXML = self.xmlhttp.responseXML;
+                                                       self.responseStatus[0] = self.xmlhttp.status;
+                                                       self.responseStatus[1] = self.xmlhttp.statusText;
+
+                                                       if (self.execute) {
+                                                               self.runResponse();
+                                                       }
+
+                                                       if (self.elementObj) {
+                                                               elemNodeName = self.elementObj.nodeName;
+                                                               elemNodeName.toLowerCase();
+                                                               if (elemNodeName == "input"
+                                                               || elemNodeName == "select"
+                                                               || elemNodeName == "option"
+                                                               || elemNodeName == "textarea") {
+                                                                       self.elementObj.value = self.response;
+                                                               } else {
+                                                                       self.elementObj.innerHTML = self.response;
+                                                               }
+                                                       }
+                                                       if (self.responseStatus[0] == "200") {
+                                                               self.onCompletion();
+                                                       } else {
+                                                               self.onError();
+                                                       }
+
+                                                       self.URLString = "";
+                                                       break;
+                                       }
+                               };
+
+                               this.xmlhttp.send(this.URLString);
+                       }
+               }
+       };
+
+       this.reset();
+       this.createAJAX();
+}
diff --git a/wp-includes/js/tw-sack.min.js b/wp-includes/js/tw-sack.min.js
new file mode 100644 (file)
index 0000000..d1b5561
--- /dev/null
@@ -0,0 +1 @@
+function sack(file){this.xmlhttp=null;this.resetData=function(){this.method="POST";this.queryStringSeparator="?";this.argumentSeparator="&";this.URLString="";this.encodeURIString=true;this.execute=false;this.element=null;this.elementObj=null;this.requestFile=file;this.vars=new Object();this.responseStatus=new Array(2)};this.resetFunctions=function(){this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onError=function(){};this.onFail=function(){}};this.reset=function(){this.resetFunctions();this.resetData()};this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e1){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(e2){this.xmlhttp=null}}if(!this.xmlhttp){if(typeof XMLHttpRequest!="undefined"){this.xmlhttp=new XMLHttpRequest()}else{this.failed=true}}};this.setVar=function(name,value){this.vars[name]=Array(value,false)};this.encVar=function(name,value,returnvars){if(true==returnvars){return Array(encodeURIComponent(name),encodeURIComponent(value))}else{this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true)}};this.processURLString=function(string,encode){encoded=encodeURIComponent(this.argumentSeparator);regexp=new RegExp(this.argumentSeparator+"|"+encoded);varArray=string.split(regexp);for(i=0;i<varArray.length;i++){urlVars=varArray[i].split("=");if(true==encode){this.encVar(urlVars[0],urlVars[1])}else{this.setVar(urlVars[0],urlVars[1])}}};this.createURLString=function(urlstring){if(this.encodeURIString&&this.URLString.length){this.processURLString(this.URLString,true)}if(urlstring){if(this.URLString.length){this.URLString+=this.argumentSeparator+urlstring}else{this.URLString=urlstring}}this.setVar("rndval",new Date().getTime());urlstringtemp=new Array();for(key in this.vars){if(false==this.vars[key][1]&&true==this.encodeURIString){encoded=this.encVar(key,this.vars[key][0],true);delete this.vars[key];this.vars[encoded[0]]=Array(encoded[1],true);key=encoded[0]}urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0]}if(urlstring){this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator)}else{this.URLString+=urlstringtemp.join(this.argumentSeparator)}};this.runResponse=function(){eval(this.response)};this.runAJAX=function(urlstring){if(this.failed){this.onFail()}else{this.createURLString(urlstring);if(this.element){this.elementObj=document.getElementById(this.element)}if(this.xmlhttp){var self=this;if(this.method=="GET"){totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true)}else{this.xmlhttp.open(this.method,this.requestFile,true);try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}}this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;if(self.execute){self.runResponse()}if(self.elementObj){elemNodeName=self.elementObj.nodeName;elemNodeName.toLowerCase();if(elemNodeName=="input"||elemNodeName=="select"||elemNodeName=="option"||elemNodeName=="textarea"){self.elementObj.value=self.response}else{self.elementObj.innerHTML=self.response}}if(self.responseStatus[0]=="200"){self.onCompletion()}else{self.onError()}self.URLString="";break}};this.xmlhttp.send(this.URLString)}}};this.reset();this.createAJAX()};
\ No newline at end of file
diff --git a/wp-includes/js/underscore.min.js b/wp-includes/js/underscore.min.js
new file mode 100644 (file)
index 0000000..e617fe8
--- /dev/null
@@ -0,0 +1,5 @@
+//     Underscore.js 1.4.1
+//     http://underscorejs.org
+//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore may be freely distributed under the MIT license.
+(function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.push,u=r.slice,a=r.concat,f=r.unshift,l=i.toString,c=i.hasOwnProperty,h=r.forEach,p=r.map,d=r.reduce,v=r.reduceRight,m=r.filter,g=r.every,y=r.some,b=r.indexOf,w=r.lastIndexOf,E=Array.isArray,S=Object.keys,x=s.bind,T=function(e){if(e instanceof T)return e;if(!(this instanceof T))return new T(e);this._wrapped=e};typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=T),exports._=T):e._=T,T.VERSION="1.4.1";var N=T.each=T.forEach=function(e,t,r){if(h&&e.forEach===h)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i<s;i++)if(t.call(r,e[i],i,e)===n)return}else for(var o in e)if(T.has(e,o)&&t.call(r,e[o],o,e)===n)return};T.map=T.collect=function(e,t,n){var r=[];return p&&e.map===p?e.map(t,n):(N(e,function(e,i,s){r[r.length]=t.call(n,e,i,s)}),r)},T.reduce=T.foldl=T.inject=function(e,t,n,r){var i=arguments.length>2;if(d&&e.reduce===d)return r&&(t=T.bind(t,r)),i?e.reduce(t,n):e.reduce(t);N(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.reduceRight=T.foldr=function(e,t,n,r){var i=arguments.length>2;if(v&&e.reduceRight===v)return r&&(t=T.bind(t,r)),arguments.length>2?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=T.keys(e);s=o.length}N(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.find=T.detect=function(e,t,n){var r;return C(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},T.filter=T.select=function(e,t,n){var r=[];return m&&e.filter===m?e.filter(t,n):(N(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},T.reject=function(e,t,n){var r=[];return N(e,function(e,i,s){t.call(n,e,i,s)||(r[r.length]=e)}),r},T.every=T.all=function(e,t,r){t||(t=T.identity);var i=!0;return g&&e.every===g?e.every(t,r):(N(e,function(e,s,o){if(!(i=i&&t.call(r,e,s,o)))return n}),!!i)};var C=T.some=T.any=function(e,t,r){t||(t=T.identity);var i=!1;return y&&e.some===y?e.some(t,r):(N(e,function(e,s,o){if(i||(i=t.call(r,e,s,o)))return n}),!!i)};T.contains=T.include=function(e,t){var n=!1;return b&&e.indexOf===b?e.indexOf(t)!=-1:(n=C(e,function(e){return e===t}),n)},T.invoke=function(e,t){var n=u.call(arguments,2);return T.map(e,function(e){return(T.isFunction(t)?t:e[t]).apply(e,n)})},T.pluck=function(e,t){return T.map(e,function(e){return e[t]})},T.where=function(e,t){return T.isEmpty(t)?[]:T.filter(e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},T.max=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&T.isEmpty(e))return-Infinity;var r={computed:-Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},T.min=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&T.isEmpty(e))return Infinity;var r={computed:Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o<r.computed&&(r={value:e,computed:o})}),r.value},T.shuffle=function(e){var t,n=0,r=[];return N(e,function(e){t=T.random(n++),r[n-1]=r[t],r[t]=e}),r};var k=function(e){return T.isFunction(e)?e:function(t){return t[e]}};T.sortBy=function(e,t,n){var r=k(t);return T.pluck(T.map(e,function(e,t,i){return{value:e,index:t,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index<t.index?-1:1}),"value")};var L=function(e,t,n,r){var i={},s=k(t);return N(e,function(t,o){var u=s.call(n,t,o,e);r(i,u,t)}),i};T.groupBy=function(e,t,n){return L(e,t,n,function(e,t,n){(T.has(e,t)?e[t]:e[t]=[]).push(n)})},T.countBy=function(e,t,n){return L(e,t,n,function(e,t,n){T.has(e,t)||(e[t]=0),e[t]++})},T.sortedIndex=function(e,t,n,r){n=n==null?T.identity:k(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},T.toArray=function(e){return e?e.length===+e.length?u.call(e):T.values(e):[]},T.size=function(e){return e.length===+e.length?e.length:T.keys(e).length},T.first=T.head=T.take=function(e,t,n){return t!=null&&!n?u.call(e,0,t):e[0]},T.initial=function(e,t,n){return u.call(e,0,e.length-(t==null||n?1:t))},T.last=function(e,t,n){return t!=null&&!n?u.call(e,Math.max(e.length-t,0)):e[e.length-1]},T.rest=T.tail=T.drop=function(e,t,n){return u.call(e,t==null||n?1:t)},T.compact=function(e){return T.filter(e,function(e){return!!e})};var A=function(e,t,n){return N(e,function(e){T.isArray(e)?t?o.apply(n,e):A(e,t,n):n.push(e)}),n};T.flatten=function(e,t){return A(e,t,[])},T.without=function(e){return T.difference(e,u.call(arguments,1))},T.uniq=T.unique=function(e,t,n,r){var i=n?T.map(e,n,r):e,s=[],o=[];return N(i,function(n,r){if(t?!r||o[o.length-1]!==n:!T.contains(o,n))o.push(n),s.push(e[r])}),s},T.union=function(){return T.uniq(a.apply(r,arguments))},T.intersection=function(e){var t=u.call(arguments,1);return T.filter(T.uniq(e),function(e){return T.every(t,function(t){return T.indexOf(t,e)>=0})})},T.difference=function(e){var t=a.apply(r,u.call(arguments,1));return T.filter(e,function(e){return!T.contains(t,e)})},T.zip=function(){var e=u.call(arguments),t=T.max(T.pluck(e,"length")),n=new Array(t);for(var r=0;r<t;r++)n[r]=T.pluck(e,""+r);return n},T.object=function(e,t){var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},T.indexOf=function(e,t,n){var r=0,i=e.length;if(n){if(typeof n!="number")return r=T.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(b&&e.indexOf===b)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},T.lastIndexOf=function(e,t,n){var r=n!=null;if(w&&e.lastIndexOf===w)return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},T.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var O=function(){};T.bind=function(t,n){var r,i;if(t.bind===x&&x)return x.apply(t,u.call(arguments,1));if(!T.isFunction(t))throw new TypeError;return i=u.call(arguments,2),r=function(){if(this instanceof r){O.prototype=t.prototype;var e=new O,s=t.apply(e,i.concat(u.call(arguments)));return Object(s)===s?s:e}return t.apply(n,i.concat(u.call(arguments)))}},T.bindAll=function(e){var t=u.call(arguments,1);return t.length==0&&(t=T.functions(e)),N(t,function(t){e[t]=T.bind(e[t],e)}),e},T.memoize=function(e,t){var n={};return t||(t=T.identity),function(){var r=t.apply(this,arguments);return T.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},T.delay=function(e,t){var n=u.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},T.defer=function(e){return T.delay.apply(T,[e,1].concat(u.call(arguments,1)))},T.throttle=function(e,t){var n,r,i,s,o,u,a=T.debounce(function(){o=s=!1},t);return function(){n=this,r=arguments;var f=function(){i=null,o&&(u=e.apply(n,r)),a()};return i||(i=setTimeout(f,t)),s?o=!0:(s=!0,u=e.apply(n,r)),a(),u}},T.debounce=function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},T.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},T.wrap=function(e,t){return function(){var n=[e];return o.apply(n,arguments),t.apply(this,n)}},T.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},T.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},T.keys=S||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)T.has(e,n)&&(t[t.length]=n);return t},T.values=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push(e[n]);return t},T.pairs=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push([n,e[n]]);return t},T.invert=function(e){var t={};for(var n in e)T.has(e,n)&&(t[e[n]]=n);return t},T.functions=T.methods=function(e){var t=[];for(var n in e)T.isFunction(e[n])&&t.push(n);return t.sort()},T.extend=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},T.pick=function(e){var t={},n=a.apply(r,u.call(arguments,1));return N(n,function(n){n in e&&(t[n]=e[n])}),t},T.omit=function(e){var t={},n=a.apply(r,u.call(arguments,1));for(var i in e)T.contains(n,i)||(t[i]=e[i]);return t},T.defaults=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},T.clone=function(e){return T.isObject(e)?T.isArray(e)?e.slice():T.extend({},e):e},T.tap=function(e,t){return t(e),e};var M=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof T&&(e=e._wrapped),t instanceof T&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=M(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(T.isFunction(a)&&a instanceof a&&T.isFunction(f)&&f instanceof f))return!1;for(var c in e)if(T.has(e,c)){o++;if(!(u=T.has(t,c)&&M(e[c],t[c],n,r)))break}if(u){for(c in t)if(T.has(t,c)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};T.isEqual=function(e,t){return M(e,t,[],[])},T.isEmpty=function(e){if(e==null)return!0;if(T.isArray(e)||T.isString(e))return e.length===0;for(var t in e)if(T.has(e,t))return!1;return!0},T.isElement=function(e){return!!e&&e.nodeType===1},T.isArray=E||function(e){return l.call(e)=="[object Array]"},T.isObject=function(e){return e===Object(e)},N(["Arguments","Function","String","Number","Date","RegExp"],function(e){T["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),T.isArguments(arguments)||(T.isArguments=function(e){return!!e&&!!T.has(e,"callee")}),typeof /./!="function"&&(T.isFunction=function(e){return typeof e=="function"}),T.isFinite=function(e){return T.isNumber(e)&&isFinite(e)},T.isNaN=function(e){return T.isNumber(e)&&e!=+e},T.isBoolean=function(e){return e===!0||e===!1||l.call(e)=="[object Boolean]"},T.isNull=function(e){return e===null},T.isUndefined=function(e){return e===void 0},T.has=function(e,t){return c.call(e,t)},T.noConflict=function(){return e._=t,this},T.identity=function(e){return e},T.times=function(e,t,n){for(var r=0;r<e;r++)t.call(n,r)},T.random=function(e,t){return t==null&&(t=e,e=0),e+(0|Math.random()*(t-e+1))};var _={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};_.unescape=T.invert(_.escape);var D={escape:new RegExp("["+T.keys(_.escape).join("")+"]","g"),unescape:new RegExp("("+T.keys(_.unescape).join("|")+")","g")};T.each(["escape","unescape"],function(e){T[e]=function(t){return t==null?"":(""+t).replace(D[e],function(t){return _[e][t]})}}),T.result=function(e,t){if(e==null)return null;var n=e[t];return T.isFunction(n)?n.call(e):n},T.mixin=function(e){N(T.functions(e),function(t){var n=T[t]=e[t];T.prototype[t]=function(){var e=[this._wrapped];return o.apply(e,arguments),F.call(this,n.apply(T,e))}})};var P=0;T.uniqueId=function(e){var t=P++;return e?e+t:t},T.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var H=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},j=/\\|'|\r|\n|\t|\u2028|\u2029/g;T.template=function(e,t,n){n=T.defaults({},n,T.templateSettings);var r=new RegExp([(n.escape||H).source,(n.interpolate||H).source,(n.evaluate||H).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){s+=e.slice(i,u).replace(j,function(e){return"\\"+B[e]}),s+=n?"'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?"'+\n((__t=("+r+"))==null?'':__t)+\n'":o?"';\n"+o+"\n__p+='":"",i=u+t.length}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(n.variable||"obj","_",s)}catch(u){throw u.source=s,u}if(t)return o(t,T);var a=function(e){return o.call(this,e,T)};return a.source="function("+(n.variable||"obj")+"){\n"+s+"}",a},T.chain=function(e){return T(e).chain()};var F=function(e){return this._chain?T(e).chain():e};T.mixin(T),N(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=r[e];T.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],F.call(this,n)}}),N(["concat","join","slice"],function(e){var t=r[e];T.prototype[e]=function(){return F.call(this,t.apply(this._wrapped,arguments))}}),T.extend(T.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file
diff --git a/wp-includes/js/wp-ajax-response.dev.js b/wp-includes/js/wp-ajax-response.dev.js
deleted file mode 100644 (file)
index d5b003c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-var wpAjax = jQuery.extend( {
-       unserialize: function( s ) {
-               var r = {}, q, pp, i, p;
-               if ( !s ) { return r; }
-               q = s.split('?'); if ( q[1] ) { s = q[1]; }
-               pp = s.split('&');
-               for ( i in pp ) {
-                       if ( jQuery.isFunction(pp.hasOwnProperty) && !pp.hasOwnProperty(i) ) { continue; }
-                       p = pp[i].split('=');
-                       r[p[0]] = p[1];
-               }
-               return r;
-       },
-       parseAjaxResponse: function( x, r, e ) { // 1 = good, 0 = strange (bad data?), -1 = you lack permission
-               var parsed = {}, re = jQuery('#' + r).html(''), err = '';
-
-               if ( x && typeof x == 'object' && x.getElementsByTagName('wp_ajax') ) {
-                       parsed.responses = [];
-                       parsed.errors = false;
-                       jQuery('response', x).each( function() {
-                               var th = jQuery(this), child = jQuery(this.firstChild), response;
-                               response = { action: th.attr('action'), what: child.get(0).nodeName, id: child.attr('id'), oldId: child.attr('old_id'), position: child.attr('position') };
-                               response.data = jQuery( 'response_data', child ).text();
-                               response.supplemental = {};
-                               if ( !jQuery( 'supplemental', child ).children().each( function() {
-                                       response.supplemental[this.nodeName] = jQuery(this).text();
-                               } ).size() ) { response.supplemental = false }
-                               response.errors = [];
-                               if ( !jQuery('wp_error', child).each( function() {
-                                       var code = jQuery(this).attr('code'), anError, errorData, formField;
-                                       anError = { code: code, message: this.firstChild.nodeValue, data: false };
-                                       errorData = jQuery('wp_error_data[code="' + code + '"]', x);
-                                       if ( errorData ) { anError.data = errorData.get(); }
-                                       formField = jQuery( 'form-field', errorData ).text();
-                                       if ( formField ) { code = formField; }
-                                       if ( e ) { wpAjax.invalidateForm( jQuery('#' + e + ' :input[name="' + code + '"]' ).parents('.form-field:first') ); }
-                                       err += '<p>' + anError.message + '</p>';
-                                       response.errors.push( anError );
-                                       parsed.errors = true;
-                               } ).size() ) { response.errors = false; }
-                               parsed.responses.push( response );
-                       } );
-                       if ( err.length ) { re.html( '<div class="error">' + err + '</div>' ); }
-                       return parsed;
-               }
-               if ( isNaN(x) ) { return !re.html('<div class="error"><p>' + x + '</p></div>'); }
-               x = parseInt(x,10);
-               if ( -1 == x ) { return !re.html('<div class="error"><p>' + wpAjax.noPerm + '</p></div>'); }
-               else if ( 0 === x ) { return !re.html('<div class="error"><p>' + wpAjax.broken  + '</p></div>'); }
-               return true;
-       },
-       invalidateForm: function ( selector ) {
-               return jQuery( selector ).addClass( 'form-invalid' ).find('input:visible').change( function() { jQuery(this).closest('.form-invalid').removeClass( 'form-invalid' ); } );
-       },
-       validateForm: function( selector ) {
-               selector = jQuery( selector );
-               return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() == ''; } ) ).size();
-       }
-}, wpAjax || { noPerm: 'You do not have permission to do that.', broken: 'An unidentified error has occurred.' } );
-
-// Basic form validation
-jQuery(document).ready( function($){
-       $('form.validate').submit( function() { return wpAjax.validateForm( $(this) ); } );
-});
index bdfa53ab06cde95349f1c20d1b5abb8576ca6235..d5b003cf567593cf9a012cef6761a2854affa61a 100644 (file)
@@ -1 +1,64 @@
-var wpAjax=jQuery.extend({unserialize:function(c){var d={},e,a,b,f;if(!c){return d}e=c.split("?");if(e[1]){c=e[1]}a=c.split("&");for(b in a){if(jQuery.isFunction(a.hasOwnProperty)&&!a.hasOwnProperty(b)){continue}f=a[b].split("=");d[f[0]]=f[1]}return d},parseAjaxResponse:function(a,f,g){var b={},c=jQuery("#"+f).html(""),d="";if(a&&typeof a=="object"&&a.getElementsByTagName("wp_ajax")){b.responses=[];b.errors=false;jQuery("response",a).each(function(){var h=jQuery(this),i=jQuery(this.firstChild),e;e={action:h.attr("action"),what:i.get(0).nodeName,id:i.attr("id"),oldId:i.attr("old_id"),position:i.attr("position")};e.data=jQuery("response_data",i).text();e.supplemental={};if(!jQuery("supplemental",i).children().each(function(){e.supplemental[this.nodeName]=jQuery(this).text()}).size()){e.supplemental=false}e.errors=[];if(!jQuery("wp_error",i).each(function(){var j=jQuery(this).attr("code"),m,l,k;m={code:j,message:this.firstChild.nodeValue,data:false};l=jQuery('wp_error_data[code="'+j+'"]',a);if(l){m.data=l.get()}k=jQuery("form-field",l).text();if(k){j=k}if(g){wpAjax.invalidateForm(jQuery("#"+g+' :input[name="'+j+'"]').parents(".form-field:first"))}d+="<p>"+m.message+"</p>";e.errors.push(m);b.errors=true}).size()){e.errors=false}b.responses.push(e)});if(d.length){c.html('<div class="error">'+d+"</div>")}return b}if(isNaN(a)){return !c.html('<div class="error"><p>'+a+"</p></div>")}a=parseInt(a,10);if(-1==a){return !c.html('<div class="error"><p>'+wpAjax.noPerm+"</p></div>")}else{if(0===a){return !c.html('<div class="error"><p>'+wpAjax.broken+"</p></div>")}}return true},invalidateForm:function(a){return jQuery(a).addClass("form-invalid").find("input:visible").change(function(){jQuery(this).closest(".form-invalid").removeClass("form-invalid")})},validateForm:function(a){a=jQuery(a);return !wpAjax.invalidateForm(a.find(".form-required").filter(function(){return jQuery("input:visible",this).val()==""})).size()}},wpAjax||{noPerm:"You do not have permission to do that.",broken:"An unidentified error has occurred."});jQuery(document).ready(function(a){a("form.validate").submit(function(){return wpAjax.validateForm(a(this))})});
\ No newline at end of file
+var wpAjax = jQuery.extend( {
+       unserialize: function( s ) {
+               var r = {}, q, pp, i, p;
+               if ( !s ) { return r; }
+               q = s.split('?'); if ( q[1] ) { s = q[1]; }
+               pp = s.split('&');
+               for ( i in pp ) {
+                       if ( jQuery.isFunction(pp.hasOwnProperty) && !pp.hasOwnProperty(i) ) { continue; }
+                       p = pp[i].split('=');
+                       r[p[0]] = p[1];
+               }
+               return r;
+       },
+       parseAjaxResponse: function( x, r, e ) { // 1 = good, 0 = strange (bad data?), -1 = you lack permission
+               var parsed = {}, re = jQuery('#' + r).html(''), err = '';
+
+               if ( x && typeof x == 'object' && x.getElementsByTagName('wp_ajax') ) {
+                       parsed.responses = [];
+                       parsed.errors = false;
+                       jQuery('response', x).each( function() {
+                               var th = jQuery(this), child = jQuery(this.firstChild), response;
+                               response = { action: th.attr('action'), what: child.get(0).nodeName, id: child.attr('id'), oldId: child.attr('old_id'), position: child.attr('position') };
+                               response.data = jQuery( 'response_data', child ).text();
+                               response.supplemental = {};
+                               if ( !jQuery( 'supplemental', child ).children().each( function() {
+                                       response.supplemental[this.nodeName] = jQuery(this).text();
+                               } ).size() ) { response.supplemental = false }
+                               response.errors = [];
+                               if ( !jQuery('wp_error', child).each( function() {
+                                       var code = jQuery(this).attr('code'), anError, errorData, formField;
+                                       anError = { code: code, message: this.firstChild.nodeValue, data: false };
+                                       errorData = jQuery('wp_error_data[code="' + code + '"]', x);
+                                       if ( errorData ) { anError.data = errorData.get(); }
+                                       formField = jQuery( 'form-field', errorData ).text();
+                                       if ( formField ) { code = formField; }
+                                       if ( e ) { wpAjax.invalidateForm( jQuery('#' + e + ' :input[name="' + code + '"]' ).parents('.form-field:first') ); }
+                                       err += '<p>' + anError.message + '</p>';
+                                       response.errors.push( anError );
+                                       parsed.errors = true;
+                               } ).size() ) { response.errors = false; }
+                               parsed.responses.push( response );
+                       } );
+                       if ( err.length ) { re.html( '<div class="error">' + err + '</div>' ); }
+                       return parsed;
+               }
+               if ( isNaN(x) ) { return !re.html('<div class="error"><p>' + x + '</p></div>'); }
+               x = parseInt(x,10);
+               if ( -1 == x ) { return !re.html('<div class="error"><p>' + wpAjax.noPerm + '</p></div>'); }
+               else if ( 0 === x ) { return !re.html('<div class="error"><p>' + wpAjax.broken  + '</p></div>'); }
+               return true;
+       },
+       invalidateForm: function ( selector ) {
+               return jQuery( selector ).addClass( 'form-invalid' ).find('input:visible').change( function() { jQuery(this).closest('.form-invalid').removeClass( 'form-invalid' ); } );
+       },
+       validateForm: function( selector ) {
+               selector = jQuery( selector );
+               return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() == ''; } ) ).size();
+       }
+}, wpAjax || { noPerm: 'You do not have permission to do that.', broken: 'An unidentified error has occurred.' } );
+
+// Basic form validation
+jQuery(document).ready( function($){
+       $('form.validate').submit( function() { return wpAjax.validateForm( $(this) ); } );
+});
diff --git a/wp-includes/js/wp-ajax-response.min.js b/wp-includes/js/wp-ajax-response.min.js
new file mode 100644 (file)
index 0000000..bdfa53a
--- /dev/null
@@ -0,0 +1 @@
+var wpAjax=jQuery.extend({unserialize:function(c){var d={},e,a,b,f;if(!c){return d}e=c.split("?");if(e[1]){c=e[1]}a=c.split("&");for(b in a){if(jQuery.isFunction(a.hasOwnProperty)&&!a.hasOwnProperty(b)){continue}f=a[b].split("=");d[f[0]]=f[1]}return d},parseAjaxResponse:function(a,f,g){var b={},c=jQuery("#"+f).html(""),d="";if(a&&typeof a=="object"&&a.getElementsByTagName("wp_ajax")){b.responses=[];b.errors=false;jQuery("response",a).each(function(){var h=jQuery(this),i=jQuery(this.firstChild),e;e={action:h.attr("action"),what:i.get(0).nodeName,id:i.attr("id"),oldId:i.attr("old_id"),position:i.attr("position")};e.data=jQuery("response_data",i).text();e.supplemental={};if(!jQuery("supplemental",i).children().each(function(){e.supplemental[this.nodeName]=jQuery(this).text()}).size()){e.supplemental=false}e.errors=[];if(!jQuery("wp_error",i).each(function(){var j=jQuery(this).attr("code"),m,l,k;m={code:j,message:this.firstChild.nodeValue,data:false};l=jQuery('wp_error_data[code="'+j+'"]',a);if(l){m.data=l.get()}k=jQuery("form-field",l).text();if(k){j=k}if(g){wpAjax.invalidateForm(jQuery("#"+g+' :input[name="'+j+'"]').parents(".form-field:first"))}d+="<p>"+m.message+"</p>";e.errors.push(m);b.errors=true}).size()){e.errors=false}b.responses.push(e)});if(d.length){c.html('<div class="error">'+d+"</div>")}return b}if(isNaN(a)){return !c.html('<div class="error"><p>'+a+"</p></div>")}a=parseInt(a,10);if(-1==a){return !c.html('<div class="error"><p>'+wpAjax.noPerm+"</p></div>")}else{if(0===a){return !c.html('<div class="error"><p>'+wpAjax.broken+"</p></div>")}}return true},invalidateForm:function(a){return jQuery(a).addClass("form-invalid").find("input:visible").change(function(){jQuery(this).closest(".form-invalid").removeClass("form-invalid")})},validateForm:function(a){a=jQuery(a);return !wpAjax.invalidateForm(a.find(".form-required").filter(function(){return jQuery("input:visible",this).val()==""})).size()}},wpAjax||{noPerm:"You do not have permission to do that.",broken:"An unidentified error has occurred."});jQuery(document).ready(function(a){a("form.validate").submit(function(){return wpAjax.validateForm(a(this))})});
\ No newline at end of file
diff --git a/wp-includes/js/wp-list-revisions.dev.js b/wp-includes/js/wp-list-revisions.dev.js
deleted file mode 100644 (file)
index 9c702c6..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-(function(w) {
-       var init = function() {
-               var pr = document.getElementById('post-revisions'),
-               inputs = pr ? pr.getElementsByTagName('input') : [];
-               pr.onclick = function() {
-                       var i, checkCount = 0, side;
-                       for ( i = 0; i < inputs.length; i++ ) {
-                               checkCount += inputs[i].checked ? 1 : 0;
-                               side = inputs[i].getAttribute('name');
-                               if ( ! inputs[i].checked &&
-                               ( 'left' == side && 1 > checkCount || 'right' == side && 1 < checkCount && ( ! inputs[i-1] || ! inputs[i-1].checked ) ) &&
-                               ! ( inputs[i+1] && inputs[i+1].checked && 'right' == inputs[i+1].getAttribute('name') ) )
-                                       inputs[i].style.visibility = 'hidden';
-                               else if ( 'left' == side || 'right' == side )
-                                       inputs[i].style.visibility = 'visible';
-                       }
-               }
-               pr.onclick();
-       }
-       if ( w && w.addEventListener )
-               w.addEventListener('load', init, false);
-       else if ( w && w.attachEvent )
-               w.attachEvent('onload', init);
-})(window);
index 417572db4ffa2b55701d5d128f69d2136abe4df6..9c702c659561e06e28814e5084c2d89fad423aab 100644 (file)
@@ -1 +1,24 @@
-(function(a){var b=function(){var d=document.getElementById("post-revisions"),c=d?d.getElementsByTagName("input"):[];d.onclick=function(){var g,f=0,e;for(g=0;g<c.length;g++){f+=c[g].checked?1:0;e=c[g].getAttribute("name");if(!c[g].checked&&("left"==e&&1>f||"right"==e&&1<f&&(!c[g-1]||!c[g-1].checked))&&!(c[g+1]&&c[g+1].checked&&"right"==c[g+1].getAttribute("name"))){c[g].style.visibility="hidden"}else{if("left"==e||"right"==e){c[g].style.visibility="visible"}}}};d.onclick()};if(a&&a.addEventListener){a.addEventListener("load",b,false)}else{if(a&&a.attachEvent){a.attachEvent("onload",b)}}})(window);
\ No newline at end of file
+(function(w) {
+       var init = function() {
+               var pr = document.getElementById('post-revisions'),
+               inputs = pr ? pr.getElementsByTagName('input') : [];
+               pr.onclick = function() {
+                       var i, checkCount = 0, side;
+                       for ( i = 0; i < inputs.length; i++ ) {
+                               checkCount += inputs[i].checked ? 1 : 0;
+                               side = inputs[i].getAttribute('name');
+                               if ( ! inputs[i].checked &&
+                               ( 'left' == side && 1 > checkCount || 'right' == side && 1 < checkCount && ( ! inputs[i-1] || ! inputs[i-1].checked ) ) &&
+                               ! ( inputs[i+1] && inputs[i+1].checked && 'right' == inputs[i+1].getAttribute('name') ) )
+                                       inputs[i].style.visibility = 'hidden';
+                               else if ( 'left' == side || 'right' == side )
+                                       inputs[i].style.visibility = 'visible';
+                       }
+               }
+               pr.onclick();
+       }
+       if ( w && w.addEventListener )
+               w.addEventListener('load', init, false);
+       else if ( w && w.attachEvent )
+               w.attachEvent('onload', init);
+})(window);
diff --git a/wp-includes/js/wp-list-revisions.min.js b/wp-includes/js/wp-list-revisions.min.js
new file mode 100644 (file)
index 0000000..417572d
--- /dev/null
@@ -0,0 +1 @@
+(function(a){var b=function(){var d=document.getElementById("post-revisions"),c=d?d.getElementsByTagName("input"):[];d.onclick=function(){var g,f=0,e;for(g=0;g<c.length;g++){f+=c[g].checked?1:0;e=c[g].getAttribute("name");if(!c[g].checked&&("left"==e&&1>f||"right"==e&&1<f&&(!c[g-1]||!c[g-1].checked))&&!(c[g+1]&&c[g+1].checked&&"right"==c[g+1].getAttribute("name"))){c[g].style.visibility="hidden"}else{if("left"==e||"right"==e){c[g].style.visibility="visible"}}}};d.onclick()};if(a&&a.addEventListener){a.addEventListener("load",b,false)}else{if(a&&a.attachEvent){a.attachEvent("onload",b)}}})(window);
\ No newline at end of file
diff --git a/wp-includes/js/wp-lists.dev.js b/wp-includes/js/wp-lists.dev.js
deleted file mode 100644 (file)
index 3954c30..0000000
+++ /dev/null
@@ -1,464 +0,0 @@
-(function($) {
-var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList;
-
-wpList = {
-       settings: {
-               url: ajaxurl, type: 'POST',
-               response: 'ajax-response',
-
-               what: '',
-               alt: 'alternate', altOffset: 0,
-               addColor: null, delColor: null, dimAddColor: null, dimDelColor: null,
-
-               confirm: null,
-               addBefore: null, addAfter: null,
-               delBefore: null, delAfter: null,
-               dimBefore: null, dimAfter: null
-       },
-
-       nonce: function(e,s) {
-               var url = wpAjax.unserialize(e.attr('href'));
-               return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name="_ajax_nonce"]').val() || url._wpnonce || $('#' + s.element + ' input[name="_wpnonce"]').val() || 0;
-       },
-
-       parseClass: function(e,t) {
-               var c = [], cl;
-
-               try {
-                       cl = $(e).attr('class') || '';
-                       cl = cl.match(new RegExp(t+':[\\S]+'));
-
-                       if ( cl )
-                               c = cl[0].split(':');
-               } catch(r) {}
-
-               return c;
-       },
-
-       pre: function(e,s,a) {
-               var bg, r;
-
-               s = $.extend( {}, this.wpList.settings, {
-                       element: null,
-                       nonce: 0,
-                       target: e.get(0)
-               }, s || {} );
-
-               if ( $.isFunction( s.confirm ) ) {
-                       if ( 'add' != a ) {
-                               bg = $('#' + s.element).css('backgroundColor');
-                               $('#' + s.element).css('backgroundColor', '#FF9966');
-                       }
-                       r = s.confirm.call(this, e, s, a, bg);
-
-                       if ( 'add' != a )
-                               $('#' + s.element).css('backgroundColor', bg );
-
-                       if ( !r )
-                               return false;
-               }
-
-               return s;
-       },
-
-       ajaxAdd: function( e, s ) {
-               e = $(e);
-               s = s || {};
-               var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData, res, rres;
-
-               s = wpList.pre.call( list, e, s, 'add' );
-
-               s.element = cls[2] || e.attr( 'id' ) || s.element || null;
-
-               if ( cls[3] )
-                       s.addColor = '#' + cls[3];
-               else
-                       s.addColor = s.addColor || '#FFFF33';
-
-               if ( !s )
-                       return false;
-
-               if ( !e.is('[id="' + s.what + '-add-submit"]') )
-                       return !wpList.add.call( list, e, s );
-
-               if ( !s.element )
-                       return true;
-
-               s.action = 'add-' + s.what;
-
-               s.nonce = wpList.nonce(e,s);
-
-               es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');
-               valid = wpAjax.validateForm( '#' + s.element );
-
-               if ( !valid )
-                       return false;
-
-               s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) );
-               formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
-
-               if ( formData )
-                       s.data += '&' + formData;
-
-               if ( $.isFunction(s.addBefore) ) {
-                       s = s.addBefore( s );
-                       if ( !s )
-                               return true;
-               }
-
-               if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) )
-                       return true;
-
-               s.success = function(r) {
-                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
-
-                       rres = r;
-
-                       if ( !res || res.errors )
-                               return false;
-
-                       if ( true === res )
-                               return true;
-
-                       jQuery.each( res.responses, function() {
-                               wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
-                                       pos: this.position || 0,
-                                       id: this.id || 0,
-                                       oldId: this.oldId || null
-                               } ) );
-                       } );
-
-                       list.wpList.recolor();
-                       $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] );
-                       wpList.clear.call(list,'#' + s.element);
-               };
-
-               s.complete = function(x, st) {
-                       if ( $.isFunction(s.addAfter) ) {
-                               var _s = $.extend( { xml: x, status: st, parsed: res }, s );
-                               s.addAfter( rres, _s );
-                       }
-               };
-
-               $.ajax( s );
-               return false;
-       },
-
-       ajaxDel: function( e, s ) {
-               e = $(e);
-               s = s || {};
-               var list = this, cls = wpList.parseClass(e,'delete'), element, res, rres;
-
-               s = wpList.pre.call( list, e, s, 'delete' );
-
-               s.element = cls[2] || s.element || null;
-
-               if ( cls[3] )
-                       s.delColor = '#' + cls[3];
-               else
-                       s.delColor = s.delColor || '#faa';
-
-               if ( !s || !s.element )
-                       return false;
-
-               s.action = 'delete-' + s.what;
-
-               s.nonce = wpList.nonce(e,s);
-
-               s.data = $.extend(
-                       { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce },
-                       wpAjax.unserialize( cls[4] || '' )
-               );
-
-               if ( $.isFunction(s.delBefore) ) {
-                       s = s.delBefore( s, list );
-                       if ( !s )
-                               return true;
-               }
-
-               if ( !s.data._ajax_nonce )
-                       return true;
-
-               element = $('#' + s.element);
-
-               if ( 'none' != s.delColor ) {
-                       element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){
-                               list.wpList.recolor();
-                               $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
-                       });
-               } else {
-                       list.wpList.recolor();
-                       $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
-               }
-
-               s.success = function(r) {
-                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
-                       rres = r;
-
-                       if ( !res || res.errors ) {
-                               element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
-                               return false;
-                       }
-               };
-
-               s.complete = function(x, st) {
-                       if ( $.isFunction(s.delAfter) ) {
-                               element.queue( function() {
-                                       var _s = $.extend( { xml: x, status: st, parsed: res }, s );
-                                       s.delAfter( rres, _s );
-                               }).dequeue();
-                       }
-               }
-
-               $.ajax( s );
-               return false;
-       },
-
-       ajaxDim: function( e, s ) {
-               if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
-                       return false;
-
-               e = $(e);
-               s = s || {};
-
-               var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor, res, rres;
-
-               s = wpList.pre.call( list, e, s, 'dim' );
-
-               s.element = cls[2] || s.element || null;
-               s.dimClass =  cls[3] || s.dimClass || null;
-
-               if ( cls[4] )
-                       s.dimAddColor = '#' + cls[4];
-               else
-                       s.dimAddColor = s.dimAddColor || '#FFFF33';
-
-               if ( cls[5] )
-                       s.dimDelColor = '#' + cls[5];
-               else
-                       s.dimDelColor = s.dimDelColor || '#FF3333';
-
-               if ( !s || !s.element || !s.dimClass )
-                       return true;
-
-               s.action = 'dim-' + s.what;
-
-               s.nonce = wpList.nonce(e,s);
-
-               s.data = $.extend(
-                       { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce },
-                       wpAjax.unserialize( cls[6] || '' )
-               );
-
-               if ( $.isFunction(s.dimBefore) ) {
-                       s = s.dimBefore( s );
-                       if ( !s )
-                               return true;
-               }
-
-               element = $('#' + s.element);
-               isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass);
-               color = wpList.getColor( element );
-               element.toggleClass( s.dimClass );
-               dimColor = isClass ? s.dimAddColor : s.dimDelColor;
-
-               if ( 'none' != dimColor ) {
-                       element
-                               .animate( { backgroundColor: dimColor }, 'fast' )
-                               .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
-                               .animate( { backgroundColor: color }, { complete: function() {
-                                               $(this).css( 'backgroundColor', '' );
-                                               $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
-                                       }
-                               });
-               } else {
-                       $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
-               }
-
-               if ( !s.data._ajax_nonce )
-                       return true;
-
-               s.success = function(r) {
-                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
-                       rres = r;
-
-                       if ( !res || res.errors ) {
-                               element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
-                               return false;
-                       }
-               };
-
-               s.complete = function(x, st) {
-                       if ( $.isFunction(s.dimAfter) ) {
-                               element.queue( function() {
-                                       var _s = $.extend( { xml: x, status: st, parsed: res }, s );
-                                       s.dimAfter( rres, _s );
-                               }).dequeue();
-                       }
-               };
-
-               $.ajax( s );
-               return false;
-       },
-
-       getColor: function( el ) {
-               var color = jQuery(el).css('backgroundColor');
-
-               return color || '#ffffff';
-       },
-
-       add: function( e, s ) {
-               e = $(e);
-
-               var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color;
-
-               if ( 'string' == typeof s )
-                       s = { what: s };
-
-               s = $.extend(_s, this.wpList.settings, s);
-
-               if ( !e.size() || !s.what )
-                       return false;
-
-               if ( s.oldId )
-                       old = $('#' + s.what + '-' + s.oldId);
-
-               if ( s.id && ( s.id != s.oldId || !old || !old.size() ) )
-                       $('#' + s.what + '-' + s.id).remove();
-
-               if ( old && old.size() ) {
-                       old.before(e);
-                       old.remove();
-               } else if ( isNaN(s.pos) ) {
-                       ba = 'after';
-
-                       if ( '-' == s.pos.substr(0,1) ) {
-                               s.pos = s.pos.substr(1);
-                               ba = 'before';
-                       }
-
-                       ref = list.find( '#' + s.pos );
-
-                       if ( 1 === ref.size() )
-                               ref[ba](e);
-                       else
-                               list.append(e);
-
-               } else if ( 'comment' != s.what || 0 === $('#' + s.element).length ) {
-                       if ( s.pos < 0 ) {
-                               list.prepend(e);
-                       } else {
-                               list.append(e);
-                       }
-               }
-
-               if ( s.alt ) {
-                       if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); }
-                       else { e.addClass( s.alt ); }
-               }
-
-               if ( 'none' != s.addColor ) {
-                       color = wpList.getColor( e );
-                       e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
-               }
-               list.each( function() { this.wpList.process( e ); } );
-               return e;
-       },
-
-       clear: function(e) {
-               var list = this, t, tag;
-
-               e = $(e);
-
-               if ( list.wpList && e.parents( '#' + list.id ).size() )
-                       return;
-
-               e.find(':input').each( function() {
-                       if ( $(this).parents('.form-no-clear').size() )
-                               return;
-
-                       t = this.type.toLowerCase();
-                       tag = this.tagName.toLowerCase();
-
-                       if ( 'text' == t || 'password' == t || 'textarea' == tag )
-                               this.value = '';
-                       else if ( 'checkbox' == t || 'radio' == t )
-                               this.checked = false;
-                       else if ( 'select' == tag )
-                               this.selectedIndex = null;
-               });
-       },
-
-       process: function(el) {
-               var list = this,
-                       $el = $(el || document);
-
-               $el.delegate( 'form[class^="add:' + list.id + ':"]', 'submit', function(){
-                       return list.wpList.add(this);
-               });
-
-               $el.delegate( 'a[class^="add:' + list.id + ':"], input[class^="add:' + list.id + ':"]', 'click', function(){
-                       return list.wpList.add(this);
-               });
-
-               $el.delegate( '[class^="delete:' + list.id + ':"]', 'click', function(){
-                       return list.wpList.del(this);
-               });
-
-               $el.delegate( '[class^="dim:' + list.id + ':"]', 'click', function(){
-                       return list.wpList.dim(this);
-               });
-       },
-
-       recolor: function() {
-               var list = this, items, eo;
-
-               if ( !list.wpList.settings.alt )
-                       return;
-
-               items = $('.list-item:visible', list);
-
-               if ( !items.size() )
-                       items = $(list).children(':visible');
-
-               eo = [':even',':odd'];
-
-               if ( list.wpList.settings.altOffset % 2 )
-                       eo.reverse();
-
-               items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
-       },
-
-       init: function() {
-               var lists = this;
-
-               lists.wpList.process = function(a) {
-                       lists.each( function() {
-                               this.wpList.process(a);
-                       } );
-               };
-
-               lists.wpList.recolor = function() {
-                       lists.each( function() {
-                               this.wpList.recolor();
-                       } );
-               };
-       }
-};
-
-$.fn.wpList = function( settings ) {
-       this.each( function() {
-               var _this = this;
-
-               this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) };
-               $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
-       } );
-
-       wpList.init.call(this);
-
-       this.wpList.process();
-
-       return this;
-};
-
-})(jQuery);
index 57d8cb4d36718a4dc8285e151866aeb39fedc942..5decd3a845d22d453f9a50a10c67d563ed62a8f7 100644 (file)
@@ -1 +1,464 @@
-(function(b){var a={add:"ajaxAdd",del:"ajaxDel",dim:"ajaxDim",process:"process",recolor:"recolor"},c;c={settings:{url:ajaxurl,type:"POST",response:"ajax-response",what:"",alt:"alternate",altOffset:0,addColor:null,delColor:null,dimAddColor:null,dimDelColor:null,confirm:null,addBefore:null,addAfter:null,delBefore:null,delAfter:null,dimBefore:null,dimAfter:null},nonce:function(g,f){var d=wpAjax.unserialize(g.attr("href"));return f.nonce||d._ajax_nonce||b("#"+f.element+' input[name="_ajax_nonce"]').val()||d._wpnonce||b("#"+f.element+' input[name="_wpnonce"]').val()||0},parseClass:function(h,f){var i=[],d;try{d=b(h).attr("class")||"";d=d.match(new RegExp(f+":[\\S]+"));if(d){i=d[0].split(":")}}catch(g){}return i},pre:function(i,g,d){var f,h;g=b.extend({},this.wpList.settings,{element:null,nonce:0,target:i.get(0)},g||{});if(b.isFunction(g.confirm)){if("add"!=d){f=b("#"+g.element).css("backgroundColor");b("#"+g.element).css("backgroundColor","#FF9966")}h=g.confirm.call(this,i,g,d,f);if("add"!=d){b("#"+g.element).css("backgroundColor",f)}if(!h){return false}}return g},ajaxAdd:function(g,m){g=b(g);m=m||{};var h=this,l=c.parseClass(g,"add"),j,d,f,i,k;m=c.pre.call(h,g,m,"add");m.element=l[2]||g.attr("id")||m.element||null;if(l[3]){m.addColor="#"+l[3]}else{m.addColor=m.addColor||"#FFFF33"}if(!m){return false}if(!g.is('[id="'+m.what+'-add-submit"]')){return !c.add.call(h,g,m)}if(!m.element){return true}m.action="add-"+m.what;m.nonce=c.nonce(g,m);j=b("#"+m.element+" :input").not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');d=wpAjax.validateForm("#"+m.element);if(!d){return false}m.data=b.param(b.extend({_ajax_nonce:m.nonce,action:m.action},wpAjax.unserialize(l[4]||"")));f=b.isFunction(j.fieldSerialize)?j.fieldSerialize():j.serialize();if(f){m.data+="&"+f}if(b.isFunction(m.addBefore)){m=m.addBefore(m);if(!m){return true}}if(!m.data.match(/_ajax_nonce=[a-f0-9]+/)){return true}m.success=function(e){i=wpAjax.parseAjaxResponse(e,m.response,m.element);k=e;if(!i||i.errors){return false}if(true===i){return true}jQuery.each(i.responses,function(){c.add.call(h,this.data,b.extend({},m,{pos:this.position||0,id:this.id||0,oldId:this.oldId||null}))});h.wpList.recolor();b(h).trigger("wpListAddEnd",[m,h.wpList]);c.clear.call(h,"#"+m.element)};m.complete=function(e,n){if(b.isFunction(m.addAfter)){var o=b.extend({xml:e,status:n,parsed:i},m);m.addAfter(k,o)}};b.ajax(m);return false},ajaxDel:function(k,i){k=b(k);i=i||{};var j=this,d=c.parseClass(k,"delete"),h,g,f;i=c.pre.call(j,k,i,"delete");i.element=d[2]||i.element||null;if(d[3]){i.delColor="#"+d[3]}else{i.delColor=i.delColor||"#faa"}if(!i||!i.element){return false}i.action="delete-"+i.what;i.nonce=c.nonce(k,i);i.data=b.extend({action:i.action,id:i.element.split("-").pop(),_ajax_nonce:i.nonce},wpAjax.unserialize(d[4]||""));if(b.isFunction(i.delBefore)){i=i.delBefore(i,j);if(!i){return true}}if(!i.data._ajax_nonce){return true}h=b("#"+i.element);if("none"!=i.delColor){h.css("backgroundColor",i.delColor).fadeOut(350,function(){j.wpList.recolor();b(j).trigger("wpListDelEnd",[i,j.wpList])})}else{j.wpList.recolor();b(j).trigger("wpListDelEnd",[i,j.wpList])}i.success=function(e){g=wpAjax.parseAjaxResponse(e,i.response,i.element);f=e;if(!g||g.errors){h.stop().stop().css("backgroundColor","#faa").show().queue(function(){j.wpList.recolor();b(this).dequeue()});return false}};i.complete=function(e,l){if(b.isFunction(i.delAfter)){h.queue(function(){var m=b.extend({xml:e,status:l,parsed:g},i);i.delAfter(f,m)}).dequeue()}};b.ajax(i);return false},ajaxDim:function(h,n){if(b(h).parent().css("display")=="none"){return false}h=b(h);n=n||{};var i=this,m=c.parseClass(h,"dim"),g,d,f,k,j,l;n=c.pre.call(i,h,n,"dim");n.element=m[2]||n.element||null;n.dimClass=m[3]||n.dimClass||null;if(m[4]){n.dimAddColor="#"+m[4]}else{n.dimAddColor=n.dimAddColor||"#FFFF33"}if(m[5]){n.dimDelColor="#"+m[5]}else{n.dimDelColor=n.dimDelColor||"#FF3333"}if(!n||!n.element||!n.dimClass){return true}n.action="dim-"+n.what;n.nonce=c.nonce(h,n);n.data=b.extend({action:n.action,id:n.element.split("-").pop(),dimClass:n.dimClass,_ajax_nonce:n.nonce},wpAjax.unserialize(m[6]||""));if(b.isFunction(n.dimBefore)){n=n.dimBefore(n);if(!n){return true}}g=b("#"+n.element);d=g.toggleClass(n.dimClass).is("."+n.dimClass);f=c.getColor(g);g.toggleClass(n.dimClass);k=d?n.dimAddColor:n.dimDelColor;if("none"!=k){g.animate({backgroundColor:k},"fast").queue(function(){g.toggleClass(n.dimClass);b(this).dequeue()}).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","");b(i).trigger("wpListDimEnd",[n,i.wpList])}})}else{b(i).trigger("wpListDimEnd",[n,i.wpList])}if(!n.data._ajax_nonce){return true}n.success=function(e){j=wpAjax.parseAjaxResponse(e,n.response,n.element);l=e;if(!j||j.errors){g.stop().stop().css("backgroundColor","#FF3333")[d?"removeClass":"addClass"](n.dimClass).show().queue(function(){i.wpList.recolor();b(this).dequeue()});return false}};n.complete=function(e,o){if(b.isFunction(n.dimAfter)){g.queue(function(){var p=b.extend({xml:e,status:o,parsed:j},n);n.dimAfter(l,p)}).dequeue()}};b.ajax(n);return false},getColor:function(e){var d=jQuery(e).css("backgroundColor");return d||"#ffffff"},add:function(k,g){k=b(k);var i=b(this),d=false,j={pos:0,id:0,oldId:null},l,h,f;if("string"==typeof g){g={what:g}}g=b.extend(j,this.wpList.settings,g);if(!k.size()||!g.what){return false}if(g.oldId){d=b("#"+g.what+"-"+g.oldId)}if(g.id&&(g.id!=g.oldId||!d||!d.size())){b("#"+g.what+"-"+g.id).remove()}if(d&&d.size()){d.before(k);d.remove()}else{if(isNaN(g.pos)){l="after";if("-"==g.pos.substr(0,1)){g.pos=g.pos.substr(1);l="before"}h=i.find("#"+g.pos);if(1===h.size()){h[l](k)}else{i.append(k)}}else{if("comment"!=g.what||0===b("#"+g.element).length){if(g.pos<0){i.prepend(k)}else{i.append(k)}}}}if(g.alt){if((i.children(":visible").index(k[0])+g.altOffset)%2){k.removeClass(g.alt)}else{k.addClass(g.alt)}}if("none"!=g.addColor){f=c.getColor(k);k.css("backgroundColor",g.addColor).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","")}})}i.each(function(){this.wpList.process(k)});return k},clear:function(h){var g=this,f,d;h=b(h);if(g.wpList&&h.parents("#"+g.id).size()){return}h.find(":input").each(function(){if(b(this).parents(".form-no-clear").size()){return}f=this.type.toLowerCase();d=this.tagName.toLowerCase();if("text"==f||"password"==f||"textarea"==d){this.value=""}else{if("checkbox"==f||"radio"==f){this.checked=false}else{if("select"==d){this.selectedIndex=null}}}})},process:function(e){var f=this,d=b(e||document);d.delegate('form[class^="add:'+f.id+':"]',"submit",function(){return f.wpList.add(this)});d.delegate('a[class^="add:'+f.id+':"], input[class^="add:'+f.id+':"]',"click",function(){return f.wpList.add(this)});d.delegate('[class^="delete:'+f.id+':"]',"click",function(){return f.wpList.del(this)});d.delegate('[class^="dim:'+f.id+':"]',"click",function(){return f.wpList.dim(this)})},recolor:function(){var f=this,e,d;if(!f.wpList.settings.alt){return}e=b(".list-item:visible",f);if(!e.size()){e=b(f).children(":visible")}d=[":even",":odd"];if(f.wpList.settings.altOffset%2){d.reverse()}e.filter(d[0]).addClass(f.wpList.settings.alt).end().filter(d[1]).removeClass(f.wpList.settings.alt)},init:function(){var d=this;d.wpList.process=function(e){d.each(function(){this.wpList.process(e)})};d.wpList.recolor=function(){d.each(function(){this.wpList.recolor()})}}};b.fn.wpList=function(d){this.each(function(){var e=this;this.wpList={settings:b.extend({},c.settings,{what:c.parseClass(this,"list")[1]||""},d)};b.each(a,function(g,h){e.wpList[g]=function(i,f){return c[h].call(e,i,f)}})});c.init.call(this);this.wpList.process();return this}})(jQuery);
\ No newline at end of file
+(function($) {
+var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList;
+
+wpList = {
+       settings: {
+               url: ajaxurl, type: 'POST',
+               response: 'ajax-response',
+
+               what: '',
+               alt: 'alternate', altOffset: 0,
+               addColor: null, delColor: null, dimAddColor: null, dimDelColor: null,
+
+               confirm: null,
+               addBefore: null, addAfter: null,
+               delBefore: null, delAfter: null,
+               dimBefore: null, dimAfter: null
+       },
+
+       nonce: function(e,s) {
+               var url = wpAjax.unserialize(e.attr('href'));
+               return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name="_ajax_nonce"]').val() || url._wpnonce || $('#' + s.element + ' input[name="_wpnonce"]').val() || 0;
+       },
+
+       parseData: function(e,t) {
+               var d = [], wpListsData;
+
+               try {
+                       wpListsData = $(e).attr('data-wp-lists') || '';
+                       wpListsData = wpListsData.match(new RegExp(t+':[\\S]+'));
+
+                       if ( wpListsData )
+                               d = wpListsData[0].split(':');
+               } catch(r) {}
+
+               return d;
+       },
+
+       pre: function(e,s,a) {
+               var bg, r;
+
+               s = $.extend( {}, this.wpList.settings, {
+                       element: null,
+                       nonce: 0,
+                       target: e.get(0)
+               }, s || {} );
+
+               if ( $.isFunction( s.confirm ) ) {
+                       if ( 'add' != a ) {
+                               bg = $('#' + s.element).css('backgroundColor');
+                               $('#' + s.element).css('backgroundColor', '#FF9966');
+                       }
+                       r = s.confirm.call(this, e, s, a, bg);
+
+                       if ( 'add' != a )
+                               $('#' + s.element).css('backgroundColor', bg );
+
+                       if ( !r )
+                               return false;
+               }
+
+               return s;
+       },
+
+       ajaxAdd: function( e, s ) {
+               e = $(e);
+               s = s || {};
+               var list = this, data = wpList.parseData(e,'add'), es, valid, formData, res, rres;
+
+               s = wpList.pre.call( list, e, s, 'add' );
+
+               s.element = data[2] || e.attr( 'id' ) || s.element || null;
+
+               if ( data[3] )
+                       s.addColor = '#' + data[3];
+               else
+                       s.addColor = s.addColor || '#FFFF33';
+
+               if ( !s )
+                       return false;
+
+               if ( !e.is('[id="' + s.element + '-submit"]') )
+                       return !wpList.add.call( list, e, s );
+
+               if ( !s.element )
+                       return true;
+
+               s.action = 'add-' + s.what;
+
+               s.nonce = wpList.nonce(e,s);
+
+               es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');
+               valid = wpAjax.validateForm( '#' + s.element );
+
+               if ( !valid )
+                       return false;
+
+               s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( data[4] || '' ) ) );
+               formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
+
+               if ( formData )
+                       s.data += '&' + formData;
+
+               if ( $.isFunction(s.addBefore) ) {
+                       s = s.addBefore( s );
+                       if ( !s )
+                               return true;
+               }
+
+               if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) )
+                       return true;
+
+               s.success = function(r) {
+                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
+
+                       rres = r;
+
+                       if ( !res || res.errors )
+                               return false;
+
+                       if ( true === res )
+                               return true;
+
+                       jQuery.each( res.responses, function() {
+                               wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
+                                       pos: this.position || 0,
+                                       id: this.id || 0,
+                                       oldId: this.oldId || null
+                               } ) );
+                       } );
+
+                       list.wpList.recolor();
+                       $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] );
+                       wpList.clear.call(list,'#' + s.element);
+               };
+
+               s.complete = function(x, st) {
+                       if ( $.isFunction(s.addAfter) ) {
+                               var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+                               s.addAfter( rres, _s );
+                       }
+               };
+
+               $.ajax( s );
+               return false;
+       },
+
+       ajaxDel: function( e, s ) {
+               e = $(e);
+               s = s || {};
+               var list = this, data = wpList.parseData(e,'delete'), element, res, rres;
+
+               s = wpList.pre.call( list, e, s, 'delete' );
+
+               s.element = data[2] || s.element || null;
+
+               if ( data[3] )
+                       s.delColor = '#' + data[3];
+               else
+                       s.delColor = s.delColor || '#faa';
+
+               if ( !s || !s.element )
+                       return false;
+
+               s.action = 'delete-' + s.what;
+
+               s.nonce = wpList.nonce(e,s);
+
+               s.data = $.extend(
+                       { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce },
+                       wpAjax.unserialize( data[4] || '' )
+               );
+
+               if ( $.isFunction(s.delBefore) ) {
+                       s = s.delBefore( s, list );
+                       if ( !s )
+                               return true;
+               }
+
+               if ( !s.data._ajax_nonce )
+                       return true;
+
+               element = $('#' + s.element);
+
+               if ( 'none' != s.delColor ) {
+                       element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){
+                               list.wpList.recolor();
+                               $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
+                       });
+               } else {
+                       list.wpList.recolor();
+                       $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
+               }
+
+               s.success = function(r) {
+                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
+                       rres = r;
+
+                       if ( !res || res.errors ) {
+                               element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
+                               return false;
+                       }
+               };
+
+               s.complete = function(x, st) {
+                       if ( $.isFunction(s.delAfter) ) {
+                               element.queue( function() {
+                                       var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+                                       s.delAfter( rres, _s );
+                               }).dequeue();
+                       }
+               }
+
+               $.ajax( s );
+               return false;
+       },
+
+       ajaxDim: function( e, s ) {
+               if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
+                       return false;
+
+               e = $(e);
+               s = s || {};
+
+               var list = this, data = wpList.parseData(e,'dim'), element, isClass, color, dimColor, res, rres;
+
+               s = wpList.pre.call( list, e, s, 'dim' );
+
+               s.element = data[2] || s.element || null;
+               s.dimClass =  data[3] || s.dimClass || null;
+
+               if ( data[4] )
+                       s.dimAddColor = '#' + data[4];
+               else
+                       s.dimAddColor = s.dimAddColor || '#FFFF33';
+
+               if ( data[5] )
+                       s.dimDelColor = '#' + data[5];
+               else
+                       s.dimDelColor = s.dimDelColor || '#FF3333';
+
+               if ( !s || !s.element || !s.dimClass )
+                       return true;
+
+               s.action = 'dim-' + s.what;
+
+               s.nonce = wpList.nonce(e,s);
+
+               s.data = $.extend(
+                       { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce },
+                       wpAjax.unserialize( data[6] || '' )
+               );
+
+               if ( $.isFunction(s.dimBefore) ) {
+                       s = s.dimBefore( s );
+                       if ( !s )
+                               return true;
+               }
+
+               element = $('#' + s.element);
+               isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass);
+               color = wpList.getColor( element );
+               element.toggleClass( s.dimClass );
+               dimColor = isClass ? s.dimAddColor : s.dimDelColor;
+
+               if ( 'none' != dimColor ) {
+                       element
+                               .animate( { backgroundColor: dimColor }, 'fast' )
+                               .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
+                               .animate( { backgroundColor: color }, { complete: function() {
+                                               $(this).css( 'backgroundColor', '' );
+                                               $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
+                                       }
+                               });
+               } else {
+                       $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
+               }
+
+               if ( !s.data._ajax_nonce )
+                       return true;
+
+               s.success = function(r) {
+                       res = wpAjax.parseAjaxResponse(r, s.response, s.element);
+                       rres = r;
+
+                       if ( !res || res.errors ) {
+                               element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
+                               return false;
+                       }
+               };
+
+               s.complete = function(x, st) {
+                       if ( $.isFunction(s.dimAfter) ) {
+                               element.queue( function() {
+                                       var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+                                       s.dimAfter( rres, _s );
+                               }).dequeue();
+                       }
+               };
+
+               $.ajax( s );
+               return false;
+       },
+
+       getColor: function( el ) {
+               var color = jQuery(el).css('backgroundColor');
+
+               return color || '#ffffff';
+       },
+
+       add: function( e, s ) {
+               e = $(e);
+
+               var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color;
+
+               if ( 'string' == typeof s )
+                       s = { what: s };
+
+               s = $.extend(_s, this.wpList.settings, s);
+
+               if ( !e.size() || !s.what )
+                       return false;
+
+               if ( s.oldId )
+                       old = $('#' + s.what + '-' + s.oldId);
+
+               if ( s.id && ( s.id != s.oldId || !old || !old.size() ) )
+                       $('#' + s.what + '-' + s.id).remove();
+
+               if ( old && old.size() ) {
+                       old.before(e);
+                       old.remove();
+               } else if ( isNaN(s.pos) ) {
+                       ba = 'after';
+
+                       if ( '-' == s.pos.substr(0,1) ) {
+                               s.pos = s.pos.substr(1);
+                               ba = 'before';
+                       }
+
+                       ref = list.find( '#' + s.pos );
+
+                       if ( 1 === ref.size() )
+                               ref[ba](e);
+                       else
+                               list.append(e);
+
+               } else if ( 'comment' != s.what || 0 === $('#' + s.element).length ) {
+                       if ( s.pos < 0 ) {
+                               list.prepend(e);
+                       } else {
+                               list.append(e);
+                       }
+               }
+
+               if ( s.alt ) {
+                       if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); }
+                       else { e.addClass( s.alt ); }
+               }
+
+               if ( 'none' != s.addColor ) {
+                       color = wpList.getColor( e );
+                       e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
+               }
+               list.each( function() { this.wpList.process( e ); } );
+               return e;
+       },
+
+       clear: function(e) {
+               var list = this, t, tag;
+
+               e = $(e);
+
+               if ( list.wpList && e.parents( '#' + list.id ).size() )
+                       return;
+
+               e.find(':input').each( function() {
+                       if ( $(this).parents('.form-no-clear').size() )
+                               return;
+
+                       t = this.type.toLowerCase();
+                       tag = this.tagName.toLowerCase();
+
+                       if ( 'text' == t || 'password' == t || 'textarea' == tag )
+                               this.value = '';
+                       else if ( 'checkbox' == t || 'radio' == t )
+                               this.checked = false;
+                       else if ( 'select' == tag )
+                               this.selectedIndex = null;
+               });
+       },
+
+       process: function(el) {
+               var list = this,
+                       $el = $(el || document);
+
+               $el.delegate( 'form[data-wp-lists^="add:' + list.id + ':"]', 'submit', function(){
+                       return list.wpList.add(this);
+               });
+
+               $el.delegate( 'a[data-wp-lists^="add:' + list.id + ':"], input[data-wp-lists^="add:' + list.id + ':"]', 'click', function(){
+                       return list.wpList.add(this);
+               });
+
+               $el.delegate( '[data-wp-lists^="delete:' + list.id + ':"]', 'click', function(){
+                       return list.wpList.del(this);
+               });
+
+               $el.delegate( '[data-wp-lists^="dim:' + list.id + ':"]', 'click', function(){
+                       return list.wpList.dim(this);
+               });
+       },
+
+       recolor: function() {
+               var list = this, items, eo;
+
+               if ( !list.wpList.settings.alt )
+                       return;
+
+               items = $('.list-item:visible', list);
+
+               if ( !items.size() )
+                       items = $(list).children(':visible');
+
+               eo = [':even',':odd'];
+
+               if ( list.wpList.settings.altOffset % 2 )
+                       eo.reverse();
+
+               items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
+       },
+
+       init: function() {
+               var lists = this;
+
+               lists.wpList.process = function(a) {
+                       lists.each( function() {
+                               this.wpList.process(a);
+                       } );
+               };
+
+               lists.wpList.recolor = function() {
+                       lists.each( function() {
+                               this.wpList.recolor();
+                       } );
+               };
+       }
+};
+
+$.fn.wpList = function( settings ) {
+       this.each( function() {
+               var _this = this;
+
+               this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseData(this,'list')[1] || '' }, settings ) };
+               $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
+       } );
+
+       wpList.init.call(this);
+
+       this.wpList.process();
+
+       return this;
+};
+
+})(jQuery);
diff --git a/wp-includes/js/wp-lists.min.js b/wp-includes/js/wp-lists.min.js
new file mode 100644 (file)
index 0000000..76e6af1
--- /dev/null
@@ -0,0 +1 @@
+(function(b){var a={add:"ajaxAdd",del:"ajaxDel",dim:"ajaxDim",process:"process",recolor:"recolor"},c;c={settings:{url:ajaxurl,type:"POST",response:"ajax-response",what:"",alt:"alternate",altOffset:0,addColor:null,delColor:null,dimAddColor:null,dimDelColor:null,confirm:null,addBefore:null,addAfter:null,delBefore:null,delAfter:null,dimBefore:null,dimAfter:null},nonce:function(g,f){var d=wpAjax.unserialize(g.attr("href"));return f.nonce||d._ajax_nonce||b("#"+f.element+' input[name="_ajax_nonce"]').val()||d._wpnonce||b("#"+f.element+' input[name="_wpnonce"]').val()||0},parseData:function(i,g){var j=[],f;try{f=b(i).attr("data-wp-lists")||"";f=f.match(new RegExp(g+":[\\S]+"));if(f){j=f[0].split(":")}}catch(h){}return j},pre:function(i,g,d){var f,h;g=b.extend({},this.wpList.settings,{element:null,nonce:0,target:i.get(0)},g||{});if(b.isFunction(g.confirm)){if("add"!=d){f=b("#"+g.element).css("backgroundColor");b("#"+g.element).css("backgroundColor","#FF9966")}h=g.confirm.call(this,i,g,d,f);if("add"!=d){b("#"+g.element).css("backgroundColor",f)}if(!h){return false}}return g},ajaxAdd:function(h,m){h=b(h);m=m||{};var i=this,g=c.parseData(h,"add"),k,d,f,j,l;m=c.pre.call(i,h,m,"add");m.element=g[2]||h.attr("id")||m.element||null;if(g[3]){m.addColor="#"+g[3]}else{m.addColor=m.addColor||"#FFFF33"}if(!m){return false}if(!h.is('[id="'+m.element+'-submit"]')){return !c.add.call(i,h,m)}if(!m.element){return true}m.action="add-"+m.what;m.nonce=c.nonce(h,m);k=b("#"+m.element+" :input").not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');d=wpAjax.validateForm("#"+m.element);if(!d){return false}m.data=b.param(b.extend({_ajax_nonce:m.nonce,action:m.action},wpAjax.unserialize(g[4]||"")));f=b.isFunction(k.fieldSerialize)?k.fieldSerialize():k.serialize();if(f){m.data+="&"+f}if(b.isFunction(m.addBefore)){m=m.addBefore(m);if(!m){return true}}if(!m.data.match(/_ajax_nonce=[a-f0-9]+/)){return true}m.success=function(e){j=wpAjax.parseAjaxResponse(e,m.response,m.element);l=e;if(!j||j.errors){return false}if(true===j){return true}jQuery.each(j.responses,function(){c.add.call(i,this.data,b.extend({},m,{pos:this.position||0,id:this.id||0,oldId:this.oldId||null}))});i.wpList.recolor();b(i).trigger("wpListAddEnd",[m,i.wpList]);c.clear.call(i,"#"+m.element)};m.complete=function(e,n){if(b.isFunction(m.addAfter)){var o=b.extend({xml:e,status:n,parsed:j},m);m.addAfter(l,o)}};b.ajax(m);return false},ajaxDel:function(k,h){k=b(k);h=h||{};var j=this,i=c.parseData(k,"delete"),g,f,d;h=c.pre.call(j,k,h,"delete");h.element=i[2]||h.element||null;if(i[3]){h.delColor="#"+i[3]}else{h.delColor=h.delColor||"#faa"}if(!h||!h.element){return false}h.action="delete-"+h.what;h.nonce=c.nonce(k,h);h.data=b.extend({action:h.action,id:h.element.split("-").pop(),_ajax_nonce:h.nonce},wpAjax.unserialize(i[4]||""));if(b.isFunction(h.delBefore)){h=h.delBefore(h,j);if(!h){return true}}if(!h.data._ajax_nonce){return true}g=b("#"+h.element);if("none"!=h.delColor){g.css("backgroundColor",h.delColor).fadeOut(350,function(){j.wpList.recolor();b(j).trigger("wpListDelEnd",[h,j.wpList])})}else{j.wpList.recolor();b(j).trigger("wpListDelEnd",[h,j.wpList])}h.success=function(e){f=wpAjax.parseAjaxResponse(e,h.response,h.element);d=e;if(!f||f.errors){g.stop().stop().css("backgroundColor","#faa").show().queue(function(){j.wpList.recolor();b(this).dequeue()});return false}};h.complete=function(e,l){if(b.isFunction(h.delAfter)){g.queue(function(){var m=b.extend({xml:e,status:l,parsed:f},h);h.delAfter(d,m)}).dequeue()}};b.ajax(h);return false},ajaxDim:function(i,n){if(b(i).parent().css("display")=="none"){return false}i=b(i);n=n||{};var j=this,g=c.parseData(i,"dim"),h,d,f,l,k,m;n=c.pre.call(j,i,n,"dim");n.element=g[2]||n.element||null;n.dimClass=g[3]||n.dimClass||null;if(g[4]){n.dimAddColor="#"+g[4]}else{n.dimAddColor=n.dimAddColor||"#FFFF33"}if(g[5]){n.dimDelColor="#"+g[5]}else{n.dimDelColor=n.dimDelColor||"#FF3333"}if(!n||!n.element||!n.dimClass){return true}n.action="dim-"+n.what;n.nonce=c.nonce(i,n);n.data=b.extend({action:n.action,id:n.element.split("-").pop(),dimClass:n.dimClass,_ajax_nonce:n.nonce},wpAjax.unserialize(g[6]||""));if(b.isFunction(n.dimBefore)){n=n.dimBefore(n);if(!n){return true}}h=b("#"+n.element);d=h.toggleClass(n.dimClass).is("."+n.dimClass);f=c.getColor(h);h.toggleClass(n.dimClass);l=d?n.dimAddColor:n.dimDelColor;if("none"!=l){h.animate({backgroundColor:l},"fast").queue(function(){h.toggleClass(n.dimClass);b(this).dequeue()}).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","");b(j).trigger("wpListDimEnd",[n,j.wpList])}})}else{b(j).trigger("wpListDimEnd",[n,j.wpList])}if(!n.data._ajax_nonce){return true}n.success=function(e){k=wpAjax.parseAjaxResponse(e,n.response,n.element);m=e;if(!k||k.errors){h.stop().stop().css("backgroundColor","#FF3333")[d?"removeClass":"addClass"](n.dimClass).show().queue(function(){j.wpList.recolor();b(this).dequeue()});return false}};n.complete=function(e,o){if(b.isFunction(n.dimAfter)){h.queue(function(){var p=b.extend({xml:e,status:o,parsed:k},n);n.dimAfter(m,p)}).dequeue()}};b.ajax(n);return false},getColor:function(e){var d=jQuery(e).css("backgroundColor");return d||"#ffffff"},add:function(k,g){k=b(k);var i=b(this),d=false,j={pos:0,id:0,oldId:null},l,h,f;if("string"==typeof g){g={what:g}}g=b.extend(j,this.wpList.settings,g);if(!k.size()||!g.what){return false}if(g.oldId){d=b("#"+g.what+"-"+g.oldId)}if(g.id&&(g.id!=g.oldId||!d||!d.size())){b("#"+g.what+"-"+g.id).remove()}if(d&&d.size()){d.before(k);d.remove()}else{if(isNaN(g.pos)){l="after";if("-"==g.pos.substr(0,1)){g.pos=g.pos.substr(1);l="before"}h=i.find("#"+g.pos);if(1===h.size()){h[l](k)}else{i.append(k)}}else{if("comment"!=g.what||0===b("#"+g.element).length){if(g.pos<0){i.prepend(k)}else{i.append(k)}}}}if(g.alt){if((i.children(":visible").index(k[0])+g.altOffset)%2){k.removeClass(g.alt)}else{k.addClass(g.alt)}}if("none"!=g.addColor){f=c.getColor(k);k.css("backgroundColor",g.addColor).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","")}})}i.each(function(){this.wpList.process(k)});return k},clear:function(h){var g=this,f,d;h=b(h);if(g.wpList&&h.parents("#"+g.id).size()){return}h.find(":input").each(function(){if(b(this).parents(".form-no-clear").size()){return}f=this.type.toLowerCase();d=this.tagName.toLowerCase();if("text"==f||"password"==f||"textarea"==d){this.value=""}else{if("checkbox"==f||"radio"==f){this.checked=false}else{if("select"==d){this.selectedIndex=null}}}})},process:function(e){var f=this,d=b(e||document);d.delegate('form[data-wp-lists^="add:'+f.id+':"]',"submit",function(){return f.wpList.add(this)});d.delegate('a[data-wp-lists^="add:'+f.id+':"], input[data-wp-lists^="add:'+f.id+':"]',"click",function(){return f.wpList.add(this)});d.delegate('[data-wp-lists^="delete:'+f.id+':"]',"click",function(){return f.wpList.del(this)});d.delegate('[data-wp-lists^="dim:'+f.id+':"]',"click",function(){return f.wpList.dim(this)})},recolor:function(){var f=this,e,d;if(!f.wpList.settings.alt){return}e=b(".list-item:visible",f);if(!e.size()){e=b(f).children(":visible")}d=[":even",":odd"];if(f.wpList.settings.altOffset%2){d.reverse()}e.filter(d[0]).addClass(f.wpList.settings.alt).end().filter(d[1]).removeClass(f.wpList.settings.alt)},init:function(){var d=this;d.wpList.process=function(e){d.each(function(){this.wpList.process(e)})};d.wpList.recolor=function(){d.each(function(){this.wpList.recolor()})}}};b.fn.wpList=function(d){this.each(function(){var e=this;this.wpList={settings:b.extend({},c.settings,{what:c.parseData(this,"list")[1]||""},d)};b.each(a,function(g,h){e.wpList[g]=function(i,f){return c[h].call(e,i,f)}})});c.init.call(this);this.wpList.process();return this}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/wp-pointer.dev.js b/wp-includes/js/wp-pointer.dev.js
deleted file mode 100644 (file)
index 23b0e43..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/**
- * Pointer jQuery widget.
- */
-(function($){
-       var identifier = 0,
-               zindex = 9999;
-
-       $.widget("wp.pointer", {
-               options: {
-                       pointerClass: 'wp-pointer',
-                       pointerWidth: 320,
-                       content: function( respond, event, t ) {
-                               return $(this).text();
-                       },
-                       buttons: function( event, t ) {
-                               var close  = ( wpPointerL10n ) ? wpPointerL10n.dismiss : 'Dismiss',
-                                       button = $('<a class="close" href="#">' + close + '</a>');
-
-                               return button.bind( 'click.pointer', function(e) {
-                                       e.preventDefault();
-                                       t.element.pointer('close');
-                               });
-                       },
-                       position: 'top',
-                       show: function( event, t ) {
-                               t.pointer.show();
-                               t.opened();
-                       },
-                       hide: function( event, t ) {
-                               t.pointer.hide();
-                               t.closed();
-                       },
-                       document: document
-               },
-
-               _create: function() {
-                       var positioning,
-                               family;
-
-                       this.content = $('<div class="wp-pointer-content"></div>');
-                       this.arrow   = $('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');
-
-                       family = this.element.parents().add( this.element );
-                       positioning = 'absolute';
-
-                       if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length )
-                               positioning = 'fixed';
-
-                       this.pointer = $('<div />')
-                               .append( this.content )
-                               .append( this.arrow )
-                               .attr('id', 'wp-pointer-' + identifier++)
-                               .addClass( this.options.pointerClass )
-                               .css({'position': positioning, 'width': this.options.pointerWidth+'px', 'display': 'none'})
-                               .appendTo( this.options.document.body );
-               },
-
-               _setOption: function( key, value ) {
-                       var o   = this.options,
-                               tip = this.pointer;
-
-                       // Handle document transfer
-                       if ( key === "document" && value !== o.document ) {
-                               tip.detach().appendTo( value.body );
-
-                       // Handle class change
-                       } else if ( key === "pointerClass" ) {
-                               tip.removeClass( o.pointerClass ).addClass( value );
-                       }
-
-                       // Call super method.
-                       $.Widget.prototype._setOption.apply( this, arguments );
-
-                       // Reposition automatically
-                       if ( key === "position" ) {
-                               this.reposition();
-
-                       // Update content automatically if pointer is open
-                       } else if ( key === "content" && this.active ) {
-                               this.update();
-                       }
-               },
-
-               destroy: function() {
-                       this.pointer.remove();
-                       $.Widget.prototype.destroy.call( this );
-               },
-
-               widget: function() {
-                       return this.pointer;
-               },
-
-               update: function( event ) {
-                       var self = this,
-                               o    = this.options,
-                               dfd  = $.Deferred(),
-                               content;
-
-                       if ( o.disabled )
-                               return;
-
-                       dfd.done( function( content ) {
-                               self._update( event, content );
-                       })
-
-                       // Either o.content is a string...
-                       if ( typeof o.content === 'string' ) {
-                               content = o.content;
-
-                       // ...or o.content is a callback.
-                       } else {
-                               content = o.content.call( this.element[0], dfd.resolve, event, this._handoff() );
-                       }
-
-                       // If content is set, then complete the update.
-                       if ( content )
-                               dfd.resolve( content );
-
-                       return dfd.promise();
-               },
-
-               /**
-                * Update is separated into two functions to allow events to defer
-                * updating the pointer (e.g. fetch content with ajax, etc).
-                */
-               _update: function( event, content ) {
-                       var buttons,
-                               o = this.options;
-
-                       if ( ! content )
-                               return;
-
-                       this.pointer.stop(); // Kill any animations on the pointer.
-                       this.content.html( content );
-
-                       buttons = o.buttons.call( this.element[0], event, this._handoff() );
-                       if ( buttons ) {
-                               buttons.wrap('<div class="wp-pointer-buttons" />').parent().appendTo( this.content );
-                       }
-
-                       this.reposition();
-               },
-
-               reposition: function() {
-                       var position;
-
-                       if ( this.options.disabled )
-                               return;
-
-                       position = this._processPosition( this.options.position );
-
-                       // Reposition pointer.
-                       this.pointer.css({
-                               top: 0,
-                               left: 0,
-                               zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers.
-                       }).show().position($.extend({
-                               of: this.element,
-                               collision: 'fit none'
-                       }, position )); // the object comes before this.options.position so the user can override position.of.
-
-                       this.repoint();
-               },
-
-               repoint: function() {
-                       var o = this.options,
-                               edge;
-
-                       if ( o.disabled )
-                               return;
-
-                       edge = ( typeof o.position == 'string' ) ? o.position : o.position.edge;
-
-                       // Remove arrow classes.
-                       this.pointer[0].className = this.pointer[0].className.replace( /wp-pointer-[^\s'"]*/, '' );
-
-                       // Add arrow class.
-                       this.pointer.addClass( 'wp-pointer-' + edge );
-               },
-
-               _processPosition: function( position ) {
-                       var opposite = {
-                                       top: 'bottom',
-                                       bottom: 'top',
-                                       left: 'right',
-                                       right: 'left'
-                               },
-                               result;
-
-                       // If the position object is a string, it is shorthand for position.edge.
-                       if ( typeof position == 'string' ) {
-                               result = {
-                                       edge: position + ''
-                               };
-                       } else {
-                               result = $.extend( {}, position );
-                       }
-
-                       if ( ! result.edge )
-                               return result;
-
-                       if ( result.edge == 'top' || result.edge == 'bottom' ) {
-                               result.align = result.align || 'left';
-
-                               result.at = result.at || result.align + ' ' + opposite[ result.edge ];
-                               result.my = result.my || result.align + ' ' + result.edge;
-                       } else {
-                               result.align = result.align || 'top';
-
-                               result.at = result.at || opposite[ result.edge ] + ' ' + result.align;
-                               result.my = result.my || result.edge + ' ' + result.align;
-                       }
-
-                       return result;
-               },
-
-               open: function( event ) {
-                       var self = this,
-                               o    = this.options;
-
-                       if ( this.active || o.disabled || this.element.is(':hidden') )
-                               return;
-
-                       this.update().done( function() {
-                               self._open( event );
-                       });
-               },
-
-               _open: function( event ) {
-                       var self = this,
-                               o    = this.options;
-
-                       if ( this.active || o.disabled || this.element.is(':hidden') )
-                               return;
-
-                       this.active = true;
-
-                       this._trigger( "open", event, this._handoff() );
-
-                       this._trigger( "show", event, this._handoff({
-                               opened: function() {
-                                       self._trigger( "opened", event, self._handoff() );
-                               }
-                       }));
-               },
-
-               close: function( event ) {
-                       if ( !this.active || this.options.disabled )
-                               return;
-
-                       var self = this;
-                       this.active = false;
-
-                       this._trigger( "close", event, this._handoff() );
-                       this._trigger( "hide", event, this._handoff({
-                               closed: function() {
-                                       self._trigger( "closed", event, self._handoff() );
-                               }
-                       }));
-               },
-
-               sendToTop: function( event ) {
-                       if ( this.active )
-                               this.pointer.css( 'z-index', zindex++ );
-               },
-
-               toggle: function( event ) {
-                       if ( this.pointer.is(':hidden') )
-                               this.open( event );
-                       else
-                               this.close( event );
-               },
-
-               _handoff: function( extend ) {
-                       return $.extend({
-                               pointer: this.pointer,
-                               element: this.element
-                       }, extend);
-               }
-       });
-})(jQuery);
index 65531c84122878123c86672f71e2954cd0511fe4..23b0e43dfe293bbd2a14fb58539bd62e2f309b68 100644 (file)
@@ -1 +1,281 @@
-(function(c){var a=0,b=9999;c.widget("wp.pointer",{options:{pointerClass:"wp-pointer",pointerWidth:320,content:function(f,e,d){return c(this).text()},buttons:function(f,e){var g=(wpPointerL10n)?wpPointerL10n.dismiss:"Dismiss",d=c('<a class="close" href="#">'+g+"</a>");return d.bind("click.pointer",function(h){h.preventDefault();e.element.pointer("close")})},position:"top",show:function(e,d){d.pointer.show();d.opened()},hide:function(e,d){d.pointer.hide();d.closed()},document:document},_create:function(){var e,d;this.content=c('<div class="wp-pointer-content"></div>');this.arrow=c('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');d=this.element.parents().add(this.element);e="absolute";if(d.filter(function(){return"fixed"===c(this).css("position")}).length){e="fixed"}this.pointer=c("<div />").append(this.content).append(this.arrow).attr("id","wp-pointer-"+a++).addClass(this.options.pointerClass).css({position:e,width:this.options.pointerWidth+"px",display:"none"}).appendTo(this.options.document.body)},_setOption:function(d,f){var g=this.options,e=this.pointer;if(d==="document"&&f!==g.document){e.detach().appendTo(f.body)}else{if(d==="pointerClass"){e.removeClass(g.pointerClass).addClass(f)}}c.Widget.prototype._setOption.apply(this,arguments);if(d==="position"){this.reposition()}else{if(d==="content"&&this.active){this.update()}}},destroy:function(){this.pointer.remove();c.Widget.prototype.destroy.call(this)},widget:function(){return this.pointer},update:function(g){var e=this,h=this.options,d=c.Deferred(),f;if(h.disabled){return}d.done(function(i){e._update(g,i)});if(typeof h.content==="string"){f=h.content}else{f=h.content.call(this.element[0],d.resolve,g,this._handoff())}if(f){d.resolve(f)}return d.promise()},_update:function(f,e){var d,g=this.options;if(!e){return}this.pointer.stop();this.content.html(e);d=g.buttons.call(this.element[0],f,this._handoff());if(d){d.wrap('<div class="wp-pointer-buttons" />').parent().appendTo(this.content)}this.reposition()},reposition:function(){var d;if(this.options.disabled){return}d=this._processPosition(this.options.position);this.pointer.css({top:0,left:0,zIndex:b++}).show().position(c.extend({of:this.element,collision:"fit none"},d));this.repoint()},repoint:function(){var e=this.options,d;if(e.disabled){return}d=(typeof e.position=="string")?e.position:e.position.edge;this.pointer[0].className=this.pointer[0].className.replace(/wp-pointer-[^\s'"]*/,"");this.pointer.addClass("wp-pointer-"+d)},_processPosition:function(e){var f={top:"bottom",bottom:"top",left:"right",right:"left"},d;if(typeof e=="string"){d={edge:e+""}}else{d=c.extend({},e)}if(!d.edge){return d}if(d.edge=="top"||d.edge=="bottom"){d.align=d.align||"left";d.at=d.at||d.align+" "+f[d.edge];d.my=d.my||d.align+" "+d.edge}else{d.align=d.align||"top";d.at=d.at||f[d.edge]+" "+d.align;d.my=d.my||d.edge+" "+d.align}return d},open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.update().done(function(){d._open(e)})},_open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.active=true;this._trigger("open",e,this._handoff());this._trigger("show",e,this._handoff({opened:function(){d._trigger("opened",e,d._handoff())}}))},close:function(e){if(!this.active||this.options.disabled){return}var d=this;this.active=false;this._trigger("close",e,this._handoff());this._trigger("hide",e,this._handoff({closed:function(){d._trigger("closed",e,d._handoff())}}))},sendToTop:function(d){if(this.active){this.pointer.css("z-index",b++)}},toggle:function(d){if(this.pointer.is(":hidden")){this.open(d)}else{this.close(d)}},_handoff:function(d){return c.extend({pointer:this.pointer,element:this.element},d)}})})(jQuery);
\ No newline at end of file
+/**
+ * Pointer jQuery widget.
+ */
+(function($){
+       var identifier = 0,
+               zindex = 9999;
+
+       $.widget("wp.pointer", {
+               options: {
+                       pointerClass: 'wp-pointer',
+                       pointerWidth: 320,
+                       content: function( respond, event, t ) {
+                               return $(this).text();
+                       },
+                       buttons: function( event, t ) {
+                               var close  = ( wpPointerL10n ) ? wpPointerL10n.dismiss : 'Dismiss',
+                                       button = $('<a class="close" href="#">' + close + '</a>');
+
+                               return button.bind( 'click.pointer', function(e) {
+                                       e.preventDefault();
+                                       t.element.pointer('close');
+                               });
+                       },
+                       position: 'top',
+                       show: function( event, t ) {
+                               t.pointer.show();
+                               t.opened();
+                       },
+                       hide: function( event, t ) {
+                               t.pointer.hide();
+                               t.closed();
+                       },
+                       document: document
+               },
+
+               _create: function() {
+                       var positioning,
+                               family;
+
+                       this.content = $('<div class="wp-pointer-content"></div>');
+                       this.arrow   = $('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');
+
+                       family = this.element.parents().add( this.element );
+                       positioning = 'absolute';
+
+                       if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length )
+                               positioning = 'fixed';
+
+                       this.pointer = $('<div />')
+                               .append( this.content )
+                               .append( this.arrow )
+                               .attr('id', 'wp-pointer-' + identifier++)
+                               .addClass( this.options.pointerClass )
+                               .css({'position': positioning, 'width': this.options.pointerWidth+'px', 'display': 'none'})
+                               .appendTo( this.options.document.body );
+               },
+
+               _setOption: function( key, value ) {
+                       var o   = this.options,
+                               tip = this.pointer;
+
+                       // Handle document transfer
+                       if ( key === "document" && value !== o.document ) {
+                               tip.detach().appendTo( value.body );
+
+                       // Handle class change
+                       } else if ( key === "pointerClass" ) {
+                               tip.removeClass( o.pointerClass ).addClass( value );
+                       }
+
+                       // Call super method.
+                       $.Widget.prototype._setOption.apply( this, arguments );
+
+                       // Reposition automatically
+                       if ( key === "position" ) {
+                               this.reposition();
+
+                       // Update content automatically if pointer is open
+                       } else if ( key === "content" && this.active ) {
+                               this.update();
+                       }
+               },
+
+               destroy: function() {
+                       this.pointer.remove();
+                       $.Widget.prototype.destroy.call( this );
+               },
+
+               widget: function() {
+                       return this.pointer;
+               },
+
+               update: function( event ) {
+                       var self = this,
+                               o    = this.options,
+                               dfd  = $.Deferred(),
+                               content;
+
+                       if ( o.disabled )
+                               return;
+
+                       dfd.done( function( content ) {
+                               self._update( event, content );
+                       })
+
+                       // Either o.content is a string...
+                       if ( typeof o.content === 'string' ) {
+                               content = o.content;
+
+                       // ...or o.content is a callback.
+                       } else {
+                               content = o.content.call( this.element[0], dfd.resolve, event, this._handoff() );
+                       }
+
+                       // If content is set, then complete the update.
+                       if ( content )
+                               dfd.resolve( content );
+
+                       return dfd.promise();
+               },
+
+               /**
+                * Update is separated into two functions to allow events to defer
+                * updating the pointer (e.g. fetch content with ajax, etc).
+                */
+               _update: function( event, content ) {
+                       var buttons,
+                               o = this.options;
+
+                       if ( ! content )
+                               return;
+
+                       this.pointer.stop(); // Kill any animations on the pointer.
+                       this.content.html( content );
+
+                       buttons = o.buttons.call( this.element[0], event, this._handoff() );
+                       if ( buttons ) {
+                               buttons.wrap('<div class="wp-pointer-buttons" />').parent().appendTo( this.content );
+                       }
+
+                       this.reposition();
+               },
+
+               reposition: function() {
+                       var position;
+
+                       if ( this.options.disabled )
+                               return;
+
+                       position = this._processPosition( this.options.position );
+
+                       // Reposition pointer.
+                       this.pointer.css({
+                               top: 0,
+                               left: 0,
+                               zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers.
+                       }).show().position($.extend({
+                               of: this.element,
+                               collision: 'fit none'
+                       }, position )); // the object comes before this.options.position so the user can override position.of.
+
+                       this.repoint();
+               },
+
+               repoint: function() {
+                       var o = this.options,
+                               edge;
+
+                       if ( o.disabled )
+                               return;
+
+                       edge = ( typeof o.position == 'string' ) ? o.position : o.position.edge;
+
+                       // Remove arrow classes.
+                       this.pointer[0].className = this.pointer[0].className.replace( /wp-pointer-[^\s'"]*/, '' );
+
+                       // Add arrow class.
+                       this.pointer.addClass( 'wp-pointer-' + edge );
+               },
+
+               _processPosition: function( position ) {
+                       var opposite = {
+                                       top: 'bottom',
+                                       bottom: 'top',
+                                       left: 'right',
+                                       right: 'left'
+                               },
+                               result;
+
+                       // If the position object is a string, it is shorthand for position.edge.
+                       if ( typeof position == 'string' ) {
+                               result = {
+                                       edge: position + ''
+                               };
+                       } else {
+                               result = $.extend( {}, position );
+                       }
+
+                       if ( ! result.edge )
+                               return result;
+
+                       if ( result.edge == 'top' || result.edge == 'bottom' ) {
+                               result.align = result.align || 'left';
+
+                               result.at = result.at || result.align + ' ' + opposite[ result.edge ];
+                               result.my = result.my || result.align + ' ' + result.edge;
+                       } else {
+                               result.align = result.align || 'top';
+
+                               result.at = result.at || opposite[ result.edge ] + ' ' + result.align;
+                               result.my = result.my || result.edge + ' ' + result.align;
+                       }
+
+                       return result;
+               },
+
+               open: function( event ) {
+                       var self = this,
+                               o    = this.options;
+
+                       if ( this.active || o.disabled || this.element.is(':hidden') )
+                               return;
+
+                       this.update().done( function() {
+                               self._open( event );
+                       });
+               },
+
+               _open: function( event ) {
+                       var self = this,
+                               o    = this.options;
+
+                       if ( this.active || o.disabled || this.element.is(':hidden') )
+                               return;
+
+                       this.active = true;
+
+                       this._trigger( "open", event, this._handoff() );
+
+                       this._trigger( "show", event, this._handoff({
+                               opened: function() {
+                                       self._trigger( "opened", event, self._handoff() );
+                               }
+                       }));
+               },
+
+               close: function( event ) {
+                       if ( !this.active || this.options.disabled )
+                               return;
+
+                       var self = this;
+                       this.active = false;
+
+                       this._trigger( "close", event, this._handoff() );
+                       this._trigger( "hide", event, this._handoff({
+                               closed: function() {
+                                       self._trigger( "closed", event, self._handoff() );
+                               }
+                       }));
+               },
+
+               sendToTop: function( event ) {
+                       if ( this.active )
+                               this.pointer.css( 'z-index', zindex++ );
+               },
+
+               toggle: function( event ) {
+                       if ( this.pointer.is(':hidden') )
+                               this.open( event );
+                       else
+                               this.close( event );
+               },
+
+               _handoff: function( extend ) {
+                       return $.extend({
+                               pointer: this.pointer,
+                               element: this.element
+                       }, extend);
+               }
+       });
+})(jQuery);
diff --git a/wp-includes/js/wp-pointer.min.js b/wp-includes/js/wp-pointer.min.js
new file mode 100644 (file)
index 0000000..65531c8
--- /dev/null
@@ -0,0 +1 @@
+(function(c){var a=0,b=9999;c.widget("wp.pointer",{options:{pointerClass:"wp-pointer",pointerWidth:320,content:function(f,e,d){return c(this).text()},buttons:function(f,e){var g=(wpPointerL10n)?wpPointerL10n.dismiss:"Dismiss",d=c('<a class="close" href="#">'+g+"</a>");return d.bind("click.pointer",function(h){h.preventDefault();e.element.pointer("close")})},position:"top",show:function(e,d){d.pointer.show();d.opened()},hide:function(e,d){d.pointer.hide();d.closed()},document:document},_create:function(){var e,d;this.content=c('<div class="wp-pointer-content"></div>');this.arrow=c('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');d=this.element.parents().add(this.element);e="absolute";if(d.filter(function(){return"fixed"===c(this).css("position")}).length){e="fixed"}this.pointer=c("<div />").append(this.content).append(this.arrow).attr("id","wp-pointer-"+a++).addClass(this.options.pointerClass).css({position:e,width:this.options.pointerWidth+"px",display:"none"}).appendTo(this.options.document.body)},_setOption:function(d,f){var g=this.options,e=this.pointer;if(d==="document"&&f!==g.document){e.detach().appendTo(f.body)}else{if(d==="pointerClass"){e.removeClass(g.pointerClass).addClass(f)}}c.Widget.prototype._setOption.apply(this,arguments);if(d==="position"){this.reposition()}else{if(d==="content"&&this.active){this.update()}}},destroy:function(){this.pointer.remove();c.Widget.prototype.destroy.call(this)},widget:function(){return this.pointer},update:function(g){var e=this,h=this.options,d=c.Deferred(),f;if(h.disabled){return}d.done(function(i){e._update(g,i)});if(typeof h.content==="string"){f=h.content}else{f=h.content.call(this.element[0],d.resolve,g,this._handoff())}if(f){d.resolve(f)}return d.promise()},_update:function(f,e){var d,g=this.options;if(!e){return}this.pointer.stop();this.content.html(e);d=g.buttons.call(this.element[0],f,this._handoff());if(d){d.wrap('<div class="wp-pointer-buttons" />').parent().appendTo(this.content)}this.reposition()},reposition:function(){var d;if(this.options.disabled){return}d=this._processPosition(this.options.position);this.pointer.css({top:0,left:0,zIndex:b++}).show().position(c.extend({of:this.element,collision:"fit none"},d));this.repoint()},repoint:function(){var e=this.options,d;if(e.disabled){return}d=(typeof e.position=="string")?e.position:e.position.edge;this.pointer[0].className=this.pointer[0].className.replace(/wp-pointer-[^\s'"]*/,"");this.pointer.addClass("wp-pointer-"+d)},_processPosition:function(e){var f={top:"bottom",bottom:"top",left:"right",right:"left"},d;if(typeof e=="string"){d={edge:e+""}}else{d=c.extend({},e)}if(!d.edge){return d}if(d.edge=="top"||d.edge=="bottom"){d.align=d.align||"left";d.at=d.at||d.align+" "+f[d.edge];d.my=d.my||d.align+" "+d.edge}else{d.align=d.align||"top";d.at=d.at||f[d.edge]+" "+d.align;d.my=d.my||d.edge+" "+d.align}return d},open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.update().done(function(){d._open(e)})},_open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.active=true;this._trigger("open",e,this._handoff());this._trigger("show",e,this._handoff({opened:function(){d._trigger("opened",e,d._handoff())}}))},close:function(e){if(!this.active||this.options.disabled){return}var d=this;this.active=false;this._trigger("close",e,this._handoff());this._trigger("hide",e,this._handoff({closed:function(){d._trigger("closed",e,d._handoff())}}))},sendToTop:function(d){if(this.active){this.pointer.css("z-index",b++)}},toggle:function(d){if(this.pointer.is(":hidden")){this.open(d)}else{this.close(d)}},_handoff:function(d){return c.extend({pointer:this.pointer,element:this.element},d)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/wplink.dev.js b/wp-includes/js/wplink.dev.js
deleted file mode 100644 (file)
index d0c4b9a..0000000
+++ /dev/null
@@ -1,593 +0,0 @@
-var wpLink;
-
-(function($){
-       var inputs = {}, rivers = {}, ed, River, Query;
-
-       wpLink = {
-               timeToTriggerRiver: 150,
-               minRiverAJAXDuration: 200,
-               riverBottomThreshold: 5,
-               keySensitivity: 100,
-               lastSearch: '',
-               textarea: '',
-
-               init : function() {
-                       inputs.dialog = $('#wp-link');
-                       inputs.submit = $('#wp-link-submit');
-                       // URL
-                       inputs.url = $('#url-field');
-                       inputs.nonce = $('#_ajax_linking_nonce');
-                       // Secondary options
-                       inputs.title = $('#link-title-field');
-                       // Advanced Options
-                       inputs.openInNewTab = $('#link-target-checkbox');
-                       inputs.search = $('#search-field');
-                       // Build Rivers
-                       rivers.search = new River( $('#search-results') );
-                       rivers.recent = new River( $('#most-recent-results') );
-                       rivers.elements = $('.query-results', inputs.dialog);
-
-                       // Bind event handlers
-                       inputs.dialog.keydown( wpLink.keydown );
-                       inputs.dialog.keyup( wpLink.keyup );
-                       inputs.submit.click( function(e){
-                               e.preventDefault();
-                               wpLink.update();
-                       });
-                       $('#wp-link-cancel').click( function(e){
-                               e.preventDefault();
-                               wpLink.close();
-                       });
-                       $('#internal-toggle').click( wpLink.toggleInternalLinking );
-
-                       rivers.elements.bind('river-select', wpLink.updateFields );
-
-                       inputs.search.keyup( wpLink.searchInternalLinks );
-
-                       inputs.dialog.bind('wpdialogrefresh', wpLink.refresh);
-                       inputs.dialog.bind('wpdialogbeforeopen', wpLink.beforeOpen);
-                       inputs.dialog.bind('wpdialogclose', wpLink.onClose);
-               },
-
-               beforeOpen : function() {
-                       wpLink.range = null;
-
-                       if ( ! wpLink.isMCE() && document.selection ) {
-                               wpLink.textarea.focus();
-                               wpLink.range = document.selection.createRange();
-                       }
-               },
-
-               open : function() {
-                       if ( !wpActiveEditor )
-                               return;
-
-                       this.textarea = $('#'+wpActiveEditor).get(0);
-
-                       // Initialize the dialog if necessary (html mode).
-                       if ( ! inputs.dialog.data('wpdialog') ) {
-                               inputs.dialog.wpdialog({
-                                       title: wpLinkL10n.title,
-                                       width: 480,
-                                       height: 'auto',
-                                       modal: true,
-                                       dialogClass: 'wp-dialog',
-                                       zIndex: 300000
-                               });
-                       }
-
-                       inputs.dialog.wpdialog('open');
-               },
-
-               isMCE : function() {
-                       return tinyMCEPopup && ( ed = tinyMCEPopup.editor ) && ! ed.isHidden();
-               },
-
-               refresh : function() {
-                       // Refresh rivers (clear links, check visibility)
-                       rivers.search.refresh();
-                       rivers.recent.refresh();
-
-                       if ( wpLink.isMCE() )
-                               wpLink.mceRefresh();
-                       else
-                               wpLink.setDefaultValues();
-
-                       // Focus the URL field and highlight its contents.
-                       //     If this is moved above the selection changes,
-                       //     IE will show a flashing cursor over the dialog.
-                       inputs.url.focus()[0].select();
-                       // Load the most recent results if this is the first time opening the panel.
-                       if ( ! rivers.recent.ul.children().length )
-                               rivers.recent.ajax();
-               },
-
-               mceRefresh : function() {
-                       var e;
-                       ed = tinyMCEPopup.editor;
-
-                       tinyMCEPopup.restoreSelection();
-
-                       // If link exists, select proper values.
-                       if ( e = ed.dom.getParent(ed.selection.getNode(), 'A') ) {
-                               // Set URL and description.
-                               inputs.url.val( ed.dom.getAttrib(e, 'href') );
-                               inputs.title.val( ed.dom.getAttrib(e, 'title') );
-                               // Set open in new tab.
-                               if ( "_blank" == ed.dom.getAttrib(e, 'target') )
-                                       inputs.openInNewTab.prop('checked', true);
-                               // Update save prompt.
-                               inputs.submit.val( wpLinkL10n.update );
-
-                       // If there's no link, set the default values.
-                       } else {
-                               wpLink.setDefaultValues();
-                       }
-
-                       tinyMCEPopup.storeSelection();
-               },
-
-               close : function() {
-                       if ( wpLink.isMCE() )
-                               tinyMCEPopup.close();
-                       else
-                               inputs.dialog.wpdialog('close');
-               },
-
-               onClose: function() {
-                       if ( ! wpLink.isMCE() ) {
-                               wpLink.textarea.focus();
-                               if ( wpLink.range ) {
-                                       wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
-                                       wpLink.range.select();
-                               }
-                       }
-               },
-
-               getAttrs : function() {
-                       return {
-                               href : inputs.url.val(),
-                               title : inputs.title.val(),
-                               target : inputs.openInNewTab.prop('checked') ? '_blank' : ''
-                       };
-               },
-
-               update : function() {
-                       if ( wpLink.isMCE() )
-                               wpLink.mceUpdate();
-                       else
-                               wpLink.htmlUpdate();
-               },
-
-               htmlUpdate : function() {
-                       var attrs, html, begin, end, cursor,
-                               textarea = wpLink.textarea;
-
-                       if ( ! textarea )
-                               return;
-
-                       attrs = wpLink.getAttrs();
-
-                       // If there's no href, return.
-                       if ( ! attrs.href || attrs.href == 'http://' )
-                               return;
-
-                       // Build HTML
-                       html = '<a href="' + attrs.href + '"';
-
-                       if ( attrs.title )
-                               html += ' title="' + attrs.title + '"';
-                       if ( attrs.target )
-                               html += ' target="' + attrs.target + '"';
-
-                       html += '>';
-
-                       // Insert HTML
-                       if ( document.selection && wpLink.range ) {
-                               // IE
-                               // Note: If no text is selected, IE will not place the cursor
-                               //       inside the closing tag.
-                               textarea.focus();
-                               wpLink.range.text = html + wpLink.range.text + '</a>';
-                               wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
-                               wpLink.range.select();
-
-                               wpLink.range = null;
-                       } else if ( typeof textarea.selectionStart !== 'undefined' ) {
-                               // W3C
-                               begin       = textarea.selectionStart;
-                               end         = textarea.selectionEnd;
-                               selection   = textarea.value.substring( begin, end );
-                               html        = html + selection + '</a>';
-                               cursor      = begin + html.length;
-
-                               // If no next is selected, place the cursor inside the closing tag.
-                               if ( begin == end )
-                                       cursor -= '</a>'.length;
-
-                               textarea.value = textarea.value.substring( 0, begin )
-                                              + html
-                                              + textarea.value.substring( end, textarea.value.length );
-
-                               // Update cursor position
-                               textarea.selectionStart = textarea.selectionEnd = cursor;
-                       }
-
-                       wpLink.close();
-                       textarea.focus();
-               },
-
-               mceUpdate : function() {
-                       var ed = tinyMCEPopup.editor,
-                               attrs = wpLink.getAttrs(),
-                               e, b;
-
-                       tinyMCEPopup.restoreSelection();
-                       e = ed.dom.getParent(ed.selection.getNode(), 'A');
-
-                       // If the values are empty, unlink and return
-                       if ( ! attrs.href || attrs.href == 'http://' ) {
-                               if ( e ) {
-                                       tinyMCEPopup.execCommand("mceBeginUndoLevel");
-                                       b = ed.selection.getBookmark();
-                                       ed.dom.remove(e, 1);
-                                       ed.selection.moveToBookmark(b);
-                                       tinyMCEPopup.execCommand("mceEndUndoLevel");
-                                       wpLink.close();
-                               }
-                               return;
-                       }
-
-                       tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-                       if (e == null) {
-                               ed.getDoc().execCommand("unlink", false, null);
-                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
-                               tinymce.each(ed.dom.select("a"), function(n) {
-                                       if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
-                                               e = n;
-                                               ed.dom.setAttribs(e, attrs);
-                                       }
-                               });
-
-                               // Sometimes WebKit lets a user create a link where
-                               // they shouldn't be able to. In this case, CreateLink
-                               // injects "#mce_temp_url#" into their content. Fix it.
-                               if ( $(e).text() == '#mce_temp_url#' ) {
-                                       ed.dom.remove(e);
-                                       e = null;
-                               }
-                       } else {
-                               ed.dom.setAttribs(e, attrs);
-                       }
-
-                       // Don't move caret if selection was image
-                       if ( e && (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') ) {
-                               ed.focus();
-                               ed.selection.select(e);
-                               ed.selection.collapse(0);
-                               tinyMCEPopup.storeSelection();
-                       }
-
-                       tinyMCEPopup.execCommand("mceEndUndoLevel");
-                       wpLink.close();
-               },
-
-               updateFields : function( e, li, originalEvent ) {
-                       inputs.url.val( li.children('.item-permalink').val() );
-                       inputs.title.val( li.hasClass('no-title') ? '' : li.children('.item-title').text() );
-                       if ( originalEvent && originalEvent.type == "click" )
-                               inputs.url.focus();
-               },
-               setDefaultValues : function() {
-                       // Set URL and description to defaults.
-                       // Leave the new tab setting as-is.
-                       inputs.url.val('http://');
-                       inputs.title.val('');
-
-                       // Update save prompt.
-                       inputs.submit.val( wpLinkL10n.save );
-               },
-
-               searchInternalLinks : function() {
-                       var t = $(this), waiting,
-                               search = t.val();
-
-                       if ( search.length > 2 ) {
-                               rivers.recent.hide();
-                               rivers.search.show();
-
-                               // Don't search if the keypress didn't change the title.
-                               if ( wpLink.lastSearch == search )
-                                       return;
-
-                               wpLink.lastSearch = search;
-                               waiting = t.siblings('img.waiting').show();
-
-                               rivers.search.change( search );
-                               rivers.search.ajax( function(){ waiting.hide(); });
-                       } else {
-                               rivers.search.hide();
-                               rivers.recent.show();
-                       }
-               },
-
-               next : function() {
-                       rivers.search.next();
-                       rivers.recent.next();
-               },
-               prev : function() {
-                       rivers.search.prev();
-                       rivers.recent.prev();
-               },
-
-               keydown : function( event ) {
-                       var fn, key = $.ui.keyCode;
-
-                       switch( event.which ) {
-                               case key.UP:
-                                       fn = 'prev';
-                               case key.DOWN:
-                                       fn = fn || 'next';
-                                       clearInterval( wpLink.keyInterval );
-                                       wpLink[ fn ]();
-                                       wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity );
-                                       break;
-                               default:
-                                       return;
-                       }
-                       event.preventDefault();
-               },
-               keyup: function( event ) {
-                       var key = $.ui.keyCode;
-
-                       switch( event.which ) {
-                               case key.ESCAPE:
-                                       event.stopImmediatePropagation();
-                                       if ( ! $(document).triggerHandler( 'wp_CloseOnEscape', [{ event: event, what: 'wplink', cb: wpLink.close }] ) )
-                                               wpLink.close();
-
-                                       return false;
-                                       break;
-                               case key.UP:
-                               case key.DOWN:
-                                       clearInterval( wpLink.keyInterval );
-                                       break;
-                               default:
-                                       return;
-                       }
-                       event.preventDefault();
-               },
-
-               delayedCallback : function( func, delay ) {
-                       var timeoutTriggered, funcTriggered, funcArgs, funcContext;
-
-                       if ( ! delay )
-                               return func;
-
-                       setTimeout( function() {
-                               if ( funcTriggered )
-                                       return func.apply( funcContext, funcArgs );
-                               // Otherwise, wait.
-                               timeoutTriggered = true;
-                       }, delay);
-
-                       return function() {
-                               if ( timeoutTriggered )
-                                       return func.apply( this, arguments );
-                               // Otherwise, wait.
-                               funcArgs = arguments;
-                               funcContext = this;
-                               funcTriggered = true;
-                       };
-               },
-
-               toggleInternalLinking : function( event ) {
-                       var panel = $('#search-panel'),
-                               widget = inputs.dialog.wpdialog('widget'),
-                               // We're about to toggle visibility; it's currently the opposite
-                               visible = !panel.is(':visible'),
-                               win = $(window);
-
-                       $(this).toggleClass('toggle-arrow-active', visible);
-
-                       inputs.dialog.height('auto');
-                       panel.slideToggle( 300, function() {
-                               setUserSetting('wplink', visible ? '1' : '0');
-                               inputs[ visible ? 'search' : 'url' ].focus();
-
-                               // Move the box if the box is now expanded, was opened in a collapsed state,
-                               // and if it needs to be moved. (Judged by bottom not being positive or
-                               // bottom being smaller than top.)
-                               var scroll = win.scrollTop(),
-                                       top = widget.offset().top,
-                                       bottom = top + widget.outerHeight(),
-                                       diff = bottom - win.height();
-
-                               if ( diff > scroll ) {
-                                       widget.animate({'top': diff < top ?  top - diff : scroll }, 200);
-                               }
-                       });
-                       event.preventDefault();
-               }
-       }
-
-       River = function( element, search ) {
-               var self = this;
-               this.element = element;
-               this.ul = element.children('ul');
-               this.waiting = element.find('.river-waiting');
-
-               this.change( search );
-               this.refresh();
-
-               element.scroll( function(){ self.maybeLoad(); });
-               element.delegate('li', 'click', function(e){ self.select( $(this), e ); });
-       };
-
-       $.extend( River.prototype, {
-               refresh: function() {
-                       this.deselect();
-                       this.visible = this.element.is(':visible');
-               },
-               show: function() {
-                       if ( ! this.visible ) {
-                               this.deselect();
-                               this.element.show();
-                               this.visible = true;
-                       }
-               },
-               hide: function() {
-                       this.element.hide();
-                       this.visible = false;
-               },
-               // Selects a list item and triggers the river-select event.
-               select: function( li, event ) {
-                       var liHeight, elHeight, liTop, elTop;
-
-                       if ( li.hasClass('unselectable') || li == this.selected )
-                               return;
-
-                       this.deselect();
-                       this.selected = li.addClass('selected');
-                       // Make sure the element is visible
-                       liHeight = li.outerHeight();
-                       elHeight = this.element.height();
-                       liTop = li.position().top;
-                       elTop = this.element.scrollTop();
-
-                       if ( liTop < 0 ) // Make first visible element
-                               this.element.scrollTop( elTop + liTop );
-                       else if ( liTop + liHeight > elHeight ) // Make last visible element
-                               this.element.scrollTop( elTop + liTop - elHeight + liHeight );
-
-                       // Trigger the river-select event
-                       this.element.trigger('river-select', [ li, event, this ]);
-               },
-               deselect: function() {
-                       if ( this.selected )
-                               this.selected.removeClass('selected');
-                       this.selected = false;
-               },
-               prev: function() {
-                       if ( ! this.visible )
-                               return;
-
-                       var to;
-                       if ( this.selected ) {
-                               to = this.selected.prev('li');
-                               if ( to.length )
-                                       this.select( to );
-                       }
-               },
-               next: function() {
-                       if ( ! this.visible )
-                               return;
-
-                       var to = this.selected ? this.selected.next('li') : $('li:not(.unselectable):first', this.element);
-                       if ( to.length )
-                               this.select( to );
-               },
-               ajax: function( callback ) {
-                       var self = this,
-                               delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration,
-                               response = wpLink.delayedCallback( function( results, params ) {
-                                       self.process( results, params );
-                                       if ( callback )
-                                               callback( results, params );
-                               }, delay );
-
-                       this.query.ajax( response );
-               },
-               change: function( search ) {
-                       if ( this.query && this._search == search )
-                               return;
-
-                       this._search = search;
-                       this.query = new Query( search );
-                       this.element.scrollTop(0);
-               },
-               process: function( results, params ) {
-                       var list = '', alt = true, classes = '',
-                               firstPage = params.page == 1;
-
-                       if ( !results ) {
-                               if ( firstPage ) {
-                                       list += '<li class="unselectable"><span class="item-title"><em>'
-                                       + wpLinkL10n.noMatchesFound
-                                       + '</em></span></li>';
-                               }
-                       } else {
-                               $.each( results, function() {
-                                       classes = alt ? 'alternate' : '';
-                                       classes += this['title'] ? '' : ' no-title';
-                                       list += classes ? '<li class="' + classes + '">' : '<li>';
-                                       list += '<input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />';
-                                       list += '<span class="item-title">';
-                                       list += this['title'] ? this['title'] : wpLinkL10n.noTitle;
-                                       list += '</span><span class="item-info">' + this['info'] + '</span></li>';
-                                       alt = ! alt;
-                               });
-                       }
-
-                       this.ul[ firstPage ? 'html' : 'append' ]( list );
-               },
-               maybeLoad: function() {
-                       var self = this,
-                               el = this.element,
-                               bottom = el.scrollTop() + el.height();
-
-                       if ( ! this.query.ready() || bottom < this.ul.height() - wpLink.riverBottomThreshold )
-                               return;
-
-                       setTimeout(function() {
-                               var newTop = el.scrollTop(),
-                                       newBottom = newTop + el.height();
-
-                               if ( ! self.query.ready() || newBottom < self.ul.height() - wpLink.riverBottomThreshold )
-                                       return;
-
-                               self.waiting.show();
-                               el.scrollTop( newTop + self.waiting.outerHeight() );
-
-                               self.ajax( function() { self.waiting.hide(); });
-                       }, wpLink.timeToTriggerRiver );
-               }
-       });
-
-       Query = function( search ) {
-               this.page = 1;
-               this.allLoaded = false;
-               this.querying = false;
-               this.search = search;
-       };
-
-       $.extend( Query.prototype, {
-               ready: function() {
-                       return !( this.querying || this.allLoaded );
-               },
-               ajax: function( callback ) {
-                       var self = this,
-                               query = {
-                                       action : 'wp-link-ajax',
-                                       page : this.page,
-                                       '_ajax_linking_nonce' : inputs.nonce.val()
-                               };
-
-                       if ( this.search )
-                               query.search = this.search;
-
-                       this.querying = true;
-
-                       $.post( ajaxurl, query, function(r) {
-                               self.page++;
-                               self.querying = false;
-                               self.allLoaded = !r;
-                               callback( r, query );
-                       }, "json" );
-               }
-       });
-
-       $(document).ready( wpLink.init );
-})(jQuery);
index 4ce2f6ebea40117f29bebd66991499d0c3f95924..c52d2a197675b4ae270bdb58e652c22c59c48ba9 100644 (file)
@@ -1 +1,593 @@
-var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog",zIndex:300000})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));if("_blank"==d.dom.getAttrib(g,"target")){b.openInNewTab.prop("checked",true)}b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,k,h,l,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}else{if(typeof g.selectionStart!=="undefined"){k=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(k,h);j=j+selection+"</a>";l=k+j.length;if(k==h){l-="</a>".length}g.value=g.value.substring(0,k)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=l}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.siblings("img.waiting").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
+var wpLink;
+
+(function($){
+       var inputs = {}, rivers = {}, ed, River, Query;
+
+       wpLink = {
+               timeToTriggerRiver: 150,
+               minRiverAJAXDuration: 200,
+               riverBottomThreshold: 5,
+               keySensitivity: 100,
+               lastSearch: '',
+               textarea: '',
+
+               init : function() {
+                       inputs.dialog = $('#wp-link');
+                       inputs.submit = $('#wp-link-submit');
+                       // URL
+                       inputs.url = $('#url-field');
+                       inputs.nonce = $('#_ajax_linking_nonce');
+                       // Secondary options
+                       inputs.title = $('#link-title-field');
+                       // Advanced Options
+                       inputs.openInNewTab = $('#link-target-checkbox');
+                       inputs.search = $('#search-field');
+                       // Build Rivers
+                       rivers.search = new River( $('#search-results') );
+                       rivers.recent = new River( $('#most-recent-results') );
+                       rivers.elements = $('.query-results', inputs.dialog);
+
+                       // Bind event handlers
+                       inputs.dialog.keydown( wpLink.keydown );
+                       inputs.dialog.keyup( wpLink.keyup );
+                       inputs.submit.click( function(e){
+                               e.preventDefault();
+                               wpLink.update();
+                       });
+                       $('#wp-link-cancel').click( function(e){
+                               e.preventDefault();
+                               wpLink.close();
+                       });
+                       $('#internal-toggle').click( wpLink.toggleInternalLinking );
+
+                       rivers.elements.bind('river-select', wpLink.updateFields );
+
+                       inputs.search.keyup( wpLink.searchInternalLinks );
+
+                       inputs.dialog.bind('wpdialogrefresh', wpLink.refresh);
+                       inputs.dialog.bind('wpdialogbeforeopen', wpLink.beforeOpen);
+                       inputs.dialog.bind('wpdialogclose', wpLink.onClose);
+               },
+
+               beforeOpen : function() {
+                       wpLink.range = null;
+
+                       if ( ! wpLink.isMCE() && document.selection ) {
+                               wpLink.textarea.focus();
+                               wpLink.range = document.selection.createRange();
+                       }
+               },
+
+               open : function() {
+                       if ( !wpActiveEditor )
+                               return;
+
+                       this.textarea = $('#'+wpActiveEditor).get(0);
+
+                       // Initialize the dialog if necessary (html mode).
+                       if ( ! inputs.dialog.data('wpdialog') ) {
+                               inputs.dialog.wpdialog({
+                                       title: wpLinkL10n.title,
+                                       width: 480,
+                                       height: 'auto',
+                                       modal: true,
+                                       dialogClass: 'wp-dialog',
+                                       zIndex: 300000
+                               });
+                       }
+
+                       inputs.dialog.wpdialog('open');
+               },
+
+               isMCE : function() {
+                       return tinyMCEPopup && ( ed = tinyMCEPopup.editor ) && ! ed.isHidden();
+               },
+
+               refresh : function() {
+                       // Refresh rivers (clear links, check visibility)
+                       rivers.search.refresh();
+                       rivers.recent.refresh();
+
+                       if ( wpLink.isMCE() )
+                               wpLink.mceRefresh();
+                       else
+                               wpLink.setDefaultValues();
+
+                       // Focus the URL field and highlight its contents.
+                       //     If this is moved above the selection changes,
+                       //     IE will show a flashing cursor over the dialog.
+                       inputs.url.focus()[0].select();
+                       // Load the most recent results if this is the first time opening the panel.
+                       if ( ! rivers.recent.ul.children().length )
+                               rivers.recent.ajax();
+               },
+
+               mceRefresh : function() {
+                       var e;
+                       ed = tinyMCEPopup.editor;
+
+                       tinyMCEPopup.restoreSelection();
+
+                       // If link exists, select proper values.
+                       if ( e = ed.dom.getParent(ed.selection.getNode(), 'A') ) {
+                               // Set URL and description.
+                               inputs.url.val( ed.dom.getAttrib(e, 'href') );
+                               inputs.title.val( ed.dom.getAttrib(e, 'title') );
+                               // Set open in new tab.
+                               if ( "_blank" == ed.dom.getAttrib(e, 'target') )
+                                       inputs.openInNewTab.prop('checked', true);
+                               // Update save prompt.
+                               inputs.submit.val( wpLinkL10n.update );
+
+                       // If there's no link, set the default values.
+                       } else {
+                               wpLink.setDefaultValues();
+                       }
+
+                       tinyMCEPopup.storeSelection();
+               },
+
+               close : function() {
+                       if ( wpLink.isMCE() )
+                               tinyMCEPopup.close();
+                       else
+                               inputs.dialog.wpdialog('close');
+               },
+
+               onClose: function() {
+                       if ( ! wpLink.isMCE() ) {
+                               wpLink.textarea.focus();
+                               if ( wpLink.range ) {
+                                       wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
+                                       wpLink.range.select();
+                               }
+                       }
+               },
+
+               getAttrs : function() {
+                       return {
+                               href : inputs.url.val(),
+                               title : inputs.title.val(),
+                               target : inputs.openInNewTab.prop('checked') ? '_blank' : ''
+                       };
+               },
+
+               update : function() {
+                       if ( wpLink.isMCE() )
+                               wpLink.mceUpdate();
+                       else
+                               wpLink.htmlUpdate();
+               },
+
+               htmlUpdate : function() {
+                       var attrs, html, begin, end, cursor,
+                               textarea = wpLink.textarea;
+
+                       if ( ! textarea )
+                               return;
+
+                       attrs = wpLink.getAttrs();
+
+                       // If there's no href, return.
+                       if ( ! attrs.href || attrs.href == 'http://' )
+                               return;
+
+                       // Build HTML
+                       html = '<a href="' + attrs.href + '"';
+
+                       if ( attrs.title )
+                               html += ' title="' + attrs.title + '"';
+                       if ( attrs.target )
+                               html += ' target="' + attrs.target + '"';
+
+                       html += '>';
+
+                       // Insert HTML
+                       if ( document.selection && wpLink.range ) {
+                               // IE
+                               // Note: If no text is selected, IE will not place the cursor
+                               //       inside the closing tag.
+                               textarea.focus();
+                               wpLink.range.text = html + wpLink.range.text + '</a>';
+                               wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
+                               wpLink.range.select();
+
+                               wpLink.range = null;
+                       } else if ( typeof textarea.selectionStart !== 'undefined' ) {
+                               // W3C
+                               begin       = textarea.selectionStart;
+                               end         = textarea.selectionEnd;
+                               selection   = textarea.value.substring( begin, end );
+                               html        = html + selection + '</a>';
+                               cursor      = begin + html.length;
+
+                               // If no next is selected, place the cursor inside the closing tag.
+                               if ( begin == end )
+                                       cursor -= '</a>'.length;
+
+                               textarea.value = textarea.value.substring( 0, begin )
+                                              + html
+                                              + textarea.value.substring( end, textarea.value.length );
+
+                               // Update cursor position
+                               textarea.selectionStart = textarea.selectionEnd = cursor;
+                       }
+
+                       wpLink.close();
+                       textarea.focus();
+               },
+
+               mceUpdate : function() {
+                       var ed = tinyMCEPopup.editor,
+                               attrs = wpLink.getAttrs(),
+                               e, b;
+
+                       tinyMCEPopup.restoreSelection();
+                       e = ed.dom.getParent(ed.selection.getNode(), 'A');
+
+                       // If the values are empty, unlink and return
+                       if ( ! attrs.href || attrs.href == 'http://' ) {
+                               if ( e ) {
+                                       tinyMCEPopup.execCommand("mceBeginUndoLevel");
+                                       b = ed.selection.getBookmark();
+                                       ed.dom.remove(e, 1);
+                                       ed.selection.moveToBookmark(b);
+                                       tinyMCEPopup.execCommand("mceEndUndoLevel");
+                                       wpLink.close();
+                               }
+                               return;
+                       }
+
+                       tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+                       if (e == null) {
+                               ed.getDoc().execCommand("unlink", false, null);
+                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+                               tinymce.each(ed.dom.select("a"), function(n) {
+                                       if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+                                               e = n;
+                                               ed.dom.setAttribs(e, attrs);
+                                       }
+                               });
+
+                               // Sometimes WebKit lets a user create a link where
+                               // they shouldn't be able to. In this case, CreateLink
+                               // injects "#mce_temp_url#" into their content. Fix it.
+                               if ( $(e).text() == '#mce_temp_url#' ) {
+                                       ed.dom.remove(e);
+                                       e = null;
+                               }
+                       } else {
+                               ed.dom.setAttribs(e, attrs);
+                       }
+
+                       // Don't move caret if selection was image
+                       if ( e && (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') ) {
+                               ed.focus();
+                               ed.selection.select(e);
+                               ed.selection.collapse(0);
+                               tinyMCEPopup.storeSelection();
+                       }
+
+                       tinyMCEPopup.execCommand("mceEndUndoLevel");
+                       wpLink.close();
+               },
+
+               updateFields : function( e, li, originalEvent ) {
+                       inputs.url.val( li.children('.item-permalink').val() );
+                       inputs.title.val( li.hasClass('no-title') ? '' : li.children('.item-title').text() );
+                       if ( originalEvent && originalEvent.type == "click" )
+                               inputs.url.focus();
+               },
+               setDefaultValues : function() {
+                       // Set URL and description to defaults.
+                       // Leave the new tab setting as-is.
+                       inputs.url.val('http://');
+                       inputs.title.val('');
+
+                       // Update save prompt.
+                       inputs.submit.val( wpLinkL10n.save );
+               },
+
+               searchInternalLinks : function() {
+                       var t = $(this), waiting,
+                               search = t.val();
+
+                       if ( search.length > 2 ) {
+                               rivers.recent.hide();
+                               rivers.search.show();
+
+                               // Don't search if the keypress didn't change the title.
+                               if ( wpLink.lastSearch == search )
+                                       return;
+
+                               wpLink.lastSearch = search;
+                               waiting = t.parent().find('.spinner').show();
+
+                               rivers.search.change( search );
+                               rivers.search.ajax( function(){ waiting.hide(); });
+                       } else {
+                               rivers.search.hide();
+                               rivers.recent.show();
+                       }
+               },
+
+               next : function() {
+                       rivers.search.next();
+                       rivers.recent.next();
+               },
+               prev : function() {
+                       rivers.search.prev();
+                       rivers.recent.prev();
+               },
+
+               keydown : function( event ) {
+                       var fn, key = $.ui.keyCode;
+
+                       switch( event.which ) {
+                               case key.UP:
+                                       fn = 'prev';
+                               case key.DOWN:
+                                       fn = fn || 'next';
+                                       clearInterval( wpLink.keyInterval );
+                                       wpLink[ fn ]();
+                                       wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity );
+                                       break;
+                               default:
+                                       return;
+                       }
+                       event.preventDefault();
+               },
+               keyup: function( event ) {
+                       var key = $.ui.keyCode;
+
+                       switch( event.which ) {
+                               case key.ESCAPE:
+                                       event.stopImmediatePropagation();
+                                       if ( ! $(document).triggerHandler( 'wp_CloseOnEscape', [{ event: event, what: 'wplink', cb: wpLink.close }] ) )
+                                               wpLink.close();
+
+                                       return false;
+                                       break;
+                               case key.UP:
+                               case key.DOWN:
+                                       clearInterval( wpLink.keyInterval );
+                                       break;
+                               default:
+                                       return;
+                       }
+                       event.preventDefault();
+               },
+
+               delayedCallback : function( func, delay ) {
+                       var timeoutTriggered, funcTriggered, funcArgs, funcContext;
+
+                       if ( ! delay )
+                               return func;
+
+                       setTimeout( function() {
+                               if ( funcTriggered )
+                                       return func.apply( funcContext, funcArgs );
+                               // Otherwise, wait.
+                               timeoutTriggered = true;
+                       }, delay);
+
+                       return function() {
+                               if ( timeoutTriggered )
+                                       return func.apply( this, arguments );
+                               // Otherwise, wait.
+                               funcArgs = arguments;
+                               funcContext = this;
+                               funcTriggered = true;
+                       };
+               },
+
+               toggleInternalLinking : function( event ) {
+                       var panel = $('#search-panel'),
+                               widget = inputs.dialog.wpdialog('widget'),
+                               // We're about to toggle visibility; it's currently the opposite
+                               visible = !panel.is(':visible'),
+                               win = $(window);
+
+                       $(this).toggleClass('toggle-arrow-active', visible);
+
+                       inputs.dialog.height('auto');
+                       panel.slideToggle( 300, function() {
+                               setUserSetting('wplink', visible ? '1' : '0');
+                               inputs[ visible ? 'search' : 'url' ].focus();
+
+                               // Move the box if the box is now expanded, was opened in a collapsed state,
+                               // and if it needs to be moved. (Judged by bottom not being positive or
+                               // bottom being smaller than top.)
+                               var scroll = win.scrollTop(),
+                                       top = widget.offset().top,
+                                       bottom = top + widget.outerHeight(),
+                                       diff = bottom - win.height();
+
+                               if ( diff > scroll ) {
+                                       widget.animate({'top': diff < top ?  top - diff : scroll }, 200);
+                               }
+                       });
+                       event.preventDefault();
+               }
+       }
+
+       River = function( element, search ) {
+               var self = this;
+               this.element = element;
+               this.ul = element.children('ul');
+               this.waiting = element.find('.river-waiting');
+
+               this.change( search );
+               this.refresh();
+
+               element.scroll( function(){ self.maybeLoad(); });
+               element.delegate('li', 'click', function(e){ self.select( $(this), e ); });
+       };
+
+       $.extend( River.prototype, {
+               refresh: function() {
+                       this.deselect();
+                       this.visible = this.element.is(':visible');
+               },
+               show: function() {
+                       if ( ! this.visible ) {
+                               this.deselect();
+                               this.element.show();
+                               this.visible = true;
+                       }
+               },
+               hide: function() {
+                       this.element.hide();
+                       this.visible = false;
+               },
+               // Selects a list item and triggers the river-select event.
+               select: function( li, event ) {
+                       var liHeight, elHeight, liTop, elTop;
+
+                       if ( li.hasClass('unselectable') || li == this.selected )
+                               return;
+
+                       this.deselect();
+                       this.selected = li.addClass('selected');
+                       // Make sure the element is visible
+                       liHeight = li.outerHeight();
+                       elHeight = this.element.height();
+                       liTop = li.position().top;
+                       elTop = this.element.scrollTop();
+
+                       if ( liTop < 0 ) // Make first visible element
+                               this.element.scrollTop( elTop + liTop );
+                       else if ( liTop + liHeight > elHeight ) // Make last visible element
+                               this.element.scrollTop( elTop + liTop - elHeight + liHeight );
+
+                       // Trigger the river-select event
+                       this.element.trigger('river-select', [ li, event, this ]);
+               },
+               deselect: function() {
+                       if ( this.selected )
+                               this.selected.removeClass('selected');
+                       this.selected = false;
+               },
+               prev: function() {
+                       if ( ! this.visible )
+                               return;
+
+                       var to;
+                       if ( this.selected ) {
+                               to = this.selected.prev('li');
+                               if ( to.length )
+                                       this.select( to );
+                       }
+               },
+               next: function() {
+                       if ( ! this.visible )
+                               return;
+
+                       var to = this.selected ? this.selected.next('li') : $('li:not(.unselectable):first', this.element);
+                       if ( to.length )
+                               this.select( to );
+               },
+               ajax: function( callback ) {
+                       var self = this,
+                               delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration,
+                               response = wpLink.delayedCallback( function( results, params ) {
+                                       self.process( results, params );
+                                       if ( callback )
+                                               callback( results, params );
+                               }, delay );
+
+                       this.query.ajax( response );
+               },
+               change: function( search ) {
+                       if ( this.query && this._search == search )
+                               return;
+
+                       this._search = search;
+                       this.query = new Query( search );
+                       this.element.scrollTop(0);
+               },
+               process: function( results, params ) {
+                       var list = '', alt = true, classes = '',
+                               firstPage = params.page == 1;
+
+                       if ( !results ) {
+                               if ( firstPage ) {
+                                       list += '<li class="unselectable"><span class="item-title"><em>'
+                                       + wpLinkL10n.noMatchesFound
+                                       + '</em></span></li>';
+                               }
+                       } else {
+                               $.each( results, function() {
+                                       classes = alt ? 'alternate' : '';
+                                       classes += this['title'] ? '' : ' no-title';
+                                       list += classes ? '<li class="' + classes + '">' : '<li>';
+                                       list += '<input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />';
+                                       list += '<span class="item-title">';
+                                       list += this['title'] ? this['title'] : wpLinkL10n.noTitle;
+                                       list += '</span><span class="item-info">' + this['info'] + '</span></li>';
+                                       alt = ! alt;
+                               });
+                       }
+
+                       this.ul[ firstPage ? 'html' : 'append' ]( list );
+               },
+               maybeLoad: function() {
+                       var self = this,
+                               el = this.element,
+                               bottom = el.scrollTop() + el.height();
+
+                       if ( ! this.query.ready() || bottom < this.ul.height() - wpLink.riverBottomThreshold )
+                               return;
+
+                       setTimeout(function() {
+                               var newTop = el.scrollTop(),
+                                       newBottom = newTop + el.height();
+
+                               if ( ! self.query.ready() || newBottom < self.ul.height() - wpLink.riverBottomThreshold )
+                                       return;
+
+                               self.waiting.show();
+                               el.scrollTop( newTop + self.waiting.outerHeight() );
+
+                               self.ajax( function() { self.waiting.hide(); });
+                       }, wpLink.timeToTriggerRiver );
+               }
+       });
+
+       Query = function( search ) {
+               this.page = 1;
+               this.allLoaded = false;
+               this.querying = false;
+               this.search = search;
+       };
+
+       $.extend( Query.prototype, {
+               ready: function() {
+                       return !( this.querying || this.allLoaded );
+               },
+               ajax: function( callback ) {
+                       var self = this,
+                               query = {
+                                       action : 'wp-link-ajax',
+                                       page : this.page,
+                                       '_ajax_linking_nonce' : inputs.nonce.val()
+                               };
+
+                       if ( this.search )
+                               query.search = this.search;
+
+                       this.querying = true;
+
+                       $.post( ajaxurl, query, function(r) {
+                               self.page++;
+                               self.querying = false;
+                               self.allLoaded = !r;
+                               callback( r, query );
+                       }, "json" );
+               }
+       });
+
+       $(document).ready( wpLink.init );
+})(jQuery);
diff --git a/wp-includes/js/wplink.min.js b/wp-includes/js/wplink.min.js
new file mode 100644 (file)
index 0000000..9d6a560
--- /dev/null
@@ -0,0 +1 @@
+var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog",zIndex:300000})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));if("_blank"==d.dom.getAttrib(g,"target")){b.openInNewTab.prop("checked",true)}b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,k,h,l,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}else{if(typeof g.selectionStart!=="undefined"){k=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(k,h);j=j+selection+"</a>";l=k+j.length;if(k==h){l-="</a>".length}g.value=g.value.substring(0,k)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=l}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.parent().find(".spinner").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
index b9f13face0d4120acf5ef663840b1d8b3ce46272..4c42134e7a7d689c22d66aeb049b3140c7436900 100644 (file)
 /**
  * You can override this in a plugin.
  *
+ * The wp_kses_allowed_html filter is more powerful and supplies context.
+ * CUSTOM_TAGS is not recommended and should be considered deprecated.
+ *
+ * @see wp_kses_allowed_html()
+ *
  * @since 1.2.0
  */
 if ( ! defined( 'CUSTOM_TAGS' ) )
@@ -51,50 +56,42 @@ if ( ! CUSTOM_TAGS ) {
        $allowedposttags = array(
                'address' => array(),
                'a' => array(
-                       'class' => true,
                        'href' => true,
-                       'id' => true,
-                       'title' => true,
                        'rel' => true,
                        'rev' => true,
                        'name' => true,
                        'target' => true,
                ),
-               'abbr' => array(
-                       'class' => true,
-                       'title' => true,
-               ),
-               'acronym' => array(
-                       'title' => true,
+               'abbr' => array(),
+               'acronym' => array(),
+               'area' => array(
+                       'alt' => true,
+                       'coords' => true,
+                       'href' => true,
+                       'nohref' => true,
+                       'shape' => true,
+                       'target' => true,
                ),
                'article' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'aside' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'b' => array(),
                'big' => array(),
                'blockquote' => array(
-                       'id' => true,
                        'cite' => true,
-                       'class' => true,
                        'lang' => true,
                        'xml:lang' => true,
                ),
-               'br' => array (
-                       'class' => true,
-               ),
+               'br' => array(),
                'button' => array(
                        'disabled' => true,
                        'name' => true,
@@ -103,24 +100,18 @@ if ( ! CUSTOM_TAGS ) {
                ),
                'caption' => array(
                        'align' => true,
-                       'class' => true,
                ),
-               'cite' => array (
-                       'class' => true,
+               'cite' => array(
                        'dir' => true,
                        'lang' => true,
-                       'title' => true,
-               ),
-               'code' => array (
-                       'style' => true,
                ),
+               'code' => array(),
                'col' => array(
                        'align' => true,
                        'char' => true,
                        'charoff' => true,
                        'span' => true,
                        'dir' => true,
-                       'style' => true,
                        'valign' => true,
                        'width' => true,
                ),
@@ -130,19 +121,15 @@ if ( ! CUSTOM_TAGS ) {
                'dd' => array(),
                'details' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
                        'open' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'div' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'dl' => array(),
@@ -151,18 +138,14 @@ if ( ! CUSTOM_TAGS ) {
                'fieldset' => array(),
                'figure' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'figcaption' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'font' => array(
@@ -172,10 +155,8 @@ if ( ! CUSTOM_TAGS ) {
                ),
                'footer' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'form' => array(
@@ -189,59 +170,36 @@ if ( ! CUSTOM_TAGS ) {
                ),
                'h1' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
-               'h2' => array (
+               'h2' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
-               'h3' => array (
+               'h3' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
-               'h4' => array (
+               'h4' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
-               'h5' => array (
+               'h5' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
-               'h6' => array (
+               'h6' => array(
                        'align' => true,
-                       'class' => true,
-                       'id'    => true,
-                       'style' => true,
                ),
                'header' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'hgroup' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
-               'hr' => array (
+               'hr' => array(
                        'align' => true,
-                       'class' => true,
                        'noshade' => true,
                        'size' => true,
                        'width' => true,
@@ -251,13 +209,12 @@ if ( ! CUSTOM_TAGS ) {
                        'alt' => true,
                        'align' => true,
                        'border' => true,
-                       'class' => true,
                        'height' => true,
                        'hspace' => true,
                        'longdesc' => true,
                        'vspace' => true,
                        'src' => true,
-                       'style' => true,
+                       'usemap' => true,
                        'width' => true,
                ),
                'ins' => array(
@@ -271,65 +228,54 @@ if ( ! CUSTOM_TAGS ) {
                'legend' => array(
                        'align' => true,
                ),
-               'li' => array (
+               'li' => array(
                        'align' => true,
-                       'class' => true,
                ),
-               'menu' => array (
-                       'class' => true,
-                       'style' => true,
+               'map' => array(
+                       'name' => true,
+               ),
+               'menu' => array(
                        'type' => true,
                ),
                'nav' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'p' => array(
-                       'class' => true,
                        'align' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'pre' => array(
-                       'style' => true,
                        'width' => true,
                ),
                'q' => array(
                        'cite' => true,
                ),
                's' => array(),
-               'span' => array (
-                       'class' => true,
+               'span' => array(
                        'dir' => true,
                        'align' => true,
                        'lang' => true,
-                       'style' => true,
-                       'title' => true,
                        'xml:lang' => true,
                ),
                'section' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
+               'small' => array(),
                'strike' => array(),
                'strong' => array(),
                'sub' => array(),
                'summary' => array(
                        'align' => true,
-                       'class' => true,
                        'dir' => true,
                        'lang' => true,
-                       'style' => true,
                        'xml:lang' => true,
                ),
                'sup' => array(),
@@ -339,11 +285,8 @@ if ( ! CUSTOM_TAGS ) {
                        'border' => true,
                        'cellpadding' => true,
                        'cellspacing' => true,
-                       'class' => true,
                        'dir' => true,
-                       'id' => true,
                        'rules' => true,
-                       'style' => true,
                        'summary' => true,
                        'width' => true,
                ),
@@ -360,7 +303,6 @@ if ( ! CUSTOM_TAGS ) {
                        'bgcolor' => true,
                        'char' => true,
                        'charoff' => true,
-                       'class' => true,
                        'colspan' => true,
                        'dir' => true,
                        'headers' => true,
@@ -368,7 +310,6 @@ if ( ! CUSTOM_TAGS ) {
                        'nowrap' => true,
                        'rowspan' => true,
                        'scope' => true,
-                       'style' => true,
                        'valign' => true,
                        'width' => true,
                ),
@@ -382,7 +323,6 @@ if ( ! CUSTOM_TAGS ) {
                'tfoot' => array(
                        'align' => true,
                        'char' => true,
-                       'class' => true,
                        'charoff' => true,
                        'valign' => true,
                ),
@@ -393,7 +333,6 @@ if ( ! CUSTOM_TAGS ) {
                        'bgcolor' => true,
                        'char' => true,
                        'charoff' => true,
-                       'class' => true,
                        'colspan' => true,
                        'headers' => true,
                        'height' => true,
@@ -407,7 +346,6 @@ if ( ! CUSTOM_TAGS ) {
                        'align' => true,
                        'char' => true,
                        'charoff' => true,
-                       'class' => true,
                        'valign' => true,
                ),
                'title' => array(),
@@ -416,21 +354,15 @@ if ( ! CUSTOM_TAGS ) {
                        'bgcolor' => true,
                        'char' => true,
                        'charoff' => true,
-                       'class' => true,
-                       'style' => true,
                        'valign' => true,
                ),
                'tt' => array(),
                'u' => array(),
-               'ul' => array (
-                       'class' => true,
-                       'style' => true,
+               'ul' => array(
                        'type' => true,
                ),
-               'ol' => array (
-                       'class' => true,
+               'ol' => array(
                        'start' => true,
-                       'style' => true,
                        'type' => true,
                ),
                'var' => array(),
@@ -457,29 +389,18 @@ if ( ! CUSTOM_TAGS ) {
                'blockquote' => array(
                        'cite' => true,
                ),
-               //      'br' => array(),
                'cite' => array(),
                'code' => array(),
                'del' => array(
                        'datetime' => true,
                ),
-               //      'dd' => array(),
-               //      'dl' => array(),
-               //      'dt' => array(),
-               'em' => array (), 'i' => array (),
-               //      'ins' => array('datetime' => array(), 'cite' => array()),
-               //      'li' => array(),
-               //      'ol' => array(),
-               //      'p' => array(),
+               'em' => array(),
+               'i' => array(),
                'q' => array(
                        'cite' => true,
                ),
                'strike' => array(),
                'strong' => array(),
-               //      'sub' => array(),
-               //      'sup' => array(),
-               //      'u' => array(),
-               //      'ul' => array(),
        );
 
        $allowedentitynames = array(
@@ -525,6 +446,11 @@ if ( ! CUSTOM_TAGS ) {
                'sdot',    'lceil',  'rceil',   'lfloor', 'rfloor', 'lang',
                'rang',    'loz',    'spades',  'clubs',  'hearts', 'diams',
        );
+
+       $allowedposttags = array_map( '_wp_add_global_attributes', $allowedposttags );
+} else {
+       $allowedtags = wp_kses_array_lc( $allowedtags );
+       $allowedposttags = wp_kses_array_lc( $allowedposttags );
 }
 
 /**
@@ -547,15 +473,51 @@ if ( ! CUSTOM_TAGS ) {
  * @param array $allowed_protocols Optional. Allowed protocol in links.
  * @return string Filtered content with only allowed HTML elements
  */
-function wp_kses($string, $allowed_html, $allowed_protocols = array ()) {
+function wp_kses( $string, $allowed_html, $allowed_protocols = array() ) {
        if ( empty( $allowed_protocols ) )
                $allowed_protocols = wp_allowed_protocols();
        $string = wp_kses_no_null($string);
        $string = wp_kses_js_entities($string);
        $string = wp_kses_normalize_entities($string);
-       $allowed_html_fixed = wp_kses_array_lc($allowed_html);
-       $string = wp_kses_hook($string, $allowed_html_fixed, $allowed_protocols); // WP changed the order of these funcs and added args to wp_kses_hook
-       return wp_kses_split($string, $allowed_html_fixed, $allowed_protocols);
+       $string = wp_kses_hook($string, $allowed_html, $allowed_protocols); // WP changed the order of these funcs and added args to wp_kses_hook
+       return wp_kses_split($string, $allowed_html, $allowed_protocols);
+}
+
+/**
+ * Return a list of allowed tags and attributes for a given context.
+ *
+ * @since 3.5.0
+ *
+ * @param string $context The context for which to retrieve tags. Allowed values are
+ *  post | strip | data | entities or the name of a field filter such as pre_user_description.
+ * @return array List of allowed tags and their allowed attributes.
+ */
+function wp_kses_allowed_html( $context = '' ) {
+       global $allowedposttags, $allowedtags, $allowedentitynames;
+
+       if ( is_array( $context ) )
+               return apply_filters( 'wp_kses_allowed_html', $context, 'explicit' );
+
+       switch ( $context ) {
+               case 'post':
+                       return apply_filters( 'wp_kses_allowed_html', $allowedposttags, $context );
+                       break;
+               case 'user_description':
+               case 'pre_user_description':
+                       $tags = $allowedtags;
+                       $tags['a']['rel'] = true;
+                       return apply_filters( 'wp_kses_allowed_html', $tags, $context );
+                       break;
+               case 'strip':
+                       return apply_filters( 'wp_kses_allowed_html', array(), $context );
+                       break;
+               case 'entities':
+                       return apply_filters( 'wp_kses_allowed_html', $allowedentitynames, $context);
+                       break;
+               case 'data':
+               default:
+                       return apply_filters( 'wp_kses_allowed_html', $allowedtags, $context );
+       }
 }
 
 /**
@@ -571,7 +533,7 @@ function wp_kses($string, $allowed_html, $allowed_protocols = array ()) {
  * @param array $allowed_protocols Allowed protocol in links
  * @return string Filtered content through 'pre_kses' hook
  */
-function wp_kses_hook($string, $allowed_html, $allowed_protocols) {
+function wp_kses_hook( $string, $allowed_html, $allowed_protocols ) {
        $string = apply_filters('pre_kses', $string, $allowed_html, $allowed_protocols);
        return $string;
 }
@@ -599,7 +561,7 @@ function wp_kses_version() {
  * @param array $allowed_protocols Allowed protocols to keep
  * @return string Content with fixed HTML tags
  */
-function wp_kses_split($string, $allowed_html, $allowed_protocols) {
+function wp_kses_split( $string, $allowed_html, $allowed_protocols ) {
        global $pass_allowed_html, $pass_allowed_protocols;
        $pass_allowed_html = $allowed_html;
        $pass_allowed_protocols = $allowed_protocols;
@@ -667,6 +629,9 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
        $elem = $matches[2];
        $attrlist = $matches[3];
 
+       if ( ! is_array( $allowed_html ) )
+               $allowed_html = wp_kses_allowed_html( $allowed_html );
+
        if ( ! isset($allowed_html[strtolower($elem)]) )
                return '';
        # They are using a not allowed HTML element
@@ -698,6 +663,9 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
 function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
        # Is there a closing XHTML slash at the end of the attributes?
 
+       if ( ! is_array( $allowed_html ) )
+               $allowed_html = wp_kses_allowed_html( $allowed_html );
+
        $xhtml_slash = '';
        if (preg_match('%\s*/\s*$%', $attr))
                $xhtml_slash = ' /';
@@ -776,7 +744,7 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
  * @return array List of attributes after parsing
  */
 function wp_kses_hair($attr, $allowed_protocols) {
-       $attrarr = array ();
+       $attrarr = array();
        $mode = 0;
        $attrname = '';
        $uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action');
@@ -1285,9 +1253,8 @@ function _wp_kses_decode_entities_chr_hexdec( $match ) {
  * @param string $data Content to filter, expected to be escaped with slashes
  * @return string Filtered content
  */
-function wp_filter_kses($data) {
-       global $allowedtags;
-       return addslashes( wp_kses(stripslashes( $data ), $allowedtags) );
+function wp_filter_kses( $data ) {
+       return addslashes( wp_kses( stripslashes( $data ), current_filter() ) );
 }
 
 /**
@@ -1299,9 +1266,8 @@ function wp_filter_kses($data) {
  * @param string $data Content to filter, expected to not be escaped
  * @return string Filtered content
  */
-function wp_kses_data($data) {
-       global $allowedtags;
-       return wp_kses( $data , $allowedtags );
+function wp_kses_data( $data ) {
+       return wp_kses( $data , current_filter() );
 }
 
 /**
@@ -1311,14 +1277,12 @@ function wp_kses_data($data) {
  * data from forms.
  *
  * @since 2.0.0
- * @uses $allowedposttags
  *
  * @param string $data Post content to filter, expected to be escaped with slashes
  * @return string Filtered post content with allowed HTML tags and attributes intact.
  */
 function wp_filter_post_kses($data) {
-       global $allowedposttags;
-       return addslashes ( wp_kses(stripslashes( $data ), $allowedposttags) );
+       return addslashes ( wp_kses( stripslashes( $data ), 'post' ) );
 }
 
 /**
@@ -1328,14 +1292,12 @@ function wp_filter_post_kses($data) {
  * data from forms.
  *
  * @since 2.9.0
- * @uses $allowedposttags
  *
  * @param string $data Post content to filter
  * @return string Filtered post content with allowed HTML tags and attributes intact.
  */
 function wp_kses_post($data) {
-       global $allowedposttags;
-       return wp_kses( $data , $allowedposttags );
+       return wp_kses( $data , 'post' );
 }
 
 /**
@@ -1346,8 +1308,8 @@ function wp_kses_post($data) {
  * @param string $data Content to strip all HTML from
  * @return string Filtered content without any HTML
  */
-function wp_filter_nohtml_kses($data) {
-       return addslashes ( wp_kses(stripslashes( $data ), array()) );
+function wp_filter_nohtml_kses( $data ) {
+       return addslashes ( wp_kses( stripslashes( $data ), 'strip' ) );
 }
 
 /**
@@ -1483,3 +1445,29 @@ function safecss_filter_attr( $css, $deprecated = '' ) {
 
        return $css;
 }
+
+/**
+ * Helper function to add global attributes to a tag in the allowed html list.
+ *
+ * @since 3.5.0
+ * @access private
+ *
+ * @param array $value An array of attributes.
+ * @return array The array of attributes with global attributes added.
+ */
+function _wp_add_global_attributes( $value ) {
+       $global_attributes = array(
+               'class' => true,
+               'id' => true,
+               'style' => true,
+               'title' => true,
+       );
+
+       if ( true === $value )
+               $value = array();
+
+       if ( is_array( $value ) )
+               return array_merge( $value, $global_attributes );
+
+       return $value;
+}
index 7ec3c426aa54e7d8367fbc611d57885a2f3bcadc..750e08dec4afa6ebc3043333f4ca28769aa4e240 100644 (file)
@@ -65,7 +65,7 @@ function get_locale() {
  * @return string Translated text
  */
 function translate( $text, $domain = 'default' ) {
-       $translations = &get_translations_for_domain( $domain );
+       $translations = get_translations_for_domain( $domain );
        return apply_filters( 'gettext', $translations->translate( $text ), $text, $domain );
 }
 
@@ -78,7 +78,7 @@ function before_last_bar( $string ) {
 }
 
 function translate_with_gettext_context( $text, $context, $domain = 'default' ) {
-       $translations = &get_translations_for_domain( $domain );
+       $translations = get_translations_for_domain( $domain );
        return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain );
 }
 
@@ -236,7 +236,7 @@ function esc_html_x( $single, $context, $domain = 'default' ) {
  * @return string Either $single or $plural translated text
  */
 function _n( $single, $plural, $number, $domain = 'default' ) {
-       $translations = &get_translations_for_domain( $domain );
+       $translations = get_translations_for_domain( $domain );
        $translation = $translations->translate_plural( $single, $plural, $number );
        return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
 }
@@ -249,7 +249,7 @@ function _n( $single, $plural, $number, $domain = 'default' ) {
  *
  */
 function _nx($single, $plural, $number, $context, $domain = 'default') {
-       $translations = &get_translations_for_domain( $domain );
+       $translations = get_translations_for_domain( $domain );
        $translation = $translations->translate_plural( $single, $plural, $number, $context );
        return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, $domain );
 }
@@ -459,9 +459,16 @@ function load_muplugin_textdomain( $domain, $mu_plugin_rel_path = '' ) {
 function load_theme_textdomain( $domain, $path = false ) {
        $locale = apply_filters( 'theme_locale', get_locale(), $domain );
 
-       $path = ( empty( $path ) ) ? get_template_directory() : $path;
+       if ( ! $path )
+               $path = get_template_directory();
 
-       $mofile = "$path/$locale.mo";
+       // Load the textdomain from the Theme provided location, or theme directory first
+       $mofile = "{$path}/{$locale}.mo";
+       if ( $loaded = load_textdomain($domain, $mofile) )
+               return $loaded;
+
+       // Else, load textdomain from the Language directory
+       $mofile = WP_LANG_DIR . "/themes/{$domain}-{$locale}.mo";
        return load_textdomain($domain, $mofile);
 }
 
@@ -478,12 +485,9 @@ function load_theme_textdomain( $domain, $path = false ) {
  * @param string $domain Unique identifier for retrieving translated strings
  */
 function load_child_theme_textdomain( $domain, $path = false ) {
-       $locale = apply_filters( 'theme_locale', get_locale(), $domain );
-
-       $path = ( empty( $path ) ) ? get_stylesheet_directory() : $path;
-
-       $mofile = "$path/$locale.mo";
-       return load_textdomain($domain, $mofile);
+       if ( ! $path )
+               $path = get_stylesheet_directory();
+       return load_theme_textdomain( $domain, $path );
 }
 
 /**
@@ -493,7 +497,7 @@ function load_child_theme_textdomain( $domain, $path = false ) {
  * @param string $domain
  * @return object A Translation instance
  */
-function &get_translations_for_domain( $domain ) {
+function get_translations_for_domain( $domain ) {
        global $l10n;
        if ( !isset( $l10n[$domain] ) ) {
                $l10n[$domain] = new NOOP_Translations;
index ae8a9f136c39f68e1054e4ee8e45f4522ff7d2bc..de76f45aae3b5d8d0f05f2eb573f52266d809190 100644 (file)
@@ -54,11 +54,11 @@ function user_trailingslashit($string, $type_of_url = '') {
  *
  * @param string $mode Permalink mode can be either 'title', 'id', or default, which is 'id'.
  */
-function permalink_anchor($mode = 'id') {
-       global $post;
-       switch ( strtolower($mode) ) {
+function permalink_anchor( $mode = 'id' ) {
+       $post = get_post();
+       switch ( strtolower( $mode ) ) {
                case 'title':
-                       $title = sanitize_title($post->post_title) . '-' . $post->ID;
+                       $title = sanitize_title( $post->post_title ) . '-' . $post->ID;
                        echo '<a id="'.$title.'"></a>';
                        break;
                case 'id':
@@ -77,7 +77,7 @@ function permalink_anchor($mode = 'id') {
  * @param bool $leavename Optional, defaults to false. Whether to keep post name or page name.
  * @return string
  */
-function get_permalink($id = 0, $leavename = false) {
+function get_permalink( $id = 0, $leavename = false ) {
        $rewritecode = array(
                '%year%',
                '%monthnum%',
@@ -96,7 +96,7 @@ function get_permalink($id = 0, $leavename = false) {
                $post = $id;
                $sample = true;
        } else {
-               $post = &get_post($id);
+               $post = get_post($id);
                $sample = false;
        }
 
@@ -106,7 +106,7 @@ function get_permalink($id = 0, $leavename = false) {
        if ( $post->post_type == 'page' )
                return get_page_link($post->ID, $leavename, $sample);
        elseif ( $post->post_type == 'attachment' )
-               return get_attachment_link($post->ID);
+               return get_attachment_link( $post->ID, $leavename );
        elseif ( in_array($post->post_type, get_post_types( array('_builtin' => false) ) ) )
                return get_post_permalink($post->ID, $leavename, $sample);
 
@@ -122,8 +122,10 @@ function get_permalink($id = 0, $leavename = false) {
                        $cats = get_the_category($post->ID);
                        if ( $cats ) {
                                usort($cats, '_usort_terms_by_ID'); // order by ID
-                               $category = $cats[0]->slug;
-                               if ( $parent = $cats[0]->parent )
+                               $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post );
+                               $category_object = get_term( $category_object, 'category' );
+                               $category = $category_object->slug;
+                               if ( $parent = $category_object->parent )
                                        $category = get_category_parents($parent, false, '/', true) . $category;
                        }
                        // show default category in permalinks, without
@@ -176,7 +178,7 @@ function get_permalink($id = 0, $leavename = false) {
 function get_post_permalink( $id = 0, $leavename = false, $sample = false ) {
        global $wp_rewrite;
 
-       $post = &get_post($id);
+       $post = get_post($id);
 
        if ( is_wp_error( $post ) )
                return $post;
@@ -230,24 +232,20 @@ function post_permalink( $post_id = 0, $deprecated = '' ) {
  *
  * @since 1.5.0
  *
- * @param int $id Optional. Post ID.
+ * @param mixed $post Optional. Post ID or object.
  * @param bool $leavename Optional, defaults to false. Whether to keep page name.
  * @param bool $sample Optional, defaults to false. Is it a sample permalink.
  * @return string
  */
-function get_page_link( $id = false, $leavename = false, $sample = false ) {
-       global $post;
-
-       $id = (int) $id;
-       if ( !$id )
-               $id = (int) $post->ID;
+function get_page_link( $post = false, $leavename = false, $sample = false ) {
+       $post = get_post( $post );
 
-       if ( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') )
+       if ( 'page' == get_option( 'show_on_front' ) && $post->ID == get_option( 'page_on_front' ) )
                $link = home_url('/');
        else
-               $link = _get_page_link( $id , $leavename, $sample );
+               $link = _get_page_link( $post, $leavename, $sample );
 
-       return apply_filters('page_link', $link, $id, $sample);
+       return apply_filters( 'page_link', $link, $post->ID, $sample );
 }
 
 /**
@@ -258,18 +256,15 @@ function get_page_link( $id = false, $leavename = false, $sample = false ) {
  * @since 2.1.0
  * @access private
  *
- * @param int $id Optional. Post ID.
+ * @param mixed $post Optional. Post ID or object.
  * @param bool $leavename Optional. Leave name.
  * @param bool $sample Optional. Sample permalink.
  * @return string
  */
-function _get_page_link( $id = false, $leavename = false, $sample = false ) {
-       global $post, $wp_rewrite;
+function _get_page_link( $post = false, $leavename = false, $sample = false ) {
+       global $wp_rewrite;
 
-       if ( !$id )
-               $id = (int) $post->ID;
-       else
-               $post = &get_post($id);
+       $post = get_post( $post );
 
        $draft_or_pending = in_array( $post->post_status, array( 'draft', 'pending', 'auto-draft' ) );
 
@@ -277,16 +272,16 @@ function _get_page_link( $id = false, $leavename = false, $sample = false ) {
 
        if ( !empty($link) && ( ( isset($post->post_status) && !$draft_or_pending ) || $sample ) ) {
                if ( ! $leavename ) {
-                       $link = str_replace('%pagename%', get_page_uri($id), $link);
+                       $link = str_replace('%pagename%', get_page_uri( $post ), $link);
                }
 
                $link = home_url($link);
                $link = user_trailingslashit($link, 'page');
        } else {
-               $link = home_url("?page_id=$id");
+               $link = home_url( '?page_id=' . $post->ID );
        }
 
-       return apply_filters( '_get_page_link', $link, $id );
+       return apply_filters( '_get_page_link', $link, $post->ID );
 }
 
 /**
@@ -296,38 +291,40 @@ function _get_page_link( $id = false, $leavename = false, $sample = false ) {
  *
  * @since 2.0.0
  *
- * @param int $id Optional. Post ID.
+ * @param mixed $post Optional. Post ID or object.
+ * @param bool $leavename Optional. Leave name.
  * @return string
  */
-function get_attachment_link($id = false) {
-       global $post, $wp_rewrite;
+function get_attachment_link( $post = null, $leavename = false ) {
+       global $wp_rewrite;
 
        $link = false;
 
-       if ( ! $id)
-               $id = (int) $post->ID;
+       $post = get_post( $post );
 
-       $object = get_post($id);
-       if ( $wp_rewrite->using_permalinks() && ($object->post_parent > 0) && ($object->post_parent != $id) ) {
-               $parent = get_post($object->post_parent);
+       if ( $wp_rewrite->using_permalinks() && ( $post->post_parent > 0 ) && ( $post->post_parent != $post->ID ) ) {
+               $parent = get_post($post->post_parent);
                if ( 'page' == $parent->post_type )
-                       $parentlink = _get_page_link( $object->post_parent ); // Ignores page_on_front
+                       $parentlink = _get_page_link( $post->post_parent ); // Ignores page_on_front
                else
-                       $parentlink = get_permalink( $object->post_parent );
+                       $parentlink = get_permalink( $post->post_parent );
 
-               if ( is_numeric($object->post_name) || false !== strpos(get_option('permalink_structure'), '%category%') )
-                       $name = 'attachment/' . $object->post_name; // <permalink>/<int>/ is paged so we use the explicit attachment marker
+               if ( is_numeric($post->post_name) || false !== strpos(get_option('permalink_structure'), '%category%') )
+                       $name = 'attachment/' . $post->post_name; // <permalink>/<int>/ is paged so we use the explicit attachment marker
                else
-                       $name = $object->post_name;
+                       $name = $post->post_name;
 
                if ( strpos($parentlink, '?') === false )
-                       $link = user_trailingslashit( trailingslashit($parentlink) . $name );
+                       $link = user_trailingslashit( trailingslashit($parentlink) . '%postname%' );
+
+               if ( ! $leavename )
+                       $link = str_replace( '%postname%', $name, $link );
        }
 
        if ( ! $link )
-               $link = home_url( "/?attachment_id=$id" );
+               $link = home_url( '/?attachment_id=' . $post->ID );
 
-       return apply_filters('attachment_link', $link, $id);
+       return apply_filters( 'attachment_link', $link, $post->ID );
 }
 
 /**
@@ -487,9 +484,9 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
        } else {
                $type = get_post_field('post_type', $post_id);
                if ( 'page' == $type )
-                       $url = home_url("?feed=$feed&amp;page_id=$post_id");
+                       $url = add_query_arg( array( 'feed' => $feed, 'page_id' => $post_id ), home_url( '/' ) );
                else
-                       $url = home_url("?feed=$feed&amp;p=$post_id");
+                       $url = add_query_arg( array( 'feed' => $feed, 'p' => $post_id ), home_url( '/' ) );
        }
 
        return apply_filters('post_comments_feed_link', $url);
@@ -512,7 +509,7 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
  * @return string Link to the comment feed for the current post.
 */
 function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) {
-       $url = get_post_comments_feed_link($post_id, $feed);
+       $url = esc_url( get_post_comments_feed_link( $post_id, $feed ) );
        if ( empty($link_text) )
                $link_text = __('Comments Feed');
 
@@ -624,7 +621,7 @@ function get_term_feed_link( $term_id, $taxonomy = 'category', $feed = '' ) {
        if ( 'category' == $taxonomy )
                $link = apply_filters( 'category_feed_link', $link, $feed );
        elseif ( 'post_tag' == $taxonomy )
-               $link = apply_filters( 'category_feed_link', $link, $feed );
+               $link = apply_filters( 'tag_feed_link', $link, $feed );
        else
                $link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
 
@@ -896,7 +893,7 @@ function get_post_type_archive_feed_link( $post_type, $feed = '' ) {
  * @return string
  */
 function get_edit_post_link( $id = 0, $context = 'display' ) {
-       if ( !$post = &get_post( $id ) )
+       if ( ! $post = get_post( $id ) )
                return;
 
        if ( 'display' == $context )
@@ -925,7 +922,7 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
  * @param int $id Optional. Post ID.
  */
 function edit_post_link( $link = null, $before = '', $after = '', $id = 0 ) {
-       if ( !$post = &get_post( $id ) )
+       if ( !$post = get_post( $id ) )
                return;
 
        if ( !$url = get_edit_post_link( $post->ID ) )
@@ -955,7 +952,7 @@ function get_delete_post_link( $id = 0, $deprecated = '', $force_delete = false
        if ( ! empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '3.0' );
 
-       if ( !$post = &get_post( $id ) )
+       if ( !$post = get_post( $id ) )
                return;
 
        $post_type_object = get_post_type_object( $post->post_type );
@@ -969,7 +966,7 @@ function get_delete_post_link( $id = 0, $deprecated = '', $force_delete = false
 
        $delete_link = add_query_arg( 'action', $action, admin_url( sprintf( $post_type_object->_edit_link, $post->ID ) ) );
 
-       return apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-{$post->post_type}_{$post->ID}" ), $post->ID, $force_delete );
+       return apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-post_{$post->ID}" ), $post->ID, $force_delete );
 }
 
 /**
@@ -981,7 +978,7 @@ function get_delete_post_link( $id = 0, $deprecated = '', $force_delete = false
  * @return string
  */
 function get_edit_comment_link( $comment_id = 0 ) {
-       $comment = &get_comment( $comment_id );
+       $comment = get_comment( $comment_id );
 
        if ( !current_user_can( 'edit_comment', $comment->comment_ID ) )
                return;
@@ -1054,6 +1051,34 @@ function edit_bookmark_link( $link = '', $before = '', $after = '', $bookmark =
        echo $before . apply_filters( 'edit_bookmark_link', $link, $bookmark->link_id ) . $after;
 }
 
+/**
+ * Retrieve edit user link
+ *
+ * @since 3.5.0
+ *
+ * @param int $user_id Optional. User ID. Defaults to the current user.
+ * @return string URL to edit user page or empty string.
+ */
+function get_edit_user_link( $user_id = null ) {
+       if ( ! $user_id )
+               $user_id = get_current_user_id();
+
+       if ( empty( $user_id ) || ! current_user_can( 'edit_user', $user_id ) )
+               return '';
+
+       $user = get_userdata( $user_id );
+
+       if ( ! $user )
+               return '';
+
+       if ( get_current_user_id() == $user->ID )
+               $link = get_edit_profile_url( $user->ID );
+       else
+               $link = add_query_arg( 'user_id', $user->ID, self_admin_url( 'user-edit.php' ) );
+
+       return apply_filters( 'get_edit_user_link', $link, $user->ID );
+}
+
 // Navigation links
 
 /**
@@ -1095,9 +1120,9 @@ function get_next_post($in_same_cat = false, $excluded_categories = '') {
  * @return mixed Post object if successful. Null if global $post is not set. Empty string if no corresponding post exists.
  */
 function get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $previous = true ) {
-       global $post, $wpdb;
+       global $wpdb;
 
-       if ( empty( $post ) )
+       if ( ! $post = get_post() )
                return null;
 
        $current_post_date = $post->post_date;
@@ -1108,7 +1133,11 @@ function get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $pr
                $join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
 
                if ( $in_same_cat ) {
+                       if ( ! is_object_in_taxonomy( $post->post_type, 'category' ) )
+                               return '';
                        $cat_array = wp_get_object_terms($post->ID, 'category', array('fields' => 'ids'));
+                       if ( ! $cat_array || is_wp_error( $cat_array ) )
+                               return '';
                        $join .= " AND tt.taxonomy = 'category' AND tt.term_id IN (" . implode(',', $cat_array) . ")";
                }
 
@@ -1145,17 +1174,24 @@ function get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $pr
        $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date, $post->post_type), $in_same_cat, $excluded_categories );
        $sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
 
-       $query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
+       $query = "SELECT p.id FROM $wpdb->posts AS p $join $where $sort";
        $query_key = 'adjacent_post_' . md5($query);
        $result = wp_cache_get($query_key, 'counts');
-       if ( false !== $result )
+       if ( false !== $result ) {
+               if ( $result )
+                       $result = get_post( $result );
                return $result;
+       }
 
-       $result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
+       $result = $wpdb->get_var( $query );
        if ( null === $result )
                $result = '';
 
        wp_cache_set($query_key, $result, 'counts');
+
+       if ( $result )
+               $result = get_post( $result );
+
        return $result;
 }
 
@@ -1173,20 +1209,22 @@ function get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $pr
  * @return string
  */
 function get_adjacent_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '', $previous = true) {
-       if ( $previous && is_attachment() && is_object( $GLOBALS['post'] ) )
-               $post = & get_post($GLOBALS['post']->post_parent);
+       if ( $previous && is_attachment() && $post = get_post() )
+               $post = get_post( $post->post_parent );
        else
-               $post = get_adjacent_post($in_same_cat,$excluded_categories,$previous);
+               $post = get_adjacent_post( $in_same_cat, $excluded_categories, $previous );
 
        if ( empty($post) )
                return;
 
        if ( empty($post->post_title) )
-               $post->post_title = $previous ? __('Previous Post') : __('Next Post');
+               $post_title = $previous ? __('Previous Post') : __('Next Post');
+       else
+               $post_title = $post->post_title;
 
        $date = mysql2date(get_option('date_format'), $post->post_date);
 
-       $title = str_replace('%title', $post->post_title, $title);
+       $title = str_replace('%title', $post_title, $title);
        $title = str_replace('%date', $date, $title);
        $title = apply_filters('the_title', $title, $post->ID);
 
@@ -1265,9 +1303,8 @@ function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_c
  * @return object
  */
 function get_boundary_post( $in_same_cat = false, $excluded_categories = '', $start = true ) {
-       global $post;
-
-       if ( empty($post) || ! is_single() || is_attachment() )
+       $post = get_post();
+       if ( ! $post || ! is_single() || is_attachment() )
                return null;
 
        $cat_array = array();
@@ -1337,33 +1374,35 @@ function next_post_link($format='%link &raquo;', $link='%title', $in_same_cat =
  * @param array|string $excluded_categories Optional. Array or comma-separated list of excluded category IDs.
  * @param bool $previous Optional, default is true. Whether to display link to previous or next post.
  */
-function adjacent_post_link($format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true) {
+function adjacent_post_link( $format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true ) {
        if ( $previous && is_attachment() )
-               $post = & get_post($GLOBALS['post']->post_parent);
+               $post = get_post( get_post()->post_parent );
        else
-               $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous);
-
-       if ( !$post )
-               return;
+               $post = get_adjacent_post( $in_same_cat, $excluded_categories, $previous );
 
-       $title = $post->post_title;
+       if ( ! $post ) {
+               $output = '';
+       } else {
+               $title = $post->post_title;
 
-       if ( empty($post->post_title) )
-               $title = $previous ? __('Previous Post') : __('Next Post');
+               if ( empty( $post->post_title ) )
+                       $title = $previous ? __( 'Previous Post' ) : __( 'Next Post' );
 
-       $title = apply_filters('the_title', $title, $post->ID);
-       $date = mysql2date(get_option('date_format'), $post->post_date);
-       $rel = $previous ? 'prev' : 'next';
+               $title = apply_filters( 'the_title', $title, $post->ID );
+               $date = mysql2date( get_option( 'date_format' ), $post->post_date );
+               $rel = $previous ? 'prev' : 'next';
 
-       $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'">';
-       $link = str_replace('%title', $title, $link);
-       $link = str_replace('%date', $date, $link);
-       $link = $string . $link . '</a>';
+               $string = '<a href="' . get_permalink( $post ) . '" rel="'.$rel.'">';
+               $inlink = str_replace( '%title', $title, $link );
+               $inlink = str_replace( '%date', $date, $inlink );
+               $inlink = $string . $inlink . '</a>';
 
-       $format = str_replace('%link', $link, $format);
+               $output = str_replace( '%link', $inlink, $format );
+       }
 
        $adjacent = $previous ? 'previous' : 'next';
-       echo apply_filters( "{$adjacent}_post_link", $format, $link );
+
+       echo apply_filters( "{$adjacent}_post_link", $output, $format, $link, $post );
 }
 
 /**
@@ -1385,9 +1424,9 @@ function get_pagenum_link($pagenum = 1, $escape = true ) {
 
        $home_root = parse_url(home_url());
        $home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
-       $home_root = preg_quote( trailingslashit( $home_root ), '|' );
+       $home_root = preg_quote( $home_root, '|' );
 
-       $request = preg_replace('|^'. $home_root . '|', '', $request);
+       $request = preg_replace('|^'. $home_root . '|i', '', $request);
        $request = preg_replace('|^/+|', '', $request);
 
        if ( !$wp_rewrite->using_permalinks() || is_admin() ) {
@@ -1410,7 +1449,7 @@ function get_pagenum_link($pagenum = 1, $escape = true ) {
                }
 
                $request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request);
-               $request = preg_replace( '|^index\.php|', '', $request);
+               $request = preg_replace( '|^index\.php|i', '', $request);
                $request = ltrim($request, '/');
 
                $base = trailingslashit( get_bloginfo( 'url' ) );
@@ -1646,11 +1685,11 @@ function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
  * @return string
  */
 function get_comments_pagenum_link( $pagenum = 1, $max_page = 0 ) {
-       global $post, $wp_rewrite;
+       global $wp_rewrite;
 
        $pagenum = (int) $pagenum;
 
-       $result = get_permalink( $post->ID );
+       $result = get_permalink();
 
        if ( 'newest' == get_option('default_comments_page') ) {
                if ( $pagenum != $max_page ) {
@@ -1842,7 +1881,7 @@ function get_shortcut_link() {
  * @return string Home url link with optional path appended.
 */
 function home_url( $path = '', $scheme = null ) {
-       return get_home_url(null, $path, $scheme);
+       return get_home_url( null, $path, $scheme );
 }
 
 /**
@@ -1863,20 +1902,24 @@ function home_url( $path = '', $scheme = null ) {
 function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
        $orig_scheme = $scheme;
 
-       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
-               $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
-
-       if ( empty( $blog_id ) || !is_multisite() )
+       if ( empty( $blog_id ) || !is_multisite() ) {
                $url = get_option( 'home' );
-       else
-               $url = get_blog_option( $blog_id, 'home' );
+       } else {
+               switch_to_blog( $blog_id );
+               $url = get_option( 'home' );
+               restore_current_blog();
+       }
 
-       if ( 'relative' == $scheme )
-               $url = preg_replace( '#^.+://[^/]*#', '', $url );
-       elseif ( 'http' != $scheme )
-               $url = str_replace( 'http://', "$scheme://", $url );
+       if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
+               if ( is_ssl() && ! is_admin() )
+                       $scheme = 'https';
+               else
+                       $scheme = parse_url( $url, PHP_URL_SCHEME );
+       }
 
-       if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+       $url = set_url_scheme( $url, $scheme );
+
+       if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url .= '/' . ltrim( $path, '/' );
 
        return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
@@ -1895,11 +1938,11 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
  * @uses get_site_url()
  *
  * @param string $path Optional. Path relative to the site url.
- * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
+ * @param string $scheme Optional. Scheme to give the site url context. See set_url_scheme().
  * @return string Site url link with optional path appended.
 */
 function site_url( $path = '', $scheme = null ) {
-       return get_site_url(null, $path, $scheme);
+       return get_site_url( null, $path, $scheme );
 }
 
 /**
@@ -1918,33 +1961,20 @@ function site_url( $path = '', $scheme = null ) {
  * @return string Site url link with optional path appended.
 */
 function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
-       // should the list of allowed schemes be maintained elsewhere?
-       $orig_scheme = $scheme;
-       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
-               if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
-                       $scheme = 'https';
-               elseif ( ( 'login' == $scheme ) && force_ssl_admin() )
-                       $scheme = 'https';
-               elseif ( ( 'admin' == $scheme ) && force_ssl_admin() )
-                       $scheme = 'https';
-               else
-                       $scheme = ( is_ssl() ? 'https' : 'http' );
-       }
-
-       if ( empty( $blog_id ) || !is_multisite() )
+       if ( empty( $blog_id ) || !is_multisite() ) {
                $url = get_option( 'siteurl' );
-       else
-               $url = get_blog_option( $blog_id, 'siteurl' );
+       } else {
+               switch_to_blog( $blog_id );
+               $url = get_option( 'siteurl' );
+               restore_current_blog();
+       }
 
-       if ( 'relative' == $scheme )
-               $url = preg_replace( '#^.+://[^/]*#', '', $url );
-       elseif ( 'http' != $scheme )
-               $url = str_replace( 'http://', "{$scheme}://", $url );
+       $url = set_url_scheme( $url, $scheme );
 
-       if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+       if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url .= '/' . ltrim( $path, '/' );
 
-       return apply_filters( 'site_url', $url, $path, $orig_scheme, $blog_id );
+       return apply_filters( 'site_url', $url, $path, $scheme, $blog_id );
 }
 
 /**
@@ -1958,7 +1988,7 @@ function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
  * @return string Admin url link with optional path appended.
 */
 function admin_url( $path = '', $scheme = 'admin' ) {
-       return get_admin_url(null, $path, $scheme);
+       return get_admin_url( null, $path, $scheme );
 }
 
 /**
@@ -1975,10 +2005,10 @@ function admin_url( $path = '', $scheme = 'admin' ) {
 function get_admin_url( $blog_id = null, $path = '', $scheme = 'admin' ) {
        $url = get_site_url($blog_id, 'wp-admin/', $scheme);
 
-       if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
-               $url .= ltrim($path, '/');
+       if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+               $url .= ltrim( $path, '/' );
 
-       return apply_filters('admin_url', $url, $path, $blog_id);
+       return apply_filters( 'admin_url', $url, $path, $blog_id );
 }
 
 /**
@@ -2009,9 +2039,7 @@ function includes_url($path = '') {
  * @return string Content url link with optional path appended.
 */
 function content_url($path = '') {
-       $url = WP_CONTENT_URL;
-       if ( 0 === strpos($url, 'http') && is_ssl() )
-               $url = str_replace( 'http://', 'https://', $url );
+       $url = set_url_scheme( WP_CONTENT_URL );
 
        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
                $url .= '/' . ltrim($path, '/');
@@ -2043,8 +2071,8 @@ function plugins_url($path = '', $plugin = '') {
        else
                $url = WP_PLUGIN_URL;
 
-       if ( 0 === strpos($url, 'http') && is_ssl() )
-               $url = str_replace( 'http://', 'https://', $url );
+
+       $url = set_url_scheme( $url );
 
        if ( !empty($plugin) && is_string($plugin) ) {
                $folder = dirname(plugin_basename($plugin));
@@ -2069,36 +2097,24 @@ function plugins_url($path = '', $plugin = '') {
  * @since 3.0.0
  *
  * @param string $path Optional. Path relative to the site url.
- * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
+ * @param string $scheme Optional. Scheme to give the site url context. See set_url_scheme().
  * @return string Site url link with optional path appended.
 */
 function network_site_url( $path = '', $scheme = null ) {
        global $current_site;
 
-       if ( !is_multisite() )
+       if ( ! is_multisite() )
                return site_url($path, $scheme);
 
-       $orig_scheme = $scheme;
-       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
-               if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
-                       $scheme = 'https';
-               elseif ( ('login' == $scheme) && ( force_ssl_admin() ) )
-                       $scheme = 'https';
-               elseif ( ('admin' == $scheme) && force_ssl_admin() )
-                       $scheme = 'https';
-               else
-                       $scheme = ( is_ssl() ? 'https' : 'http' );
-       }
-
        if ( 'relative' == $scheme )
                $url = $current_site->path;
        else
-               $url = $scheme . '://' . $current_site->domain . $current_site->path;
+               $url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme );
 
-       if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
-               $url .= ltrim($path, '/');
+       if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+               $url .= ltrim( $path, '/' );
 
-       return apply_filters('network_site_url', $url, $path, $orig_scheme);
+       return apply_filters( 'network_site_url', $url, $path, $scheme );
 }
 
 /**
@@ -2118,20 +2134,20 @@ function network_site_url( $path = '', $scheme = null ) {
 function network_home_url( $path = '', $scheme = null ) {
        global $current_site;
 
-       if ( !is_multisite() )
+       if ( ! is_multisite() )
                return home_url($path, $scheme);
 
        $orig_scheme = $scheme;
 
-       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
-               $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
+       if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
+               $scheme = is_ssl() && ! is_admin() ? 'https' : 'http';
 
        if ( 'relative' == $scheme )
                $url = $current_site->path;
        else
-               $url = $scheme . '://' . $current_site->domain . $current_site->path;
+               $url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme );
 
-       if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+       if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url .= ltrim( $path, '/' );
 
        return apply_filters( 'network_home_url', $url, $path, $orig_scheme);
@@ -2302,6 +2318,10 @@ function rel_canonical() {
                return;
 
        $link = get_permalink( $id );
+
+       if ( $page = get_query_var('cpage') )
+               $link = get_comments_pagenum_link( $page );
+
        echo "<link rel='canonical' href='$link' />\n";
 }
 
@@ -2401,7 +2421,7 @@ function wp_shortlink_header() {
  * @param string $after Optional HTML to display after the link.
  */
 function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) {
-       global $post;
+       $post = get_post();
 
        if ( empty( $text ) )
                $text = __('This is the short link.');
index 7e0262034fd18563504ea0dc8a9de17e0adc88d6..1742af40d0e00ab95b5ab2ddaba8d64294a9515c 100644 (file)
@@ -356,7 +356,7 @@ function wp_set_wpdb_vars() {
                dead_db();
 
        $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
-               'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
+               'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'comment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
                'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
                'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d',
                // multisite:
@@ -381,7 +381,7 @@ function wp_set_wpdb_vars() {
  * @since 3.0.0
  */
 function wp_start_object_cache() {
-       global $_wp_using_ext_object_cache;
+       global $_wp_using_ext_object_cache, $blog_id;
 
        $first_init = false;
        if ( ! function_exists( 'wp_cache_init' ) ) {
@@ -403,13 +403,13 @@ function wp_start_object_cache() {
        // If cache supports reset, reset instead of init if already initialized.
        // Reset signals to the cache that global IDs have changed and it may need to update keys
        // and cleanup caches.
-       if ( !$first_init && function_exists('wp_cache_reset') )
-               wp_cache_reset();
+       if ( ! $first_init && function_exists( 'wp_cache_switch_to_blog' ) )
+               wp_cache_switch_to_blog( $blog_id );
        else
                wp_cache_init();
 
        if ( function_exists( 'wp_cache_add_global_groups' ) ) {
-               wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );
+               wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
                wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
        }
 }
@@ -583,8 +583,11 @@ function wp_clone( $object ) {
  * @return bool True if inside WordPress administration pages.
  */
 function is_admin() {
-       if ( defined( 'WP_ADMIN' ) )
+       if ( isset( $GLOBALS['current_screen'] ) )
+               return $GLOBALS['current_screen']->in_admin();
+       elseif ( defined( 'WP_ADMIN' ) )
                return WP_ADMIN;
+
        return false;
 }
 
@@ -599,8 +602,11 @@ function is_admin() {
  * @return bool True if inside WordPress network administration pages.
  */
 function is_blog_admin() {
-       if ( defined( 'WP_BLOG_ADMIN' ) )
+       if ( isset( $GLOBALS['current_screen'] ) )
+               return $GLOBALS['current_screen']->in_admin( 'site' );
+       elseif ( defined( 'WP_BLOG_ADMIN' ) )
                return WP_BLOG_ADMIN;
+
        return false;
 }
 
@@ -615,8 +621,11 @@ function is_blog_admin() {
  * @return bool True if inside WordPress network administration pages.
  */
 function is_network_admin() {
-       if ( defined( 'WP_NETWORK_ADMIN' ) )
+       if ( isset( $GLOBALS['current_screen'] ) )
+               return $GLOBALS['current_screen']->in_admin( 'network' );
+       elseif ( defined( 'WP_NETWORK_ADMIN' ) )
                return WP_NETWORK_ADMIN;
+
        return false;
 }
 
@@ -631,8 +640,11 @@ function is_network_admin() {
  * @return bool True if inside WordPress user administration pages.
  */
 function is_user_admin() {
-       if ( defined( 'WP_USER_ADMIN' ) )
+       if ( isset( $GLOBALS['current_screen'] ) )
+               return $GLOBALS['current_screen']->in_admin( 'user' );
+       elseif ( defined( 'WP_USER_ADMIN' ) )
                return WP_USER_ADMIN;
+
        return false;
 }
 
@@ -653,6 +665,18 @@ function is_multisite() {
        return false;
 }
 
+/**
+ * Retrieve the current blog id
+ *
+ * @since 3.1.0
+ *
+ * @return int Blog id
+ */
+function get_current_blog_id() {
+       global $blog_id;
+       return absint($blog_id);
+}
+
 /**
  * Attempts an early load of translations.
  *
diff --git a/wp-includes/media-template.php b/wp-includes/media-template.php
new file mode 100644 (file)
index 0000000..909ddfe
--- /dev/null
@@ -0,0 +1,467 @@
+<?php
+/**
+ * WordPress media templates.
+ *
+ * @package WordPress
+ * @subpackage Media
+ * @since 3.5.0
+ */
+
+/**
+ * Prints the templates used in the media manager.
+ *
+ * @since 3.5.0
+ */
+function wp_print_media_templates() {
+       global $is_IE;
+       $class = 'media-modal wp-core-ui';
+       if ( $is_IE && strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7') !== false )
+               $class .= ' ie7';
+       ?>
+       <script type="text/html" id="tmpl-media-frame">
+               <div class="media-frame-menu"></div>
+               <div class="media-frame-title"></div>
+               <div class="media-frame-router"></div>
+               <div class="media-frame-content"></div>
+               <div class="media-frame-toolbar"></div>
+               <div class="media-frame-uploader"></div>
+       </script>
+
+       <script type="text/html" id="tmpl-media-modal">
+               <div class="<?php echo $class; ?>">
+                       <a class="media-modal-close" href="#" title="<?php esc_attr_e('Close'); ?>"><span class="media-modal-icon"></span></a>
+                       <div class="media-modal-content"></div>
+               </div>
+               <div class="media-modal-backdrop"></div>
+       </script>
+
+       <script type="text/html" id="tmpl-uploader-window">
+               <div class="uploader-window-content">
+                       <h3><?php _e( 'Drop files to upload' ); ?></h3>
+               </div>
+       </script>
+
+       <script type="text/html" id="tmpl-uploader-inline">
+               <# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #>
+               <div class="uploader-inline-content {{ messageClass }}">
+               <# if ( data.message ) { #>
+                       <h3 class="upload-message">{{ data.message }}</h3>
+               <# } #>
+               <?php if ( ! _device_can_upload() ) : ?>
+                       <h3 class="upload-instructions"><?php _e('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.'); ?></h3>
+               <?php elseif ( is_multisite() && ! is_upload_space_available() ) : ?>
+                       <h3 class="upload-instructions"><?php _e( 'Upload Limit Exceeded' ); ?></h3>
+                       <?php do_action( 'upload_ui_over_quota' ); ?>
+
+               <?php else : ?>
+                       <div class="upload-ui">
+                               <h3 class="upload-instructions drop-instructions"><?php _e( 'Drop files anywhere to upload' ); ?></h3>
+                               <a href="#" class="browser button button-hero"><?php _e( 'Select Files' ); ?></a>
+                       </div>
+
+                       <div class="upload-inline-status"></div>
+
+                       <div class="post-upload-ui">
+                               <?php
+                               do_action( 'pre-upload-ui' );
+                               do_action( 'pre-plupload-upload-ui' );
+
+                               if ( 10 === remove_action( 'post-plupload-upload-ui', 'media_upload_flash_bypass' ) ) {
+                                       do_action( 'post-plupload-upload-ui' );
+                                       add_action( 'post-plupload-upload-ui', 'media_upload_flash_bypass' );
+                               } else {
+                                       do_action( 'post-plupload-upload-ui' );
+                               }
+
+                               $upload_size_unit = $max_upload_size = wp_max_upload_size();
+                               $byte_sizes = array( 'KB', 'MB', 'GB' );
+
+                               for ( $u = -1; $upload_size_unit > 1024 && $u < count( $byte_sizes ) - 1; $u++ ) {
+                                       $upload_size_unit /= 1024;
+                               }
+
+                               if ( $u < 0 ) {
+                                       $upload_size_unit = 0;
+                                       $u = 0;
+                               } else {
+                                       $upload_size_unit = (int) $upload_size_unit;
+                               }
+
+                               ?>
+
+                               <p class="max-upload-size"><?php
+                                       printf( __( 'Maximum upload file size: %d%s.' ), esc_html($upload_size_unit), esc_html($byte_sizes[$u]) );
+                               ?></p>
+
+                               <?php if ( ( $GLOBALS['is_IE'] || $GLOBALS['is_opera']) && $max_upload_size > 100 * 1024 * 1024 ) :
+                                       $browser_uploader = admin_url( 'media-new.php?browser-uploader&post_id=' ) . '{{ data.postId }}';
+                                       ?>
+                                       <p class="big-file-warning"><?php printf( __( 'Your browser has some limitations uploading large files with the multi-file uploader. Please use the <a href="%1$s" target="%2$s">browser uploader</a> for files over 100MB.' ),
+                                               $browser_uploader, '_blank' ); ?></p>
+                               <?php endif; ?>
+
+                               <?php do_action( 'post-upload-ui' ); ?>
+                       </div>
+               <?php endif; ?>
+               </div>
+       </script>
+
+       <script type="text/html" id="tmpl-uploader-status">
+               <h3><?php _e( 'Uploading' ); ?></h3>
+               <a class="upload-dismiss-errors" href="#"><?php _e('Dismiss Errors'); ?></a>
+
+               <div class="media-progress-bar"><div></div></div>
+               <div class="upload-details">
+                       <span class="upload-count">
+                               <span class="upload-index"></span> / <span class="upload-total"></span>
+                       </span>
+                       <span class="upload-detail-separator">&ndash;</span>
+                       <span class="upload-filename"></span>
+               </div>
+               <div class="upload-errors"></div>
+       </script>
+
+       <script type="text/html" id="tmpl-uploader-status-error">
+               <span class="upload-error-label"><?php _e('Error'); ?></span>
+               <span class="upload-error-filename">{{{ data.filename }}}</span>
+               <span class="upload-error-message">{{ data.message }}</span>
+       </script>
+
+       <script type="text/html" id="tmpl-attachment">
+               <div class="attachment-preview type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}">
+                       <# if ( data.uploading ) { #>
+                               <div class="media-progress-bar"><div></div></div>
+                       <# } else if ( 'image' === data.type ) { #>
+                               <div class="thumbnail">
+                                       <div class="centered">
+                                               <img src="{{ data.size.url }}" draggable="false" />
+                                       </div>
+                               </div>
+                       <# } else { #>
+                               <img src="{{ data.icon }}" class="icon" draggable="false" />
+                               <div class="filename">
+                                       <div>{{ data.filename }}</div>
+                               </div>
+                       <# } #>
+
+                       <# if ( data.buttons.close ) { #>
+                               <a class="close media-modal-icon" href="#" title="<?php _e('Remove'); ?>"></a>
+                       <# } #>
+
+                       <# if ( data.buttons.check ) { #>
+                               <a class="check" href="#" title="<?php _e('Deselect'); ?>"><div class="media-modal-icon"></div></a>
+                       <# } #>
+               </div>
+               <#
+               var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly';
+               if ( data.describe ) { #>
+                       <# if ( 'image' === data.type ) { #>
+                               <input type="text" value="{{ data.caption }}" class="describe" data-setting="caption"
+                                       placeholder="<?php esc_attr_e('Caption this image&hellip;'); ?>" {{ maybeReadOnly }} />
+                       <# } else { #>
+                               <input type="text" value="{{ data.title }}" class="describe" data-setting="title"
+                                       <# if ( 'video' === data.type ) { #>
+                                               placeholder="<?php esc_attr_e('Describe this video&hellip;'); ?>"
+                                       <# } else if ( 'audio' === data.type ) { #>
+                                               placeholder="<?php esc_attr_e('Describe this audio file&hellip;'); ?>"
+                                       <# } else { #>
+                                               placeholder="<?php esc_attr_e('Describe this media file&hellip;'); ?>"
+                                       <# } #> {{ maybeReadOnly }} />
+                       <# } #>
+               <# } #>
+       </script>
+
+       <script type="text/html" id="tmpl-attachment-details">
+               <h3>
+                       <?php _e('Attachment Details'); ?>
+
+                       <span class="settings-save-status">
+                               <span class="spinner"></span>
+                               <span class="saved"><?php esc_html_e('Saved.'); ?></span>
+                       </span>
+               </h3>
+               <div class="attachment-info">
+                       <div class="thumbnail">
+                               <# if ( data.uploading ) { #>
+                                       <div class="media-progress-bar"><div></div></div>
+                               <# } else if ( 'image' === data.type ) { #>
+                                       <img src="{{ data.size.url }}" draggable="false" />
+                               <# } else { #>
+                                       <img src="{{ data.icon }}" class="icon" draggable="false" />
+                               <# } #>
+                       </div>
+                       <div class="details">
+                               <div class="filename">{{ data.filename }}</div>
+                               <div class="uploaded">{{ data.dateFormatted }}</div>
+
+                               <# if ( 'image' === data.type && ! data.uploading ) { #>
+                                       <# if ( data.width && data.height ) { #>
+                                               <div class="dimensions">{{ data.width }} &times; {{ data.height }}</div>
+                                       <# } #>
+
+                                       <# if ( data.can.save ) { #>
+                                               <a class="edit-attachment" href="{{ data.editLink }}&amp;image-editor" target="_blank"><?php _e( 'Edit Image' ); ?></a>
+                                               <a class="refresh-attachment" href="#"><?php _e( 'Refresh' ); ?></a>
+                                       <# } #>
+                               <# } #>
+
+                               <# if ( ! data.uploading && data.can.remove ) { #>
+                                       <a class="delete-attachment" href="#"><?php _e( 'Delete Permanently' ); ?></a>
+                               <# } #>
+
+                               <div class="compat-meta">
+                                       <# if ( data.compat && data.compat.meta ) { #>
+                                               {{{ data.compat.meta }}}
+                                       <# } #>
+                               </div>
+                       </div>
+               </div>
+
+               <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #>
+                       <label class="setting" data-setting="title">
+                               <span><?php _e('Title'); ?></span>
+                               <input type="text" value="{{ data.title }}" {{ maybeReadOnly }} />
+                       </label>
+                       <label class="setting" data-setting="caption">
+                               <span><?php _e('Caption'); ?></span>
+                               <textarea {{ maybeReadOnly }}>{{ data.caption }}</textarea>
+                       </label>
+               <# if ( 'image' === data.type ) { #>
+                       <label class="setting" data-setting="alt">
+                               <span><?php _e('Alt Text'); ?></span>
+                               <input type="text" value="{{ data.alt }}" {{ maybeReadOnly }} />
+                       </label>
+               <# } #>
+                       <label class="setting" data-setting="description">
+                               <span><?php _e('Description'); ?></span>
+                               <textarea {{ maybeReadOnly }}>{{ data.description }}</textarea>
+                       </label>
+       </script>
+
+       <script type="text/html" id="tmpl-media-selection">
+               <div class="selection-info">
+                       <span class="count"></span>
+                       <# if ( data.editable ) { #>
+                               <a class="edit-selection" href="#"><?php _e('Edit'); ?></a>
+                       <# } #>
+                       <# if ( data.clearable ) { #>
+                               <a class="clear-selection" href="#"><?php _e('Clear'); ?></a>
+                       <# } #>
+               </div>
+               <div class="selection-view"></div>
+       </script>
+
+       <script type="text/html" id="tmpl-attachment-display-settings">
+               <h3><?php _e('Attachment Display Settings'); ?></h3>
+
+               <# if ( 'image' === data.type ) { #>
+                       <label class="setting">
+                               <span><?php _e('Alignment'); ?></span>
+                               <select class="alignment"
+                                       data-setting="align"
+                                       <# if ( data.userSettings ) { #>
+                                               data-user-setting="align"
+                                       <# } #>>
+
+                                       <option value="left">
+                                               <?php esc_attr_e('Left'); ?>
+                                       </option>
+                                       <option value="center">
+                                               <?php esc_attr_e('Center'); ?>
+                                       </option>
+                                       <option value="right">
+                                               <?php esc_attr_e('Right'); ?>
+                                       </option>
+                                       <option value="none" selected>
+                                               <?php esc_attr_e('None'); ?>
+                                       </option>
+                               </select>
+                       </label>
+               <# } #>
+
+               <div class="setting">
+                       <label>
+                               <span><?php _e('Link To'); ?></span>
+                               <select class="link-to"
+                                       data-setting="link"
+                                       <# if ( data.userSettings ) { #>
+                                               data-user-setting="urlbutton"
+                                       <# } #>>
+
+                                       <option value="custom">
+                                               <?php esc_attr_e('Custom URL'); ?>
+                                       </option>
+                                       <option value="post" selected>
+                                               <?php esc_attr_e('Attachment Page'); ?>
+                                       </option>
+                                       <option value="file">
+                                               <?php esc_attr_e('Media File'); ?>
+                                       </option>
+                                       <option value="none">
+                                               <?php esc_attr_e('None'); ?>
+                                       </option>
+                               </select>
+                       </label>
+                       <input type="text" class="link-to-custom" data-setting="linkUrl" />
+               </div>
+
+               <# if ( 'undefined' !== typeof data.sizes ) { #>
+                       <label class="setting">
+                               <span><?php _e('Size'); ?></span>
+                               <select class="size" name="size"
+                                       data-setting="size"
+                                       <# if ( data.userSettings ) { #>
+                                               data-user-setting="imgsize"
+                                       <# } #>>
+                                       <?php
+
+                                       $sizes = apply_filters( 'image_size_names_choose', array(
+                                               'thumbnail' => __('Thumbnail'),
+                                               'medium'    => __('Medium'),
+                                               'large'     => __('Large'),
+                                               'full'      => __('Full Size'),
+                                       ) );
+
+                                       foreach ( $sizes as $value => $name ) : ?>
+                                               <#
+                                               var size = data.sizes['<?php echo esc_js( $value ); ?>'];
+                                               if ( size ) { #>
+                                                       <option value="<?php echo esc_attr( $value ); ?>" <?php selected( $value, 'full' ); ?>>
+                                                               <?php echo esc_html( $name ); ?> &ndash; {{ size.width }} &times; {{ size.height }}
+                                                       </option>
+                                               <# } #>
+                                       <?php endforeach; ?>
+                               </select>
+                       </label>
+               <# } #>
+       </script>
+
+       <script type="text/html" id="tmpl-gallery-settings">
+               <h3><?php _e('Gallery Settings'); ?></h3>
+
+               <label class="setting">
+                       <span><?php _e('Link To'); ?></span>
+                       <select class="link-to"
+                               data-setting="link"
+                               <# if ( data.userSettings ) { #>
+                                       data-user-setting="urlbutton"
+                               <# } #>>
+
+                               <option value="post" selected>
+                                       <?php esc_attr_e('Attachment Page'); ?>
+                               </option>
+                               <option value="file">
+                                       <?php esc_attr_e('Media File'); ?>
+                               </option>
+                       </select>
+               </label>
+
+               <label class="setting">
+                       <span><?php _e('Columns'); ?></span>
+                       <select class="columns" name="columns"
+                               data-setting="columns">
+                               <?php for ( $i = 1; $i <= 9; $i++ ) : ?>
+                                       <option value="<?php echo esc_attr( $i ); ?>" <?php selected( $i, 3 ); ?>>
+                                               <?php echo esc_html( $i ); ?>
+                                       </option>
+                               <?php endfor; ?>
+                       </select>
+               </label>
+
+               <label class="setting">
+                       <span><?php _e( 'Random Order' ); ?></span>
+                       <input type="checkbox" data-setting="_orderbyRandom" />
+               </label>
+       </script>
+
+       <script type="text/html" id="tmpl-embed-link-settings">
+               <label class="setting">
+                       <span><?php _e('Title'); ?></span>
+                       <input type="text" class="alignment" data-setting="title" />
+               </label>
+       </script>
+
+       <script type="text/html" id="tmpl-embed-image-settings">
+               <div class="thumbnail">
+                       <img src="{{ data.model.url }}" draggable="false" />
+               </div>
+
+               <?php if ( ! apply_filters( 'disable_captions', '' ) ) : ?>
+                       <label class="setting caption">
+                               <span><?php _e('Caption'); ?></span>
+                               <textarea data-setting="caption" />
+                       </label>
+               <?php endif; ?>
+
+               <label class="setting alt-text">
+                       <span><?php _e('Alt Text'); ?></span>
+                       <input type="text" data-setting="alt" />
+               </label>
+
+               <div class="setting align">
+                       <span><?php _e('Align'); ?></span>
+                       <div class="button-group button-large" data-setting="align">
+                               <button class="button" value="left">
+                                       <?php esc_attr_e('Left'); ?>
+                               </button>
+                               <button class="button" value="center">
+                                       <?php esc_attr_e('Center'); ?>
+                               </button>
+                               <button class="button" value="right">
+                                       <?php esc_attr_e('Right'); ?>
+                               </button>
+                               <button class="button active" value="none">
+                                       <?php esc_attr_e('None'); ?>
+                               </button>
+                       </div>
+               </div>
+
+               <div class="setting link-to">
+                       <span><?php _e('Link To'); ?></span>
+                       <div class="button-group button-large" data-setting="link">
+                               <button class="button" value="file">
+                                       <?php esc_attr_e('Image URL'); ?>
+                               </button>
+                               <button class="button" value="custom">
+                                       <?php esc_attr_e('Custom URL'); ?>
+                               </button>
+                               <button class="button active" value="none">
+                                       <?php esc_attr_e('None'); ?>
+                               </button>
+                       </div>
+                       <input type="text" class="link-to-custom" data-setting="linkUrl" />
+               </div>
+       </script>
+
+       <script type="text/html" id="tmpl-attachments-css">
+               <style type="text/css" id="{{ data.id }}-css">
+                       #{{ data.id }} {
+                               padding: 0 {{ data.gutter }}px;
+                       }
+
+                       #{{ data.id }} .attachment {
+                               margin: {{ data.gutter }}px;
+                               width: {{ data.edge }}px;
+                       }
+
+                       #{{ data.id }} .attachment-preview,
+                       #{{ data.id }} .attachment-preview .thumbnail {
+                               width: {{ data.edge }}px;
+                               height: {{ data.edge }}px;
+                       }
+
+                       #{{ data.id }} .portrait .thumbnail img {
+                               max-width: {{ data.edge }}px;
+                               height: auto;
+                       }
+
+                       #{{ data.id }} .landscape .thumbnail img {
+                               width: auto;
+                               max-height: {{ data.edge }}px;
+                       }
+               </style>
+       </script>
+       <?php
+
+       do_action( 'print_media_templates' );
+}
index 1a933edf59ddc5cd72a4f0cfd092260146740ab5..8235d460676b38d4de7fef500f7283412f10f0dd 100644 (file)
@@ -3,6 +3,7 @@
  * WordPress API for media display.
  *
  * @package WordPress
+ * @subpackage Media
  */
 
 /**
  * @param int $width Width of the image
  * @param int $height Height of the image
  * @param string|array $size Size of what the result image should be.
+ * @param context Could be 'display' (like in a theme) or 'edit' (like inserting into an editor)
  * @return array Width and height of what the result image should resize to.
  */
-function image_constrain_size_for_editor($width, $height, $size = 'medium') {
+function image_constrain_size_for_editor($width, $height, $size = 'medium', $context = null ) {
        global $content_width, $_wp_additional_image_sizes;
 
+       if ( ! $context )
+               $context = is_admin() ? 'edit' : 'display';
+
        if ( is_array($size) ) {
                $max_width = $size[0];
                $max_height = $size[1];
@@ -64,7 +69,7 @@ function image_constrain_size_for_editor($width, $height, $size = 'medium') {
        } elseif ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) {
                $max_width = intval( $_wp_additional_image_sizes[$size]['width'] );
                $max_height = intval( $_wp_additional_image_sizes[$size]['height'] );
-               if ( intval($content_width) > 0 && is_admin() ) // Only in admin. Assume that theme authors know what they're doing.
+               if ( intval($content_width) > 0 && 'edit' == $context ) // Only in admin. Assume that theme authors know what they're doing.
                        $max_width = min( intval($content_width), $max_width );
        }
        // $size == 'full' has no constraint
@@ -73,7 +78,7 @@ function image_constrain_size_for_editor($width, $height, $size = 'medium') {
                $max_height = $height;
        }
 
-       list( $max_width, $max_height ) = apply_filters( 'editor_max_image_size', array( $max_width, $max_height ), $size );
+       list( $max_width, $max_height ) = apply_filters( 'editor_max_image_size', array( $max_width, $max_height ), $size, $context );
 
        return wp_constrain_dimensions( $width, $height, $max_width, $max_height );
 }
@@ -225,44 +230,18 @@ function get_image_tag($id, $alt, $title, $align, $size='medium') {
        list( $img_src, $width, $height ) = image_downsize($id, $size);
        $hwstring = image_hwstring($width, $height);
 
+       $title = $title ? 'title="' . esc_attr( $title ) . '" ' : '';
+
        $class = 'align' . esc_attr($align) .' size-' . esc_attr($size) . ' wp-image-' . $id;
        $class = apply_filters('get_image_tag_class', $class, $id, $align, $size);
 
-       $html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title).'" '.$hwstring.'class="'.$class.'" />';
+       $html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" ' . $title . $hwstring . 'class="' . $class . '" />';
 
        $html = apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size );
 
        return $html;
 }
 
-/**
- * Load an image from a string, if PHP supports it.
- *
- * @since 2.1.0
- *
- * @param string $file Filename of the image to load.
- * @return resource The resulting image resource on success, Error string on failure.
- */
-function wp_load_image( $file ) {
-       if ( is_numeric( $file ) )
-               $file = get_attached_file( $file );
-
-       if ( ! file_exists( $file ) )
-               return sprintf(__('File &#8220;%s&#8221; doesn&#8217;t exist?'), $file);
-
-       if ( ! function_exists('imagecreatefromstring') )
-               return __('The GD image library is not installed.');
-
-       // Set artificially high because GD uses uncompressed images in memory
-       @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );
-       $image = imagecreatefromstring( file_get_contents( $file ) );
-
-       if ( !is_resource( $image ) )
-               return sprintf(__('File &#8220;%s&#8221; is not an image.'), $file);
-
-       return $image;
-}
-
 /**
  * Calculates the new dimensions for a downsampled image.
  *
@@ -320,7 +299,7 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width=0,
 }
 
 /**
- * Retrieve calculated resized dimensions for use in imagecopyresampled().
+ * Retrieve calculated resized dimensions for use in WP_Image_Editor.
  *
  * Calculate dimensions and coordinates for a resized image that fits within a
  * specified width and height. If $crop is true, the largest matching central
@@ -392,92 +371,6 @@ function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = fal
 
 }
 
-/**
- * Scale down an image to fit a particular size and save a new copy of the image.
- *
- * The PNG transparency will be preserved using the function, as well as the
- * image type. If the file going in is PNG, then the resized image is going to
- * be PNG. The only supported image types are PNG, GIF, and JPEG.
- *
- * Some functionality requires API to exist, so some PHP version may lose out
- * support. This is not the fault of WordPress (where functionality is
- * downgraded, not actual defects), but of your PHP version.
- *
- * @since 2.5.0
- *
- * @param string $file Image file path.
- * @param int $max_w Maximum width to resize to.
- * @param int $max_h Maximum height to resize to.
- * @param bool $crop Optional. Whether to crop image or resize.
- * @param string $suffix Optional. File suffix.
- * @param string $dest_path Optional. New image file path.
- * @param int $jpeg_quality Optional, default is 90. Image quality percentage.
- * @return mixed WP_Error on failure. String with new destination path.
- */
-function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) {
-
-       $image = wp_load_image( $file );
-       if ( !is_resource( $image ) )
-               return new WP_Error( 'error_loading_image', $image, $file );
-
-       $size = @getimagesize( $file );
-       if ( !$size )
-               return new WP_Error('invalid_image', __('Could not read image size'), $file);
-       list($orig_w, $orig_h, $orig_type) = $size;
-
-       $dims = image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop);
-       if ( !$dims )
-               return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions') );
-       list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims;
-
-       $newimage = wp_imagecreatetruecolor( $dst_w, $dst_h );
-
-       imagecopyresampled( $newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
-
-       // convert from full colors to index colors, like original PNG.
-       if ( IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor( $image ) )
-               imagetruecolortopalette( $newimage, false, imagecolorstotal( $image ) );
-
-       // we don't need the original in memory anymore
-       imagedestroy( $image );
-
-       // $suffix will be appended to the destination filename, just before the extension
-       if ( !$suffix )
-               $suffix = "{$dst_w}x{$dst_h}";
-
-       $info = pathinfo($file);
-       $dir = $info['dirname'];
-       $ext = $info['extension'];
-       $name = wp_basename($file, ".$ext");
-
-       if ( !is_null($dest_path) and $_dest_path = realpath($dest_path) )
-               $dir = $_dest_path;
-       $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}";
-
-       if ( IMAGETYPE_GIF == $orig_type ) {
-               if ( !imagegif( $newimage, $destfilename ) )
-                       return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
-       } elseif ( IMAGETYPE_PNG == $orig_type ) {
-               if ( !imagepng( $newimage, $destfilename ) )
-                       return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
-       } else {
-               // all other formats are converted to jpg
-               if ( 'jpg' != $ext && 'jpeg' != $ext )
-                       $destfilename = "{$dir}/{$name}-{$suffix}.jpg";
-               if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
-                       return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
-       }
-
-       imagedestroy( $newimage );
-
-       // Set correct file permissions
-       $stat = stat( dirname( $destfilename ));
-       $perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits
-       @ chmod( $destfilename, $perms );
-
-       return $destfilename;
-}
-
 /**
  * Resize an image to make a thumbnail or intermediate size.
  *
@@ -493,16 +386,18 @@ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $de
  * @param bool $crop Optional, default is false. Whether to crop image to specified height and width or resize.
  * @return bool|array False, if no image was created. Metadata array on success.
  */
-function image_make_intermediate_size($file, $width, $height, $crop=false) {
+function image_make_intermediate_size( $file, $width, $height, $crop = false ) {
        if ( $width || $height ) {
-               $resized_file = image_resize($file, $width, $height, $crop);
-               if ( !is_wp_error($resized_file) && $resized_file && $info = getimagesize($resized_file) ) {
-                       $resized_file = apply_filters('image_make_intermediate_size', $resized_file);
-                       return array(
-                               'file' => wp_basename( $resized_file ),
-                               'width' => $info[0],
-                               'height' => $info[1],
-                       );
+               $editor = wp_get_image_editor( $file );
+
+               if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
+                       return false;
+
+               $resized_file = $editor->save();
+
+               if ( ! is_wp_error( $resized_file ) && $resized_file ) {
+                       unset( $resized_file['path'] );
+                       return $resized_file;
                }
        }
        return false;
@@ -655,12 +550,11 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa
                $hwstring = image_hwstring($width, $height);
                if ( is_array($size) )
                        $size = join('x', $size);
-               $attachment =& get_post($attachment_id);
+               $attachment = get_post($attachment_id);
                $default_attr = array(
                        'src'   => $src,
                        'class' => "attachment-$size",
                        'alt'   => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )), // Use Alt field first
-                       'title' => trim(strip_tags( $attachment->post_title )),
                );
                if ( empty($default_attr['alt']) )
                        $default_attr['alt'] = trim(strip_tags( $attachment->post_excerpt )); // If not, Use the Caption
@@ -775,11 +669,18 @@ add_shortcode('gallery', 'gallery_shortcode');
  * @return string HTML content to display gallery.
  */
 function gallery_shortcode($attr) {
-       global $post;
+       $post = get_post();
 
        static $instance = 0;
        $instance++;
 
+       if ( ! empty( $attr['ids'] ) ) {
+               // 'ids' is explicitly ordered, unless you specify otherwise.
+               if ( empty( $attr['orderby'] ) )
+                       $attr['orderby'] = 'post__in';
+               $attr['include'] = $attr['ids'];
+       }
+
        // Allow plugins/themes to override the default gallery template.
        $output = apply_filters('post_gallery', '', $attr);
        if ( $output != '' )
@@ -810,7 +711,6 @@ function gallery_shortcode($attr) {
                $orderby = 'none';
 
        if ( !empty($include) ) {
-               $include = preg_replace( '/[^0-9,]+/', '', $include );
                $_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
 
                $attachments = array();
@@ -818,7 +718,6 @@ function gallery_shortcode($attr) {
                        $attachments[$val->ID] = $_attachments[$key];
                }
        } elseif ( !empty($exclude) ) {
-               $exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
                $attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
        } else {
                $attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
@@ -928,9 +827,8 @@ function next_image_link($size = 'thumbnail', $text = false) {
  * @param bool $prev Optional. Default is true to display previous link, false for next.
  */
 function adjacent_image_link($prev = true, $size = 'thumbnail', $text = false) {
-       global $post;
-       $post = get_post($post);
-       $attachments = array_values(get_children( array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') ));
+       $post = get_post();
+       $attachments = array_values( get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) );
 
        foreach ( $attachments as $k => $attachment )
                if ( $attachment->ID == $post->ID )
@@ -938,8 +836,14 @@ function adjacent_image_link($prev = true, $size = 'thumbnail', $text = false) {
 
        $k = $prev ? $k - 1 : $k + 1;
 
-       if ( isset($attachments[$k]) )
-               echo wp_get_attachment_link($attachments[$k]->ID, $size, true, false, $text);
+       $output = $attachment_id = null;
+       if ( isset( $attachments[ $k ] ) ) {
+               $attachment_id = $attachments[ $k ]->ID;
+               $output = wp_get_attachment_link( $attachment_id, $size, true, false, $text );
+       }
+
+       $adjacent = $prev ? 'previous' : 'next';
+       echo apply_filters( "{$adjacent}_image_link", $output, $attachment_id, $size, $text );
 }
 
 /**
@@ -982,38 +886,37 @@ function get_attachment_taxonomies($attachment) {
 }
 
 /**
- * Check if the installed version of GD supports particular image type
+ * Return all of the taxonomy names that are registered for attachments.
  *
- * @since 2.9.0
+ * Handles mime-type-specific taxonomies such as attachment:image and attachment:video.
+ *
+ * @since 3.5.0
+ * @see get_attachment_taxonomies()
+ * @uses get_taxonomies()
  *
- * @param string $mime_type
- * @return bool
+ * @param string $output The type of output to return, either taxonomy 'names' or 'objects'. 'names' is the default.
+ * @return array The names of all taxonomy of $object_type.
  */
-function gd_edit_image_support($mime_type) {
-       if ( function_exists('imagetypes') ) {
-               switch( $mime_type ) {
-                       case 'image/jpeg':
-                               return (imagetypes() & IMG_JPG) != 0;
-                       case 'image/png':
-                               return (imagetypes() & IMG_PNG) != 0;
-                       case 'image/gif':
-                               return (imagetypes() & IMG_GIF) != 0;
-               }
-       } else {
-               switch( $mime_type ) {
-                       case 'image/jpeg':
-                               return function_exists('imagecreatefromjpeg');
-                       case 'image/png':
-                               return function_exists('imagecreatefrompng');
-                       case 'image/gif':
-                               return function_exists('imagecreatefromgif');
+function get_taxonomies_for_attachments( $output = 'names' ) {
+       $taxonomies = array();
+       foreach ( get_taxonomies( array(), 'objects' ) as $taxonomy ) {
+               foreach ( $taxonomy->object_type as $object_type ) {
+                       if ( 'attachment' == $object_type || 0 === strpos( $object_type, 'attachment:' ) ) {
+                               if ( 'names' == $output )
+                                       $taxonomies[] = $taxonomy->name;
+                               else
+                                       $taxonomies[ $taxonomy->name ] = $taxonomy;
+                               break;
+                       }
                }
        }
-       return false;
+
+       return $taxonomies;
 }
 
 /**
  * Create new GD image resource with transparency support
+ * @TODO: Deprecate if possible.
  *
  * @since 2.9.0
  *
@@ -1030,285 +933,6 @@ function wp_imagecreatetruecolor($width, $height) {
        return $img;
 }
 
-/**
- * API for easily embedding rich media such as videos and images into content.
- *
- * @package WordPress
- * @subpackage Embed
- * @since 2.9.0
- */
-class WP_Embed {
-       var $handlers = array();
-       var $post_ID;
-       var $usecache = true;
-       var $linkifunknown = true;
-
-       /**
-        * Constructor
-        */
-       function __construct() {
-               // Hack to get the [embed] shortcode to run before wpautop()
-               add_filter( 'the_content', array(&$this, 'run_shortcode'), 8 );
-
-               // Shortcode placeholder for strip_shortcodes()
-               add_shortcode( 'embed', '__return_false' );
-
-               // Attempts to embed all URLs in a post
-               if ( get_option('embed_autourls') )
-                       add_filter( 'the_content', array(&$this, 'autoembed'), 8 );
-
-               // After a post is saved, invalidate the oEmbed cache
-               add_action( 'save_post', array(&$this, 'delete_oembed_caches') );
-
-               // After a post is saved, cache oEmbed items via AJAX
-               add_action( 'edit_form_advanced', array(&$this, 'maybe_run_ajax_cache') );
-       }
-
-       /**
-        * Process the [embed] shortcode.
-        *
-        * Since the [embed] shortcode needs to be run earlier than other shortcodes,
-        * this function removes all existing shortcodes, registers the [embed] shortcode,
-        * calls {@link do_shortcode()}, and then re-registers the old shortcodes.
-        *
-        * @uses $shortcode_tags
-        * @uses remove_all_shortcodes()
-        * @uses add_shortcode()
-        * @uses do_shortcode()
-        *
-        * @param string $content Content to parse
-        * @return string Content with shortcode parsed
-        */
-       function run_shortcode( $content ) {
-               global $shortcode_tags;
-
-               // Back up current registered shortcodes and clear them all out
-               $orig_shortcode_tags = $shortcode_tags;
-               remove_all_shortcodes();
-
-               add_shortcode( 'embed', array(&$this, 'shortcode') );
-
-               // Do the shortcode (only the [embed] one is registered)
-               $content = do_shortcode( $content );
-
-               // Put the original shortcodes back
-               $shortcode_tags = $orig_shortcode_tags;
-
-               return $content;
-       }
-
-       /**
-        * If a post/page was saved, then output JavaScript to make
-        * an AJAX request that will call WP_Embed::cache_oembed().
-        */
-       function maybe_run_ajax_cache() {
-               global $post_ID;
-
-               if ( empty($post_ID) || empty($_GET['message']) || 1 != $_GET['message'] )
-                       return;
-
-?>
-<script type="text/javascript">
-/* <![CDATA[ */
-       jQuery(document).ready(function($){
-               $.get("<?php echo admin_url( 'admin-ajax.php?action=oembed-cache&post=' . $post_ID, 'relative' ); ?>");
-       });
-/* ]]> */
-</script>
-<?php
-       }
-
-       /**
-        * Register an embed handler. Do not use this function directly, use {@link wp_embed_register_handler()} instead.
-        * This function should probably also only be used for sites that do not support oEmbed.
-        *
-        * @param string $id An internal ID/name for the handler. Needs to be unique.
-        * @param string $regex The regex that will be used to see if this handler should be used for a URL.
-        * @param callback $callback The callback function that will be called if the regex is matched.
-        * @param int $priority Optional. Used to specify the order in which the registered handlers will be tested (default: 10). Lower numbers correspond with earlier testing, and handlers with the same priority are tested in the order in which they were added to the action.
-        */
-       function register_handler( $id, $regex, $callback, $priority = 10 ) {
-               $this->handlers[$priority][$id] = array(
-                       'regex'    => $regex,
-                       'callback' => $callback,
-               );
-       }
-
-       /**
-        * Unregister a previously registered embed handler. Do not use this function directly, use {@link wp_embed_unregister_handler()} instead.
-        *
-        * @param string $id The handler ID that should be removed.
-        * @param int $priority Optional. The priority of the handler to be removed (default: 10).
-        */
-       function unregister_handler( $id, $priority = 10 ) {
-               if ( isset($this->handlers[$priority][$id]) )
-                       unset($this->handlers[$priority][$id]);
-       }
-
-       /**
-        * The {@link do_shortcode()} callback function.
-        *
-        * Attempts to convert a URL into embed HTML. Starts by checking the URL against the regex of the registered embed handlers.
-        * If none of the regex matches and it's enabled, then the URL will be given to the {@link WP_oEmbed} class.
-        *
-        * @uses wp_oembed_get()
-        * @uses wp_parse_args()
-        * @uses wp_embed_defaults()
-        * @uses WP_Embed::maybe_make_link()
-        * @uses get_option()
-        * @uses current_user_can()
-        * @uses wp_cache_get()
-        * @uses wp_cache_set()
-        * @uses get_post_meta()
-        * @uses update_post_meta()
-        *
-        * @param array $attr Shortcode attributes.
-        * @param string $url The URL attempting to be embedded.
-        * @return string The embed HTML on success, otherwise the original URL.
-        */
-       function shortcode( $attr, $url = '' ) {
-               global $post;
-
-               if ( empty($url) )
-                       return '';
-
-               $rawattr = $attr;
-               $attr = wp_parse_args( $attr, wp_embed_defaults() );
-
-               // kses converts & into &amp; and we need to undo this
-               // See http://core.trac.wordpress.org/ticket/11311
-               $url = str_replace( '&amp;', '&', $url );
-
-               // Look for known internal handlers
-               ksort( $this->handlers );
-               foreach ( $this->handlers as $priority => $handlers ) {
-                       foreach ( $handlers as $id => $handler ) {
-                               if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) {
-                                       if ( false !== $return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr ) )
-                                               return apply_filters( 'embed_handler_html', $return, $url, $attr );
-                               }
-                       }
-               }
-
-               $post_ID = ( !empty($post->ID) ) ? $post->ID : null;
-               if ( !empty($this->post_ID) ) // Potentially set by WP_Embed::cache_oembed()
-                       $post_ID = $this->post_ID;
-
-               // Unknown URL format. Let oEmbed have a go.
-               if ( $post_ID ) {
-
-                       // Check for a cached result (stored in the post meta)
-                       $cachekey = '_oembed_' . md5( $url . serialize( $attr ) );
-                       if ( $this->usecache ) {
-                               $cache = get_post_meta( $post_ID, $cachekey, true );
-
-                               // Failures are cached
-                               if ( '{{unknown}}' === $cache )
-                                       return $this->maybe_make_link( $url );
-
-                               if ( !empty($cache) )
-                                       return apply_filters( 'embed_oembed_html', $cache, $url, $attr, $post_ID );
-                       }
-
-                       // Use oEmbed to get the HTML
-                       $attr['discover'] = ( apply_filters('embed_oembed_discover', false) && author_can( $post_ID, 'unfiltered_html' ) );
-                       $html = wp_oembed_get( $url, $attr );
-
-                       // Cache the result
-                       $cache = ( $html ) ? $html : '{{unknown}}';
-                       update_post_meta( $post_ID, $cachekey, $cache );
-
-                       // If there was a result, return it
-                       if ( $html )
-                               return apply_filters( 'embed_oembed_html', $html, $url, $attr, $post_ID );
-               }
-
-               // Still unknown
-               return $this->maybe_make_link( $url );
-       }
-
-       /**
-        * Delete all oEmbed caches.
-        *
-        * @param int $post_ID Post ID to delete the caches for.
-        */
-       function delete_oembed_caches( $post_ID ) {
-               $post_metas = get_post_custom_keys( $post_ID );
-               if ( empty($post_metas) )
-                       return;
-
-               foreach( $post_metas as $post_meta_key ) {
-                       if ( '_oembed_' == substr( $post_meta_key, 0, 8 ) )
-                               delete_post_meta( $post_ID, $post_meta_key );
-               }
-       }
-
-       /**
-        * Triggers a caching of all oEmbed results.
-        *
-        * @param int $post_ID Post ID to do the caching for.
-        */
-       function cache_oembed( $post_ID ) {
-               $post = get_post( $post_ID );
-
-               if ( empty($post->ID) || !in_array( $post->post_type, apply_filters( 'embed_cache_oembed_types', array( 'post', 'page' ) ) ) )
-                       return;
-
-               // Trigger a caching
-               if ( !empty($post->post_content) ) {
-                       $this->post_ID = $post->ID;
-                       $this->usecache = false;
-
-                       $content = $this->run_shortcode( $post->post_content );
-                       if ( get_option('embed_autourls') )
-                               $this->autoembed( $content );
-
-                       $this->usecache = true;
-               }
-       }
-
-       /**
-        * Passes any unlinked URLs that are on their own line to {@link WP_Embed::shortcode()} for potential embedding.
-        *
-        * @uses WP_Embed::autoembed_callback()
-        *
-        * @param string $content The content to be searched.
-        * @return string Potentially modified $content.
-        */
-       function autoembed( $content ) {
-               return preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array(&$this, 'autoembed_callback'), $content );
-       }
-
-       /**
-        * Callback function for {@link WP_Embed::autoembed()}.
-        *
-        * @uses WP_Embed::shortcode()
-        *
-        * @param array $match A regex match array.
-        * @return string The embed HTML on success, otherwise the original URL.
-        */
-       function autoembed_callback( $match ) {
-               $oldval = $this->linkifunknown;
-               $this->linkifunknown = false;
-               $return = $this->shortcode( array(), $match[1] );
-               $this->linkifunknown = $oldval;
-
-               return "\n$return\n";
-       }
-
-       /**
-        * Conditionally makes a hyperlink based on an internal class variable.
-        *
-        * @param string $url URL to potentially be linked.
-        * @return string Linked URL or the original URL.
-        */
-       function maybe_make_link( $url ) {
-               $output = ( $this->linkifunknown ) ? '<a href="' . esc_attr($url) . '">' . esc_html($url) . '</a>' : $url;
-               return apply_filters( 'embed_maybe_make_link', $output, $url );
-       }
-}
-$GLOBALS['wp_embed'] = new WP_Embed();
-
 /**
  * Register an embed handler. This function should probably only be used for sites that do not support oEmbed.
  *
@@ -1334,31 +958,27 @@ function wp_embed_unregister_handler( $id, $priority = 10 ) {
 /**
  * Create default array of embed parameters.
  *
+ * The width defaults to the content width as specified by the theme. If the
+ * theme does not specify a content width, then 500px is used.
+ *
+ * The default height is 1.5 times the width, or 1000px, whichever is smaller.
+ *
+ * The 'embed_defaults' filter can be used to adjust either of these values.
+ *
  * @since 2.9.0
  *
  * @return array Default embed parameters.
  */
 function wp_embed_defaults() {
-       if ( !empty($GLOBALS['content_width']) )
-               $theme_width = (int) $GLOBALS['content_width'];
-
-       $width = get_option('embed_size_w');
+       if ( ! empty( $GLOBALS['content_width'] ) )
+               $width = (int) $GLOBALS['content_width'];
 
-       if ( empty($width) && !empty($theme_width) )
-               $width = $theme_width;
-
-       if ( empty($width) )
+       if ( empty( $width ) )
                $width = 500;
 
-       $height = get_option('embed_size_h');
-
-       if ( empty($height) )
-               $height = 700;
+       $height = min( ceil( $width * 1.5 ), 1000 );
 
-       return apply_filters( 'embed_defaults', array(
-               'width'  => $width,
-               'height' => $height,
-       ) );
+       return apply_filters( 'embed_defaults', compact( 'width', 'height' ) );
 }
 
 /**
@@ -1419,6 +1039,29 @@ function wp_oembed_add_provider( $format, $provider, $regex = false ) {
        $oembed->providers[$format] = array( $provider, $regex );
 }
 
+/**
+ * Removes an oEmbed provider.
+ *
+ * @since 3.5
+ * @see WP_oEmbed
+ *
+ * @uses _wp_oembed_get_object()
+ *
+ * @param string $format The URL format for the oEmbed provider to remove.
+ */
+function wp_oembed_remove_provider( $format ) {
+       require_once( ABSPATH . WPINC . '/class-oembed.php' );
+
+       $oembed = _wp_oembed_get_object();
+
+       if ( isset( $oembed->providers[ $format ] ) ) {
+               unset( $oembed->providers[ $format ] );
+               return true;
+       }
+
+       return false;
+}
+
 /**
  * Determines if default embed handlers should be loaded.
  *
@@ -1457,6 +1100,145 @@ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
        return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&amp;hl=en&amp;fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );
 }
 
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.3.0
+ *
+ * @param unknown_type $size
+ * @return unknown
+ */
+function wp_convert_hr_to_bytes( $size ) {
+       $size  = strtolower( $size );
+       $bytes = (int) $size;
+       if ( strpos( $size, 'k' ) !== false )
+               $bytes = intval( $size ) * 1024;
+       elseif ( strpos( $size, 'm' ) !== false )
+               $bytes = intval($size) * 1024 * 1024;
+       elseif ( strpos( $size, 'g' ) !== false )
+               $bytes = intval( $size ) * 1024 * 1024 * 1024;
+       return $bytes;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.3.0
+ *
+ * @param unknown_type $bytes
+ * @return unknown
+ */
+function wp_convert_bytes_to_hr( $bytes ) {
+       $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' );
+       $log   = log( $bytes, 1024 );
+       $power = (int) $log;
+       $size  = pow( 1024, $log - $power );
+       return $size . $units[$power];
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.5.0
+ *
+ * @return unknown
+ */
+function wp_max_upload_size() {
+       $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
+       $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) );
+       $bytes   = apply_filters( 'upload_size_limit', min( $u_bytes, $p_bytes ), $u_bytes, $p_bytes );
+       return $bytes;
+}
+
+/**
+ * Returns a WP_Image_Editor instance and loads file into it.
+ *
+ * @since 3.5.0
+ * @access public
+ *
+ * @param string $path Path to file to load
+ * @param array $args Additional data. Accepts { 'mime_type'=>string, 'methods'=>{string, string, ...} }
+ * @return WP_Image_Editor|WP_Error
+ */
+function wp_get_image_editor( $path, $args = array() ) {
+       $args['path'] = $path;
+
+       if ( ! isset( $args['mime_type'] ) ) {
+               $file_info  = wp_check_filetype( $args['path'] );
+
+               // If $file_info['type'] is false, then we let the editor attempt to
+               // figure out the file type, rather than forcing a failure based on extension.
+               if ( isset( $file_info ) && $file_info['type'] )
+                       $args['mime_type'] = $file_info['type'];
+       }
+
+       $implementation = _wp_image_editor_choose( $args );
+
+       if ( $implementation ) {
+               $editor = new $implementation( $path );
+               $loaded = $editor->load();
+
+               if ( is_wp_error( $loaded ) )
+                       return $loaded;
+
+               return $editor;
+       }
+
+       return new WP_Error( 'image_no_editor', __('No editor could be selected.') );
+}
+
+/**
+ * Tests whether there is an editor that supports a given mime type or methods.
+ *
+ * @since 3.5.0
+ * @access public
+ *
+ * @param string|array $args Array of requirements.  Accepts { 'mime_type'=>string, 'methods'=>{string, string, ...} }
+ * @return boolean true if an eligible editor is found; false otherwise
+ */
+function wp_image_editor_supports( $args = array() ) {
+       return (bool) _wp_image_editor_choose( $args );
+}
+
+/**
+ * Tests which editors are capable of supporting the request.
+ *
+ * @since 3.5.0
+ * @access private
+ *
+ * @param array $args Additional data. Accepts { 'mime_type'=>string, 'methods'=>{string, string, ...} }
+ * @return string|bool Class name for the first editor that claims to support the request. False if no editor claims to support the request.
+ */
+function _wp_image_editor_choose( $args = array() ) {
+       require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
+       require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
+       require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
+
+       $implementations = apply_filters( 'wp_image_editors',
+               array( 'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD' ) );
+
+       foreach ( $implementations as $implementation ) {
+               if ( ! call_user_func( array( $implementation, 'test' ), $args ) )
+                       continue;
+
+               if ( isset( $args['mime_type'] ) &&
+                       ! call_user_func(
+                               array( $implementation, 'supports_mime_type' ),
+                               $args['mime_type'] ) ) {
+                       continue;
+               }
+
+               if ( isset( $args['methods'] ) &&
+                        array_diff( $args['methods'], get_class_methods( $implementation ) ) ) {
+                       continue;
+               }
+
+               return $implementation;
+       }
+
+       return false;
+}
+
 /**
  * Prints default plupload arguments.
  *
@@ -1465,6 +1247,10 @@ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
 function wp_plupload_default_settings() {
        global $wp_scripts;
 
+       $data = $wp_scripts->get_data( 'wp-plupload', 'data' );
+       if ( $data && false !== strpos( $data, '_wpPluploadSettings' ) )
+               return;
+
        $max_upload_size = wp_max_upload_size();
 
        $defaults = array(
@@ -1472,7 +1258,7 @@ function wp_plupload_default_settings() {
                'file_data_name'      => 'async-upload', // key passed to $_FILE.
                'multiple_queues'     => true,
                'max_file_size'       => $max_upload_size . 'b',
-               'url'                 => admin_url( 'admin-ajax.php', 'relative' ),
+               'url'                 => admin_url( 'async-upload.php', 'relative' ),
                'flash_swf_url'       => includes_url( 'js/plupload/plupload.flash.swf' ),
                'silverlight_xap_url' => includes_url( 'js/plupload/plupload.silverlight.xap' ),
                'filters'             => array( array( 'title' => __( 'Allowed Files' ), 'extensions' => '*') ),
@@ -1480,6 +1266,11 @@ function wp_plupload_default_settings() {
                'urlstream_upload'    => true,
        );
 
+       // Multi-file uploading doesn't currently work in iOS Safari,
+       // single-file allows the built-in camera to be used as source for images
+       if ( wp_is_mobile() )
+               $defaults['multi_selection'] = false;
+
        $defaults = apply_filters( 'plupload_default_settings', $defaults );
 
        $params = array(
@@ -1496,14 +1287,258 @@ function wp_plupload_default_settings() {
                        'mobile'    => wp_is_mobile(),
                        'supported' => _device_can_upload(),
                ),
+               'limitExceeded' => is_multisite() && ! is_upload_space_available()
        );
 
        $script = 'var _wpPluploadSettings = ' . json_encode( $settings ) . ';';
 
-       $data = $wp_scripts->get_data( 'wp-plupload', 'data' );
        if ( $data )
                $script = "$data\n$script";
 
        $wp_scripts->add_data( 'wp-plupload', 'data', $script );
 }
 add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
+
+/**
+ * Prepares an attachment post object for JS, where it is expected
+ * to be JSON-encoded and fit into an Attachment model.
+ *
+ * @since 3.5.0
+ *
+ * @param mixed $attachment Attachment ID or object.
+ * @return array Array of attachment details.
+ */
+function wp_prepare_attachment_for_js( $attachment ) {
+       if ( ! $attachment = get_post( $attachment ) )
+               return;
+
+       if ( 'attachment' != $attachment->post_type )
+               return;
+
+       $meta = wp_get_attachment_metadata( $attachment->ID );
+       if ( false !== strpos( $attachment->post_mime_type, '/' ) )
+               list( $type, $subtype ) = explode( '/', $attachment->post_mime_type );
+       else
+               list( $type, $subtype ) = array( $attachment->post_mime_type, '' );
+
+       $attachment_url = wp_get_attachment_url( $attachment->ID );
+
+       $response = array(
+               'id'          => $attachment->ID,
+               'title'       => $attachment->post_title,
+               'filename'    => basename( $attachment->guid ),
+               'url'         => $attachment_url,
+               'link'        => get_attachment_link( $attachment->ID ),
+               'alt'         => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
+               'author'      => $attachment->post_author,
+               'description' => $attachment->post_content,
+               'caption'     => $attachment->post_excerpt,
+               'name'        => $attachment->post_name,
+               'status'      => $attachment->post_status,
+               'uploadedTo'  => $attachment->post_parent,
+               'date'        => strtotime( $attachment->post_date_gmt ) * 1000,
+               'modified'    => strtotime( $attachment->post_modified_gmt ) * 1000,
+               'menuOrder'   => $attachment->menu_order,
+               'mime'        => $attachment->post_mime_type,
+               'type'        => $type,
+               'subtype'     => $subtype,
+               'icon'        => wp_mime_type_icon( $attachment->ID ),
+               'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
+               'nonces'      => array(
+                       'update' => false,
+                       'delete' => false,
+               ),
+               'editLink'   => false,
+       );
+
+       if ( current_user_can( 'edit_post', $attachment->ID ) ) {
+               $response['nonces']['update'] = wp_create_nonce( 'update-post_' . $attachment->ID );
+               $response['editLink'] = get_edit_post_link( $attachment->ID, 'raw' );
+       }
+
+       if ( current_user_can( 'delete_post', $attachment->ID ) )
+               $response['nonces']['delete'] = wp_create_nonce( 'delete-post_' . $attachment->ID );
+
+       if ( $meta && 'image' === $type ) {
+               $sizes = array();
+               $possible_sizes = apply_filters( 'image_size_names_choose', array(
+                       'thumbnail' => __('Thumbnail'),
+                       'medium'    => __('Medium'),
+                       'large'     => __('Large'),
+                       'full'      => __('Full Size'),
+               ) );
+               unset( $possible_sizes['full'] );
+
+               // Loop through all potential sizes that may be chosen. Try to do this with some efficiency.
+               // First: run the image_downsize filter. If it returns something, we can use its data.
+               // If the filter does not return something, then image_downsize() is just an expensive
+               // way to check the image metadata, which we do second.
+               foreach ( $possible_sizes as $size => $label ) {
+                       if ( $downsize = apply_filters( 'image_downsize', false, $attachment->ID, $size ) ) {
+                               if ( ! $downsize[3] )
+                                       continue;
+                               $sizes[ $size ] = array(
+                                       'height'      => $downsize[2],
+                                       'width'       => $downsize[1],
+                                       'url'         => $downsize[0],
+                                       'orientation' => $downsize[2] > $downsize[1] ? 'portrait' : 'landscape',
+                               );
+                       } elseif ( isset( $meta['sizes'][ $size ] ) ) {
+                               if ( ! isset( $base_url ) )
+                                       $base_url = str_replace( wp_basename( $attachment_url ), '', $attachment_url );
+
+                               // Nothing from the filter, so consult image metadata if we have it.
+                               $size_meta = $meta['sizes'][ $size ];
+
+                               // We have the actual image size, but might need to further constrain it if content_width is narrower.
+                               // This is not necessary for thumbnails and medium size.
+                               if ( 'thumbnail' == $size || 'medium' == $size ) {
+                                       $width = $size_meta['width'];
+                                       $height = $size_meta['height'];
+                               } else {
+                                       list( $width, $height ) = image_constrain_size_for_editor( $size_meta['width'], $size_meta['height'], $size, 'edit' );
+                               }
+
+                               $sizes[ $size ] = array(
+                                       'height'      => $height,
+                                       'width'       => $width,
+                                       'url'         => $base_url . $size_meta['file'],
+                                       'orientation' => $height > $width ? 'portrait' : 'landscape',
+                               );
+                       }
+               }
+
+               $sizes['full'] = array(
+                       'height'      => $meta['height'],
+                       'width'       => $meta['width'],
+                       'url'         => $attachment_url,
+                       'orientation' => $meta['height'] > $meta['width'] ? 'portrait' : 'landscape',
+               );
+
+               $response = array_merge( $response, array( 'sizes' => $sizes ), $sizes['full'] );
+       }
+
+       if ( function_exists('get_compat_media_markup') )
+               $response['compat'] = get_compat_media_markup( $attachment->ID, array( 'in_modal' => true ) );
+
+       return apply_filters( 'wp_prepare_attachment_for_js', $response, $attachment, $meta );
+}
+
+/**
+ * Enqueues all scripts, styles, settings, and templates necessary to use
+ * all media JS APIs.
+ *
+ * @since 3.5.0
+ */
+function wp_enqueue_media( $args = array() ) {
+       $defaults = array(
+               'post' => null,
+       );
+       $args = wp_parse_args( $args, $defaults );
+
+       // We're going to pass the old thickbox media tabs to `media_upload_tabs`
+       // to ensure plugins will work. We will then unset those tabs.
+       $tabs = array(
+               // handler action suffix => tab label
+               'type'     => '',
+               'type_url' => '',
+               'gallery'  => '',
+               'library'  => '',
+       );
+
+       $tabs = apply_filters( 'media_upload_tabs', $tabs );
+       unset( $tabs['type'], $tabs['type_url'], $tabs['gallery'], $tabs['library'] );
+
+       $settings = array(
+               'tabs'      => $tabs,
+               'tabUrl'    => add_query_arg( array( 'chromeless' => true ), admin_url('media-upload.php') ),
+               'mimeTypes' => wp_list_pluck( get_post_mime_types(), 0 ),
+               'captions'  => ! apply_filters( 'disable_captions', '' ),
+               'nonce'     => array(
+                       'sendToEditor' => wp_create_nonce( 'media-send-to-editor' ),
+               ),
+               'post'    => array(
+                       'id' => 0,
+               ),
+       );
+
+       $post = null;
+       if ( isset( $args['post'] ) ) {
+               $post = get_post( $args['post'] );
+               $settings['post'] = array(
+                       'id' => $post->ID,
+                       'nonce' => wp_create_nonce( 'update-post_' . $post->ID ),
+               );
+
+               if ( current_theme_supports( 'post-thumbnails', $post->post_type ) && post_type_supports( $post->post_type, 'thumbnail' ) ) {
+                       $featured_image_id = get_post_meta( $post->ID, '_thumbnail_id', true );
+                       $settings['post']['featuredImageId'] = $featured_image_id ? $featured_image_id : -1;
+               }
+       }
+
+       $hier = $post && is_post_type_hierarchical( $post->post_type );
+
+       $strings = array(
+               // Generic
+               'url'         => __( 'URL' ),
+               'addMedia'    => __( 'Add Media' ),
+               'search'      => __( 'Search' ),
+               'select'      => __( 'Select' ),
+               'cancel'      => __( 'Cancel' ),
+               /* translators: This is a would-be plural string used in the media manager.
+                  If there is not a word you can use in your language to avoid issues with the
+                  lack of plural support here, turn it into "selected: %d" then translate it.
+                */
+               'selected'    => __( '%d selected' ),
+               'dragInfo'    => __( 'Drag and drop to reorder images.' ),
+
+               // Upload
+               'uploadFilesTitle'  => __( 'Upload Files' ),
+               'uploadImagesTitle' => __( 'Upload Images' ),
+
+               // Library
+               'mediaLibraryTitle'  => __( 'Media Library' ),
+               'insertMediaTitle'   => __( 'Insert Media' ),
+               'createNewGallery'   => __( 'Create a new gallery' ),
+               'returnToLibrary'    => __( '&#8592; Return to library' ),
+               'allMediaItems'      => __( 'All media items' ),
+               'noItemsFound'       => __( 'No items found.' ),
+               'insertIntoPost'     => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
+               'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
+               'warnDelete' =>      __( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ),
+
+               // From URL
+               'insertFromUrlTitle' => __( 'Insert from URL' ),
+
+               // Featured Images
+               'setFeaturedImageTitle' => __( 'Set Featured Image' ),
+               'setFeaturedImage'    => __( 'Set featured image' ),
+
+               // Gallery
+               'createGalleryTitle' => __( 'Create Gallery' ),
+               'editGalleryTitle'   => __( 'Edit Gallery' ),
+               'cancelGalleryTitle' => __( '&#8592; Cancel Gallery' ),
+               'insertGallery'      => __( 'Insert gallery' ),
+               'updateGallery'      => __( 'Update gallery' ),
+               'addToGallery'       => __( 'Add to gallery' ),
+               'addToGalleryTitle'  => __( 'Add to Gallery' ),
+               'reverseOrder'       => __( 'Reverse order' ),
+       );
+
+       $settings = apply_filters( 'media_view_settings', $settings, $post );
+       $strings  = apply_filters( 'media_view_strings',  $strings,  $post );
+
+       $strings['settings'] = $settings;
+
+       wp_localize_script( 'media-views', '_wpMediaViewsL10n', $strings );
+
+       wp_enqueue_script( 'media-editor' );
+       wp_enqueue_style( 'media-views' );
+       wp_plupload_default_settings();
+
+       require_once ABSPATH . WPINC . '/media-template.php';
+       add_action( 'admin_footer', 'wp_print_media_templates' );
+       add_action( 'wp_footer', 'wp_print_media_templates' );
+
+       do_action( 'wp_enqueue_media' );
+}
index d6984f6200b25b831c8db33803e76aae008880d4..9db1de30cc036ad81917d2f5cbdf18a96a012f27 100644 (file)
@@ -123,9 +123,6 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v
        if ( null !== $check )
                return (bool) $check;
 
-       if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) )
-               return add_metadata($meta_type, $object_id, $meta_key, $passed_value);
-
        // Compare existing value to new value if no prev value given and the key exists only once.
        if ( empty($prev_value) ) {
                $old_value = get_metadata($meta_type, $object_id, $meta_key);
@@ -135,6 +132,9 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v
                }
        }
 
+       if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) )
+               return add_metadata($meta_type, $object_id, $meta_key, $passed_value);
+
        $_meta_value = $meta_value;
        $meta_value = maybe_serialize( $meta_value );
 
@@ -711,7 +711,30 @@ class WP_Meta_Query {
                $join = array();
                $where = array();
 
-               foreach ( $this->queries as $k => $q ) {
+               $key_only_queries = array();
+               $queries = array();
+
+               // Split out the meta_key only queries (we can only do this for OR)
+               if ( 'OR' == $this->relation ) {
+                       foreach ( $this->queries as $k => $q ) {
+                               if ( ! isset( $q['value'] ) && ! empty( $q['key'] ) )
+                                       $key_only_queries[$k] = $q;
+                               else
+                                       $queries[$k] = $q;
+                       }
+               } else {
+                       $queries = $this->queries;
+               }
+
+               // Specify all the meta_key only queries in one go
+               if ( $key_only_queries ) {
+                       $join[]  = "INNER JOIN $meta_table ON $primary_table.$primary_id_column = $meta_table.$meta_id_column";
+
+                       foreach ( $key_only_queries as $key => $q )
+                               $where["key-only-$key"] = $wpdb->prepare( "$meta_table.meta_key = %s", trim( $q['key'] ) );
+               }
+
+               foreach ( $queries as $k => $q ) {
                        $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : '';
                        $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR';
 
@@ -720,10 +743,35 @@ class WP_Meta_Query {
                        elseif ( ! in_array( $meta_type, array( 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED' ) ) )
                                $meta_type = 'CHAR';
 
+                       $meta_value = isset( $q['value'] ) ? $q['value'] : null;
+
+                       if ( isset( $q['compare'] ) )
+                               $meta_compare = strtoupper( $q['compare'] );
+                       else
+                               $meta_compare = is_array( $meta_value ) ? 'IN' : '=';
+
+                       if ( ! in_array( $meta_compare, array(
+                               '=', '!=', '>', '>=', '<', '<=',
+                               'LIKE', 'NOT LIKE',
+                               'IN', 'NOT IN',
+                               'BETWEEN', 'NOT BETWEEN',
+                               'NOT EXISTS'
+                       ) ) )
+                               $meta_compare = '=';
+
                        $i = count( $join );
                        $alias = $i ? 'mt' . $i : $meta_table;
 
-                       // Set JOIN
+                       if ( 'NOT EXISTS' == $meta_compare ) {
+                               $join[$i]  = "LEFT JOIN $meta_table";
+                               $join[$i] .= $i ? " AS $alias" : '';
+                               $join[$i] .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column AND $alias.meta_key = '$meta_key')";
+
+                               $where[$k] = ' ' . $alias . '.' . $meta_id_column . ' IS NULL';
+
+                               continue;
+                       }
+
                        $join[$i]  = "INNER JOIN $meta_table";
                        $join[$i] .= $i ? " AS $alias" : '';
                        $join[$i] .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column)";
@@ -732,21 +780,12 @@ class WP_Meta_Query {
                        if ( !empty( $meta_key ) )
                                $where[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key );
 
-                       if ( !isset( $q['value'] ) ) {
+                       if ( is_null( $meta_value ) ) {
                                if ( empty( $where[$k] ) )
                                        unset( $join[$i] );
                                continue;
                        }
 
-                       $meta_value = $q['value'];
-
-                       $meta_compare = is_array( $meta_value ) ? 'IN' : '=';
-                       if ( isset( $q['compare'] ) )
-                               $meta_compare = strtoupper( $q['compare'] );
-
-                       if ( ! in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) )
-                               $meta_compare = '=';
-
                        if ( in_array( $meta_compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
                                if ( ! is_array( $meta_value ) )
                                        $meta_value = preg_split( '/[,\s]+/', $meta_value );
index 8f66aaddc35132882f27e752eb7769697e1757fe..a1f70a40bdbadedfdedf92529acec382d609fa4a 100644 (file)
@@ -84,28 +84,32 @@ function get_blogaddress_by_domain( $domain, $path ) {
 }
 
 /**
- * Given a blog's (subdomain or directory) name, retrieve it's id.
+ * Given a blog's (subdomain or directory) slug, retrieve it's id.
  *
  * @since MU
  *
- * @param string $name
+ * @param string $slug
  * @return int A blog id
  */
-function get_id_from_blogname( $name ) {
+function get_id_from_blogname( $slug ) {
        global $wpdb, $current_site;
-       $blog_id = wp_cache_get( 'get_id_from_blogname_' . $name, 'blog-details' );
+
+       $slug = trim( $slug, '/' );
+
+       $blog_id = wp_cache_get( 'get_id_from_blogname_' . $slug, 'blog-details' );
        if ( $blog_id )
                return $blog_id;
 
        if ( is_subdomain_install() ) {
-               $domain = $name . '.' . $current_site->domain;
+               $domain = $slug . '.' . $current_site->domain;
                $path = $current_site->path;
        } else {
                $domain = $current_site->domain;
-               $path = $current_site->path . $name . '/';
+               $path = $current_site->path . $slug . '/';
        }
+
        $blog_id = $wpdb->get_var( $wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s AND path = %s", $domain, $path) );
-       wp_cache_set( 'get_id_from_blogname_' . $name, $blog_id, 'blog-details' );
+       wp_cache_set( 'get_id_from_blogname_' . $slug, $blog_id, 'blog-details' );
        return $blog_id;
 }
 
@@ -114,11 +118,11 @@ function get_id_from_blogname( $name ) {
  *
  * @since MU
  *
- * @param int|string|array $fields A blog ID, a blog name, or an array of fields to query against.
+ * @param int|string|array $fields A blog ID, a blog slug, or an array of fields to query against. Optional. If not specified the current blog ID is used.
  * @param bool $get_all Whether to retrieve all details or only the details in the blogs table. Default is true.
  * @return object Blog details.
  */
-function get_blog_details( $fields, $get_all = true ) {
+function get_blog_details( $fields = null, $get_all = true ) {
        global $wpdb;
 
        if ( is_array($fields ) ) {
@@ -162,7 +166,9 @@ function get_blog_details( $fields, $get_all = true ) {
                        return false;
                }
        } else {
-               if ( !is_numeric( $fields ) )
+               if ( ! $fields )
+                       $blog_id = get_current_blog_id();
+               elseif ( ! is_numeric( $fields ) )
                        $blog_id = get_id_from_blogname( $fields );
                else
                        $blog_id = $fields;
@@ -222,9 +228,11 @@ function get_blog_details( $fields, $get_all = true ) {
                return $details;
        }
 
-       $details->blogname              = get_blog_option( $blog_id, 'blogname' );
-       $details->siteurl               = get_blog_option( $blog_id, 'siteurl' );
-       $details->post_count    = get_blog_option( $blog_id, 'post_count' );
+       switch_to_blog( $blog_id );
+       $details->blogname              = get_option( 'blogname' );
+       $details->siteurl               = get_option( 'siteurl' );
+       $details->post_count    = get_option( 'post_count' );
+       restore_current_blog();
 
        $details = apply_filters( 'blog_details', $details );
 
@@ -247,11 +255,7 @@ function refresh_blog_details( $blog_id ) {
        $blog_id = (int) $blog_id;
        $details = get_blog_details( $blog_id, false );
 
-       wp_cache_delete( $blog_id , 'blog-details' );
-       wp_cache_delete( $blog_id . 'short' , 'blog-details' );
-       wp_cache_delete( md5( $details->domain . $details->path )  , 'blog-lookup' );
-       wp_cache_delete( 'current_blog_' . $details->domain, 'site-options' );
-       wp_cache_delete( 'current_blog_' . $details->domain . $details->path, 'site-options' );
+       clean_blog_cache( $details );
 
        do_action( 'refresh_blog_details', $blog_id );
 }
@@ -288,18 +292,48 @@ function update_blog_details( $blog_id, $details = array() ) {
        foreach ( array_intersect( array_keys( $details ), $fields ) as $field )
                $update_details[$field] = $details[$field];
 
-       $wpdb->update( $wpdb->blogs, $update_details, array('blog_id' => $blog_id) );
+       $result = $wpdb->update( $wpdb->blogs, $update_details, array('blog_id' => $blog_id) );
+
+       if ( false === $result )
+               return false;
 
        // If spam status changed, issue actions.
        if ( $details[ 'spam' ] != $current_details[ 'spam' ] ) {
                if ( $details[ 'spam' ] == 1 )
-                       do_action( "make_spam_blog", $blog_id );
+                       do_action( 'make_spam_blog', $blog_id );
                else
-                       do_action( "make_ham_blog", $blog_id );
+                       do_action( 'make_ham_blog', $blog_id );
        }
 
-       if ( isset($details[ 'public' ]) )
-               update_blog_option( $blog_id, 'blog_public', $details[ 'public' ] );
+       // If mature status changed, issue actions.
+       if ( $details[ 'mature' ] != $current_details[ 'mature' ] ) {
+               if ( $details[ 'mature' ] == 1 )
+                       do_action( 'mature_blog', $blog_id );
+               else
+                       do_action( 'unmature_blog', $blog_id );
+       }
+
+       // If archived status changed, issue actions.
+       if ( $details[ 'archived' ] != $current_details[ 'archived' ] ) {
+               if ( $details[ 'archived' ] == 1 )
+                       do_action( 'archive_blog', $blog_id );
+               else
+                       do_action( 'unarchive_blog', $blog_id );
+       }
+
+       // If deleted status changed, issue actions.
+       if ( $details[ 'deleted' ] != $current_details[ 'deleted' ] ) {
+               if ( $details[ 'deleted' ] == 1 )
+                       do_action( 'make_delete_blog', $blog_id );
+               else
+                       do_action( 'make_undelete_blog', $blog_id );
+       }
+
+       if ( isset( $details[ 'public' ] ) ) {
+               switch_to_blog( $blog_id );
+               update_option( 'blog_public', $details[ 'public' ] );
+               restore_current_blog();
+       }
 
        refresh_blog_details($blog_id);
 
@@ -307,114 +341,115 @@ function update_blog_details( $blog_id, $details = array() ) {
 }
 
 /**
- * Retrieve option value based on setting name and blog_id.
+ * Clean the blog cache
+ *
+ * @since 3.5.0
+ *
+ * @param stdClass $blog The blog details as returned from get_blog_details()
+ */
+function clean_blog_cache( $blog ) {
+       $blog_id = $blog->blog_id;
+       $domain_path_key = md5( $blog->domain . $blog->path );
+
+       wp_cache_delete( $blog_id , 'blog-details' );
+       wp_cache_delete( $blog_id . 'short' , 'blog-details' );
+       wp_cache_delete(  $domain_path_key, 'blog-lookup' );
+       wp_cache_delete( 'current_blog_' . $blog->domain, 'site-options' );
+       wp_cache_delete( 'current_blog_' . $blog->domain . $blog->path, 'site-options' );
+       wp_cache_delete( 'get_id_from_blogname_' . trim( $blog->path, '/' ), 'blog-details' );
+       wp_cache_delete( $domain_path_key, 'blog-id-cache' );
+}
+
+/**
+ * Retrieve option value for a given blog id based on name of option.
  *
  * If the option does not exist or does not have a value, then the return value
  * will be false. This is useful to check whether you need to install an option
  * and is commonly used during installation of plugin options and to test
  * whether upgrading is required.
  *
- * There is a filter called 'blog_option_$option' with the $option being
- * replaced with the option name. The filter takes two parameters. $value and
- * $blog_id. It returns $value.
- * The 'option_$option' filter in get_option() is not called.
+ * If the option was serialized then it will be unserialized when it is returned.
  *
  * @since MU
- * @uses apply_filters() Calls 'blog_option_$optionname' with the option name value.
  *
- * @param int $blog_id Optional. Blog ID, can be null to refer to the current blog.
- * @param string $setting Name of option to retrieve. Should already be SQL-escaped.
- * @param string $default (optional) Default value returned if option not found.
+ * @param int $id A blog ID. Can be null to refer to the current blog.
+ * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
+ * @param mixed $default Optional. Default value to return if the option does not exist.
  * @return mixed Value set for the option.
  */
-function get_blog_option( $blog_id, $setting, $default = false ) {
-       global $wpdb;
+function get_blog_option( $id, $option, $default = false ) {
+       $id = (int) $id;
 
-       if ( null === $blog_id )
-               $blog_id = $wpdb->blogid;
-
-       $key = $blog_id . '-' . $setting . '-blog_option';
-       $value = wp_cache_get( $key, 'site-options' );
-       if ( $value == null ) {
-               if ( $blog_id == $wpdb->blogid ) {
-                       $value = get_option( $setting, $default );
-                       $notoptions = wp_cache_get( 'notoptions', 'options' );
-                       if ( isset( $notoptions[$setting] ) ) {
-                               wp_cache_set( $key, 'noop', 'site-options' );
-                               $value = $default;
-                       } elseif ( $value == false ) {
-                               wp_cache_set( $key, 'falsevalue', 'site-options' );
-                       } else {
-                               wp_cache_set( $key, $value, 'site-options' );
-                       }
-                       return apply_filters( 'blog_option_' . $setting, $value, $blog_id );
-               } else {
-                       $blog_prefix = $wpdb->get_blog_prefix( $blog_id );
-                       $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$blog_prefix}options WHERE option_name = %s", $setting ) );
-                       if ( is_object( $row ) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values
-                               $value = $row->option_value;
-                               if ( $value == false )
-                                       wp_cache_set( $key, 'falsevalue', 'site-options' );
-                               else
-                                       wp_cache_set( $key, $value, 'site-options' );
-                       } else { // option does not exist, so we must cache its non-existence
-                               wp_cache_set( $key, 'noop', 'site-options' );
-                               $value = $default;
-                       }
-               }
-       } elseif ( $value == 'noop' ) {
-               $value = $default;
-       } elseif ( $value == 'falsevalue' ) {
-               $value = false;
-       }
-       // If home is not set use siteurl.
-       if ( 'home' == $setting && '' == $value )
-               return get_blog_option( $blog_id, 'siteurl' );
+       if ( empty( $id ) )
+               $id = get_current_blog_id();
 
-       if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting )
-               $value = untrailingslashit( $value );
+       if ( get_current_blog_id() == $id )
+               return get_option( $option, $default );
+
+       switch_to_blog( $id );
+       $value = get_option( $option, $default );
+       restore_current_blog();
 
-       return apply_filters( 'blog_option_' . $setting, maybe_unserialize( $value ), $blog_id );
+       return apply_filters( 'blog_option_' . $option, $value, $id );
 }
 
 /**
- * Add an option for a particular blog.
+ * Add a new option for a given blog id.
+ *
+ * You do not need to serialize values. If the value needs to be serialized, then
+ * it will be serialized before it is inserted into the database. Remember,
+ * resources can not be serialized or added as an option.
+ *
+ * You can create options without values and then update the values later.
+ * Existing options will not be updated and checks are performed to ensure that you
+ * aren't adding a protected WordPress option. Care should be taken to not name
+ * options the same as the ones which are protected.
  *
  * @since MU
  *
- * @param int $id The blog id
- * @param string $key The option key
- * @param mixed $value The option value
- * @return bool True on success, false on failure.
+ * @param int $id A blog ID. Can be null to refer to the current blog.
+ * @param string $option Name of option to add. Expected to not be SQL-escaped.
+ * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
+ * @return bool False if option was not added and true if option was added.
  */
-function add_blog_option( $id, $key, $value ) {
+function add_blog_option( $id, $option, $value ) {
        $id = (int) $id;
 
-       switch_to_blog($id);
-       $return = add_option( $key, $value );
+       if ( empty( $id ) )
+               $id = get_current_blog_id();
+
+       if ( get_current_blog_id() == $id )
+               return add_option( $option, $value );
+
+       switch_to_blog( $id );
+       $return = add_option( $option, $value );
        restore_current_blog();
-       if ( $return )
-               wp_cache_set( $id . '-' . $key . '-blog_option', $value, 'site-options' );
+
        return $return;
 }
 
 /**
- * Delete an option for a particular blog.
+ * Removes option by name for a given blog id. Prevents removal of protected WordPress options.
  *
  * @since MU
  *
- * @param int $id The blog id
- * @param string $key The option key
- * @return bool True on success, false on failure.
+ * @param int $id A blog ID. Can be null to refer to the current blog.
+ * @param string $option Name of option to remove. Expected to not be SQL-escaped.
+ * @return bool True, if option is successfully deleted. False on failure.
  */
-function delete_blog_option( $id, $key ) {
+function delete_blog_option( $id, $option ) {
        $id = (int) $id;
 
-       switch_to_blog($id);
-       $return = delete_option( $key );
+       if ( empty( $id ) )
+               $id = get_current_blog_id();
+
+       if ( get_current_blog_id() == $id )
+               return delete_option( $option );
+
+       switch_to_blog( $id );
+       $return = delete_option( $option );
        restore_current_blog();
-       if ( $return )
-               wp_cache_set( $id . '-' . $key . '-blog_option', '', 'site-options' );
+
        return $return;
 }
 
@@ -424,24 +459,25 @@ function delete_blog_option( $id, $key ) {
  * @since MU
  *
  * @param int $id The blog id
- * @param string $key The option key
+ * @param string $option The option key
  * @param mixed $value The option value
  * @return bool True on success, false on failrue.
  */
-function update_blog_option( $id, $key, $value, $deprecated = null ) {
+function update_blog_option( $id, $option, $value, $deprecated = null ) {
        $id = (int) $id;
 
        if ( null !== $deprecated  )
                _deprecated_argument( __FUNCTION__, '3.1' );
 
-       switch_to_blog($id);
-       $return = update_option( $key, $value );
+       if ( get_current_blog_id() == $id )
+               return update_option( $option, $value );
+
+       switch_to_blog( $id );
+       $return = update_option( $option, $value );
        restore_current_blog();
 
        refresh_blog_details( $id );
 
-       if ( $return )
-               wp_cache_set( $id . '-' . $key . '-blog_option', $value, 'site-options');
        return $return;
 }
 
@@ -459,68 +495,61 @@ function update_blog_option( $id, $key, $value, $deprecated = null ) {
  * @since MU
  *
  * @param int $new_blog The id of the blog you want to switch to. Default: current blog
- * @param bool $validate Whether to check if $new_blog exists before proceeding
- * @return bool        True on success, False if the validation failed
+ * @param bool $deprecated Deprecated argument
+ * @return bool True on success, false if the validation failed
  */
-function switch_to_blog( $new_blog, $validate = false ) {
-       global $wpdb, $table_prefix, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache;
-
-       if ( empty($new_blog) )
-               $new_blog = $blog_id;
+function switch_to_blog( $new_blog, $deprecated = null ) {
+       global $wpdb, $wp_roles;
 
-       if ( $validate && ! get_blog_details( $new_blog ) )
-               return false;
+       if ( empty( $new_blog ) )
+               $new_blog = $GLOBALS['blog_id'];
 
-       if ( empty($switched_stack) )
-               $switched_stack = array();
-
-       $switched_stack[] = $blog_id;
+       $GLOBALS['_wp_switched_stack'][] = $GLOBALS['blog_id'];
 
        /* If we're switching to the same blog id that we're on,
        * set the right vars, do the associated actions, but skip
        * the extra unnecessary work */
-       if ( $blog_id == $new_blog ) {
-               do_action( 'switch_blog', $blog_id, $blog_id );
-               $switched = true;
+       if ( $new_blog == $GLOBALS['blog_id'] ) {
+               do_action( 'switch_blog', $new_blog, $new_blog );
+               $GLOBALS['switched'] = true;
                return true;
        }
 
-       $wpdb->set_blog_id($new_blog);
-       $table_prefix = $wpdb->prefix;
-       $prev_blog_id = $blog_id;
-       $blog_id = $new_blog;
-
-       if ( is_object( $wp_roles ) ) {
-               $wpdb->suppress_errors();
-               if ( method_exists( $wp_roles ,'_init' ) )
-                       $wp_roles->_init();
-               elseif ( method_exists( $wp_roles, '__construct' ) )
-                       $wp_roles->__construct();
-               $wpdb->suppress_errors( false );
+       $wpdb->set_blog_id( $new_blog );
+       $GLOBALS['table_prefix'] = $wpdb->prefix;
+       $prev_blog_id = $GLOBALS['blog_id'];
+       $GLOBALS['blog_id'] = $new_blog;
+
+       if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
+               wp_cache_switch_to_blog( $new_blog );
+       } else {
+               global $wp_object_cache;
+
+               if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
+                       $global_groups = $wp_object_cache->global_groups;
+               else
+                       $global_groups = false;
+
+               wp_cache_init();
+
+               if ( function_exists( 'wp_cache_add_global_groups' ) ) {
+                       if ( is_array( $global_groups ) )
+                               wp_cache_add_global_groups( $global_groups );
+                       else
+                               wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', ' blog-id-cache' ) );
+                       wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
+               }
        }
 
-       if ( did_action('init') ) {
+       if ( did_action( 'init' ) ) {
+               $wp_roles->reinit();
                $current_user = wp_get_current_user();
-               if ( is_object( $current_user ) )
-                       $current_user->for_blog( $blog_id );
+               $current_user->for_blog( $new_blog );
        }
 
-       if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
-               $global_groups = $wp_object_cache->global_groups;
-       else
-               $global_groups = false;
+       do_action( 'switch_blog', $new_blog, $prev_blog_id );
+       $GLOBALS['switched'] = true;
 
-       wp_cache_init();
-       if ( function_exists('wp_cache_add_global_groups') ) {
-               if ( is_array( $global_groups ) )
-                       wp_cache_add_global_groups( $global_groups );
-               else
-                       wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );
-               wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
-       }
-
-       do_action('switch_blog', $blog_id, $prev_blog_id);
-       $switched = true;
        return true;
 }
 
@@ -530,66 +559,74 @@ function switch_to_blog( $new_blog, $validate = false ) {
  * @see switch_to_blog()
  * @since MU
  *
- * @return bool True on success, False if we're already on the current blog
+ * @return bool True on success, false if we're already on the current blog
  */
 function restore_current_blog() {
-       global $table_prefix, $wpdb, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache;
+       global $wpdb, $wp_roles;
 
-       if ( !$switched )
+       if ( empty( $GLOBALS['_wp_switched_stack'] ) )
                return false;
 
-       if ( !is_array( $switched_stack ) )
-               return false;
+       $blog = array_pop( $GLOBALS['_wp_switched_stack'] );
 
-       $blog = array_pop( $switched_stack );
-       if ( $blog_id == $blog ) {
+       if ( $GLOBALS['blog_id'] == $blog ) {
                do_action( 'switch_blog', $blog, $blog );
-               /* If we still have items in the switched stack, consider ourselves still 'switched' */
-               $switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0 );
+               // If we still have items in the switched stack, consider ourselves still 'switched'
+               $GLOBALS['switched'] = ! empty( $GLOBALS['_wp_switched_stack'] );
                return true;
        }
 
-       $wpdb->set_blog_id($blog);
-       $prev_blog_id = $blog_id;
-       $blog_id = $blog;
-       $table_prefix = $wpdb->prefix;
-
-       if ( is_object( $wp_roles ) ) {
-               $wpdb->suppress_errors();
-               if ( method_exists( $wp_roles ,'_init' ) )
-                       $wp_roles->_init();
-               elseif ( method_exists( $wp_roles, '__construct' ) )
-                       $wp_roles->__construct();
-               $wpdb->suppress_errors( false );
+       $wpdb->set_blog_id( $blog );
+       $prev_blog_id = $GLOBALS['blog_id'];
+       $GLOBALS['blog_id'] = $blog;
+       $GLOBALS['table_prefix'] = $wpdb->prefix;
+
+       if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
+               wp_cache_switch_to_blog( $blog );
+       } else {
+               global $wp_object_cache;
+
+               if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
+                       $global_groups = $wp_object_cache->global_groups;
+               else
+                       $global_groups = false;
+
+               wp_cache_init();
+
+               if ( function_exists( 'wp_cache_add_global_groups' ) ) {
+                       if ( is_array( $global_groups ) )
+                               wp_cache_add_global_groups( $global_groups );
+                       else
+                               wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', ' blog-id-cache' ) );
+                       wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
+               }
        }
 
-       if ( did_action('init') ) {
+       if ( did_action( 'init' ) ) {
+               $wp_roles->reinit();
                $current_user = wp_get_current_user();
-               if ( is_object( $current_user ) )
-                       $current_user->for_blog( $blog_id );
+               $current_user->for_blog( $blog );
        }
 
-       if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
-               $global_groups = $wp_object_cache->global_groups;
-       else
-               $global_groups = false;
+       do_action( 'switch_blog', $blog, $prev_blog_id );
 
-       wp_cache_init();
-       if ( function_exists('wp_cache_add_global_groups') ) {
-               if ( is_array( $global_groups ) )
-                       wp_cache_add_global_groups( $global_groups );
-               else
-                       wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );
-               wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
-       }
+       // If we still have items in the switched stack, consider ourselves still 'switched'
+       $GLOBALS['switched'] = ! empty( $GLOBALS['_wp_switched_stack'] );
 
-       do_action('switch_blog', $blog_id, $prev_blog_id);
-
-       /* If we still have items in the switched stack, consider ourselves still 'switched' */
-       $switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0 );
        return true;
 }
 
+/**
+ * Determines if switch_to_blog() is in effect
+ *
+ * @since 3.5.0
+ *
+ * @return bool True if switched, false otherwise.
+ */
+function ms_is_switched() {
+       return ! empty( $GLOBALS['_wp_switched_stack'] );
+}
+
 /**
  * Check if a particular blog is archived.
  *
@@ -632,12 +669,15 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
        if ( null !== $deprecated  )
                _deprecated_argument( __FUNCTION__, '3.1' );
 
-       if ( !in_array( $pref, array( 'site_id', 'domain', 'path', 'registered', 'last_updated', 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id') ) )
+       if ( ! in_array( $pref, array( 'site_id', 'domain', 'path', 'registered', 'last_updated', 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id') ) )
                return $value;
 
-       $wpdb->update( $wpdb->blogs, array($pref => $value, 'last_updated' => current_time('mysql', true)), array('blog_id' => $blog_id) );
+       $result = $wpdb->update( $wpdb->blogs, array($pref => $value, 'last_updated' => current_time('mysql', true)), array('blog_id' => $blog_id) );
 
-       refresh_blog_details($blog_id);
+       if ( false === $result )
+               return false;
+
+       refresh_blog_details( $blog_id );
 
        if ( 'spam' == $pref )
                ( $value == 1 ) ? do_action( 'make_spam_blog', $blog_id ) :     do_action( 'make_ham_blog', $blog_id );
@@ -645,8 +685,8 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
                ( $value == 1 ) ? do_action( 'mature_blog', $blog_id ) : do_action( 'unmature_blog', $blog_id );
        elseif ( 'archived' == $pref )
                ( $value == 1 ) ? do_action( 'archive_blog', $blog_id ) : do_action( 'unarchive_blog', $blog_id );
-       elseif ( 'archived' == $pref )
-               ( $value == 1 ) ? do_action( 'archive_blog', $blog_id ) : do_action( 'unarchive_blog', $blog_id );
+       elseif ( 'deleted' == $pref )
+               ( $value == 1 ) ? do_action( 'make_delete_blog', $blog_id ) : do_action( 'make_undelete_blog', $blog_id );
 
        return $value;
 }
index cc341b140ca0d0311fb9f75b50da05048a209dc0..53dfc9b55cc83f6ac51e183910bb1716d66cb1bf 100644 (file)
 /**
  * Defines Multisite upload constants.
  *
+ * Exists for backward compatibility with legacy file-serving through
+ * wp-includes/ms-files.php (wp-content/blogs.php in MU).
+ *
  * @since 3.0.0
  */
-function ms_upload_constants(  ) {
+function ms_upload_constants() {
        global $wpdb;
 
-       /** @since 3.0.0 */
+       // This filter is attached in ms-default-filters.php but that file is not included during SHORTINIT.
+       add_filter( 'default_site_option_ms_files_rewriting', '__return_true' );
+
+       if ( ! get_site_option( 'ms_files_rewriting' ) )
+               return;
+
        // Base uploads dir relative to ABSPATH
        if ( !defined( 'UPLOADBLOGSDIR' ) )
                define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );
 
-       /** @since 3.0.0 */
-       if ( !defined( 'UPLOADS' ) ) {
-               // Uploads dir relative to ABSPATH
+       // Note, the main site in a post-MU network uses wp-content/uploads.
+       // This is handled in wp_upload_dir() by ignoring UPLOADS for this case.
+       if ( ! defined( 'UPLOADS' ) ) {
                define( 'UPLOADS', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
-               if ( 'wp-content/blogs.dir' == UPLOADBLOGSDIR )
+
+               // Uploads dir relative to ABSPATH
+               if ( 'wp-content/blogs.dir' == UPLOADBLOGSDIR && ! defined( 'BLOGUPLOADDIR' ) )
                        define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );
        }
 }
@@ -53,7 +63,7 @@ function ms_cookie_constants(  ) {
         * @since 2.6.0
         */
        if ( !defined( 'ADMIN_COOKIE_PATH' ) ) {
-               if( !is_subdomain_install() ) {
+               if ( ! is_subdomain_install() || trim( parse_url( get_option( 'siteurl' ), PHP_URL_PATH ), '/' ) ) {
                        define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH );
                } else {
                        define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
@@ -74,9 +84,12 @@ function ms_cookie_constants(  ) {
 /**
  * Defines Multisite file constants.
  *
+ * Exists for backward compatibility with legacy file-serving through
+ * wp-includes/ms-files.php (wp-content/blogs.php in MU).
+ *
  * @since 3.0.0
  */
-function ms_file_constants(  ) {
+function ms_file_constants() {
        /**
         * Optional support for X-Sendfile header
         * @since 3.0.0
index 44d8294ac5e81e2d77a3d7211564db7f4fde3b16..34dc151c4461cfe685c519a2b41c51555b8964f9 100644 (file)
@@ -45,6 +45,7 @@ add_filter( 'wp_upload_bits', 'upload_is_file_too_big' );
 add_filter( 'import_upload_size_limit', 'fix_import_form_size' );
 add_filter( 'upload_mimes', 'check_upload_mimes' );
 add_filter( 'upload_size_limit', 'upload_size_limit_filter' );
+add_action( 'upload_ui_over_quota', 'multisite_over_quota_message' );
 
 // Mail
 add_action( 'phpmailer_init', 'fix_phpmailer_messageid' );
@@ -60,3 +61,6 @@ add_filter( 'force_filtered_html_on_import', '__return_true' );
 // WP_HOME and WP_SITEURL should not have any effect in MS
 remove_filter( 'option_siteurl', '_config_wp_siteurl' );
 remove_filter( 'option_home',    '_config_wp_home'    );
+
+// If the network upgrade hasn't run yet, assume ms-files.php rewriting is used.
+add_filter( 'default_site_option_ms_files_rewriting', '__return_true' );
\ No newline at end of file
index f4fe306b7d6df4ae483c05f02fa1add92dcbbbb7..0f6794b55c527d070c42e2b06b9e9a8957fdeb96 100644 (file)
@@ -152,17 +152,12 @@ function get_blog_count( $id = 0 ) {
  *
  * @param int $blog_id ID of the blog.
  * @param int $post_id ID of the post you're looking for.
- * @return object The post.
+ * @return WP_Post|null WP_Post on success or null on failure
  */
 function get_blog_post( $blog_id, $post_id ) {
-       global $wpdb;
-
-       $key = $blog_id . '-' . $post_id;
-       $post = wp_cache_get( $key, 'global-posts' );
-       if ( $post == false ) {
-               $post = $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM ' . $wpdb->get_blog_prefix( $blog_id ) . 'posts WHERE ID = %d', $post_id ) );
-               wp_cache_add( $key, $post, 'global-posts' );
-       }
+       switch_to_blog( $blog_id );
+       $post = get_post( $post_id );
+       restore_current_blog();
 
        return $post;
 }
@@ -183,11 +178,11 @@ function get_blog_post( $blog_id, $post_id ) {
 function add_user_to_blog( $blog_id, $user_id, $role ) {
        switch_to_blog($blog_id);
 
-       $user = new WP_User($user_id);
+       $user = get_userdata( $user_id );
 
-       if ( ! $user->exists() ) {
+       if ( ! $user ) {
                restore_current_blog();
-               return new WP_Error('user_does_not_exist', __('That user does not exist.'));
+               return new WP_Error( 'user_does_not_exist', __( 'The requested user does not exist.' ) );
        }
 
        if ( !get_user_meta($user_id, 'primary_blog', true) ) {
@@ -246,8 +241,8 @@ function remove_user_from_blog($user_id, $blog_id = '', $reassign = '') {
        }
 
        // wp_revoke_user($user_id);
-       $user = new WP_User($user_id);
-       if ( ! $user->exists() ) {
+       $user = get_userdata( $user_id );
+       if ( ! $user ) {
                restore_current_blog();
                return new WP_Error('user_does_not_exist', __('That user does not exist.'));
        }
@@ -313,19 +308,15 @@ function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
  *
  * @since MU 1.0
  *
- * @param int $_blog_id ID of the source blog.
+ * @param int $blog_id ID of the source blog.
  * @param int $post_id ID of the desired post.
  * @return string The post's permalink
  */
-function get_blog_permalink( $_blog_id, $post_id ) {
-       $key = "{$_blog_id}-{$post_id}-blog_permalink";
-       $link = wp_cache_get( $key, 'site-options' );
-       if ( $link == false ) {
-               switch_to_blog( $_blog_id );
-               $link = get_permalink( $post_id );
-               restore_current_blog();
-               wp_cache_add( $key, $link, 'site-options', 360 );
-       }
+function get_blog_permalink( $blog_id, $post_id ) {
+       switch_to_blog( $blog_id );
+       $link = get_permalink( $post_id );
+       restore_current_blog();
+
        return $link;
 }
 
@@ -341,27 +332,27 @@ function get_blog_permalink( $_blog_id, $post_id ) {
  *
  * @param string $domain
  * @param string $path Optional. Not required for subdomain installations.
- * @return int
+ * @return int 0 if no blog found, otherwise the ID of the matching blog
  */
 function get_blog_id_from_url( $domain, $path = '/' ) {
        global $wpdb;
 
-       $domain = strtolower( $wpdb->escape( $domain ) );
-       $path = strtolower( $wpdb->escape( $path ) );
+       $domain = strtolower( $domain );
+       $path = strtolower( $path );
        $id = wp_cache_get( md5( $domain . $path ), 'blog-id-cache' );
 
-       if ( $id == -1 ) // blog does not exist
+       if ( $id == -1 ) // blog does not exist
                return 0;
-       } elseif ( $id ) {
-               return (int)$id;
-       }
+       elseif ( $id )
+               return (int) $id;
 
-       $id = $wpdb->get_var( "SELECT blog_id FROM $wpdb->blogs WHERE domain = '$domain' and path = '$path' /* get_blog_id_from_url */" );
+       $id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s and path = %s /* get_blog_id_from_url */", $domain, $path ) );
 
-       if ( !$id ) {
+       if ( ! $id ) {
                wp_cache_set( md5( $domain . $path ), -1, 'blog-id-cache' );
-               return false;
+               return 0;
        }
+
        wp_cache_set( md5( $domain . $path ), $id, 'blog-id-cache' );
 
        return $id;
@@ -384,25 +375,32 @@ function get_blog_id_from_url( $domain, $path = '/' ) {
  */
 function is_email_address_unsafe( $user_email ) {
        $banned_names = get_site_option( 'banned_email_domains' );
-       if ($banned_names && !is_array( $banned_names ))
-               $banned_names = explode( "\n", $banned_names);
+       if ( $banned_names && ! is_array( $banned_names ) )
+               $banned_names = explode( "\n", $banned_names );
+
+       $is_email_address_unsafe = false;
 
-       if ( is_array( $banned_names ) && empty( $banned_names ) == false ) {
-               $email_domain = strtolower( substr( $user_email, 1 + strpos( $user_email, '@' ) ) );
-               foreach ( (array) $banned_names as $banned_domain ) {
-                       if ( $banned_domain == '' )
+       if ( $banned_names && is_array( $banned_names ) ) {
+               list( $email_local_part, $email_domain ) = explode( '@', $user_email );
+
+               foreach ( $banned_names as $banned_domain ) {
+                       if ( ! $banned_domain )
                                continue;
-                       if (
-                               strstr( $email_domain, $banned_domain ) ||
-                               (
-                                       strstr( $banned_domain, '/' ) &&
-                                       preg_match( $banned_domain, $email_domain )
-                               )
-                       )
-                       return true;
+
+                       if ( $email_domain == $banned_domain ) {
+                               $is_email_address_unsafe = true;
+                               break;
+                       }
+
+                       $dotted_domain = ".$banned_domain";
+                       if ( $dotted_domain === substr( $user_email, -strlen( $dotted_domain ) ) ) {
+                               $is_email_address_unsafe = true;
+                               break;
+                       }
                }
        }
-       return false;
+
+       return apply_filters( 'is_email_address_unsafe', $is_email_address_unsafe, $user_email );
 }
 
 /**
@@ -471,7 +469,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $errors->add('user_name', __('Sorry, usernames must have letters too!'));
 
        if ( !is_email( $user_email ) )
-               $errors->add('user_email', __( 'Please enter a correct email address.' ) );
+               $errors->add('user_email', __( 'Please enter a valid email address.' ) );
 
        $limited_email_domains = get_site_option( 'limited_email_domains' );
        if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) {
@@ -482,11 +480,11 @@ function wpmu_validate_user_signup($user_name, $user_email) {
 
        // Check if the username has been used already.
        if ( username_exists($user_name) )
-               $errors->add('user_name', __('Sorry, that username already exists!'));
+               $errors->add( 'user_name', __( 'Sorry, that username already exists!' ) );
 
        // Check if the email address has been used already.
        if ( email_exists($user_email) )
-               $errors->add('user_email', __('Sorry, that email address is already used!'));
+               $errors->add( 'user_email', __( 'Sorry, that email address is already used!' ) );
 
        // Has someone already signed up for this username?
        $signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE user_login = %s", $user_name) );
@@ -495,7 +493,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $now = current_time( 'timestamp', true );
                $diff = $now - $registered_at;
                // If registered more than two days ago, cancel registration and let this signup go through.
-               if ( $diff > 172800 )
+               if ( $diff > 2 * DAY_IN_SECONDS )
                        $wpdb->delete( $wpdb->signups, array( 'user_login' => $user_name ) );
                else
                        $errors->add('user_name', __('That username is currently reserved but may be available in a couple of days.'));
@@ -508,7 +506,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
        if ( $signup != null ) {
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
-               if ( $diff > 172800 )
+               if ( $diff > 2 * DAY_IN_SECONDS )
                        $wpdb->delete( $wpdb->signups, array( 'user_email' => $user_email ) );
                else
                        $errors->add('user_email', __('That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.'));
@@ -542,7 +540,9 @@ function wpmu_validate_user_signup($user_name, $user_email) {
  * @return array Contains the new site data and error messages.
  */
 function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
-       global $wpdb, $domain, $base, $current_site;
+       global $wpdb, $domain, $current_site;
+
+       $base = $current_site->path;
 
        $blog_title = strip_tags( $blog_title );
        $blog_title = substr( $blog_title, 0, 50 );
@@ -562,7 +562,7 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
                $errors->add('blogname', __( 'Please enter a site name.' ) );
 
        if ( preg_match( '/[^a-z0-9]+/', $blogname ) )
-               $errors->add('blogname', __( 'Only lowercase letters and numbers allowed.' ) );
+               $errors->add('blogname', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );
 
        if ( in_array( $blogname, $illegal_names ) == true )
                $errors->add('blogname',  __( 'That name is not allowed.' ) );
@@ -598,8 +598,8 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
                $mydomain = "$domain";
                $path = $base.$blogname.'/';
        }
-       if ( domain_exists($mydomain, $path) )
-               $errors->add('blogname', __('Sorry, that site already exists!'));
+       if ( domain_exists($mydomain, $path, $current_site->id) )
+               $errors->add( 'blogname', __( 'Sorry, that site already exists!' ) );
 
        if ( username_exists( $blogname ) ) {
                if ( is_object( $user ) == false || ( is_object($user) && ( $user->user_login != $blogname ) ) )
@@ -611,13 +611,13 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
        if ( ! empty($signup) ) {
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
-               if ( $diff > 172800 )
+               if ( $diff > 2 * DAY_IN_SECONDS )
                        $wpdb->delete( $wpdb->signups, array( 'domain' => $mydomain , 'path' => $path ) );
                else
                        $errors->add('blogname', __('That site is currently reserved but may be available in a couple days.'));
        }
 
-       $result = array('domain' => $mydomain, 'path' => $path, 'blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors);
+       $result = array('domain' => $mydomain, 'path' => $path, 'blogname' => $blogname, 'blog_title' => $blog_title, 'user' => $user, 'errors' => $errors);
        return apply_filters('wpmu_validate_blog_signup', $result);
 }
 
@@ -790,7 +790,7 @@ function wpmu_signup_user_notification($user, $user_email, $key, $meta = '') {
        $message_headers = "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n";
        $message = sprintf(
                apply_filters( 'wpmu_signup_user_notification_email',
-                       __( "To activate your user, please click the following link:\n\n%s\n\nAfter you activate, you will receive *another email* with your login.\n\n" ),
+                       __( "To activate your user, please click the following link:\n\n%s\n\nAfter you activate, you will receive *another email* with your login." ),
                        $user, $user_email, $key, $meta
                ),
                site_url( "wp-activate.php?key=$key" )
@@ -965,7 +965,7 @@ function wpmu_create_blog($domain, $path, $title, $user_id, $meta = '', $site_id
 
        // Check if the domain has been used already. We should return an error message.
        if ( domain_exists($domain, $path, $site_id) )
-               return new WP_Error('blog_taken', __('Site already exists.'));
+               return new WP_Error( 'blog_taken', __( 'Sorry, that site already exists!' ) );
 
        if ( !defined('WP_INSTALLING') )
                define( 'WP_INSTALLING', true );
@@ -1024,11 +1024,11 @@ function newblog_notify_siteadmin( $blog_id, $deprecated = '' ) {
        $siteurl = site_url();
        restore_current_blog();
 
-       $msg = sprintf( __( 'New Site: %1s
-URL: %2s
-Remote IP: %3s
+       $msg = sprintf( __( 'New Site: %1$s
+URL: %2$s
+Remote IP: %3$s
 
-Disable these notifications: %4s' ), $blogname, $siteurl, $_SERVER['REMOTE_ADDR'], $options_site_url);
+Disable these notifications: %4$s' ), $blogname, $siteurl, $_SERVER['REMOTE_ADDR'], $options_site_url);
        $msg = apply_filters( 'newblog_notify_siteadmin', $msg );
 
        wp_mail( $email, sprintf( __( 'New Site Registration: %s' ), $siteurl ), $msg );
@@ -1056,13 +1056,13 @@ function newuser_notify_siteadmin( $user_id ) {
        if ( is_email($email) == false )
                return false;
 
-       $user = new WP_User($user_id);
+       $user = get_userdata( $user_id );
 
        $options_site_url = esc_url(network_admin_url('settings.php'));
-       $msg = sprintf(__('New User: %1s
-Remote IP: %2s
+       $msg = sprintf(__('New User: %1$s
+Remote IP: %2$s
 
-Disable these notifications: %3s'), $user->user_login, $_SERVER['REMOTE_ADDR'], $options_site_url);
+Disable these notifications: %3$s'), $user->user_login, $_SERVER['REMOTE_ADDR'], $options_site_url);
 
        $msg = apply_filters( 'newuser_notify_siteadmin', $msg, $user );
        wp_mail( $email, sprintf(__('New User Registration: %s'), $user->user_login), $msg );
@@ -1084,7 +1084,8 @@ Disable these notifications: %3s'), $user->user_login, $_SERVER['REMOTE_ADDR'],
  */
 function domain_exists($domain, $path, $site_id = 1) {
        global $wpdb;
-       return $wpdb->get_var( $wpdb->prepare("SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s AND site_id = %d", $domain, $path, $site_id) );
+       $result = $wpdb->get_var( $wpdb->prepare("SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s AND site_id = %d", $domain, $path, $site_id) );
+       return apply_filters( 'domain_exists', $result, $domain, $path, $site_id );
 }
 
 /**
@@ -1129,20 +1130,19 @@ function insert_blog($domain, $path, $site_id) {
  * @param string $blog_title The title of the new site.
  */
 function install_blog($blog_id, $blog_title = '') {
-       global $wpdb, $table_prefix, $wp_roles;
-       $wpdb->suppress_errors();
+       global $wpdb, $wp_roles, $current_site;
 
        // Cast for security
        $blog_id = (int) $blog_id;
 
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
 
-       if ( $wpdb->get_results("SELECT ID FROM $wpdb->posts") )
-               die(__('<h1>Already Installed</h1><p>You appear to have already installed WordPress. To reinstall please clear your old database tables first.</p>') . '</body></html>');
+       $wpdb->suppress_errors();
+       if ( $wpdb->get_results( "DESCRIBE {$wpdb->posts}" ) )
+               die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p></body></html>' );
+       $wpdb->suppress_errors( false );
 
-       $wpdb->suppress_errors(false);
-
-       $url = get_blogaddress_by_id($blog_id);
+       $url = get_blogaddress_by_id( $blog_id );
 
        // Set everything up
        make_db_current_silent( 'blog' );
@@ -1150,21 +1150,23 @@ function install_blog($blog_id, $blog_title = '') {
        populate_roles();
        $wp_roles->_init();
 
-       // fix url.
-       update_option('siteurl', $url);
-       update_option('home', $url);
-       update_option('fileupload_url', $url . "files" );
-       update_option('upload_path', UPLOADBLOGSDIR . "/$blog_id/files");
-       update_option('blogname', stripslashes( $blog_title ) );
-       update_option('admin_email', '');
-       $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') );
+       $url = untrailingslashit( $url );
 
-       // remove all perms
-       $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'user_level' ) );
+       update_option( 'siteurl', $url );
+       update_option( 'home', $url );
 
-       $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'capabilities' ) );
+       if ( get_site_option( 'ms_files_rewriting' ) )
+               update_option( 'upload_path', UPLOADBLOGSDIR . "/$blog_id/files" );
+       else
+               update_option( 'upload_path', get_blog_option( $current_site->blog_id, 'upload_path' ) );
 
-       $wpdb->suppress_errors( false );
+       update_option( 'blogname', stripslashes( $blog_title ) );
+       update_option( 'admin_email', '' );
+
+       // remove all perms
+       $table_prefix = $wpdb->get_blog_prefix();
+       delete_metadata( 'user', 0, $table_prefix . 'user_level',   null, true ); // delete all
+       delete_metadata( 'user', 0, $table_prefix . 'capabilities', null, true ); // delete all
 }
 
 /**
@@ -1232,7 +1234,7 @@ We hope you enjoy your new site. Thanks!
 --The Team @ SITE_NAME' ) );
 
        $url = get_blogaddress_by_id($blog_id);
-       $user = new WP_User($user_id);
+       $user = get_userdata( $user_id );
 
        $welcome_email = str_replace( 'SITE_NAME', $current_site->site_name, $welcome_email );
        $welcome_email = str_replace( 'BLOG_TITLE', $title, $welcome_email );
@@ -1281,7 +1283,7 @@ function wpmu_welcome_user_notification($user_id, $password, $meta = '') {
 
        $welcome_email = get_site_option( 'welcome_user_email' );
 
-       $user = new WP_User($user_id);
+       $user = get_userdata( $user_id );
 
        $welcome_email = apply_filters( 'update_welcome_user_email', $welcome_email, $user_id, $password, $meta);
        $welcome_email = str_replace( 'SITE_NAME', $current_site->site_name, $welcome_email );
@@ -1416,7 +1418,7 @@ function get_dirsize( $directory ) {
 
        $dirsize[ $directory ][ 'size' ] = recurse_dirsize( $directory );
 
-       set_transient( 'dirsize_cache', $dirsize, 3600 );
+       set_transient( 'dirsize_cache', $dirsize, HOUR_IN_SECONDS );
        return $dirsize[ $directory ][ 'size' ];
 }
 
@@ -1457,34 +1459,6 @@ function recurse_dirsize( $directory ) {
        return $size;
 }
 
-/**
- * Check whether a blog has used its allotted upload space.
- *
- * @since MU
- * @uses get_dirsize()
- *
- * @param bool $echo Optional. If $echo is set and the quota is exceeded, a warning message is echoed. Default is true.
- * @return int
- */
-function upload_is_user_over_quota( $echo = true ) {
-       if ( get_site_option( 'upload_space_check_disabled' ) )
-               return false;
-
-       $spaceAllowed = get_space_allowed();
-       if ( empty( $spaceAllowed ) || !is_numeric( $spaceAllowed ) )
-               $spaceAllowed = 10;     // Default space allowed is 10 MB
-
-       $size = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
-
-       if ( ($spaceAllowed-$size) < 0 ) {
-               if ( $echo )
-                       _e( 'Sorry, you have used your space allocation. Please delete some files to upload more files.' ); // No space left
-               return true;
-       } else {
-               return false;
-       }
-}
-
 /**
  * Check an array of MIME types against a whitelist.
  *
@@ -1535,33 +1509,10 @@ function update_posts_count( $deprecated = '' ) {
  */
 function wpmu_log_new_registrations( $blog_id, $user_id ) {
        global $wpdb;
-       $user = new WP_User( (int) $user_id );
+       $user = get_userdata( (int) $user_id );
        $wpdb->insert( $wpdb->registration_log, array('email' => $user->user_email, 'IP' => preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] ), 'blog_id' => $blog_id, 'date_registered' => current_time('mysql')) );
 }
 
-/**
- * Get the remaining upload space for this blog.
- *
- * @since MU
- * @uses upload_is_user_over_quota()
- * @uses get_space_allowed()
- * @uses get_dirsize()
- *
- * @param int $size
- * @return int
- */
-function fix_import_form_size( $size ) {
-       if ( upload_is_user_over_quota( false ) == true )
-               return 0;
-
-       $spaceAllowed = 1024 * 1024 * get_space_allowed();
-       $dirsize = get_dirsize( BLOGUPLOADDIR );
-       if ( $size > $spaceAllowed - $dirsize )
-               return $spaceAllowed - $dirsize; // remaining space
-       else
-               return $size; // default
-}
-
 /**
  * Maintains a canonical list of terms by syncing terms created for each blog with the global terms table.
  *
@@ -1652,7 +1603,7 @@ function redirect_this_site( $deprecated = '' ) {
  * @return mixed If the upload is under the size limit, $upload is returned. Otherwise returns an error message.
  */
 function upload_is_file_too_big( $upload ) {
-       if ( is_array( $upload ) == false || defined( 'WP_IMPORTING' ) )
+       if ( is_array( $upload ) == false || defined( 'WP_IMPORTING' ) || get_site_option( 'upload_space_check_disabled' ) )
                return $upload;
 
        if ( strlen( $upload['bits'] )  > ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) )
@@ -1687,7 +1638,7 @@ function signup_nonce_check( $result ) {
                return $result;
 
        if ( wp_create_nonce('signup_form_' . $_POST[ 'signup_form_id' ]) != $_POST['_signup_form'] )
-               wp_die( __('Please try again!') );
+               wp_die( __( 'Please try again.' ) );
 
        return $result;
 }
@@ -1734,7 +1685,7 @@ function maybe_add_existing_user_to_blog() {
        if ( empty( $details ) || is_wp_error( add_existing_user_to_blog( $details ) ) )
                wp_die( sprintf(__('An error occurred adding you to this site. Back to the <a href="%s">homepage</a>.'), home_url() ) );
 
-       wp_die( sprintf(__('You have been added to this site. Please visit the <a href="%s">homepage</a> or <a href="%s">log in</a> using your username and password.'), home_url(), admin_url() ), __('Success') );
+       wp_die( sprintf( __( 'You have been added to this site. Please visit the <a href="%s">homepage</a> or <a href="%s">log in</a> using your username and password.' ), home_url(), admin_url() ), __( 'WordPress &rsaquo; Success' ) );
 }
 
 /**
@@ -1801,7 +1752,7 @@ function is_user_spammy( $username = 0 ) {
        } else {
                $user_id = get_user_id_from_string( $username );
        }
-       $u = new WP_User( $user_id );
+       $u = get_userdata( $user_id );
 
        return ( isset( $u->spam ) && $u->spam == 1 );
 }
@@ -1934,21 +1885,21 @@ function force_ssl_content( $force = '' ) {
 }
 
 /**
- * Formats an String URL to use HTTPS if HTTP is found.
+ * Formats a URL to use https.
+ *
  * Useful as a filter.
  *
  * @since 2.8.5
- **/
+ *
+ * @param string URL
+ * @return string URL with https as the scheme
+ */
 function filter_SSL( $url ) {
-       if ( !is_string( $url ) )
-               return get_bloginfo( 'url' ); //return home blog url with proper scheme
-
-       $arrURL = parse_url( $url );
+       if ( ! is_string( $url ) )
+               return get_bloginfo( 'url' ); // Return home blog url with proper scheme
 
-       if ( force_ssl_content() && is_ssl() ) {
-               if ( 'http' === $arrURL['scheme'] )
-                       $url = str_replace( $arrURL['scheme'], 'https', $url );
-       }
+       if ( force_ssl_content() && is_ssl() )
+               $url = set_url_scheme( $url, 'https' );
 
        return $url;
 }
@@ -1977,6 +1928,89 @@ function wp_update_network_counts() {
        $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(blog_id) as c FROM $wpdb->blogs WHERE site_id = %d AND spam = '0' AND deleted = '0' and archived = '0'", $wpdb->siteid) );
        update_site_option( 'blog_count', $count );
 
-       $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(ID) as c FROM $wpdb->users WHERE spam = '0' AND deleted = '0'") );
+       $count = $wpdb->get_var( "SELECT COUNT(ID) as c FROM $wpdb->users WHERE spam = '0' AND deleted = '0'" );
        update_site_option( 'user_count', $count );
 }
+
+/**
+ * Returns the space used by the current blog.
+ *
+ * @since 3.5.0
+ *
+ * @return int Used space in megabytes
+ */
+function get_space_used() {
+       // Allow for an alternative way of tracking storage space used
+       $space_used = apply_filters( 'pre_get_space_used', false );
+       if ( false === $space_used ) {
+               $upload_dir = wp_upload_dir();
+               $space_used = get_dirsize( $upload_dir['basedir'] ) / 1024 / 1024;
+       }
+
+       return $space_used;
+}
+
+/**
+ * Returns the upload quota for the current blog.
+ *
+ * @since MU
+ *
+ * @return int Quota in megabytes
+ */
+function get_space_allowed() {
+       $space_allowed = get_option( 'blog_upload_space' );
+
+       if ( ! is_numeric( $space_allowed ) )
+               $space_allowed = get_site_option( 'blog_upload_space' );
+
+       if ( empty( $space_allowed ) || ! is_numeric( $space_allowed ) )
+               $space_allowed = 50;
+
+       return $space_allowed;
+}
+
+/**
+ * Determines if there is any upload space left in the current blog's quota.
+ *
+ * @since 3.0.0
+ *
+ * @return int of upload space available in bytes
+ */
+function get_upload_space_available() {
+       $space_allowed = get_space_allowed() * 1024 * 1024;
+       if ( get_site_option( 'upload_space_check_disabled' ) )
+               return $space_allowed;
+
+       $space_used = get_space_used() * 1024 * 1024;
+
+       if ( ( $space_allowed - $space_used ) <= 0 )
+               return 0;
+
+       return $space_allowed - $space_used;
+}
+
+/**
+ * Determines if there is any upload space left in the current blog's quota.
+ *
+ * @since 3.0.0
+ * @return bool True if space is available, false otherwise.
+ */
+function is_upload_space_available() {
+       if ( get_site_option( 'upload_space_check_disabled' ) )
+               return true;
+
+       return (bool) get_upload_space_available();
+}
+
+/**
+ * @since 3.0.0
+ *
+ * @return int of upload size limit in bytes
+ */
+function upload_size_limit_filter( $size ) {
+       $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 );
+       if ( get_site_option( 'upload_space_check_disabled' ) )
+               return min( $size, $fileupload_maxk );
+
+       return min( $size, $fileupload_maxk, get_upload_space_available() );
+}
\ No newline at end of file
index 58826e7804e2bbc4db836b46607281203f301f00..6a26b9cf06a2772428c4f04c3d0a007dddacb877 100644 (file)
@@ -69,7 +69,9 @@ function wp_get_active_network_plugins() {
  * @return bool|string Returns true on success, or drop-in file to include.
  */
 function ms_site_check() {
-       global $wpdb, $current_blog;
+       global $wpdb;
+
+       $blog = get_blog_details();
 
        // Allow short-circuiting
        $check = apply_filters('ms_site_check', null);
@@ -80,21 +82,21 @@ function ms_site_check() {
        if ( is_super_admin() )
                return true;
 
-       if ( '1' == $current_blog->deleted ) {
+       if ( '1' == $blog->deleted ) {
                if ( file_exists( WP_CONTENT_DIR . '/blog-deleted.php' ) )
                        return WP_CONTENT_DIR . '/blog-deleted.php';
                else
                        wp_die( __( 'This user has elected to delete their account and the content is no longer available.' ), '', array( 'response' => 410 ) );
        }
 
-       if ( '2' == $current_blog->deleted ) {
+       if ( '2' == $blog->deleted ) {
                if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) )
                        return WP_CONTENT_DIR . '/blog-inactive.php';
                else
                        wp_die( sprintf( __( 'This site has not been activated yet. If you are having problems activating your site, please contact <a href="mailto:%1$s">%1$s</a>.' ), str_replace( '@', ' AT ', get_site_option( 'admin_email', "support@{$current_site->domain}" ) ) ) );
        }
 
-       if ( $current_blog->archived == '1' || $current_blog->spam == '1' ) {
+       if ( $blog->archived == '1' || $blog->spam == '1' ) {
                if ( file_exists( WP_CONTENT_DIR . '/blog-suspended.php' ) )
                        return WP_CONTENT_DIR . '/blog-suspended.php';
                else
@@ -232,7 +234,7 @@ function ms_not_installed() {
 
        wp_load_translations_early();
 
-       $title = __( 'Error establishing database connection' );
+       $title = __( 'Error establishing database connection' );
        $msg  = '<h1>' . $title . '</h1>';
        if ( ! is_admin() )
                die( $msg );
index 5dd460e301ad57298a007ec044a10ca9cd9670b6..af2ea0d97add9b602747d782ec646bf487c00eb8 100644 (file)
@@ -126,6 +126,8 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
 $wpdb->set_prefix( $table_prefix, false ); // $table_prefix can be set in sunrise.php
 $wpdb->set_blog_id( $current_blog->blog_id, $current_blog->site_id );
 $table_prefix = $wpdb->get_blog_prefix();
+$_wp_switched_stack = array();
+$switched = false;
 
 // need to init cache again after blog_id is set
 wp_start_object_cache();
index 4b9293b1d1307c9e4b5e53b4d12bc1cdc2589617..df5612d225153218a67ea374f2c2328cf01c394d 100644 (file)
@@ -65,7 +65,6 @@ class Walker_Nav_Menu extends Walker {
         * @param object $args
         */
        function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
-               global $wp_query;
                $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
 
                $class_names = $value = '';
@@ -156,7 +155,7 @@ function wp_nav_menu( $args = array() ) {
        if ( ! $menu && !$args->theme_location ) {
                $menus = wp_get_nav_menus();
                foreach ( $menus as $menu_maybe ) {
-                       if ( $menu_items = wp_get_nav_menu_items($menu_maybe->term_id) ) {
+                       if ( $menu_items = wp_get_nav_menu_items( $menu_maybe->term_id, array( 'update_post_term_cache' => false ) ) ) {
                                $menu = $menu_maybe;
                                break;
                        }
@@ -165,15 +164,21 @@ function wp_nav_menu( $args = array() ) {
 
        // If the menu exists, get its items.
        if ( $menu && ! is_wp_error($menu) && !isset($menu_items) )
-               $menu_items = wp_get_nav_menu_items( $menu->term_id );
+               $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) );
 
-       // If no menu was found or if the menu has no items and no location was requested, call the fallback_cb if it exists
+       /*
+        * If no menu was found:
+        *  - Fallback (if one was specified), or bail.
+        *
+        * If no menu items were found:
+        *  - Fallback, but only if no theme location was specified.
+        *  - Otherwise, bail.
+        */
        if ( ( !$menu || is_wp_error($menu) || ( isset($menu_items) && empty($menu_items) && !$args->theme_location ) )
                && $args->fallback_cb && is_callable( $args->fallback_cb ) )
                        return call_user_func( $args->fallback_cb, (array) $args );
 
-       // If no fallback function was specified and the menu doesn't exists, bail.
-       if ( !$menu || is_wp_error($menu) )
+       if ( !$menu || is_wp_error( $menu ) || empty( $menu_items ) )
                return false;
 
        $nav_menu = $items = '';
@@ -287,8 +292,6 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
                                }
                        }
                }
-       } elseif ( ! empty( $queried_object->post_type ) && is_post_type_hierarchical( $queried_object->post_type ) ) {
-               _get_post_ancestors( $queried_object );
        } elseif ( ! empty( $queried_object->taxonomy ) && is_taxonomy_hierarchical( $queried_object->taxonomy ) ) {
                $term_hierarchy = _get_term_hierarchy( $queried_object->taxonomy );
                $term_to_ancestor = array();
@@ -334,7 +337,7 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
                        (
                                ( ! empty( $home_page_id ) && 'post_type' == $menu_item->type && $wp_query->is_home && $home_page_id == $menu_item->object_id ) ||
                                ( 'post_type' == $menu_item->type && $wp_query->is_singular ) ||
-                               ( 'taxonomy' == $menu_item->type && ( $wp_query->is_category || $wp_query->is_tag || $wp_query->is_tax ) )
+                               ( 'taxonomy' == $menu_item->type && ( $wp_query->is_category || $wp_query->is_tag || $wp_query->is_tax ) && $queried_object->taxonomy == $menu_item->object )
                        )
                ) {
                        $classes[] = 'current-menu-item';
@@ -361,7 +364,7 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
                // if the menu item corresponds to the currently-requested URL
                } elseif ( 'custom' == $menu_item->object ) {
                        $_root_relative_current = untrailingslashit( $_SERVER['REQUEST_URI'] );
-                       $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_root_relative_current;
+                       $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_root_relative_current );
                        $raw_item_url = strpos( $menu_item->url, '#' ) ? substr( $menu_item->url, 0, strpos( $menu_item->url, '#' ) ) : $menu_item->url;
                        $item_url = untrailingslashit( $raw_item_url );
                        $_indexless_current = untrailingslashit( preg_replace( '/index.php$/', '', $current_url ) );
@@ -472,7 +475,7 @@ function walk_nav_menu_tree( $items, $depth, $r ) {
        $walker = ( empty($r->walker) ) ? new Walker_Nav_Menu : $r->walker;
        $args = array( $items, $depth, $r );
 
-       return call_user_func_array( array(&$walker, 'walk'), $args );
+       return call_user_func_array( array($walker, 'walk'), $args );
 }
 
 /**
index 361a8de60027d2224aeeeae3731b78b7bbb089bc..7a5da9e20269a49e9c6e2198f5cafd9aaadc6286 100644 (file)
@@ -279,10 +279,6 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
        if ( ( ! $menu && 0 !== $menu_id ) || is_wp_error( $menu ) )
                return $menu;
 
-       $menu_items = 0 == $menu_id ? array() : (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) );
-
-       $count = count( $menu_items );
-
        $defaults = array(
                'menu-item-db-id' => $menu_item_db_id,
                'menu-item-object-id' => 0,
@@ -305,8 +301,9 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
        if ( 0 == $menu_id ) {
                $args['menu-item-position'] = 1;
        } elseif ( 0 == (int) $args['menu-item-position'] ) {
+               $menu_items = 0 == $menu_id ? array() : (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) );
                $last_item = array_pop( $menu_items );
-               $args['menu-item-position'] = ( $last_item && isset( $last_item->menu_order ) ) ? 1 + $last_item->menu_order : $count;
+               $args['menu-item-position'] = ( $last_item && isset( $last_item->menu_order ) ) ? 1 + $last_item->menu_order : count( $menu_items );
        }
 
        $original_parent = 0 < $menu_item_db_id ? get_post_field( 'post_parent', $menu_item_db_id ) : 0;
@@ -350,20 +347,19 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
                'post_type' => 'nav_menu_item',
        );
 
-       if ( 0 != $menu_id )
+       $update = 0 != $menu_item_db_id;
+
+       // Only set the menu term if it isn't set to avoid unnecessary wp_get_object_terms()
+       if ( $menu_id && ( ! $update || ! is_object_in_term( $menu_item_db_id, 'nav_menu', (int) $menu->term_id ) ) )
                $post['tax_input'] = array( 'nav_menu' => array( intval( $menu->term_id ) ) );
 
        // New menu item. Default is draft status
-       if ( 0 == $menu_item_db_id ) {
+       if ( ! $update ) {
                $post['ID'] = 0;
                $post['post_status'] = 'publish' == $args['menu-item-status'] ? 'publish' : 'draft';
                $menu_item_db_id = wp_insert_post( $post );
-
-       // Update existing menu item. Default is publish status
-       } else {
-               $post['ID'] = $menu_item_db_id;
-               $post['post_status'] = 'draft' == $args['menu-item-status'] ? 'draft' : 'publish';
-               wp_update_post( $post );
+               if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) )
+                       return $menu_item_db_id;
        }
 
        if ( 'custom' == $args['menu-item-type'] ) {
@@ -371,14 +367,11 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
                $args['menu-item-object'] = 'custom';
        }
 
-       if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) )
-               return $menu_item_db_id;
-
        $menu_item_db_id = (int) $menu_item_db_id;
 
        update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key($args['menu-item-type']) );
-       update_post_meta( $menu_item_db_id, '_menu_item_menu_item_parent', (int) $args['menu-item-parent-id'] );
-       update_post_meta( $menu_item_db_id, '_menu_item_object_id', (int) $args['menu-item-object-id'] );
+       update_post_meta( $menu_item_db_id, '_menu_item_menu_item_parent', strval( (int) $args['menu-item-parent-id'] ) );
+       update_post_meta( $menu_item_db_id, '_menu_item_object_id', strval( (int) $args['menu-item-object-id'] ) );
        update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key($args['menu-item-object']) );
        update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($args['menu-item-target']) );
 
@@ -389,10 +382,17 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
        update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($args['menu-item-url']) );
 
        if ( 0 == $menu_id )
-               update_post_meta( $menu_item_db_id, '_menu_item_orphaned', time() );
-       else
+               update_post_meta( $menu_item_db_id, '_menu_item_orphaned', (string) time() );
+       elseif ( get_post_meta( $menu_item_db_id, '_menu_item_orphaned' ) )
                delete_post_meta( $menu_item_db_id, '_menu_item_orphaned' );
 
+       // Update existing menu item. Default is publish status
+       if ( $update ) {
+               $post['ID'] = $menu_item_db_id;
+               $post['post_status'] = 'draft' == $args['menu-item-status'] ? 'draft' : 'publish';
+               wp_update_post( $post );
+       }
+
        do_action('wp_update_nav_menu_item', $menu_id, $menu_item_db_id, $args );
 
        return $menu_item_db_id;
@@ -483,8 +483,7 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
                return $items;
 
        $defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item',
-               'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true,
-               'update_post_term_cache' => false );
+               'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true );
        $args = wp_parse_args( $args, $defaults );
        if ( count( $items ) > 1 )
                $args['include'] = implode( ',', $items );
index 33897b60994930b9b7216162d5dd3436deb45a13..722d1f30d4992c0dc128eeb13eeb6ddef1bcd8a7 100644 (file)
 function get_option( $option, $default = false ) {
        global $wpdb;
 
+       $option = trim( $option );
+       if ( empty( $option ) )
+               return false;
+
        // Allow plugins to short-circuit options.
        $pre = apply_filters( 'pre_option_' . $option, false );
        if ( false !== $pre )
                return $pre;
 
-       $option = trim($option);
-       if ( empty($option) )
-               return false;
-
        if ( defined( 'WP_SETUP_CONFIG' ) )
                return false;
 
@@ -174,7 +174,7 @@ function wp_load_core_site_options( $site_id = null ) {
        if ( empty($site_id) )
                $site_id = $wpdb->siteid;
 
-       $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled' );
+       $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled', 'ms_files_rewriting' );
 
        $core_options_in = "'" . implode("', '", $core_options) . "'";
        $options = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->sitemeta WHERE meta_key IN ($core_options_in) AND site_id = %d", $site_id) );
@@ -540,6 +540,11 @@ function wp_user_settings() {
        if ( ! $user = wp_get_current_user() )
                return;
 
+       if ( is_super_admin( $user->ID ) &&
+               ! in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user->ID ) ) )
+               )
+               return;
+
        $settings = get_user_option( 'user-settings', $user->ID );
 
        if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) {
@@ -560,8 +565,8 @@ function wp_user_settings() {
                }
        }
 
-       setcookie( 'wp-settings-' . $user->ID, $settings, time() + 31536000, SITECOOKIEPATH );
-       setcookie( 'wp-settings-time-' . $user->ID, time(), time() + 31536000, SITECOOKIEPATH );
+       setcookie( 'wp-settings-' . $user->ID, $settings, time() + YEAR_IN_SECONDS, SITECOOKIEPATH );
+       setcookie( 'wp-settings-time-' . $user->ID, time(), time() + YEAR_IN_SECONDS, SITECOOKIEPATH );
        $_COOKIE['wp-settings-' . $user->ID] = $settings;
 }
 
@@ -697,6 +702,11 @@ function wp_set_all_user_settings($all) {
        if ( ! $user = wp_get_current_user() )
                return false;
 
+       if ( is_super_admin( $user->ID ) &&
+               ! in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user->ID ) ) )
+               )
+               return;
+
        $_updated_user_settings = $all;
        $settings = '';
        foreach ( $all as $k => $v ) {
@@ -724,7 +734,7 @@ function delete_all_user_settings() {
                return;
 
        update_user_option( $user->ID, 'user-settings', '', false );
-       setcookie('wp-settings-' . $user->ID, ' ', time() - 31536000, SITECOOKIEPATH);
+       setcookie('wp-settings-' . $user->ID, ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH);
 }
 
 /**
index 2a202ace0fca632847dd6c4a92b2ea6d758ce090..69e78f5f9542c4467ffcec0ad57a0c65c504e6a1 100644 (file)
@@ -168,3 +168,25 @@ function wp_login($username, $password, $deprecated = '') {
 else :
        _deprecated_function( 'wp_login', '2.5', 'wp_signon()' );
 endif;
+
+/**
+ * WordPress AtomPub API implementation.
+ *
+ * Originally stored in wp-app.php, and later wp-includes/class-wp-atom-server.php.
+ * It is kept here in case a plugin directly referred to the class.
+ *
+ * @since 2.2.0
+ * @deprecated 3.5.0
+ * @link http://wordpress.org/extend/plugins/atom-publishing-protocol/
+ */
+if ( ! class_exists( 'wp_atom_server' ) ) {
+       class wp_atom_server {
+               public function __call( $name, $arguments ) {
+                       _deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Platform plugin' );
+               }
+
+               public static function __callStatic( $name, $arguments ) {
+                       _deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Platform plugin' );
+               }
+       }
+}
\ No newline at end of file
index ac308a99666fa90cecb9e141ad4d6d1774223d86..37ddb83f3529f1cab87545e42c8564c45d534599 100644 (file)
@@ -529,7 +529,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') {
 
        // Allow a grace period for POST and AJAX requests
        if ( defined('DOING_AJAX') || 'POST' == $_SERVER['REQUEST_METHOD'] )
-               $expired += 3600;
+               $expired += HOUR_IN_SECONDS;
 
        // Quick check to see if an honest cookie has expired
        if ( $expired < time() ) {
@@ -694,24 +694,24 @@ if ( !function_exists('wp_clear_auth_cookie') ) :
 function wp_clear_auth_cookie() {
        do_action('clear_auth_cookie');
 
-       setcookie(AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
-       setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
-       setcookie(AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
-       setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
-       setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+       setcookie( AUTH_COOKIE,        ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH,   COOKIE_DOMAIN );
+       setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH,   COOKIE_DOMAIN );
+       setcookie( AUTH_COOKIE,        ' ', time() - YEAR_IN_SECONDS, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN );
+       setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN );
+       setcookie( LOGGED_IN_COOKIE,   ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,          COOKIE_DOMAIN );
+       setcookie( LOGGED_IN_COOKIE,   ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH,      COOKIE_DOMAIN );
 
        // Old cookies
-       setcookie(AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie(AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
-       setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+       setcookie( AUTH_COOKIE,        ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,     COOKIE_DOMAIN );
+       setcookie( AUTH_COOKIE,        ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN );
+       setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,     COOKIE_DOMAIN );
+       setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN );
 
        // Even older cookies
-       setcookie(USER_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie(PASS_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie(USER_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
-       setcookie(PASS_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+       setcookie( USER_COOKIE, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,     COOKIE_DOMAIN );
+       setcookie( PASS_COOKIE, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,     COOKIE_DOMAIN );
+       setcookie( USER_COOKIE, ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN );
+       setcookie( PASS_COOKIE, ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN );
 }
 endif;
 
@@ -748,11 +748,11 @@ function auth_redirect() {
 
        // If https is required and request is http, redirect
        if ( $secure && !is_ssl() && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) {
-               if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
-                       wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+               if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
+                       wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
                        exit();
                } else {
-                       wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+                       wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
                        exit();
                }
        }
@@ -767,11 +767,11 @@ function auth_redirect() {
 
                // If the user wants ssl but the session is not ssl, redirect.
                if ( !$secure && get_user_option('use_ssl', $user_id) && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) {
-                       if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
-                               wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+                       if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
+                               wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
                                exit();
                        } else {
-                               wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+                               wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
                                exit();
                        }
                }
@@ -782,12 +782,7 @@ function auth_redirect() {
        // The cookie is no good so force login
        nocache_headers();
 
-       if ( is_ssl() )
-               $proto = 'https://';
-       else
-               $proto = 'http://';
-
-       $redirect = ( strpos($_SERVER['REQUEST_URI'], '/options.php') && wp_get_referer() ) ? wp_get_referer() : $proto . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+       $redirect = ( strpos( $_SERVER['REQUEST_URI'], '/options.php' ) && wp_get_referer() ) ? wp_get_referer() : set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
 
        $login_url = wp_login_url($redirect, true);
 
@@ -1195,7 +1190,7 @@ if ( !function_exists('wp_new_user_notification') ) :
  * @param string $plaintext_pass Optional. The user's plaintext password
  */
 function wp_new_user_notification($user_id, $plaintext_pass = '') {
-       $user = new WP_User($user_id);
+       $user = get_userdata( $user_id );
 
        $user_login = stripslashes($user->user_login);
        $user_email = stripslashes($user->user_email);
@@ -1234,7 +1229,7 @@ if ( !function_exists('wp_nonce_tick') ) :
  * @return int
  */
 function wp_nonce_tick() {
-       $nonce_life = apply_filters('nonce_life', 86400);
+       $nonce_life = apply_filters( 'nonce_life', DAY_IN_SECONDS );
 
        return ceil(time() / ( $nonce_life / 2 ));
 }
@@ -1256,6 +1251,8 @@ if ( !function_exists('wp_verify_nonce') ) :
 function wp_verify_nonce($nonce, $action = -1) {
        $user = wp_get_current_user();
        $uid = (int) $user->ID;
+       if ( ! $uid )
+               $uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
 
        $i = wp_nonce_tick();
 
@@ -1282,6 +1279,8 @@ if ( !function_exists('wp_create_nonce') ) :
 function wp_create_nonce($action = -1) {
        $user = wp_get_current_user();
        $uid = (int) $user->ID;
+       if ( ! $uid )
+               $uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
 
        $i = wp_nonce_tick();
 
@@ -1501,13 +1500,13 @@ function wp_generate_password( $length = 12, $special_chars = true, $extra_speci
 endif;
 
 if ( !function_exists('wp_rand') ) :
- /**
+/**
  * Generates a random number
  *
  * @since 2.6.2
  *
- * @param int $min Lower limit for the generated number (optional, default is 0)
- * @param int $max Upper limit for the generated number (optional, default is 4294967295)
+ * @param int $min Lower limit for the generated number
+ * @param int $max Upper limit for the generated number
  * @return int A random number between min and max
  */
 function wp_rand( $min = 0, $max = 0 ) {
@@ -1536,10 +1535,12 @@ function wp_rand( $min = 0, $max = 0 ) {
 
        $value = abs(hexdec($value));
 
+       // Some misconfigured 32bit environments (Entropy PHP, for example) truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
+       $max_random_number = 3000000000 === 2147483647 ? (float) "4294967295" : 4294967295; // 4294967295 = 0xffffffff
+
        // Reduce the value to be within the min - max range
-       // 4294967295 = 0xffffffff = max random number
        if ( $max != 0 )
-               $value = $min + (($max - $min + 1) * ($value / (4294967295 + 1)));
+               $value = $min + ( $max - $min + 1 ) * $value / ( $max_random_number + 1 );
 
        return abs(intval($value));
 }
@@ -1577,7 +1578,7 @@ if ( !function_exists( 'get_avatar' ) ) :
  * @param int|string|object $id_or_email A user ID,  email address, or comment object
  * @param int $size Size of the avatar image
  * @param string $default URL to a default image to use if no avatar is available
- * @param string $alt Alternate text to use in image tag. Defaults to blank
+ * @param string $alt Alternative text to use in image tag. Defaults to blank
  * @return string <img> tag for the user's avatar
 */
 function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
@@ -1639,7 +1640,7 @@ function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
        if ( 'mystery' == $default )
                $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
        elseif ( 'blank' == $default )
-               $default = includes_url('images/blank.gif');
+               $default = $email ? 'blank' : includes_url( 'images/blank.gif' );
        elseif ( !empty($email) && 'gravatar_default' == $default )
                $default = '';
        elseif ( 'gravatar_default' == $default )
index 914d70654ca3c82deecf59c58eaba497725f0e8f..7e38708034815743b5a993a61d95c9dd3823e960 100644 (file)
@@ -80,8 +80,11 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
  * @global array $wp_filter Stores all of the filters
  *
  * @param string $tag The name of the filter hook.
- * @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached.
- * @return int|boolean Optionally returns the priority on that hook for the specified function.
+ * @param callback $function_to_check optional.
+ * @return mixed If $function_to_check is omitted, returns boolean for whether the hook has anything registered.
+ *     When checking a specific function, the priority of that hook is returned, or false if the function is not attached.
+ *     When using the $function_to_check argument, this function may return a non-boolean value that evaluates to false
+ *     (e.g.) 0, so use the === operator for testing the return value.
  */
 function has_filter($tag, $function_to_check = false) {
        global $wp_filter;
@@ -254,7 +257,7 @@ function apply_filters_ref_array($tag, $args) {
  * @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
  * @return boolean Whether the function existed before it was removed.
  */
-function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
+function remove_filter( $tag, $function_to_remove, $priority = 10 ) {
        $function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority);
 
        $r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
@@ -497,8 +500,11 @@ function do_action_ref_array($tag, $args) {
  * @see has_filter() has_action() is an alias of has_filter().
  *
  * @param string $tag The name of the action hook.
- * @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached.
- * @return int|boolean Optionally returns the priority on that hook for the specified function.
+ * @param callback $function_to_check optional.
+ * @return mixed If $function_to_check is omitted, returns boolean for whether the hook has anything registered.
+ *     When checking a specific function, the priority of that hook is returned, or false if the function is not attached.
+ *     When using the $function_to_check argument, this function may return a non-boolean value that evaluates to false
+ *     (e.g.) 0, so use the === operator for testing the return value.
  */
 function has_action($tag, $function_to_check = false) {
        return has_filter($tag, $function_to_check);
@@ -518,11 +524,10 @@ function has_action($tag, $function_to_check = false) {
  * @param string $tag The action hook to which the function to be removed is hooked.
  * @param callback $function_to_remove The name of the function which should be removed.
  * @param int $priority optional The priority of the function (default: 10).
- * @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
  * @return boolean Whether the function is removed.
  */
-function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
-       return remove_filter($tag, $function_to_remove, $priority, $accepted_args);
+function remove_action( $tag, $function_to_remove, $priority = 10 ) {
+       return remove_filter( $tag, $function_to_remove, $priority );
 }
 
 /**
index 6432dbedb3febe47539bafe297dba1b9c8eecf5b..097e92ca55fcc62c04dbb0f859d554cfd9db7dbe 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Contains Translation_Entry class
  *
- * @version $Id: entry.php 621 2011-06-13 12:21:50Z nbachiyski $
+ * @version $Id: entry.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage entry
  */
@@ -65,14 +65,14 @@ class Translation_Entry {
                // prepend context and EOT, like in MO files
                return is_null($this->context)? $this->singular : $this->context.chr(4).$this->singular;
        }
-       
+
        function merge_with(&$other) {
                $this->flags = array_unique( array_merge( $this->flags, $other->flags ) );
                $this->references = array_unique( array_merge( $this->references, $other->references ) );
                if ( $this->extracted_comments != $other->extracted_comments ) {
                        $this->extracted_comments .= $other->extracted_comments;
                }
-               
+
        }
 }
 endif;
\ No newline at end of file
index d76cda5c6be884a1503aa22e305046607770aa6a..68c0792fdcf58855d330c559322cefa66106d08f 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Class for working with MO files
  *
- * @version $Id: mo.php 602 2011-01-30 12:43:29Z nbachiyski $
+ * @version $Id: mo.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage mo
  */
@@ -34,7 +34,7 @@ class MO extends Gettext_Translations {
                fclose($fh);
                return $res;
        }
-       
+
        function export() {
                $tmp_fh = fopen("php://temp", 'r+');
                if ( !$tmp_fh ) return false;
@@ -42,9 +42,21 @@ class MO extends Gettext_Translations {
                rewind( $tmp_fh );
                return stream_get_contents( $tmp_fh );
        }
-       
+
+       function is_entry_good_for_export( $entry ) {
+               if ( empty( $entry->translations ) ) {
+                       return false;
+               }
+
+               if ( !array_filter( $entry->translations ) ) {
+                       return false;
+               }
+
+               return true;
+       }
+
        function export_to_file_handle($fh) {
-               $entries = array_filter($this->entries, create_function('$e', 'return !empty($e->translations);'));
+               $entries = array_filter( $this->entries, array( $this, 'is_entry_good_for_export' ) );
                ksort($entries);
                $magic = 0x950412de;
                $revision = 0;
@@ -57,7 +69,7 @@ class MO extends Gettext_Translations {
                fwrite($fh, pack('V*', $magic, $revision, $total, $originals_lenghts_addr,
                        $translations_lenghts_addr, $size_of_hash, $hash_addr));
                fseek($fh, $originals_lenghts_addr);
-               
+
                // headers' msgid is an empty string
                fwrite($fh, pack('VV', 0, $current_addr));
                $current_addr++;
@@ -69,24 +81,24 @@ class MO extends Gettext_Translations {
                        fwrite($fh, pack('VV', $length, $current_addr));
                        $current_addr += $length + 1; // account for the NULL byte after
                }
-               
+
                $exported_headers = $this->export_headers();
                fwrite($fh, pack('VV', strlen($exported_headers), $current_addr));
                $current_addr += strlen($exported_headers) + 1;
                $translations_table = $exported_headers . chr(0);
-               
+
                foreach($entries as $entry) {
                        $translations_table .= $this->export_translations($entry) . chr(0);
                        $length = strlen($this->export_translations($entry));
                        fwrite($fh, pack('VV', $length, $current_addr));
                        $current_addr += $length + 1;
                }
-               
+
                fwrite($fh, $originals_table);
                fwrite($fh, $translations_table);
                return true;
        }
-       
+
        function export_original($entry) {
                //TODO: warnings for control characters
                $exported = $entry->singular;
@@ -94,12 +106,12 @@ class MO extends Gettext_Translations {
                if (!is_null($entry->context)) $exported = $entry->context . chr(4) . $exported;
                return $exported;
        }
-       
+
        function export_translations($entry) {
                //TODO: warnings for control characters
                return implode(chr(0), $entry->translations);
        }
-       
+
        function export_headers() {
                $exported = '';
                foreach($this->headers as $header => $value) {
@@ -195,8 +207,7 @@ class MO extends Gettext_Translations {
                        $translation = $reader->substr( $strings, $t['pos'], $t['length'] );
 
                        if ('' === $original) {
-                               $headers = $this->make_headers($translation);
-                               $this->set_headers($headers);
+                               $this->set_headers($this->make_headers($translation));
                        } else {
                                $entry = &$this->make_entry($original, $translation);
                                $this->entries[$entry->key()] = &$entry;
@@ -208,7 +219,7 @@ class MO extends Gettext_Translations {
        /**
         * Build a Translation_Entry from original string and translation strings,
         * found in a MO file
-        * 
+        *
         * @static
         * @param string $original original string to translate from MO file. Might contain
         *      0x04 as context separator or 0x00 as singular/plural separator
index 8320bc1e1d9a90ef47157a7476c71cb760b2113f..f76be011397a25e63655c100fd655572447d6136 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Class for working with PO files
  *
- * @version $Id: po.php 589 2010-12-18 01:40:57Z nbachiyski $
+ * @version $Id: po.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage po
  */
@@ -18,7 +18,7 @@ ini_set('auto_detect_line_endings', 1);
  */
 if ( !class_exists( 'PO' ) ):
 class PO extends Gettext_Translations {
-       
+
        var $comments_before_headers = '';
 
        /**
@@ -80,10 +80,10 @@ class PO extends Gettext_Translations {
                if (false === $res) return false;
                return fclose($fh);
        }
-       
+
        /**
         * Text to include as a comment before the start of the PO contents
-        * 
+        *
         * Doesn't need to include # in the beginning of lines, these are added automatically
         */
        function set_comment_before_headers( $text ) {
@@ -120,10 +120,10 @@ class PO extends Gettext_Translations {
                $po = str_replace("$newline$quote$quote", '', $po);
                return $po;
        }
-       
+
        /**
         * Gives back the original string from a PO-formatted string
-        * 
+        *
         * @static
         * @param string $string PO-formatted string
         * @return string enascaped string
@@ -153,7 +153,7 @@ class PO extends Gettext_Translations {
        }
 
        /**
-        * Inserts $with in the beginning of every new line of $string and 
+        * Inserts $with in the beginning of every new line of $string and
         * returns the modified string
         *
         * @static
@@ -229,9 +229,15 @@ class PO extends Gettext_Translations {
                        }
                }
                PO::read_line($f, 'clear');
-               return $res !== false;
+               if ( false === $res ) {
+                       return false;
+               }
+               if ( ! $this->headers && ! $this->entries ) {
+                       return false;
+               }
+               return true;
        }
-       
+
        function read_entry($f, $lineno = 0) {
                $entry = new Translation_Entry();
                // where were we in the last step
@@ -336,7 +342,7 @@ class PO extends Gettext_Translations {
                }
                return array('entry' => $entry, 'lineno' => $lineno);
        }
-       
+
        function read_line($f, $action = 'read') {
                static $last_line = '';
                static $use_last_line = false;
@@ -349,11 +355,12 @@ class PO extends Gettext_Translations {
                        return true;
                }
                $line = $use_last_line? $last_line : fgets($f);
+               $line = ( "\r\n" == substr( $line, -2 ) ) ? rtrim( $line, "\r\n" ) . "\n" : $line;
                $last_line = $line;
                $use_last_line = false;
                return $line;
        }
-       
+
        function add_comment_to_entry(&$entry, $po_comment_line) {
                $first_two = substr($po_comment_line, 0, 2);
                $comment = trim(substr($po_comment_line, 2));
@@ -367,11 +374,11 @@ class PO extends Gettext_Translations {
                        $entry->translator_comments = trim($entry->translator_comments . "\n" . $comment);
                }
        }
-       
+
        function trim_quotes($s) {
                if ( substr($s, 0, 1) == '"') $s = substr($s, 1);
                if ( substr($s, -1, 1) == '"') $s = substr($s, 0, -1);
                return $s;
        }
 }
-endif;
\ No newline at end of file
+endif;
index efaffa5ae93787ccda46d369465db0b063f735ff..dbb1de809d4b1715e9179a95a8d15bb6293b9942 100644 (file)
@@ -3,22 +3,22 @@
  * Classes, which help reading streams of data from files.
  * Based on the classes from Danilo Segan <danilo@kvota.net>
  *
- * @version $Id: streams.php 597 2011-01-16 20:14:36Z nbachiyski $
+ * @version $Id: streams.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage streams
  */
 
 if ( !class_exists( 'POMO_Reader' ) ):
 class POMO_Reader {
-       
+
        var $endian = 'little';
        var $_post = '';
-       
+
        function POMO_Reader() {
                $this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr');
                $this->_pos = 0;
        }
-       
+
        /**
         * Sets the endianness of the file.
         *
@@ -57,8 +57,8 @@ class POMO_Reader {
                $endian_letter = ('big' == $this->endian)? 'N' : 'V';
                return unpack($endian_letter.$count, $bytes);
        }
-       
-       
+
+
        function substr($string, $start, $length) {
                if ($this->is_overloaded) {
                        return mb_substr($string, $start, $length, 'ascii');
@@ -66,7 +66,7 @@ class POMO_Reader {
                        return substr($string, $start, $length);
                }
        }
-       
+
        function strlen($string) {
                if ($this->is_overloaded) {
                        return mb_strlen($string, 'ascii');
@@ -74,7 +74,7 @@ class POMO_Reader {
                        return strlen($string);
                }
        }
-       
+
        function str_split($string, $chunk_size) {
                if (!function_exists('str_split')) {
                        $length = $this->strlen($string);
@@ -86,8 +86,8 @@ class POMO_Reader {
                        return str_split( $string, $chunk_size );
                }
        }
-       
-               
+
+
        function pos() {
                return $this->_pos;
        }
@@ -95,7 +95,7 @@ class POMO_Reader {
        function is_resource() {
                return true;
        }
-       
+
        function close() {
                return true;
        }
@@ -108,11 +108,11 @@ class POMO_FileReader extends POMO_Reader {
                parent::POMO_Reader();
                $this->_f = fopen($filename, 'rb');
        }
-       
+
        function read($bytes) {
                return fread($this->_f, $bytes);
        }
-       
+
        function seekto($pos) {
                if ( -1 == fseek($this->_f, $pos, SEEK_SET)) {
                        return false;
@@ -120,19 +120,19 @@ class POMO_FileReader extends POMO_Reader {
                $this->_pos = $pos;
                return true;
        }
-       
+
        function is_resource() {
                return is_resource($this->_f);
        }
-       
+
        function feof() {
                return feof($this->_f);
        }
-       
+
        function close() {
                return fclose($this->_f);
        }
-       
+
        function read_all() {
                $all = '';
                while ( !$this->feof() )
@@ -148,9 +148,9 @@ if ( !class_exists( 'POMO_StringReader' ) ):
  * of a physical file.
  */
 class POMO_StringReader extends POMO_Reader {
-       
+
        var $_str = '';
-       
+
        function POMO_StringReader($str = '') {
                parent::POMO_Reader();
                $this->_str = $str;
@@ -178,7 +178,7 @@ class POMO_StringReader extends POMO_Reader {
        function read_all() {
                return $this->substr($this->_str, $this->_pos, $this->strlen($this->_str));
        }
-       
+
 }
 endif;
 
index 951583ace60a29ab876c467324326dea551abe25..856e38aa10f72f78bc94555ad07b22c61b40b67d 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Class for a set of entries for translation and their associated headers
  *
- * @version $Id: translations.php 590 2010-12-20 19:58:37Z nbachiyski $
+ * @version $Id: translations.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage translations
  */
@@ -29,7 +29,7 @@ class Translations {
                $this->entries[$key] = &$entry;
                return true;
        }
-       
+
        function add_entry_or_merge($entry) {
                if (is_array($entry)) {
                        $entry = new Translation_Entry($entry);
@@ -121,7 +121,7 @@ class Translations {
                        $this->entries[$entry->key()] = $entry;
                }
        }
-       
+
        function merge_originals_with(&$other) {
                foreach( $other->entries as $entry ) {
                        if ( !isset( $this->entries[$entry->key()] ) )
@@ -134,7 +134,7 @@ class Translations {
 
 class Gettext_Translations extends Translations {
        /**
-        * The gettext implmentation of select_plural_form.
+        * The gettext implementation of select_plural_form.
         *
         * It lives in this class, because there are more than one descendand, which will use it and
         * they can't share it effectively.
@@ -148,7 +148,7 @@ class Gettext_Translations extends Translations {
                }
                return call_user_func($this->_gettext_select_plural_form, $count);
        }
-       
+
        function nplurals_and_expression_from_header($header) {
                if (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches)) {
                        $nplurals = (int)$matches[1];
@@ -174,7 +174,7 @@ class Gettext_Translations extends Translations {
        /**
         * Adds parantheses to the inner parts of ternary operators in
         * plural expressions, because PHP evaluates ternary oerators from left to right
-        * 
+        *
         * @param string $expression the expression without parentheses
         * @return string the expression with parentheses added
         */
@@ -202,7 +202,7 @@ class Gettext_Translations extends Translations {
                }
                return rtrim($res, ';');
        }
-       
+
        function make_headers($translation) {
                $headers = array();
                // sometimes \ns are used instead of real new lines
@@ -215,7 +215,7 @@ class Gettext_Translations extends Translations {
                }
                return $headers;
        }
-       
+
        function set_header($header, $value) {
                parent::set_header($header, $value);
                if ('Plural-Forms' == $header) {
@@ -234,7 +234,7 @@ if ( !class_exists( 'NOOP_Translations' ) ):
 class NOOP_Translations {
        var $entries = array();
        var $headers = array();
-       
+
        function add_entry($entry) {
                return true;
        }
index b5b8847e90b33c19882c5e21754b7c06fcdba7b1..21620b456f85e07264d800cd918cc00638aa204e 100644 (file)
@@ -26,8 +26,7 @@ function the_ID() {
  * @return int
  */
 function get_the_ID() {
-       global $post;
-       return $post->ID;
+       return get_post()->ID;
 }
 
 /**
@@ -97,24 +96,25 @@ function the_title_attribute( $args = '' ) {
  *
  * @since 0.71
  *
- * @param int $id Optional. Post ID.
+ * @param mixed $post Optional. Post ID or object.
  * @return string
  */
-function get_the_title( $id = 0 ) {
-       $post = &get_post($id);
-
-       $title = isset($post->post_title) ? $post->post_title : '';
-       $id = isset($post->ID) ? $post->ID : (int) $id;
-
-       if ( !is_admin() ) {
-               if ( !empty($post->post_password) ) {
-                       $protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
-                       $title = sprintf($protected_title_format, $title);
-               } else if ( isset($post->post_status) && 'private' == $post->post_status ) {
-                       $private_title_format = apply_filters('private_title_format', __('Private: %s'));
-                       $title = sprintf($private_title_format, $title);
+function get_the_title( $post = 0 ) {
+       $post = get_post( $post );
+
+       $title = isset( $post->post_title ) ? $post->post_title : '';
+       $id = isset( $post->ID ) ? $post->ID : 0;
+
+       if ( ! is_admin() ) {
+               if ( ! empty( $post->post_password ) ) {
+                       $protected_title_format = apply_filters( 'protected_title_format', __( 'Protected: %s' ) );
+                       $title = sprintf( $protected_title_format, $title );
+               } else if ( isset( $post->post_status ) && 'private' == $post->post_status ) {
+                       $private_title_format = apply_filters( 'private_title_format', __( 'Private: %s' ) );
+                       $title = sprintf( $private_title_format, $title );
                }
        }
+
        return apply_filters( 'the_title', $title, $id );
 }
 
@@ -148,7 +148,7 @@ function the_guid( $id = 0 ) {
  * @return string
  */
 function get_the_guid( $id = 0 ) {
-       $post = &get_post($id);
+       $post = get_post($id);
 
        return apply_filters('get_the_guid', $post->guid);
 }
@@ -177,8 +177,10 @@ function the_content($more_link_text = null, $stripteaser = false) {
  * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
  * @return string
  */
-function get_the_content($more_link_text = null, $stripteaser = false) {
-       global $post, $more, $page, $pages, $multipage, $preview;
+function get_the_content( $more_link_text = null, $stripteaser = false ) {
+       global $more, $page, $pages, $multipage, $preview;
+
+       $post = get_post();
 
        if ( null === $more_link_text )
                $more_link_text = __( '(more...)' );
@@ -187,7 +189,7 @@ function get_the_content($more_link_text = null, $stripteaser = false) {
        $hasTeaser = false;
 
        // If post password required and it doesn't match the cookie.
-       if ( post_password_required($post) )
+       if ( post_password_required() )
                return get_the_password_form();
 
        if ( $page > count($pages) ) // if the requested page doesn't exist
@@ -231,7 +233,7 @@ function get_the_content($more_link_text = null, $stripteaser = false) {
  * @since 3.1.0
  * @access private
  * @param array $match Match array from preg_replace_callback
- * @returns string
+ * @return string
  */
 function _convert_urlencoded_to_entities( $match ) {
        return '&#' . base_convert( $match[1], 16, 10 ) . ';';
@@ -259,14 +261,13 @@ function get_the_excerpt( $deprecated = '' ) {
        if ( !empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '2.3' );
 
-       global $post;
-       $output = $post->post_excerpt;
-       if ( post_password_required($post) ) {
-               $output = __('There is no excerpt because this is a protected post.');
-               return $output;
+       $post = get_post();
+
+       if ( post_password_required() ) {
+               return __( 'There is no excerpt because this is a protected post.' );
        }
 
-       return apply_filters('get_the_excerpt', $output);
+       return apply_filters( 'get_the_excerpt', $post->post_excerpt );
 }
 
 /**
@@ -278,7 +279,7 @@ function get_the_excerpt( $deprecated = '' ) {
  * @return bool
  */
 function has_excerpt( $id = 0 ) {
-       $post = &get_post( $id );
+       $post = get_post( $id );
        return ( !empty( $post->post_excerpt ) );
 }
 
@@ -321,7 +322,8 @@ function get_post_class( $class = '', $post_id = null ) {
                return $classes;
 
        $classes[] = 'post-' . $post->ID;
-       $classes[] = $post->post_type;
+       if ( ! is_admin() )
+               $classes[] = $post->post_type;
        $classes[] = 'type-' . $post->post_type;
        $classes[] = 'status-' . $post->post_status;
 
@@ -427,17 +429,19 @@ function get_body_class( $class = '' ) {
                $post = $wp_query->get_queried_object();
 
                $classes[] = 'single';
-               $classes[] = 'single-' . sanitize_html_class($post->post_type, $post_id);
-               $classes[] = 'postid-' . $post_id;
-
-               // Post Format
-               if ( post_type_supports( $post->post_type, 'post-formats' ) ) {
-                       $post_format = get_post_format( $post->ID );
-
-                       if ( $post_format && !is_wp_error($post_format) )
-                               $classes[] = 'single-format-' . sanitize_html_class( $post_format );
-                       else
-                               $classes[] = 'single-format-standard';
+               if ( isset( $post->post_type ) ) {
+                       $classes[] = 'single-' . sanitize_html_class($post->post_type, $post_id);
+                       $classes[] = 'postid-' . $post_id;
+
+                       // Post Format
+                       if ( post_type_supports( $post->post_type, 'post-formats' ) ) {
+                               $post_format = get_post_format( $post->ID );
+
+                               if ( $post_format && !is_wp_error($post_format) )
+                                       $classes[] = 'single-format-' . sanitize_html_class( $post_format );
+                               else
+                                       $classes[] = 'single-format-standard';
+                       }
                }
 
                if ( is_attachment() ) {
@@ -453,30 +457,38 @@ function get_body_class( $class = '' ) {
                } else if ( is_author() ) {
                        $author = $wp_query->get_queried_object();
                        $classes[] = 'author';
-                       $classes[] = 'author-' . sanitize_html_class( $author->user_nicename , $author->ID );
-                       $classes[] = 'author-' . $author->ID;
+                       if ( isset( $author->user_nicename ) ) {
+                               $classes[] = 'author-' . sanitize_html_class( $author->user_nicename, $author->ID );
+                               $classes[] = 'author-' . $author->ID;
+                       }
                } elseif ( is_category() ) {
                        $cat = $wp_query->get_queried_object();
                        $classes[] = 'category';
-                       $classes[] = 'category-' . sanitize_html_class( $cat->slug, $cat->term_id );
-                       $classes[] = 'category-' . $cat->term_id;
+                       if ( isset( $cat->term_id ) ) {
+                               $classes[] = 'category-' . sanitize_html_class( $cat->slug, $cat->term_id );
+                               $classes[] = 'category-' . $cat->term_id;
+                       }
                } elseif ( is_tag() ) {
                        $tags = $wp_query->get_queried_object();
                        $classes[] = 'tag';
-                       $classes[] = 'tag-' . sanitize_html_class( $tags->slug, $tags->term_id );
-                       $classes[] = 'tag-' . $tags->term_id;
+                       if ( isset( $tags->term_id ) ) {
+                               $classes[] = 'tag-' . sanitize_html_class( $tags->slug, $tags->term_id );
+                               $classes[] = 'tag-' . $tags->term_id;
+                       }
                } elseif ( is_tax() ) {
                        $term = $wp_query->get_queried_object();
-                       $classes[] = 'tax-' . sanitize_html_class( $term->taxonomy );
-                       $classes[] = 'term-' . sanitize_html_class( $term->slug, $term->term_id );
-                       $classes[] = 'term-' . $term->term_id;
+                       if ( isset( $term->term_id ) ) {
+                               $classes[] = 'tax-' . sanitize_html_class( $term->taxonomy );
+                               $classes[] = 'term-' . sanitize_html_class( $term->slug, $term->term_id );
+                               $classes[] = 'term-' . $term->term_id;
+                       }
                }
        } elseif ( is_page() ) {
                $classes[] = 'page';
 
                $page_id = $wp_query->get_queried_object_id();
 
-               $post = get_page($page_id);
+               $post = get_post($page_id);
 
                $classes[] = 'page-id-' . $page_id;
 
@@ -498,8 +510,10 @@ function get_body_class( $class = '' ) {
        if ( is_user_logged_in() )
                $classes[] = 'logged-in';
 
-       if ( is_admin_bar_showing() )
+       if ( is_admin_bar_showing() ) {
                $classes[] = 'admin-bar';
+               $classes[] = 'no-customize-support';
+       }
 
        if ( get_theme_mod( 'background_color' ) || get_background_image() )
                $classes[] = 'custom-background';
@@ -574,20 +588,6 @@ function post_password_required( $post = null ) {
        return ! $wp_hasher->CheckPassword( $post->post_password, $hash );
 }
 
-/**
- * Display "sticky" CSS class, if a post is sticky.
- *
- * @since 2.7.0
- *
- * @param int $post_id An optional post ID.
- */
-function sticky_class( $post_id = null ) {
-       if ( !is_sticky($post_id) )
-               return;
-
-       echo " sticky";
-}
-
 /**
  * Page Template Functions for usage in Themes
  *
@@ -692,7 +692,8 @@ function wp_link_pages($args = '') {
  * @return string Link.
  */
 function _wp_link_page( $i ) {
-       global $post, $wp_rewrite;
+       global $wp_rewrite;
+       $post = get_post();
 
        if ( 1 == $i ) {
                $url = get_permalink();
@@ -881,6 +882,7 @@ function wp_list_pages($args = '') {
  * @since 2.7.0
  *
  * @param array|string $args
+ * @return string html menu
  */
 function wp_page_menu( $args = array() ) {
        $defaults = array('sort_column' => 'menu_order, post_title', 'menu_class' => 'menu', 'echo' => true, 'link_before' => '', 'link_after' => '');
@@ -945,7 +947,7 @@ function walk_page_tree($pages, $depth, $current_page, $r) {
                $walker = $r['walker'];
 
        $args = array($pages, $depth, $r, $current_page);
-       return call_user_func_array(array(&$walker, 'walk'), $args);
+       return call_user_func_array(array($walker, 'walk'), $args);
 }
 
 /**
@@ -962,7 +964,7 @@ function walk_page_dropdown_tree() {
        else
                $walker = $args[2]['walker'];
 
-       return call_user_func_array(array(&$walker, 'walk'), $args);
+       return call_user_func_array(array($walker, 'walk'), $args);
 }
 
 /**
@@ -994,6 +996,7 @@ class Walker_Page extends Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
+        * @param array $args
         */
        function start_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
@@ -1006,6 +1009,7 @@ class Walker_Page extends Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
+        * @param array $args
         */
        function end_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
@@ -1031,9 +1035,8 @@ class Walker_Page extends Walker {
                extract($args, EXTR_SKIP);
                $css_class = array('page_item', 'page-item-'.$page->ID);
                if ( !empty($current_page) ) {
-                       $_current_page = get_page( $current_page );
-                       _get_post_ancestors($_current_page);
-                       if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
+                       $_current_page = get_post( $current_page );
+                       if ( in_array( $page->ID, $_current_page->ancestors ) )
                                $css_class[] = 'current_page_ancestor';
                        if ( $page->ID == $current_page )
                                $css_class[] = 'current_page_item';
@@ -1064,6 +1067,7 @@ class Walker_Page extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $page Page data object. Not used.
         * @param int $depth Depth of page. Not Used.
+        * @param array $args
         */
        function end_el( &$output, $page, $depth = 0, $args = array() ) {
                $output .= "</li>\n";
@@ -1102,6 +1106,7 @@ class Walker_PageDropdown extends Walker {
         * @param object $page Page data object.
         * @param int $depth Depth of page in reference to parent pages. Used for padding.
         * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
+        * @param int $id
         */
        function start_el(&$output, $page, $depth, $args, $id = 0) {
                $pad = str_repeat('&nbsp;', $depth * 3);
@@ -1150,12 +1155,12 @@ function the_attachment_link( $id = 0, $fullsize = false, $deprecated = false, $
  * @param string $size Optional, default is 'thumbnail'. Size of image, either array or string.
  * @param bool $permalink Optional, default is false. Whether to add permalink to image.
  * @param bool $icon Optional, default is false. Whether to include icon.
- * @param string $text Optional, default is false. If string, then will be link text.
+ * @param string|bool $text Optional, default is false. If string, then will be link text.
  * @return string HTML content.
  */
 function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false ) {
        $id = intval( $id );
-       $_post = get_post( $id );
+       $_post = get_post( $id );
 
        if ( empty( $_post ) || ( 'attachment' != $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) )
                return __( 'Missing Attachment' );
@@ -1188,7 +1193,7 @@ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = fals
  * @return string
  */
 function prepend_attachment($content) {
-       global $post;
+       $post = get_post();
 
        if ( empty($post->post_type) || $post->post_type != 'attachment' )
                return $content;
@@ -1215,7 +1220,7 @@ function prepend_attachment($content) {
  * @return string HTML content for password form for password protected post.
  */
 function get_the_password_form() {
-       global $post;
+       $post = get_post();
        $label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
        $output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
        <p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
@@ -1261,7 +1266,7 @@ function is_page_template( $template = '' ) {
  *
  * @since 3.4.0
  *
- * @param int $id The page ID to check. Defaults to the current post, when used in the loop.
+ * @param int $post_id The page ID to check. Defaults to the current post, when used in the loop.
  * @return string|bool Page template filename. Returns an empty string when the default page template
  *     is in use. Returns false if the post is not a page.
  */
@@ -1432,9 +1437,9 @@ function wp_list_post_revisions( $post_id = 0, $args = null ) {
        <col style="width: 33%" />
 <thead>
 <tr>
-       <th scope="col"><?php /* translators: column name in revisons */ _ex( 'Old', 'revisions column name' ); ?></th>
-       <th scope="col"><?php /* translators: column name in revisons */ _ex( 'New', 'revisions column name' ); ?></th>
-       <th scope="col"><?php /* translators: column name in revisons */ _ex( 'Date Created', 'revisions column name' ); ?></th>
+       <th scope="col"><?php /* translators: column name in revisions */ _ex( 'Old', 'revisions column name' ); ?></th>
+       <th scope="col"><?php /* translators: column name in revisions */ _ex( 'New', 'revisions column name' ); ?></th>
+       <th scope="col"><?php /* translators: column name in revisions */ _ex( 'Date Created', 'revisions column name' ); ?></th>
        <th scope="col"><?php _e( 'Author' ); ?></th>
        <th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
 </tr>
index dee484e0b1af02494c4128ae9797e220f8b30542..54f17f41596e69fa7d0ee8948eec1fab6e9b5d7f 100644 (file)
@@ -52,21 +52,27 @@ function create_initial_post_types() {
 
        register_post_type( 'attachment', array(
                'labels' => array(
-                       'name' => __( 'Media' ),
-                       'edit_item' => __( 'Edit Media' ),
+                       'name' => _x('Media', 'post type general name'),
+                       'name_admin_bar' => _x( 'Media', 'add new from admin bar' ),
+                       'add_new' => _x( 'Add New', 'add new media' ),
+                       'edit_item' => __( 'Edit Media' ),
+                       'view_item' => __( 'View Attachment Page' ),
                ),
                'public' => true,
-               'show_ui' => false,
+               'show_ui' => true,
                '_builtin' => true, /* internal use only. don't use this when registering your own post type. */
-               '_edit_link' => 'media.php?attachment_id=%d', /* internal use only. don't use this when registering your own post type. */
+               '_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
                'capability_type' => 'post',
+               'capabilities' => array(
+                       'create_posts' => 'upload_files',
+               ),
                'map_meta_cap' => true,
                'hierarchical' => false,
                'rewrite' => false,
                'query_var' => false,
                'show_in_nav_menus' => false,
                'delete_with_user' => true,
-               'supports' => array( 'comments', 'author' ),
+               'supports' => array( 'title', 'author', 'comments' ),
        ) );
 
        register_post_type( 'revision', array(
@@ -204,9 +210,10 @@ function update_attached_file( $attachment_id, $file ) {
                return false;
 
        $file = apply_filters( 'update_attached_file', $file, $attachment_id );
-       $file = _wp_relative_upload_path($file);
-
-       return update_post_meta( $attachment_id, '_wp_attached_file', $file );
+       if ( $file = _wp_relative_upload_path( $file ) )
+               return update_post_meta( $attachment_id, '_wp_attached_file', $file );
+       else
+               return delete_post_meta( $attachment_id, '_wp_attached_file' );
 }
 
 /**
@@ -223,11 +230,10 @@ function update_attached_file( $attachment_id, $file ) {
 function _wp_relative_upload_path( $path ) {
        $new_path = $path;
 
-       if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) {
-               if ( 0 === strpos($new_path, $uploads['basedir']) ) {
-                               $new_path = str_replace($uploads['basedir'], '', $new_path);
-                               $new_path = ltrim($new_path, '/');
-               }
+       $uploads = wp_upload_dir();
+       if ( 0 === strpos( $new_path, $uploads['basedir'] ) ) {
+                       $new_path = str_replace( $uploads['basedir'], '', $new_path );
+                       $new_path = ltrim( $new_path, '/' );
        }
 
        return apply_filters( '_wp_relative_upload_path', $new_path, $path );
@@ -372,56 +378,297 @@ function get_extended($post) {
  * @uses $wpdb
  * @link http://codex.wordpress.org/Function_Reference/get_post
  *
- * @param int|object $post Post ID or post object.
+ * @param int|object $post Post ID or post object. Optional, default is the current post from the loop.
  * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N.
  * @param string $filter Optional, default is raw.
- * @return mixed Post data
+ * @return WP_Post|null WP_Post on success or null on failure
  */
-function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
-       global $wpdb;
-       $null = null;
+function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) {
+       if ( empty( $post ) && isset( $GLOBALS['post'] ) )
+               $post = $GLOBALS['post'];
 
-       if ( empty($post) ) {
-               if ( isset($GLOBALS['post']) )
-                       $_post = & $GLOBALS['post'];
-               else
-                       return $null;
-       } elseif ( is_object($post) && empty($post->filter) ) {
-               _get_post_ancestors($post);
-               $_post = sanitize_post($post, 'raw');
-               wp_cache_add($post->ID, $_post, 'posts');
-       } elseif ( is_object($post) && 'raw' == $post->filter ) {
+       if ( is_a( $post, 'WP_Post' ) ) {
                $_post = $post;
+       } elseif ( is_object( $post ) ) {
+               if ( empty( $post->filter ) ) {
+                       $_post = sanitize_post( $post, 'raw' );
+                       $_post = new WP_Post( $_post );
+               } elseif ( 'raw' == $post->filter ) {
+                       $_post = new WP_Post( $post );
+               } else {
+                       $_post = WP_Post::get_instance( $post->ID );
+               }
        } else {
-               if ( is_object($post) )
-                       $post_id = $post->ID;
-               else
-                       $post_id = $post;
+               $_post = WP_Post::get_instance( $post );
+       }
+
+       if ( ! $_post )
+               return null;
+
+       $_post = $_post->filter( $filter );
+
+       if ( $output == ARRAY_A )
+               return $_post->to_array();
+       elseif ( $output == ARRAY_N )
+               return array_values( $_post->to_array() );
+
+       return $_post;
+}
+
+/**
+ * WordPress Post class.
+ *
+ * @since 3.5.0
+ *
+ */
+final class WP_Post {
+
+       /**
+        *
+        * @var int
+        */
+       public $ID;
+
+       /**
+        *
+        * @var int
+        */
+       public $post_author = 0;
+
+       /**
+        *
+        * @var string
+        */
+       public $post_date = '0000-00-00 00:00:00';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_date_gmt = '0000-00-00 00:00:00';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_content = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_title = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_excerpt = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_status = 'publish';
+
+       /**
+        *
+        * @var string
+        */
+       public $comment_status = 'open';
+
+       /**
+        *
+        * @var string
+        */
+       public $ping_status = 'open';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_password = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_name = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $to_ping = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $pinged = '';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_modified = '0000-00-00 00:00:00';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_modified_gmt = '0000-00-00 00:00:00';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_content_filtered = '';
+
+       /**
+        *
+        * @var int
+        */
+       public $post_parent = 0;
+
+       /**
+        *
+        * @var string
+        */
+       public $guid = '';
+
+       /**
+        *
+        * @var int
+        */
+       public $menu_order = 0;
+
+       /**
+        *
+        * @var string
+        */
+       public $post_type = 'post';
+
+       /**
+        *
+        * @var string
+        */
+       public $post_mime_type = '';
+
+       /**
+        *
+        * @var int
+        */
+       public $comment_count = 0;
+
+       /**
+        *
+        * @var string
+        */
+       public $filter;
+
+       public static function get_instance( $post_id ) {
+               global $wpdb;
 
                $post_id = (int) $post_id;
-               if ( ! $_post = wp_cache_get($post_id, 'posts') ) {
-                       $_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id));
+               if ( ! $post_id )
+                       return false;
+
+               $_post = wp_cache_get( $post_id, 'posts' );
+
+               if ( ! $_post ) {
+                       $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );
+
                        if ( ! $_post )
-                               return $null;
-                       _get_post_ancestors($_post);
-                       $_post = sanitize_post($_post, 'raw');
-                       wp_cache_add($_post->ID, $_post, 'posts');
+                               return false;
+
+                       $_post = sanitize_post( $_post, 'raw' );
+                       wp_cache_add( $_post->ID, $_post, 'posts' );
+               } elseif ( empty( $_post->filter ) ) {
+                       $_post = sanitize_post( $_post, 'raw' );
                }
+
+               return new WP_Post( $_post );
        }
 
-       if ($filter != 'raw')
-               $_post = sanitize_post($_post, $filter);
+       public function __construct( $post ) {
+               foreach ( get_object_vars( $post ) as $key => $value )
+                       $this->$key = $value;
+       }
 
-       if ( $output == OBJECT ) {
-               return $_post;
-       } elseif ( $output == ARRAY_A ) {
-               $__post = get_object_vars($_post);
-               return $__post;
-       } elseif ( $output == ARRAY_N ) {
-               $__post = array_values(get_object_vars($_post));
-               return $__post;
-       } else {
-               return $_post;
+       public function __isset( $key ) {
+               if ( 'ancestors' == $key )
+                       return true;
+
+               if ( 'page_template' == $key )
+                       return ( 'page' == $this->post_type );
+
+               if ( 'post_category' == $key )
+                  return true;
+
+               if ( 'tags_input' == $key )
+                  return true;
+
+               return metadata_exists( 'post', $this->ID, $key );
+       }
+
+       public function __get( $key ) {
+               if ( 'page_template' == $key && $this->__isset( $key ) ) {
+                       return get_post_meta( $this->ID, '_wp_page_template', true );
+               }
+
+               if ( 'post_category' == $key ) {
+                       if ( is_object_in_taxonomy( $this->post_type, 'category' ) )
+                               $terms = get_the_terms( $this, 'category' );
+
+                       if ( empty( $terms ) )
+                               return array();
+
+                       return wp_list_pluck( $terms, 'term_id' );
+               }
+
+               if ( 'tags_input' == $key ) {
+                       if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) )
+                               $terms = get_the_terms( $this, 'post_tag' );
+
+                       if ( empty( $terms ) )
+                               return array();
+
+                       return wp_list_pluck( $terms, 'name' );
+               }
+
+               // Rest of the values need filtering
+
+               if ( 'ancestors' == $key )
+                       $value = get_post_ancestors( $this );
+               else
+                       $value = get_post_meta( $this->ID, $key, true );
+
+               if ( $this->filter )
+                       $value = sanitize_post_field( $key, $value, $this->ID, $this->filter );
+
+               return $value;
+       }
+
+       public function filter( $filter ) {
+               if ( $this->filter == $filter )
+                       return $this;
+
+               if ( $filter == 'raw' )
+                       return self::get_instance( $this->ID );
+
+               return sanitize_post( $this, $filter );
+       }
+
+       public function to_array() {
+               $post = get_object_vars( $this );
+
+               foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) {
+                       if ( $this->__isset( $key ) )
+                               $post[ $key ] = $this->__get( $key );
+               }
+
+               return $post;
        }
 }
 
@@ -433,16 +680,28 @@ function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
  * @param int|object $post Post ID or post object
  * @return array Ancestor IDs or empty array if none are found.
  */
-function get_post_ancestors($post) {
-       $post = get_post($post);
+function get_post_ancestors( $post ) {
+       if ( ! $post )
+               return false;
 
-       if ( ! isset( $post->ancestors ) )
-               _get_post_ancestors( $post );
+       $post = get_post( $post );
 
-       if ( ! empty( $post->ancestors ) )
-               return $post->ancestors;
+       if ( empty( $post->post_parent ) || $post->post_parent == $post->ID )
+               return array();
 
-       return array();
+       $ancestors = array();
+
+       $id = $ancestors[] = $post->post_parent;
+
+       while ( $ancestor = get_post( $id ) ) {
+               // Loop detection: If the ancestor has been seen before, break.
+               if ( empty( $ancestor->post_parent ) || ( $ancestor->post_parent == $post->ID ) || in_array( $ancestor->post_parent, $ancestors ) )
+                       break;
+
+               $id = $ancestors[] = $ancestor->post_parent;
+       }
+
+       return $ancestors;
 }
 
 /**
@@ -460,16 +719,12 @@ function get_post_ancestors($post) {
  * @param string $field Post field name
  * @param id $post Post ID
  * @param string $context Optional. How to filter the field. Default is display.
- * @return WP_Error|string Value in post field or WP_Error on failure
+ * @return bool|string False on failure or returns the value in post field
  */
 function get_post_field( $field, $post, $context = 'display' ) {
-       $post = (int) $post;
        $post = get_post( $post );
 
-       if ( is_wp_error($post) )
-               return $post;
-
-       if ( !is_object($post) )
+       if ( !$post )
                return '';
 
        if ( !isset($post->$field) )
@@ -490,7 +745,7 @@ function get_post_field( $field, $post, $context = 'display' ) {
  * @return bool|string False on failure or returns the mime type
  */
 function get_post_mime_type($ID = '') {
-       $post = get_post($ID);
+       $post = get_post($ID);
 
        if ( is_object($post) )
                return $post->post_mime_type;
@@ -671,7 +926,19 @@ function register_post_status($post_status, $args = array()) {
                $wp_post_statuses = array();
 
        // Args prefixed with an underscore are reserved for internal use.
-       $defaults = array('label' => false, 'label_count' => false, 'exclude_from_search' => null, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => null, 'internal' => null, 'protected' => null, 'private' => null, 'show_in_admin_all' => null, 'publicly_queryable' => null, 'show_in_admin_status_list' => null, 'show_in_admin_all_list' => null, 'single_view_cap' => null);
+       $defaults = array(
+               'label' => false,
+               'label_count' => false,
+               'exclude_from_search' => null,
+               '_builtin' => false,
+               'public' => null,
+               'internal' => null,
+               'protected' => null,
+               'private' => null,
+               'publicly_queryable' => null,
+               'show_in_admin_status_list' => null,
+               'show_in_admin_all_list' => null,
+       );
        $args = wp_parse_args($args, $defaults);
        $args = (object) $args;
 
@@ -703,10 +970,7 @@ function register_post_status($post_status, $args = array()) {
                $args->show_in_admin_all_list = !$args->internal;
 
        if ( null === $args->show_in_admin_status_list )
-                       $args->show_in_admin_status_list = !$args->internal;
-
-       if ( null === $args->single_view_cap )
-               $args->single_view_cap = $args->public ? '' : 'edit';
+               $args->show_in_admin_status_list = !$args->internal;
 
        if ( false === $args->label )
                $args->label = $post_status;
@@ -804,19 +1068,12 @@ function post_type_exists( $post_type ) {
  *
  * @uses $post The Loop current post global
  *
- * @param mixed $the_post Optional. Post object or post ID.
+ * @param mixed $post Optional. Post object or post ID.
  * @return bool|string post type or false on failure.
  */
-function get_post_type( $the_post = false ) {
-       global $post;
-
-       if ( false === $the_post )
-               $the_post = $post;
-       elseif ( is_numeric($the_post) )
-               $the_post = get_post($the_post);
-
-       if ( is_object($the_post) )
-               return $the_post->post_type;
+function get_post_type( $post = null ) {
+       if ( $post = get_post( $post ) )
+               return $post->post_type;
 
        return false;
 }
@@ -1020,7 +1277,7 @@ function register_post_type( $post_type, $args = array() ) {
        if ( ! empty($args->supports) ) {
                add_post_type_support($post_type, $args->supports);
                unset($args->supports);
-       } else {
+       } elseif ( false !== $args->supports ) {
                // Add default features
                add_post_type_support($post_type, array('title', 'editor'));
        }
@@ -1028,7 +1285,8 @@ function register_post_type( $post_type, $args = array() ) {
        if ( false !== $args->query_var && !empty($wp) ) {
                if ( true === $args->query_var )
                        $args->query_var = $post_type;
-               $args->query_var = sanitize_title_with_dashes($args->query_var);
+               else
+                       $args->query_var = sanitize_title_with_dashes($args->query_var);
                $wp->add_query_var($args->query_var);
        }
 
@@ -1182,6 +1440,10 @@ function get_post_type_capabilities( $args ) {
 
        $capabilities = array_merge( $default_capabilities, $args->capabilities );
 
+       // Post creation capability simply maps to edit_posts by default:
+       if ( ! isset( $capabilities['create_posts'] ) )
+               $capabilities['create_posts'] = $capabilities['edit_posts'];
+
        // Remember meta capabilities for future reference.
        if ( $args->map_meta_cap )
                _post_type_meta_capabilities( $capabilities );
@@ -1245,7 +1507,11 @@ function get_post_type_labels( $post_type_object ) {
                'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) )
        );
        $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
-       return _get_custom_object_labels( $post_type_object, $nohier_vs_hier_defaults );
+
+       $labels = _get_custom_object_labels( $post_type_object, $nohier_vs_hier_defaults );
+
+       $post_type = $post_type_object->name;
+       return apply_filters( "post_type_labels_{$post_type}", $labels );
 }
 
 /**
@@ -1668,9 +1934,9 @@ function is_sticky( $post_id = 0 ) {
  * @since 2.3.0
  * @uses sanitize_post_field() Used to sanitize the fields.
  *
- * @param object|array $post The Post Object or Array
+ * @param object|WP_Post|array $post The Post Object or Array
  * @param string $context Optional, default is 'display'. How to sanitize post fields.
- * @return object|array The now sanitized Post Object or Array (will be the same type as $post)
+ * @return object|WP_Post|array The now sanitized Post Object or Array (will be the same type as $post)
  */
 function sanitize_post($post, $context = 'display') {
        if ( is_object($post) ) {
@@ -1916,6 +2182,23 @@ function wp_count_attachments( $mime_type = '' ) {
        return (object) $stats;
 }
 
+/**
+ * Get default post mime types
+ *
+ * @since 2.9.0
+ *
+ * @return array
+ */
+function get_post_mime_types() {
+       $post_mime_types = array(       //      array( adj, noun )
+               'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
+               'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
+               'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
+       );
+
+       return apply_filters('post_mime_types', $post_mime_types);
+}
+
 /**
  * Check a MIME-Type against a list.
  *
@@ -2086,8 +2369,8 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
 
        clean_post_cache( $post );
 
-       if ( is_post_type_hierarchical( $post->post_type ) ) {
-               foreach ( (array) $children as $child )
+       if ( is_post_type_hierarchical( $post->post_type ) && $children ) {
+               foreach ( $children as $child )
                        clean_post_cache( $child );
        }
 
@@ -2115,7 +2398,7 @@ function wp_trash_post($post_id = 0) {
        if ( !EMPTY_TRASH_DAYS )
                return wp_delete_post($post_id, true);
 
-       if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
+       if ( !$post = get_post($post_id, ARRAY_A) )
                return $post;
 
        if ( $post['post_status'] == 'trash' )
@@ -2147,7 +2430,7 @@ function wp_trash_post($post_id = 0) {
  * @return mixed False on failure
  */
 function wp_untrash_post($post_id = 0) {
-       if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
+       if ( !$post = get_post($post_id, ARRAY_A) )
                return $post;
 
        if ( $post['post_status'] != 'trash' )
@@ -2377,49 +2660,6 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) {
 
 }
 
-/**
- * Retrieve a single post, based on post ID.
- *
- * Has categories in 'post_category' property or key. Has tags in 'tags_input'
- * property or key.
- *
- * @since 1.0.0
- *
- * @param int $postid Post ID.
- * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A.
- * @return object|array Post object or array holding post contents and information
- */
-function wp_get_single_post($postid = 0, $mode = OBJECT) {
-       $postid = (int) $postid;
-
-       $post = get_post($postid, $mode);
-
-       if (
-               ( OBJECT == $mode && empty( $post->ID ) ) ||
-               ( OBJECT != $mode && empty( $post['ID'] ) )
-       )
-               return ( OBJECT == $mode ? null : array() );
-
-       // Set categories and tags
-       if ( $mode == OBJECT ) {
-               $post->post_category = array();
-               if ( is_object_in_taxonomy($post->post_type, 'category') )
-                       $post->post_category = wp_get_post_categories($postid);
-               $post->tags_input = array();
-               if ( is_object_in_taxonomy($post->post_type, 'post_tag') )
-                       $post->tags_input = wp_get_post_tags($postid, array('fields' => 'names'));
-       } else {
-               $post['post_category'] = array();
-               if ( is_object_in_taxonomy($post['post_type'], 'category') )
-                       $post['post_category'] = wp_get_post_categories($postid);
-               $post['tags_input'] = array();
-               if ( is_object_in_taxonomy($post['post_type'], 'post_tag') )
-                       $post['tags_input'] = wp_get_post_tags($postid, array('fields' => 'names'));
-       }
-
-       return $post;
-}
-
 /**
  * Insert a post.
  *
@@ -2547,6 +2787,18 @@ function wp_insert_post($postarr, $wp_error = false) {
        if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date )
                $post_date = current_time('mysql');
 
+               // validate the date
+               $mm = substr( $post_date, 5, 2 );
+               $jj = substr( $post_date, 8, 2 );
+               $aa = substr( $post_date, 0, 4 );
+               $valid_date = wp_checkdate( $mm, $jj, $aa, $post_date );
+               if ( !$valid_date ) {
+                       if ( $wp_error )
+                               return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
+                       else
+                               return 0;
+               }
+
        if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
                if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
                        $post_date_gmt = get_gmt_from_date($post_date);
@@ -2667,18 +2919,18 @@ function wp_insert_post($postarr, $wp_error = false) {
 
        $current_guid = get_post_field( 'guid', $post_ID );
 
-       clean_post_cache( $post_ID );
-
        // Set GUID
        if ( !$update && '' == $current_guid )
                $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
 
+       clean_post_cache( $post_ID );
+
        $post = get_post($post_ID);
 
        if ( !empty($page_template) && 'page' == $data['post_type'] ) {
                $post->page_template = $page_template;
-               $page_templates = get_page_templates();
-               if ( 'default' != $page_template && !in_array($page_template, $page_templates) ) {
+               $page_templates = wp_get_theme()->get_page_templates();
+               if ( 'default' != $page_template && ! isset( $page_templates[ $page_template ] ) ) {
                        if ( $wp_error )
                                return new WP_Error('invalid_page_template', __('The page template is invalid.'));
                        else
@@ -2710,9 +2962,10 @@ function wp_insert_post($postarr, $wp_error = false) {
  * @since 1.0.0
  *
  * @param array|object $postarr Post data. Arrays are expected to be escaped, objects are not.
- * @return int 0 on failure, Post ID on success.
+ * @param bool $wp_error Optional. Allow return of WP_Error on failure.
+ * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
  */
-function wp_update_post($postarr = array()) {
+function wp_update_post( $postarr = array(), $wp_error = false ) {
        if ( is_object($postarr) ) {
                // non-escaped post was passed
                $postarr = get_object_vars($postarr);
@@ -2720,7 +2973,7 @@ function wp_update_post($postarr = array()) {
        }
 
        // First, get all of the original fields
-       $post = wp_get_single_post($postarr['ID'], ARRAY_A);
+       $post = get_post($postarr['ID'], ARRAY_A);
 
        // Escape data pulled from DB.
        $post = add_magic_quotes($post);
@@ -2750,39 +3003,25 @@ function wp_update_post($postarr = array()) {
        if ($postarr['post_type'] == 'attachment')
                return wp_insert_attachment($postarr);
 
-       return wp_insert_post($postarr);
+       return wp_insert_post( $postarr, $wp_error );
 }
 
 /**
  * Publish a post by transitioning the post status.
  *
  * @since 2.1.0
- * @uses $wpdb
- * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data.
+ * @uses wp_update_post()
  *
- * @param int $post_id Post ID.
- * @return null
+ * @param mixed $post Post ID or object.
  */
-function wp_publish_post($post_id) {
-       global $wpdb;
-
-       $post = get_post($post_id);
-
-       if ( empty($post) )
+function wp_publish_post( $post ) {
+       if ( ! $post = get_post( $post ) )
                return;
-
        if ( 'publish' == $post->post_status )
                return;
 
-       $wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post_id ) );
-
-       $old_status = $post->post_status;
        $post->post_status = 'publish';
-       wp_transition_post_status('publish', $old_status, $post);
-
-       do_action('edit_post', $post_id, $post);
-       do_action('save_post', $post_id, $post);
-       do_action('wp_insert_post', $post_id, $post);
+       wp_update_post( $post );
 }
 
 /**
@@ -2837,6 +3076,8 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 
        global $wpdb, $wp_rewrite;
 
+       $original_slug = $slug;
+
        $feeds = $wp_rewrite->feeds;
        if ( ! is_array( $feeds ) )
                $feeds = array();
@@ -2857,6 +3098,8 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
                        $slug = $alt_post_name;
                }
        } elseif ( in_array( $post_type, $hierarchical_post_types ) ) {
+               if ( 'nav_menu_item' == $post_type )
+                       return $slug;
                // Page slugs must be unique within their own trees. Pages are in a separate
                // namespace than posts so page slugs are allowed to overlap post slugs.
                $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "' ) AND ID != %d AND post_parent = %d LIMIT 1";
@@ -2887,7 +3130,7 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
                }
        }
 
-       return apply_filters( 'wp_unique_post_slug', $slug, $post_ID, $post_status, $post_type, $post_parent );
+       return apply_filters( 'wp_unique_post_slug', $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug );
 }
 
 /**
@@ -2953,11 +3196,10 @@ function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $a
        // Hierarchical taxonomies must always pass IDs rather than names so that children with the same
        // names but different parents aren't confused.
        if ( is_taxonomy_hierarchical( $taxonomy ) ) {
-               $tags = array_map( 'intval', $tags );
-               $tags = array_unique( $tags );
+               $tags = array_unique( array_map( 'intval', $tags ) );
        }
 
-       return wp_set_object_terms($post_id, $tags, $taxonomy, $append);
+       return wp_set_object_terms( $post_id, $tags, $taxonomy, $append );
 }
 
 /**
@@ -2986,12 +3228,7 @@ function wp_set_post_categories($post_ID = 0, $post_categories = array()) {
                return true;
        }
 
-       if ( !empty($post_categories) ) {
-               $post_categories = array_map('intval', $post_categories);
-               $post_categories = array_unique($post_categories);
-       }
-
-       return wp_set_object_terms($post_ID, $post_categories, 'category');
+       return wp_set_post_terms($post_ID, $post_categories, 'category');
 }
 
 /**
@@ -3127,7 +3364,7 @@ function get_to_ping($post_id) {
 function trackback_url_list($tb_list, $post_id) {
        if ( ! empty( $tb_list ) ) {
                // get post data
-               $postdata = wp_get_single_post($post_id, ARRAY_A);
+               $postdata = get_post($post_id, ARRAY_A);
 
                // import postdata as variables
                extract($postdata, EXTR_SKIP);
@@ -3174,16 +3411,18 @@ function get_all_page_ids() {
 /**
  * Retrieves page data given a page ID or page object.
  *
+ * Use get_post() instead of get_page().
+ *
  * @since 1.5.1
+ * @deprecated 3.5.0
  *
  * @param mixed $page Page object or page ID. Passed by reference.
  * @param string $output What to output. OBJECT, ARRAY_A, or ARRAY_N.
  * @param string $filter How the return value should be filtered.
- * @return mixed Page data.
+ * @return WP_Post|null WP_Post on success or null on failure
  */
-function &get_page(&$page, $output = OBJECT, $filter = 'raw') {
-       $p = get_post($page, $output, $filter);
-       return $p;
+function get_page( $page, $output = OBJECT, $filter = 'raw') {
+       return get_post( $page, $output, $filter );
 }
 
 /**
@@ -3195,7 +3434,7 @@ function &get_page(&$page, $output = OBJECT, $filter = 'raw') {
  * @param string $page_path Page path
  * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. Default OBJECT.
  * @param string $post_type Optional. Post type. Default page.
- * @return mixed Null when complete.
+ * @return WP_Post|null WP_Post on success or null on failure
  */
 function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
        global $wpdb;
@@ -3210,7 +3449,7 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
        $in_string = "'". implode( "','", $parts ) . "'";
        $post_type_sql = $post_type;
        $wpdb->escape_by_ref( $post_type_sql );
-       $pages = $wpdb->get_results( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_name IN ($in_string) AND (post_type = '$post_type_sql' OR post_type = 'attachment')", OBJECT_K );
+       $pages = $wpdb->get_results( "SELECT ID, post_name, post_parent, post_type FROM $wpdb->posts WHERE post_name IN ($in_string) AND (post_type = '$post_type_sql' OR post_type = 'attachment')", OBJECT_K );
 
        $revparts = array_reverse( $parts );
 
@@ -3229,13 +3468,14 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
 
                        if ( $p->post_parent == 0 && $count+1 == count( $revparts ) && $p->post_name == $revparts[ $count ] ) {
                                $foundid = $page->ID;
-                               break;
+                               if ( $page->post_type == $post_type )
+                                       break;
                        }
                }
        }
 
        if ( $foundid )
-               return get_page( $foundid, $output );
+               return get_post( $foundid, $output );
 
        return null;
 }
@@ -3249,13 +3489,13 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
  * @param string $page_title Page title
  * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. Default OBJECT.
  * @param string $post_type Optional. Post type. Default page.
- * @return mixed
+ * @return WP_Post|null WP_Post on success or null on failure
  */
 function get_page_by_title($page_title, $output = OBJECT, $post_type = 'page' ) {
        global $wpdb;
        $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type= %s", $page_title, $post_type ) );
        if ( $page )
-               return get_page($page, $output);
+               return get_post( $page, $output );
 
        return null;
 }
@@ -3273,7 +3513,7 @@ function get_page_by_title($page_title, $output = OBJECT, $post_type = 'page' )
  * @param array $pages List of pages' objects.
  * @return array
  */
-function &get_page_children($page_id, $pages) {
+function get_page_children($page_id, $pages) {
        $page_list = array();
        foreach ( (array) $pages as $page ) {
                if ( $page->post_parent == $page_id ) {
@@ -3297,7 +3537,7 @@ function &get_page_children($page_id, $pages) {
  * @param int $page_id Parent page ID.
  * @return array A list arranged by hierarchy. Children immediately follow their parents.
  */
-function &get_page_hierarchy( &$pages, $page_id = 0 ) {
+function get_page_hierarchy( &$pages, $page_id = 0 ) {
        if ( empty( $pages ) ) {
                $result = array();
                return $result;
@@ -3342,16 +3582,11 @@ function _page_traverse_name( $page_id, &$children, &$result ){
  */
 function get_page_uri($page) {
        if ( ! is_object($page) )
-               $page = get_page($page);
+               $page = get_post( $page );
        $uri = $page->post_name;
 
-       // A page cannot be it's own parent.
-       if ( $page->post_parent == $page->ID )
-               return $uri;
-
-       while ($page->post_parent != 0) {
-               $page = get_page($page->post_parent);
-               $uri = $page->post_name . "/" . $uri;
+       foreach ( $page->ancestors as $parent ) {
+               $uri = get_post( $parent )->post_name . "/" . $uri;
        }
 
        return $uri;
@@ -3370,9 +3605,11 @@ function get_page_uri($page) {
  * @param mixed $args Optional. Array or string of options that overrides defaults.
  * @return array List of pages matching defaults or $args
  */
-function &get_pages($args = '') {
+function get_pages($args = '') {
        global $wpdb;
 
+       $pages = false;
+
        $defaults = array(
                'child_of' => 0, 'sort_order' => 'ASC',
                'sort_column' => 'post_title', 'hierarchical' => 1,
@@ -3391,19 +3628,21 @@ function &get_pages($args = '') {
        // Make sure the post type is hierarchical
        $hierarchical_post_types = get_post_types( array( 'hierarchical' => true ) );
        if ( !in_array( $post_type, $hierarchical_post_types ) )
-               return false;
+               return $pages;
 
        // Make sure we have a valid post status
        if ( !is_array( $post_status ) )
                $post_status = explode( ',', $post_status );
        if ( array_diff( $post_status, get_post_stati() ) )
-               return false;
+               return $pages;
 
        $cache = array();
        $key = md5( serialize( compact(array_keys($defaults)) ) );
        if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
-               if ( is_array($cache) && isset( $cache[ $key ] ) ) {
-                       $pages = apply_filters('get_pages', $cache[ $key ], $r );
+               if ( is_array($cache) && isset( $cache[ $key ] ) && is_array( $cache[ $key ] ) ) {
+                       // Convert to WP_Post instances
+                       $pages = array_map( 'get_post', $cache[ $key ] );
+                       $pages = apply_filters( 'get_pages', $pages, $r );
                        return $pages;
                }
        }
@@ -3559,7 +3798,7 @@ function &get_pages($args = '') {
        update_post_cache( $pages );
 
        if ( $child_of || $hierarchical )
-               $pages = get_page_children($child_of, $pages);
+               $pages = get_page_children($child_of, $pages);
 
        if ( !empty($exclude_tree) ) {
                $exclude = (int) $exclude_tree;
@@ -3578,6 +3817,9 @@ function &get_pages($args = '') {
        $cache[ $key ] = $pages;
        wp_cache_set( 'get_pages', $cache, 'posts' );
 
+       // Convert to WP_Post instances
+       $pages = array_map( 'get_post', $pages );
+
        $pages = apply_filters('get_pages', $pages, $r);
 
        return $pages;
@@ -3601,7 +3843,7 @@ function is_local_attachment($url) {
        if (strpos($url, home_url('/?attachment_id=')) !== false)
                return true;
        if ( $id = url_to_postid($url) ) {
-               $post = get_post($id);
+               $post = get_post($id);
                if ( 'attachment' == $post->post_type )
                        return true;
        }
@@ -3676,13 +3918,12 @@ function wp_insert_attachment($object, $file = false, $parent = 0) {
        if ( ! in_array( $post_status, array( 'inherit', 'private' ) ) )
                $post_status = 'inherit';
 
+       if ( !empty($post_category) )
+               $post_category = array_filter($post_category); // Filter out empty terms
+
        // Make sure we set a valid category.
-       if ( !isset($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
-               // 'post' requires at least one category.
-               if ( 'post' == $post_type )
-                       $post_category = array( get_option('default_category') );
-               else
-                       $post_category = array();
+       if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
+               $post_category = array();
        }
 
        // Are we updating or creating?
@@ -3767,7 +4008,22 @@ function wp_insert_attachment($object, $file = false, $parent = 0) {
                $wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );
        }
 
-       wp_set_post_categories($post_ID, $post_category);
+       if ( is_object_in_taxonomy($post_type, 'category') )
+               wp_set_post_categories( $post_ID, $post_category );
+
+       if ( isset( $tags_input ) && is_object_in_taxonomy($post_type, 'post_tag') )
+               wp_set_post_tags( $post_ID, $tags_input );
+
+       // support for all custom taxonomies
+       if ( !empty($tax_input) ) {
+               foreach ( $tax_input as $taxonomy => $tags ) {
+                       $taxonomy_obj = get_taxonomy($taxonomy);
+                       if ( is_array($tags) ) // array = hierarchical, string = non-hierarchical.
+                               $tags = array_filter($tags);
+                       if ( current_user_can($taxonomy_obj->cap->assign_terms) )
+                               wp_set_post_terms( $post_ID, $tags, $taxonomy );
+               }
+       }
 
        if ( $file )
                update_attached_file( $post_ID, $file );
@@ -3897,7 +4153,7 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
  */
 function wp_get_attachment_metadata( $post_id = 0, $unfiltered = false ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
 
        $data = get_post_meta( $post->ID, '_wp_attachment_metadata', true );
@@ -3919,12 +4175,13 @@ function wp_get_attachment_metadata( $post_id = 0, $unfiltered = false ) {
  */
 function wp_update_attachment_metadata( $post_id, $data ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
 
-       $data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID );
-
-       return update_post_meta( $post->ID, '_wp_attachment_metadata', $data);
+       if ( $data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID ) )
+               return update_post_meta( $post->ID, '_wp_attachment_metadata', $data );
+       else
+               return delete_post_meta( $post->ID, '_wp_attachment_metadata' );
 }
 
 /**
@@ -3937,7 +4194,7 @@ function wp_update_attachment_metadata( $post_id, $data ) {
  */
 function wp_get_attachment_url( $post_id = 0 ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
 
        if ( 'attachment' != $post->post_type )
@@ -3976,7 +4233,7 @@ function wp_get_attachment_url( $post_id = 0 ) {
  */
 function wp_get_attachment_thumb_file( $post_id = 0 ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
        if ( !is_array( $imagedata = wp_get_attachment_metadata( $post->ID ) ) )
                return false;
@@ -3998,7 +4255,7 @@ function wp_get_attachment_thumb_file( $post_id = 0 ) {
  */
 function wp_get_attachment_thumb_url( $post_id = 0 ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
        if ( !$url = wp_get_attachment_url( $post->ID ) )
                return false;
@@ -4025,7 +4282,7 @@ function wp_get_attachment_thumb_url( $post_id = 0 ) {
  */
 function wp_attachment_is_image( $post_id = 0 ) {
        $post_id = (int) $post_id;
-       if ( !$post =& get_post( $post_id ) )
+       if ( !$post = get_post( $post_id ) )
                return false;
 
        if ( !$file = get_attached_file( $post->ID ) )
@@ -4033,7 +4290,7 @@ function wp_attachment_is_image( $post_id = 0 ) {
 
        $ext = preg_match('/\.([^.]+)$/', $file, $matches) ? strtolower($matches[1]) : false;
 
-       $image_exts = array('jpg', 'jpeg', 'gif', 'png');
+       $image_exts = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' );
 
        if ( 'image/' == substr($post->post_mime_type, 0, 6) || $ext && 'import' == $post->post_mime_type && in_array($ext, $image_exts) )
                return true;
@@ -4051,12 +4308,13 @@ function wp_attachment_is_image( $post_id = 0 ) {
 function wp_mime_type_icon( $mime = 0 ) {
        if ( !is_numeric($mime) )
                $icon = wp_cache_get("mime_type_icon_$mime");
+
+       $post_id = 0;
        if ( empty($icon) ) {
-               $post_id = 0;
                $post_mimes = array();
                if ( is_numeric($mime) ) {
                        $mime = (int) $mime;
-                       if ( $post =& get_post( $mime ) ) {
+                       if ( $post = get_post( $mime ) ) {
                                $post_id = (int) $post->ID;
                                $ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $post->guid);
                                if ( !empty($ext) ) {
@@ -4098,7 +4356,7 @@ function wp_mime_type_icon( $mime = 0 ) {
                                        closedir($dh);
                                }
                        }
-                       wp_cache_set('icon_files', $icon_files, 600);
+                       wp_cache_add( 'icon_files', $icon_files, 'default', 600 );
                }
 
                // Icon basename - extension = MIME wildcard
@@ -4118,7 +4376,7 @@ function wp_mime_type_icon( $mime = 0 ) {
                        if ( isset($types[$wilds[0]])) {
                                $icon = $types[$wilds[0]];
                                if ( !is_numeric($mime) )
-                                       wp_cache_set("mime_type_icon_$mime", $icon);
+                                       wp_cache_add("mime_type_icon_$mime", $icon);
                                break;
                        }
                }
@@ -4195,9 +4453,10 @@ function get_private_posts_cap_sql( $post_type ) {
  * @param string $post_type Post type.
  * @param bool $full Optional. Returns a full WHERE statement instead of just an 'andalso' term.
  * @param int $post_author Optional. Query posts having a single author ID.
+ * @param bool $public_only Optional. Only return public posts. Skips cap checks for $current_user.  Default is false.
  * @return string SQL WHERE code that can be added to a query.
  */
-function get_posts_by_author_sql( $post_type, $full = true, $post_author = null ) {
+function get_posts_by_author_sql( $post_type, $full = true, $post_author = null, $public_only = false ) {
        global $user_ID, $wpdb;
 
        // Private posts
@@ -4221,18 +4480,21 @@ function get_posts_by_author_sql( $post_type, $full = true, $post_author = null
 
        $sql .= "(post_status = 'publish'";
 
-       if ( current_user_can( $cap ) ) {
-               // Does the user have the capability to view private posts? Guess so.
-               $sql .= " OR post_status = 'private'";
-       } elseif ( is_user_logged_in() ) {
-               // Users can view their own private posts.
-               $id = (int) $user_ID;
-               if ( null === $post_author || ! $full ) {
-                       $sql .= " OR post_status = 'private' AND post_author = $id";
-               } elseif ( $id == (int) $post_author ) {
+       // Only need to check the cap if $public_only is false
+       if ( false === $public_only ) {
+               if ( current_user_can( $cap ) ) {
+                       // Does the user have the capability to view private posts? Guess so.
                        $sql .= " OR post_status = 'private'";
+               } elseif ( is_user_logged_in() ) {
+                       // Users can view their own private posts.
+                       $id = (int) $user_ID;
+                       if ( null === $post_author || ! $full ) {
+                               $sql .= " OR post_status = 'private' AND post_author = $id";
+                       } elseif ( $id == (int) $post_author ) {
+                               $sql .= " OR post_status = 'private'";
+                       } // else none
                } // else none
-       } // else none
+       }
 
        $sql .= ')';
 
@@ -4351,8 +4613,6 @@ function update_post_cache( &$posts ) {
  * Cleaning means delete from the cache of the post. Will call to clean the term
  * object cache associated with the post ID.
  *
- * clean_post_cache() will call itself recursively for each child post.
- *
  * This function not run if $_wp_suspend_cache_invalidation is not empty. See
  * wp_suspend_cache_invalidation().
  *
@@ -4383,23 +4643,13 @@ function clean_post_cache( $post ) {
 
        do_action( 'clean_post_cache', $post->ID, $post );
 
+       if ( is_post_type_hierarchical( $post->post_type ) )
+               wp_cache_delete( 'get_pages', 'posts' );
+
        if ( 'page' == $post->post_type ) {
                wp_cache_delete( 'all_page_ids', 'posts' );
-               wp_cache_delete( 'get_pages', 'posts' );
                do_action( 'clean_page_cache', $post->ID );
        }
-
-       if ( $children = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_type FROM $wpdb->posts WHERE post_parent = %d", $post->ID) ) ) {
-               foreach ( $children as $child ) {
-                       // Loop detection
-                       if ( $child->ID == $post->ID )
-                               continue;
-                       clean_post_cache( $child );
-               }
-       }
-
-       if ( is_multisite() )
-               wp_cache_delete( $wpdb->blogid . '-' . $post->ID, 'global-posts' );
 }
 
 /**
@@ -4430,8 +4680,8 @@ function update_post_caches(&$posts, $post_type = 'post', $update_term_cache = t
        foreach ( $posts as $post )
                $post_ids[] = $post->ID;
 
-       if ( empty($post_type) )
-               $post_type = 'post';
+       if ( ! $post_type )
+               $post_type = 'any';
 
        if ( $update_term_cache ) {
                if ( is_array($post_type) ) {
@@ -4571,9 +4821,8 @@ function _future_post_hook( $deprecated = '', $post ) {
  * @since 2.3.0
  * @access private
  * @uses $wpdb
- * @uses XMLRPC_REQUEST and APP_REQUEST constants.
+ * @uses XMLRPC_REQUEST constant.
  * @uses do_action() Calls 'xmlprc_publish_post' on post ID if XMLRPC_REQUEST is defined.
- * @uses do_action() Calls 'app_publish_post' on post ID if APP_REQUEST is defined.
  *
  * @param int $post_id The ID in the database table of the post being published
  */
@@ -4582,8 +4831,6 @@ function _publish_post_hook($post_id) {
 
        if ( defined('XMLRPC_REQUEST') )
                do_action('xmlrpc_publish_post', $post_id);
-       if ( defined('APP_REQUEST') )
-               do_action('app_publish_post', $post_id);
 
        if ( defined('WP_IMPORTING') )
                return;
@@ -4595,58 +4842,6 @@ function _publish_post_hook($post_id) {
        wp_schedule_single_event(time(), 'do_pings');
 }
 
-/**
- * Hook used to prevent page/post cache from staying dirty when a post is saved.
- *
- * @since 2.3.0
- * @access private
- *
- * @param int $post_id The ID in the database table for the $post
- * @param object $post Object type containing the post information
- */
-function _save_post_hook( $post_id, $post ) {
-       clean_post_cache( $post );
-}
-
-/**
- * Retrieve post ancestors and append to post ancestors property.
- *
- * Will only retrieve ancestors once, if property is already set, then nothing
- * will be done. If there is not a parent post, or post ID and post parent ID
- * are the same then nothing will be done.
- *
- * The parameter is passed by reference, so nothing needs to be returned. The
- * property will be updated and can be referenced after the function is
- * complete. The post parent will be an ancestor and the parent of the post
- * parent will be an ancestor. There will only be two ancestors at the most.
- *
- * @since 2.5.0
- * @access private
- * @uses $wpdb
- *
- * @param object $_post Post data.
- * @return null When nothing needs to be done.
- */
-function _get_post_ancestors(&$_post) {
-       global $wpdb;
-
-       if ( isset($_post->ancestors) )
-               return;
-
-       $_post->ancestors = array();
-
-       if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
-               return;
-
-       $id = $_post->ancestors[] = (int) $_post->post_parent;
-       while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
-               // Loop detection: If the ancestor has been seen before, break.
-               if ( ( $ancestor == $_post->ID ) || in_array($ancestor,  $_post->ancestors) )
-                       break;
-               $id = $_post->ancestors[] = (int) $ancestor;
-       }
-}
-
 /**
  * Determines which fields of posts are to be saved in revisions.
  *
@@ -4726,6 +4921,9 @@ function wp_save_post_revision( $post_id ) {
        if ( !$post = get_post( $post_id, ARRAY_A ) )
                return;
 
+       if ( 'auto-draft' == $post['post_status'] )
+               return;
+
        if ( !post_type_supports($post['post_type'], 'revisions') )
                return;
 
@@ -4890,7 +5088,7 @@ function _wp_put_post_revision( $post = null, $autosave = false ) {
  * @param string $filter Optional sanitation filter. @see sanitize_post()
  * @return mixed Null if error or post object if success
  */
-function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
+function wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
        $null = null;
        if ( !$revision = get_post( $post, OBJECT, $filter ) )
                return $revision;
@@ -5166,10 +5364,10 @@ function set_post_thumbnail( $post, $thumbnail_id ) {
        $post = get_post( $post );
        $thumbnail_id = absint( $thumbnail_id );
        if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
-               $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' );
-               if ( ! empty( $thumbnail_html ) ) {
+               if ( $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' ) )
                        return update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
-               }
+               else
+                       return delete_post_meta( $post->ID, '_thumbnail_id' );
        }
        return false;
 }
index 5f6ccddfb8a10a1b0e302f5ac74b561f03cff199..443d0bb742b7c0e2a614a5edfaa511a6d8df83a3 100644 (file)
@@ -86,8 +86,7 @@ function set_query_var($var, $value) {
  * @param string $query
  * @return array List of posts
  */
-function &query_posts($query) {
-       unset($GLOBALS['wp_query']);
+function query_posts($query) {
        $GLOBALS['wp_query'] = new WP_Query();
        return $GLOBALS['wp_query']->query($query);
 }
@@ -103,7 +102,6 @@ function &query_posts($query) {
  * @uses $wp_query
  */
 function wp_reset_query() {
-       unset($GLOBALS['wp_query']);
        $GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
        wp_reset_postdata();
 }
@@ -128,7 +126,7 @@ function wp_reset_postdata() {
  */
 
 /**
- * Is the query for an archive page?
+ * Is the query for an existing archive page?
  *
  * Month, Year, Category, Author, Post Type archive...
  *
@@ -150,7 +148,7 @@ function is_archive() {
 }
 
 /**
- * Is the query for a post type archive page?
+ * Is the query for an existing post type archive page?
  *
  * @see WP_Query::is_post_type_archive()
  * @since 3.1.0
@@ -171,7 +169,7 @@ function is_post_type_archive( $post_types = '' ) {
 }
 
 /**
- * Is the query for an attachment page?
+ * Is the query for an existing attachment page?
  *
  * @see WP_Query::is_attachment()
  * @since 2.0.0
@@ -191,7 +189,7 @@ function is_attachment() {
 }
 
 /**
- * Is the query for an author archive page?
+ * Is the query for an existing author archive page?
  *
  * If the $author parameter is specified, this function will additionally
  * check if the query is for one of the authors specified.
@@ -215,7 +213,7 @@ function is_author( $author = '' ) {
 }
 
 /**
- * Is the query for a category archive page?
+ * Is the query for an existing category archive page?
  *
  * If the $category parameter is specified, this function will additionally
  * check if the query is for one of the categories specified.
@@ -239,7 +237,7 @@ function is_category( $category = '' ) {
 }
 
 /**
- * Is the query for a tag archive page?
+ * Is the query for an existing tag archive page?
  *
  * If the $tag parameter is specified, this function will additionally
  * check if the query is for one of the tags specified.
@@ -263,7 +261,7 @@ function is_tag( $slug = '' ) {
 }
 
 /**
- * Is the query for a taxonomy archive page?
+ * Is the query for an existing taxonomy archive page?
  *
  * If the $taxonomy parameter is specified, this function will additionally
  * check if the query is for that specific $taxonomy.
@@ -312,7 +310,7 @@ function is_comments_popup() {
 }
 
 /**
- * Is the query for a date archive?
+ * Is the query for an existing date archive?
  *
  * @see WP_Query::is_date()
  * @since 1.5.0
@@ -332,7 +330,7 @@ function is_date() {
 }
 
 /**
- * Is the query for a day archive?
+ * Is the query for an existing day archive?
  *
  * @see WP_Query::is_day()
  * @since 1.5.0
@@ -452,7 +450,7 @@ function is_home() {
 }
 
 /**
- * Is the query for a month archive?
+ * Is the query for an existing month archive?
  *
  * @see WP_Query::is_month()
  * @since 1.5.0
@@ -472,7 +470,7 @@ function is_month() {
 }
 
 /**
- * Is the query for a single page?
+ * Is the query for an existing single page?
  *
  * If the $page parameter is specified, this function will additionally
  * check if the query is for one of the pages specified.
@@ -579,7 +577,7 @@ function is_search() {
 }
 
 /**
- * Is the query for a single post?
+ * Is the query for an existing single post?
  *
  * Works for any post type, except attachments and pages
  *
@@ -608,7 +606,7 @@ function is_single( $post = '' ) {
 }
 
 /**
- * Is the query for a single post of any post type (post, attachment, page, ... )?
+ * Is the query for an existing single post of any post type (post, attachment, page, ... )?
  *
  * If the $post_types parameter is specified, this function will additionally
  * check if the query is for one of the Posts Types specified.
@@ -675,7 +673,7 @@ function is_trackback() {
 }
 
 /**
- * Is the query for a specific year?
+ * Is the query for an existing year archive?
  *
  * @see WP_Query::is_year()
  * @since 1.5.0
@@ -979,7 +977,9 @@ class WP_Query {
        var $comment;
 
        /**
-        * Amount of posts if limit clause was not used.
+        * The amount of found posts for the current query.
+        *
+        * If limit clause was not used, equals $post_count.
         *
         * @since 2.1.0
         * @access public
@@ -1398,6 +1398,7 @@ class WP_Query {
                        , 's'
                        , 'sentence'
                        , 'fields'
+                       , 'menu_order'
                );
 
                foreach ( $keys as $key ) {
@@ -1452,6 +1453,7 @@ class WP_Query {
                if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
+               if ( '' !== $qv['menu_order'] ) $qv['menu_order'] = absint($qv['menu_order']);
 
                // Compat. Map subpost to attachment.
                if ( '' != $qv['subpost'] )
@@ -1785,13 +1787,13 @@ class WP_Query {
                // Tag stuff
                if ( '' != $q['tag'] && !$this->is_singular && $this->query_vars_changed ) {
                        if ( strpos($q['tag'], ',') !== false ) {
-                               $tags = preg_split('/[,\s]+/', $q['tag']);
+                               $tags = preg_split('/[,\r\n\t ]+/', $q['tag']);
                                foreach ( (array) $tags as $tag ) {
                                        $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db');
                                        $q['tag_slug__in'][] = $tag;
                                }
-                       } else if ( preg_match('/[+\s]+/', $q['tag']) || !empty($q['cat']) ) {
-                               $tags = preg_split('/[+\s]+/', $q['tag']);
+                       } else if ( preg_match('/[+\r\n\t ]+/', $q['tag']) || !empty($q['cat']) ) {
+                               $tags = preg_split('/[+\r\n\t ]+/', $q['tag']);
                                foreach ( (array) $tags as $tag ) {
                                        $tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db');
                                        $q['tag_slug__and'][] = $tag;
@@ -1914,7 +1916,7 @@ class WP_Query {
         *
         * @return array List of posts.
         */
-       function &get_posts() {
+       function get_posts() {
                global $wpdb, $user_ID, $_wp_using_ext_object_cache;
 
                $this->parse_query();
@@ -2040,6 +2042,9 @@ class WP_Query {
                                $fields = "$wpdb->posts.*";
                }
 
+               if ( '' !== $q['menu_order'] )
+                       $where .= " AND $wpdb->posts.menu_order = " . $q['menu_order'];
+
                // If a month is specified in the querystring, load that month
                if ( $q['m'] ) {
                        $q['m'] = '' . preg_replace('|[^0-9]|', '', $q['m']);
@@ -2128,7 +2133,7 @@ class WP_Query {
                                $q['pagename'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) );
                                $q['name'] = $q['pagename'];
                                $where .= " AND ($wpdb->posts.ID = '$reqpage')";
-                               $reqpage_obj = get_page($reqpage);
+                               $reqpage_obj = get_post( $reqpage );
                                if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) {
                                        $this->is_attachment = true;
                                        $post_type = $q['post_type'] = 'attachment';
@@ -2177,6 +2182,8 @@ class WP_Query {
                if ( !empty($q['s']) ) {
                        // added slashes screw with quote grouping when done early, so done later
                        $q['s'] = stripslashes($q['s']);
+                       if ( empty( $_GET['s'] ) && $this->is_main_query() )
+                               $q['s'] = urldecode($q['s']);
                        if ( !empty($q['sentence']) ) {
                                $q['search_terms'] = array($q['s']);
                        } else {
@@ -2213,7 +2220,17 @@ class WP_Query {
 
                if ( $this->is_tax ) {
                        if ( empty($post_type) ) {
-                               $post_type = 'any';
+                               // Do a fully inclusive search for currently registered post types of queried taxonomies
+                               $post_type = array();
+                               $taxonomies = wp_list_pluck( $this->tax_query->queries, 'taxonomy' );
+                               foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) {
+                                       $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt );
+                                       if ( array_intersect( $taxonomies, $object_taxonomies ) )
+                                               $post_type[] = $pt;
+                               }
+                               if ( ! $post_type )
+                                       $post_type = 'any';
+
                                $post_status_join = true;
                        } elseif ( in_array('attachment', (array) $post_type) ) {
                                $post_status_join = true;
@@ -2324,6 +2341,8 @@ class WP_Query {
                        $orderby = "$wpdb->posts.post_date " . $q['order'];
                } elseif ( 'none' == $q['orderby'] ) {
                        $orderby = '';
+               } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) {
+                       $orderby = "FIELD( {$wpdb->posts}.ID, $post__in )";
                } else {
                        // Used to filter values
                        $allowed_keys = array('name', 'author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count');
@@ -2386,7 +2405,7 @@ class WP_Query {
                if ( 'any' == $post_type ) {
                        $in_search_post_types = get_post_types( array('exclude_from_search' => false) );
                        if ( ! empty( $in_search_post_types ) )
-                               $where .= $wpdb->prepare(" AND $wpdb->posts.post_type IN ('" . join("', '", $in_search_post_types ) . "')");
+                               $where .= " AND $wpdb->posts.post_type IN ('" . join("', '", $in_search_post_types ) . "')";
                } elseif ( !empty( $post_type ) && is_array( $post_type ) ) {
                        $where .= " AND $wpdb->posts.post_type IN ('" . join("', '", $post_type) . "')";
                } elseif ( ! empty( $post_type ) ) {
@@ -2612,13 +2631,17 @@ class WP_Query {
                }
 
                if ( 'ids' == $q['fields'] ) {
-                       $this->posts = $wpdb->get_col($this->request);
+                       $this->posts = $wpdb->get_col( $this->request );
+                       $this->post_count = count( $this->posts );
+                       $this->set_found_posts( $q, $limits );
 
                        return $this->posts;
                }
 
                if ( 'id=>parent' == $q['fields'] ) {
-                       $this->posts = $wpdb->get_results($this->request);
+                       $this->posts = $wpdb->get_results( $this->request );
+                       $this->post_count = count( $this->posts );
+                       $this->set_found_posts( $q, $limits );
 
                        $r = array();
                        foreach ( $this->posts as $post )
@@ -2640,13 +2663,10 @@ class WP_Query {
                        $ids = $wpdb->get_col( $this->request );
 
                        if ( $ids ) {
+                               $this->posts = $ids;
                                $this->set_found_posts( $q, $limits );
-
                                _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
-
-                               $this->posts = array_map( 'get_post', $ids );
                        } else {
-                               $this->found_posts = $this->max_num_pages = 0;
                                $this->posts = array();
                        }
                } else {
@@ -2654,6 +2674,10 @@ class WP_Query {
                        $this->set_found_posts( $q, $limits );
                }
 
+               // Convert to WP_Post objects
+               if ( $this->posts )
+                       $this->posts = array_map( 'get_post', $this->posts );
+
                // Raw results filter. Prior to status checks.
                if ( !$q['suppress_filters'] )
                        $this->posts = apply_filters_ref_array('posts_results', array( $this->posts, &$this ) );
@@ -2700,7 +2724,7 @@ class WP_Query {
                        }
 
                        if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[0]->ID ) )
-                               $this->posts[0] = apply_filters_ref_array('the_preview', array( $this->posts[0], &$this ));
+                               $this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) );
                }
 
                // Put sticky posts at the top of the posts array
@@ -2730,24 +2754,15 @@ class WP_Query {
 
                        // Fetch sticky posts that weren't in the query results
                        if ( !empty($sticky_posts) ) {
-                               $stickies__in = implode(',', array_map( 'absint', $sticky_posts ));
-                               // honor post type(s) if not set to any
-                               $stickies_where = '';
-                               if ( 'any' != $post_type && '' != $post_type ) {
-                                       if ( is_array( $post_type ) ) {
-                                               $post_types = join( "', '", $post_type );
-                                       } else {
-                                               $post_types = $post_type;
-                                       }
-                                       $stickies_where = "AND $wpdb->posts.post_type IN ('" . $post_types . "')";
-                               }
+                               $stickies = get_posts( array(
+                                       'post__in' => $sticky_posts,
+                                       'post_type' => $post_type,
+                                       'post_status' => 'publish',
+                                       'nopaging' => true
+                               ) );
 
-                               $stickies = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE $wpdb->posts.ID IN ($stickies__in) $stickies_where" );
                                foreach ( $stickies as $sticky_post ) {
-                                       // Ignore sticky posts the current user cannot read or are not published.
-                                       if ( 'publish' != $sticky_post->post_status )
-                                               continue;
-                                       array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
+                                       array_splice( $this->posts, $sticky_offset, 0, array( $sticky_post ) );
                                        $sticky_offset++;
                                }
                        }
@@ -2756,33 +2771,49 @@ class WP_Query {
                if ( !$q['suppress_filters'] )
                        $this->posts = apply_filters_ref_array('the_posts', array( $this->posts, &$this ) );
 
-               $this->post_count = count($this->posts);
+               // Ensure that any posts added/modified via one of the filters above are
+               // of the type WP_Post and are filtered.
+               if ( $this->posts ) {
+                       $this->post_count = count( $this->posts );
 
-               // Always sanitize
-               foreach ( $this->posts as $i => $post ) {
-                       $this->posts[$i] = sanitize_post( $post, 'raw' );
-               }
+                       $this->posts = array_map( 'get_post', $this->posts );
 
-               if ( $q['cache_results'] )
-                       update_post_caches($this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache']);
+                       if ( $q['cache_results'] )
+                               update_post_caches($this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache']);
 
-               if ( $this->post_count > 0 ) {
-                       $this->post = $this->posts[0];
+                       $this->post = reset( $this->posts );
+               } else {
+                       $this->post_count = 0;
+                       $this->posts = array();
                }
 
                return $this->posts;
        }
 
+       /**
+        * Set up the amount of found posts and the number of pages (if limit clause was used)
+        * for the current query.
+        *
+        * @since 3.5.0
+        * @access private
+        */
        function set_found_posts( $q, $limits ) {
                global $wpdb;
 
-               if ( $q['no_found_rows'] || empty( $limits ) )
+               // Bail if posts is an empty array. Continue if posts is an empty string
+               // null, or false to accommodate caching plugins that fill posts later.
+               if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) )
                        return;
 
-               $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) );
+               if ( ! empty( $limits ) )
+                       $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) );
+               else
+                       $this->found_posts = count( $this->posts );
+
                $this->found_posts = apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) );
 
-               $this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] );
+               if ( ! empty( $limits ) )
+                       $this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] );
        }
 
        /**
@@ -2791,7 +2822,7 @@ class WP_Query {
         * @since 1.5.0
         * @access public
         *
-        * @return object Next post.
+        * @return WP_Post Next post.
         */
        function next_post() {
 
@@ -2935,7 +2966,7 @@ class WP_Query {
         * @param string $query URL query string.
         * @return array List of posts.
         */
-       function &query( $query ) {
+       function query( $query ) {
                $this->init();
                $this->query = $this->query_vars = wp_parse_args( $query );
                return $this->get_posts();
@@ -2967,10 +2998,10 @@ class WP_Query {
 
                        if ( 'term_id' == $query['field'] )
                                $term = get_term( reset( $query['terms'] ), $query['taxonomy'] );
-                       else
+                       elseif ( $query['terms'] )
                                $term = get_term_by( $query['field'], reset( $query['terms'] ), $query['taxonomy'] );
 
-                       if ( $term && ! is_wp_error($term) )  {
+                       if ( ! empty( $term ) && ! is_wp_error( $term ) )  {
                                $this->queried_object = $term;
                                $this->queried_object_id = (int) $term->term_id;
 
@@ -2981,7 +3012,7 @@ class WP_Query {
                        $this->queried_object = get_post_type_object( $this->get('post_type') );
                } elseif ( $this->is_posts_page ) {
                        $page_for_posts = get_option('page_for_posts');
-                       $this->queried_object = get_page( $page_for_posts );
+                       $this->queried_object = get_post( $page_for_posts );
                        $this->queried_object_id = (int) $this->queried_object->ID;
                } elseif ( $this->is_singular && !is_null($this->post) ) {
                        $this->queried_object = $this->post;
@@ -3030,7 +3061,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for an archive page?
+        * Is the query for an existing archive page?
         *
         * Month, Year, Category, Author, Post Type archive...
         *
@@ -3043,7 +3074,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a post type archive page?
+        * Is the query for an existing post type archive page?
         *
         * @since 3.1.0
         *
@@ -3060,7 +3091,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for an attachment page?
+        * Is the query for an existing attachment page?
         *
         * @since 3.1.0
         *
@@ -3071,7 +3102,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for an author archive page?
+        * Is the query for an existing author archive page?
         *
         * If the $author parameter is specified, this function will additionally
         * check if the query is for one of the authors specified.
@@ -3103,7 +3134,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a category archive page?
+        * Is the query for an existing category archive page?
         *
         * If the $category parameter is specified, this function will additionally
         * check if the query is for one of the categories specified.
@@ -3135,7 +3166,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a tag archive page?
+        * Is the query for an existing tag archive page?
         *
         * If the $tag parameter is specified, this function will additionally
         * check if the query is for one of the tags specified.
@@ -3163,7 +3194,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a taxonomy archive page?
+        * Is the query for an existing taxonomy archive page?
         *
         * If the $taxonomy parameter is specified, this function will additionally
         * check if the query is for that specific $taxonomy.
@@ -3191,8 +3222,13 @@ class WP_Query {
                $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy );
                $term_array = (array) $term;
 
-               if ( empty( $term ) ) // Only a Taxonomy provided
-                       return isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array );
+               // Check that the taxonomy matches.
+               if ( ! ( isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ) ) )
+                       return false;
+
+               // Only a Taxonomy provided.
+               if ( empty( $term ) )
+                       return true;
 
                return isset( $queried_object->term_id ) &&
                        count( array_intersect(
@@ -3213,7 +3249,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a date archive?
+        * Is the query for an existing date archive?
         *
         * @since 3.1.0
         *
@@ -3224,7 +3260,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a day archive?
+        * Is the query for an existing day archive?
         *
         * @since 3.1.0
         *
@@ -3311,7 +3347,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a month archive?
+        * Is the query for an existing month archive?
         *
         * @since 3.1.0
         *
@@ -3322,7 +3358,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a single page?
+        * Is the query for an existing single page?
         *
         * If the $page parameter is specified, this function will additionally
         * check if the query is for one of the pages specified.
@@ -3401,7 +3437,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a single post?
+        * Is the query for an existing single post?
         *
         * Works for any post type, except attachments and pages
         *
@@ -3438,7 +3474,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a single post of any post type (post, attachment, page, ... )?
+        * Is the query for an existing single post of any post type (post, attachment, page, ... )?
         *
         * If the $post_types parameter is specified, this function will additionally
         * check if the query is for one of the Posts Types specified.
@@ -3483,7 +3519,7 @@ class WP_Query {
        }
 
        /**
-        * Is the query for a specific year?
+        * Is the query for an existing year archive?
         *
         * @since 3.1.0
         *
index 740ffebb09cea2c7c83a4dc7b1e32ff8046d36b6..486922a3d1039afe02c42487319aae3faf127d08 100644 (file)
@@ -1525,8 +1525,11 @@ class WP_Rewrite {
                $home_path = parse_url( home_url() );
                $robots_rewrite = ( empty( $home_path['path'] ) || '/' == $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array();
 
-               // Old feed files
-               $old_feed_files = array( '.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old' );
+               // Old feed and service files
+               $deprecated_files = array(
+                       '.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old',
+                       '.*wp-app\.php(/.*)?$' => $this->index . '?error=403',
+               );
 
                // Registration rules
                $registration_pages = array();
@@ -1585,9 +1588,9 @@ class WP_Rewrite {
 
                // Put them together.
                if ( $this->use_verbose_page_rules )
-                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $old_feed_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules);
+                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules);
                else
-                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $old_feed_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
+                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
 
                do_action_ref_array('generate_rewrite_rules', array(&$this));
                $this->rules = apply_filters('rewrite_rules_array', $this->rules);
@@ -1638,7 +1641,7 @@ class WP_Rewrite {
                if ( ! $this->using_permalinks() )
                        return '';
 
-               $site_root = parse_url(get_option('siteurl'));
+               $site_root = parse_url( site_url() );
                if ( isset( $site_root['path'] ) )
                        $site_root = trailingslashit($site_root['path']);
 
@@ -1726,75 +1729,17 @@ class WP_Rewrite {
                <rewrite>
                        <rules>';
                }
-               if ( !is_multisite() ) {
-                       $rules .= '
-                               <rule name="wordpress" patternSyntax="Wildcard">
-                                       <match url="*" />
-                                               <conditions>
-                                                       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
-                                                       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
-                                               </conditions>
-                                       <action type="Rewrite" url="index.php" />
-                               </rule>';
-               } else {
-                       if (is_subdomain_install()) {
-                               $rules .= '
-                               <rule name="wordpress - Rule 1" stopProcessing="true">
-                                       <match url="^index\.php$" ignoreCase="false" />
-                                       <action type="None" />
-                               </rule>
-                               <rule name="wordpress - Rule 2" stopProcessing="true">
-                                       <match url="^files/(.+)" ignoreCase="false" />
-                                       <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
-                               </rule>
-                               <rule name="wordpress - Rule 3" stopProcessing="true">
-                                       <match url="^" ignoreCase="false" />
-                                       <conditions logicalGrouping="MatchAny">
-                                               <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
-                                               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
-                                       </conditions>
-                                       <action type="None" />
-                               </rule>
-                               <rule name="wordpress - Rule 4" stopProcessing="true">
-                                       <match url="." ignoreCase="false" />
-                                       <action type="Rewrite" url="index.php" />
-                               </rule>';
-                       } else {
-                               $rules .= '
-                               <rule name="wordpress - Rule 1" stopProcessing="true">
-                                       <match url="^index\.php$" ignoreCase="false" />
-                                       <action type="None" />
-                               </rule>
-                               <rule name="wordpress - Rule 2" stopProcessing="true">
-                                       <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
-                                       <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
-                               </rule>
-                               <rule name="wordpress - Rule 3" stopProcessing="true">
-                                       <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
-                                       <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
-                               </rule>
-                               <rule name="wordpress - Rule 4" stopProcessing="true">
-                                       <match url="^" ignoreCase="false" />
-                                       <conditions logicalGrouping="MatchAny">
-                                               <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
-                                               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
+
+               $rules .= '
+                       <rule name="wordpress" patternSyntax="Wildcard">
+                               <match url="*" />
+                                       <conditions>
+                                               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
+                                               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                                        </conditions>
-                                       <action type="None" />
-                               </rule>
-                               <rule name="wordpress - Rule 5" stopProcessing="true">
-                                       <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
-                                       <action type="Rewrite" url="{R:1}" />
-                               </rule>
-                               <rule name="wordpress - Rule 6" stopProcessing="true">
-                                       <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
-                                       <action type="Rewrite" url="{R:2}" />
-                               </rule>
-                               <rule name="wordpress - Rule 7" stopProcessing="true">
-                                       <match url="." ignoreCase="false" />
-                                       <action type="Rewrite" url="index.php" />
-                               </rule>';
-                       }
-               }
+                               <action type="Rewrite" url="index.php" />
+                       </rule>';
+
                if ( $add_parent_tags ) {
                        $rules .= '
                        </rules>
@@ -1995,9 +1940,10 @@ class WP_Rewrite {
         */
        function set_permalink_structure($permalink_structure) {
                if ( $permalink_structure != $this->permalink_structure ) {
+                       $old_permalink_structure = $this->permalink_structure;
                        update_option('permalink_structure', $permalink_structure);
                        $this->init();
-                       do_action('permalink_structure_changed', $this->permalink_structure, $permalink_structure);
+                       do_action('permalink_structure_changed', $old_permalink_structure, $permalink_structure);
                }
        }
 
index 28b4edbecb542cf8264336e3c4255143dd90896e..efc71e60e4ac3f2a1a8c00879dc513e708242fcd 100644 (file)
@@ -57,9 +57,14 @@ function wp_default_scripts( &$scripts ) {
        $scripts->default_version = get_bloginfo( 'version' );
        $scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/');
 
-       $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
+       $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
 
-       $scripts->add( 'utils', "/wp-admin/js/utils$suffix.js" );
+       $scripts->add( 'utils', "/wp-includes/js/utils$suffix.js" );
+       did_action( 'init' ) && $scripts->localize( 'utils', 'userSettings', array(
+               'url' => (string) SITECOOKIEPATH,
+               'uid' => (string) get_current_user_id(),
+               'time' => (string) time(),
+       ) );
 
        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 );
        did_action( 'init' ) && $scripts->localize( 'common', 'commonL10n', array(
@@ -90,8 +95,6 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'wp-fullscreen', "/wp-admin/js/wp-fullscreen$suffix.js", array('jquery'), false, 1 );
 
-       $scripts->add( 'prototype', '/wp-includes/js/prototype.js', array(), '1.6.1');
-
        $scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array('jquery'), false, 1 );
        did_action( 'init' ) && $scripts->localize( 'wp-ajax-response', 'wpAjax', array(
                'noPerm' => __('You do not have permission to do that.'),
@@ -105,62 +108,67 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), false, 1 );
 
-       $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), false, 1 );
+       $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array( 'wp-ajax-response', 'jquery-color' ), false, 1 );
 
-       $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.3');
-       $scripts->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.3');
-       $scripts->add( 'scriptaculous-dragdrop', '/wp-includes/js/scriptaculous/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.8.3');
-       $scripts->add( 'scriptaculous-effects', '/wp-includes/js/scriptaculous/effects.js', array('scriptaculous-root'), '1.8.3');
-       $scripts->add( 'scriptaculous-slider', '/wp-includes/js/scriptaculous/slider.js', array('scriptaculous-effects'), '1.8.3');
-       $scripts->add( 'scriptaculous-sound', '/wp-includes/js/scriptaculous/sound.js', array( 'scriptaculous-root' ), '1.8.3' );
-       $scripts->add( 'scriptaculous-controls', '/wp-includes/js/scriptaculous/controls.js', array('scriptaculous-root'), '1.8.3');
-       $scripts->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.3');
+       // WordPress no longer uses or bundles Prototype or script.aculo.us. These are now pulled from an external source.
+       $scripts->add( 'prototype', '//ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js', array(), '1.7.1');
+       $scripts->add( 'scriptaculous-root', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js', array('prototype'), '1.9.0');
+       $scripts->add( 'scriptaculous-builder', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/builder.js', array('scriptaculous-root'), '1.9.0');
+       $scripts->add( 'scriptaculous-dragdrop', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.9.0');
+       $scripts->add( 'scriptaculous-effects', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/effects.js', array('scriptaculous-root'), '1.9.0');
+       $scripts->add( 'scriptaculous-slider', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/slider.js', array('scriptaculous-effects'), '1.9.0');
+       $scripts->add( 'scriptaculous-sound', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/sound.js', array( 'scriptaculous-root' ), '1.9.0' );
+       $scripts->add( 'scriptaculous-controls', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/controls.js', array('scriptaculous-root'), '1.9.0');
+       $scripts->add( 'scriptaculous', false, array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls') );
 
        // not used in core, replaced by Jcrop.js
        $scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop') );
 
-       $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.7.2' );
+       $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );
 
        // full jQuery UI
-       $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.effects.core.min.js', array('jquery'), '1.8.20', 1 );
-
-       $scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.effects.blind.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.effects.bounce.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.effects.clip.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.effects.drop.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.effects.explode.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.effects.fade.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.effects.fold.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.effects.highlight.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.effects.scale.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.effects.shake.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.effects.slide.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.effects.transfer.min.js', array('jquery-effects-core'), '1.8.20', 1 );
-
-       $scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
-       $scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.ui.effect.min.js', array('jquery'), '1.9.2', 1 );
+
+       $scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js', array('jquery-effects-core'), '1.9.2', 1 );
+
+       $scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position', 'jquery-ui-menu'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-menu', '/wp-includes/js/jquery/ui/jquery.ui.menu.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-spinner', '/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-button' ), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-tooltip', '/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.9.2', 1 );
+       $scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.9.2', 1 );
 
        // deprecated, not used in core, most functionality is included in jQuery 1.3
        $scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array('jquery'), '2.73', 1 );
 
        // jQuery plugins
-       $scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color$suffix.js", array('jquery'), '2.0-4561m', 1 );
+       $scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color.min.js", array('jquery'), '2.1.0', 1 );
        $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 );
        $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 );
        $scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 );
@@ -168,8 +176,9 @@ function wp_default_scripts( &$scripts ) {
        $scripts->add( 'jquery-hotkeys', "/wp-includes/js/jquery/jquery.hotkeys$suffix.js", array('jquery'), '0.0.2m', 1 );
        $scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), false, 1 );
        $scripts->add( 'jquery-touch-punch', "/wp-includes/js/jquery/jquery.ui.touch-punch.js", array('jquery-ui-widget', 'jquery-ui-mouse'), '0.2.2', 1 );
+       $scripts->add( 'jquery-masonry', "/wp-includes/js/jquery/jquery.masonry.min.js", array('jquery'), '2.1.05', 1 );
 
-       $scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20111117', 1 );
+       $scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20121105', 1 );
        did_action( 'init' ) && $scripts->localize( 'thickbox', 'thickboxL10n', array(
                        'next' => __('Next &gt;'),
                        'prev' => __('&lt; Prev'),
@@ -181,7 +190,7 @@ function wp_default_scripts( &$scripts ) {
                        'closeImage' => includes_url('js/thickbox/tb-close.png')
        ) );
 
-       $scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8-20110113');
+       $scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop.min.js", array('jquery'), '0.9.10');
 
        $scripts->add( 'swfobject', "/wp-includes/js/swfobject.js", array(), '2.2-20120417');
 
@@ -217,7 +226,7 @@ function wp_default_scripts( &$scripts ) {
                'error_uploading' => __('&#8220;%s&#8221; has failed to upload.')
        );
 
-       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', '1.5.4' );
+       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', array(), '1.5.4' );
        $scripts->add( 'plupload-html5', '/wp-includes/js/plupload/plupload.html5.js', array('plupload'), '1.5.4' );
        $scripts->add( 'plupload-flash', '/wp-includes/js/plupload/plupload.flash.js', array('plupload'), '1.5.4' );
        $scripts->add( 'plupload-silverlight', '/wp-includes/js/plupload/plupload.silverlight.js', array('plupload'), '1.5.4' );
@@ -229,7 +238,7 @@ function wp_default_scripts( &$scripts ) {
        $scripts->add( 'plupload-handlers', "/wp-includes/js/plupload/handlers$suffix.js", array('plupload-all', 'jquery') );
        did_action( 'init' ) && $scripts->localize( 'plupload-handlers', 'pluploadL10n', $uploader_l10n );
 
-       $scripts->add( 'wp-plupload', "/wp-includes/js/plupload/wp-plupload$suffix.js", array('plupload-all', 'jquery', 'json2') );
+       $scripts->add( 'wp-plupload', "/wp-includes/js/plupload/wp-plupload$suffix.js", array('plupload-all', 'jquery', 'json2', 'media-models'), false, 1 );
        did_action( 'init' ) && $scripts->localize( 'wp-plupload', 'pluploadL10n', $uploader_l10n );
 
        // keep 'swfupload' for back-compat.
@@ -252,6 +261,9 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2011-02-23');
 
+       $scripts->add( 'underscore', '/wp-includes/js/underscore.min.js', array(), '1.4.0', 1 );
+       $scripts->add( 'backbone', '/wp-includes/js/backbone.min.js', array('underscore','jquery'), '0.9.2', 1 );
+
        $scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.8', 1 );
 
        $scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), false, 1 );
@@ -291,7 +303,7 @@ function wp_default_scripts( &$scripts ) {
                'type' => 'characters' == _x( 'words', 'word count: words or characters?' ) ? 'c' : 'w',
        ) );
 
-       $scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), false, 1 );
+       $scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox', 'shortcode' ), false, 1 );
 
        $scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), 'r6', 1 );
 
@@ -306,8 +318,26 @@ function wp_default_scripts( &$scripts ) {
                'cancel'    => __( 'Cancel' ),
                'close'     => __( 'Close' ),
                'cheatin'   => __( 'Cheatin&#8217; uh?' ),
+
+               // Used for overriding the file types allowed in plupload.
+               'allowedFiles' => __( 'Allowed Files' ),
        ) );
 
+       $scripts->add( 'shortcode', "/wp-includes/js/shortcode$suffix.js", array( 'underscore' ), false, 1 );
+       $scripts->add( 'media-models', "/wp-includes/js/media-models$suffix.js", array( 'backbone', 'jquery' ), false, 1 );
+       did_action( 'init' ) && $scripts->localize( 'media-models', '_wpMediaModelsL10n', array(
+               'settings' => array(
+                       'ajaxurl' => admin_url( 'admin-ajax.php', 'relative' ),
+                       'post' => array( 'id' => 0 ),
+               ),
+       ) );
+
+       // To enqueue media-views or media-editor, call wp_enqueue_media().
+       // Both rely on numerous settings, styles, and templates to operate correctly.
+       $scripts->add( 'media-views',  "/wp-includes/js/media-views$suffix.js",  array( 'utils', 'media-models', 'wp-plupload', 'jquery-ui-sortable' ), false, 1 );
+       $scripts->add( 'media-editor', "/wp-includes/js/media-editor$suffix.js", array( 'shortcode', 'media-views' ), false, 1 );
+       $scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'media-models' ), false, 1 );
+
        if ( is_admin() ) {
                $scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ) );
                $scripts->add_data( 'ajaxcat', 'group', 1 );
@@ -361,9 +391,9 @@ function wp_default_scripts( &$scripts ) {
                        'comma' => _x( ',', 'tag delimiter' ),
                ) );
 
-               $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), false, 1 );
+               $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 );
 
-               $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array('jquery') );
+               $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array( 'jquery', 'postbox' ) );
                $scripts->add_data( 'comment', 'group', 1 );
                did_action( 'init' ) && $scripts->localize( 'comment', 'commentL10n', array(
                        'submittedOn' => __('Submitted on:')
@@ -399,6 +429,15 @@ function wp_default_scripts( &$scripts ) {
 
                $scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
 
+               $scripts->add( 'iris', '/wp-admin/js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), false, 1 );
+               $scripts->add( 'wp-color-picker', "/wp-admin/js/color-picker$suffix.js", array( 'iris' ), false, 1 );
+               did_action( 'init' ) && $scripts->localize( 'wp-color-picker', 'wpColorPickerL10n', array(
+                       'clear' => __( 'Clear' ),
+                       'defaultString' => __( 'Default' ),
+                       'pick' => __( 'Select Color' ),
+                       'current' => __( 'Current Color' ),
+               ) );
+
                $scripts->add( 'dashboard', "/wp-admin/js/dashboard$suffix.js", array( 'jquery', 'admin-comments', 'postbox' ), false, 1 );
 
                $scripts->add( 'list-revisions', "/wp-includes/js/wp-list-revisions$suffix.js" );
@@ -419,14 +458,15 @@ function wp_default_scripts( &$scripts ) {
                ) );
 
                // Navigation Menus
-               $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array('jquery-ui-sortable') );
+               $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox' ) );
                did_action( 'init' ) && $scripts->localize( 'nav-menu', 'navMenuL10n', array(
                        'noResultsFound' => _x('No results found.', 'search results'),
                        'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ),
                        'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
                ) );
 
-               $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), false, 1 );
+               $scripts->add( 'custom-header', "/wp-admin/js/custom-header.js", array( 'jquery-masonry' ), false, 1 );
+               $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array( 'wp-color-picker', 'media-views' ), false, 1 );
                $scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
        }
 }
@@ -457,10 +497,10 @@ function wp_default_styles( &$styles ) {
        $styles->text_direction = function_exists( 'is_rtl' ) && is_rtl() ? 'rtl' : 'ltr';
        $styles->default_dirs = array('/wp-admin/', '/wp-includes/css/');
 
-       $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
+       $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
 
-       $rtl_styles = array( 'wp-admin', 'ie', 'media', 'admin-bar', 'wplink', 'customize-controls' );
-       // Any rtl stylesheets that don't have a .dev version for ltr
+       $rtl_styles = array( 'wp-admin', 'ie', 'media', 'admin-bar', 'customize-controls', 'media-views', 'wp-color-picker' );
+       // Any rtl stylesheets that don't have a .min version
        $no_suffix = array( 'farbtastic' );
 
        $styles->add( 'wp-admin', "/wp-admin/css/wp-admin$suffix.css" );
@@ -469,23 +509,26 @@ function wp_default_styles( &$styles ) {
        $styles->add_data( 'ie', 'conditional', 'lte IE 7' );
 
        // Register "meta" stylesheet for admin colors. All colors-* style sheets should have the same version string.
-       $styles->add( 'colors', true, array('wp-admin') );
+       $styles->add( 'colors', true, array('wp-admin', 'buttons') );
 
        // do not refer to these directly, the right one is queued by the above "meta" colors handle
-       $styles->add( 'colors-fresh', "/wp-admin/css/colors-fresh$suffix.css", array('wp-admin') );
-       $styles->add( 'colors-classic', "/wp-admin/css/colors-classic$suffix.css", array('wp-admin') );
+       $styles->add( 'colors-fresh', "/wp-admin/css/colors-fresh$suffix.css", array('wp-admin', 'buttons') );
+       $styles->add( 'colors-classic', "/wp-admin/css/colors-classic$suffix.css", array('wp-admin', 'buttons') );
 
        $styles->add( 'media', "/wp-admin/css/media$suffix.css" );
-       $styles->add( 'install', "/wp-admin/css/install$suffix.css" );
-       $styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css' );
+       $styles->add( 'install', "/wp-admin/css/install$suffix.css", array('buttons') );
+       $styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css', array(), '20121105' );
        $styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.3u1' );
-       $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
+       $styles->add( 'wp-color-picker', "/wp-admin/css/color-picker$suffix.css" );
+       $styles->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop.min.css", array(), '0.9.10' );
        $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );
        $styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css" );
        $styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css" );
        $styles->add( 'editor-buttons', "/wp-includes/css/editor$suffix.css" );
        $styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css" );
        $styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'ie' ) );
+       $styles->add( 'media-views', "/wp-includes/css/media-views$suffix.css", array( 'buttons' ) );
+       $styles->add( 'buttons', "/wp-includes/css/buttons$suffix.css" );
 
        foreach ( $rtl_styles as $rtl_style ) {
                $styles->add_data( $rtl_style, 'rtl', true );
@@ -503,10 +546,10 @@ function wp_default_styles( &$styles ) {
  * @return array Reordered array, if needed.
  */
 function wp_prototype_before_jquery( $js_array ) {
-       if ( false === $jquery = array_search( 'jquery', $js_array, true ) )
+       if ( false === $prototype = array_search( 'prototype', $js_array, true ) )
                return $js_array;
 
-       if ( false === $prototype = array_search( 'prototype', $js_array, true ) )
+       if ( false === $jquery = array_search( 'jquery', $js_array, true ) )
                return $js_array;
 
        if ( $prototype < $jquery )
@@ -572,7 +615,7 @@ function wp_style_loader_src( $src, $handle ) {
                $url = $color->url;
 
                if ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG )
-                       $url = preg_replace('/.css$|.css(?=\?)/', '.dev.css', $url);
+                       $url = preg_replace( '/.min.css$|.min.css(?=\?)/', '.css', $url );
 
                if ( isset($parsed['query']) && $parsed['query'] ) {
                        wp_parse_str( $parsed['query'], $qv );
@@ -646,7 +689,7 @@ function _print_scripts() {
        if ( $zip && defined('ENFORCE_GZIP') && ENFORCE_GZIP )
                $zip = 'gzip';
 
-       if ( !empty($wp_scripts->concat) ) {
+       if ( $concat = trim( $wp_scripts->concat, ', ' ) ) {
 
                if ( !empty($wp_scripts->print_code) ) {
                        echo "\n<script type='text/javascript'>\n";
@@ -656,7 +699,10 @@ function _print_scripts() {
                        echo "</script>\n";
                }
 
-               $src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&load=" . trim($wp_scripts->concat, ', ') . '&ver=' . $wp_scripts->default_version;
+               $concat = str_split( $concat, 128 );
+               $concat = 'load[]=' . implode( '&load[]=', $concat );
+
+               $src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&" . $concat . '&ver=' . $wp_scripts->default_version;
                echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
        }
 
index 1b860d2766df8cca052a2c816279be6cd20af7d3..2dfc2774502d1cabf5a436675b38ce645b34035e 100644 (file)
@@ -177,11 +177,12 @@ function get_shortcode_regex() {
        $tagregexp = join( '|', array_map('preg_quote', $tagnames) );
 
        // WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag()
+       // Also, see shortcode_unautop() and shortcode.js.
        return
                  '\\['                              // Opening bracket
                . '(\\[?)'                           // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
                . "($tagregexp)"                     // 2: Shortcode name
-               . '\\b'                              // Word boundary
+               . '(?![\\w-])'                       // Not followed by word character or hyphen
                . '('                                // 3: Unroll the loop: Inside the opening shortcode tag
                .     '[^\\]\\/]*'                   // Not a closing bracket or forward slash
                .     '(?:'
index 514574e25d94fec0e74f9e1d582faf6954cfcf9f..1932bab383046c37401c0a03e98a6832f8d0212f 100644 (file)
@@ -47,6 +47,7 @@ function create_initial_taxonomies() {
                'rewrite' => $rewrite['category'],
                'public' => true,
                'show_ui' => true,
+               'show_admin_column' => true,
                '_builtin' => true,
        ) );
 
@@ -56,6 +57,7 @@ function create_initial_taxonomies() {
                'rewrite' => $rewrite['post_tag'],
                'public' => true,
                'show_ui' => true,
+               'show_admin_column' => true,
                '_builtin' => true,
        ) );
 
@@ -89,6 +91,12 @@ function create_initial_taxonomies() {
                        'add_or_remove_items' => null,
                        'choose_from_most_used' => null,
                ),
+               'capabilities' => array(
+                       'manage_terms' => 'manage_links',
+                       'edit_terms'   => 'manage_links',
+                       'delete_terms' => 'manage_links',
+                       'assign_terms' => 'manage_links',
+               ),
                'query_var' => false,
                'rewrite' => false,
                'public' => false,
@@ -301,6 +309,7 @@ function is_taxonomy_hierarchical($taxonomy) {
  * @param string $taxonomy Name of taxonomy object
  * @param array|string $object_type Name of the object type for the taxonomy object.
  * @param array|string $args See above description for the two keys values.
+ * @return null|WP_Error WP_Error if errors, otherwise null.
  */
 function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
        global $wp_taxonomies, $wp;
@@ -322,10 +331,14 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
                                        );
        $args = wp_parse_args($args, $defaults);
 
+       if ( strlen( $taxonomy ) > 32 )
+               return new WP_Error( 'taxonomy_too_long', __( 'Taxonomies cannot exceed 32 characters in length' ) );
+
        if ( false !== $args['query_var'] && !empty($wp) ) {
                if ( true === $args['query_var'] )
                        $args['query_var'] = $taxonomy;
-               $args['query_var'] = sanitize_title_with_dashes($args['query_var']);
+               else
+                       $args['query_var'] = sanitize_title_with_dashes($args['query_var']);
                $wp->add_query_var($args['query_var']);
        }
 
@@ -651,23 +664,26 @@ class WP_Tax_Query {
                $join = '';
                $where = array();
                $i = 0;
+               $count = count( $this->queries );
 
-               foreach ( $this->queries as $query ) {
+               foreach ( $this->queries as $index => $query ) {
                        $this->clean_query( $query );
 
-                       if ( is_wp_error( $query ) ) {
+                       if ( is_wp_error( $query ) )
                                return self::$no_results;
-                       }
 
                        extract( $query );
 
                        if ( 'IN' == $operator ) {
 
                                if ( empty( $terms ) ) {
-                                       if ( 'OR' == $this->relation )
+                                       if ( 'OR' == $this->relation ) {
+                                               if ( ( $index + 1 === $count ) && empty( $where ) )
+                                                       return self::$no_results;
                                                continue;
-                                       else
+                                       } else {
                                                return self::$no_results;
+                                       }
                                }
 
                                $terms = implode( ',', $terms );
@@ -711,7 +727,7 @@ class WP_Tax_Query {
                        $i++;
                }
 
-               if ( !empty( $where ) )
+               if ( ! empty( $where ) )
                        $where = ' AND ( ' . implode( " $this->relation ", $where ) . ' )';
                else
                        $where = '';
@@ -756,12 +772,11 @@ class WP_Tax_Query {
         * Transforms a single query, from one field to another.
         *
         * @since 3.2.0
-        * @access private
         *
         * @param array &$query The single query
         * @param string $resulting_field The resulting field
         */
-       private function transform_query( &$query, $resulting_field ) {
+       public function transform_query( &$query, $resulting_field ) {
                global $wpdb;
 
                if ( empty( $query['terms'] ) )
@@ -784,7 +799,14 @@ class WP_Tax_Query {
                                        AND $wpdb->terms.{$query['field']} IN ($terms)
                                " );
                                break;
-
+                       case 'term_taxonomy_id':
+                               $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
+                               $terms = $wpdb->get_col( "
+                                       SELECT $resulting_field
+                                       FROM $wpdb->term_taxonomy
+                                       WHERE term_taxonomy_id IN ($terms)
+                               " );
+                               break;
                        default:
                                $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
                                $terms = $wpdb->get_col( "
@@ -845,7 +867,7 @@ class WP_Tax_Query {
  * @return mixed|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not
  * exist then WP_Error will be returned.
  */
-function &get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
+function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
        global $wpdb;
        $null = null;
 
@@ -1162,15 +1184,13 @@ function get_term_to_edit( $id, $taxonomy ) {
  * @param string|array $args The values of what to search for when returning terms
  * @return array|WP_Error List of Term Objects and their children. Will return WP_Error, if any of $taxonomies do not exist.
  */
-function &get_terms($taxonomies, $args = '') {
+function get_terms($taxonomies, $args = '') {
        global $wpdb;
        $empty_array = array();
 
-       $single_taxonomy = false;
-       if ( !is_array($taxonomies) ) {
-               $single_taxonomy = true;
-               $taxonomies = array($taxonomies);
-       }
+       $single_taxonomy = ! is_array( $taxonomies ) || 1 === count( $taxonomies );
+       if ( ! is_array( $taxonomies ) )
+               $taxonomies = array( $taxonomies );
 
        foreach ( $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists($taxonomy) ) {
@@ -1384,7 +1404,7 @@ function &get_terms($taxonomies, $args = '') {
        }
 
        if ( empty($terms) ) {
-               wp_cache_add( $cache_key, array(), 'terms', 86400 ); // one day
+               wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
                $terms = apply_filters('get_terms', array(), $taxonomies, $args);
                return $terms;
        }
@@ -1392,7 +1412,7 @@ function &get_terms($taxonomies, $args = '') {
        if ( $child_of ) {
                $children = _get_term_hierarchy($taxonomies[0]);
                if ( ! empty($children) )
-                       $terms = _get_term_children($child_of, $terms, $taxonomies[0]);
+                       $terms = _get_term_children($child_of, $terms, $taxonomies[0]);
        }
 
        // Update term counts to include children.
@@ -1435,7 +1455,7 @@ function &get_terms($taxonomies, $args = '') {
                $terms = array_slice($terms, $offset, $number);
        }
 
-       wp_cache_add( $cache_key, $terms, 'terms', 86400 ); // one day
+       wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
 
        $terms = apply_filters('get_terms', $terms, $taxonomies, $args);
        return $terms;
@@ -1665,7 +1685,7 @@ function sanitize_term_field($field, $value, $term_id, $taxonomy, $context) {
  *
  * @param string $taxonomy Taxonomy name
  * @param array|string $args Overwrite defaults. See get_terms()
- * @return int How many terms are in $taxonomy
+ * @return int|WP_Error How many terms are in $taxonomy. WP_Error if $taxonomy does not exist.
  */
 function wp_count_terms( $taxonomy, $args = array() ) {
        $defaults = array('hide_empty' => false);
@@ -1802,6 +1822,9 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) {
        foreach ( $tax_object->object_type as $object_type )
                clean_object_term_cache( $objects, $object_type );
 
+       // Get the object before deletion so we can pass to actions below
+       $deleted_term = get_term( $term, $taxonomy );
+
        do_action( 'delete_term_taxonomy', $tt_id );
        $wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $tt_id ) );
        do_action( 'deleted_term_taxonomy', $tt_id );
@@ -1812,8 +1835,8 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) {
 
        clean_term_cache($term, $taxonomy);
 
-       do_action('delete_term', $term, $tt_id, $taxonomy);
-       do_action("delete_$taxonomy", $term, $tt_id);
+       do_action( 'delete_term', $term, $tt_id, $taxonomy, $deleted_term );
+       do_action( "delete_$taxonomy", $term, $tt_id, $deleted_term );
 
        return true;
 }
@@ -2211,9 +2234,12 @@ function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
                        if ( in_array($tt_id, $final_tt_ids) )
                                $values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order);
                if ( $values )
-                       $wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
+                       if ( false === $wpdb->query( "INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join( ',', $values ) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)" ) )
+                               return new WP_Error( 'db_insert_error', __( 'Could not insert term relationship into the database' ), $wpdb->last_error );
        }
 
+       wp_cache_delete( $object_id, $taxonomy . '_relationships' );
+
        do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids);
        return $tt_ids;
 }
@@ -2540,8 +2566,10 @@ function clean_object_term_cache($object_ids, $object_type) {
        if ( !is_array($object_ids) )
                $object_ids = array($object_ids);
 
+       $taxonomies = get_object_taxonomies( $object_type );
+
        foreach ( $object_ids as $id )
-               foreach ( get_object_taxonomies($object_type) as $taxonomy )
+               foreach ( $taxonomies as $taxonomy )
                        wp_cache_delete($id, "{$taxonomy}_relationships");
 
        do_action('clean_object_term_cache', $object_ids, $object_type);
@@ -2620,7 +2648,7 @@ function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
  * @param string $taxonomy Taxonomy Name
  * @return bool|array Empty array if $terms found, but not $taxonomy. False if nothing is in cache for $taxonomy and $id.
  */
-function &get_object_term_cache($id, $taxonomy) {
+function get_object_term_cache($id, $taxonomy) {
        $cache = wp_cache_get($id, "{$taxonomy}_relationships");
        return $cache;
 }
@@ -2766,7 +2794,7 @@ function _get_term_hierarchy($taxonomy) {
  * @param string $taxonomy The taxonomy which determines the hierarchy of the terms.
  * @return array The subset of $terms that are descendants of $term_id.
  */
-function &_get_term_children($term_id, $terms, $taxonomy) {
+function _get_term_children($term_id, $terms, $taxonomy) {
        $empty_array = array();
        if ( empty($terms) )
                return $empty_array;
@@ -2964,9 +2992,9 @@ function get_term_link( $term, $taxonomy = '') {
 
        if ( !is_object($term) ) {
                if ( is_int($term) ) {
-                       $term = &get_term($term, $taxonomy);
+                       $term = get_term($term, $taxonomy);
                } else {
-                       $term = &get_term_by('slug', $term, $taxonomy);
+                       $term = get_term_by('slug', $term, $taxonomy);
                }
        }
 
@@ -3063,10 +3091,7 @@ function the_taxonomies($args = array()) {
  * @return array
  */
 function get_the_taxonomies($post = 0, $args = array() ) {
-       if ( is_int($post) )
-               $post =& get_post($post);
-       elseif ( !is_object($post) )
-               $post =& $GLOBALS['post'];
+       $post = get_post( $post );
 
        $args = wp_parse_args( $args, array(
                'template' => '%s: %l.',
@@ -3088,7 +3113,7 @@ function get_the_taxonomies($post = 0, $args = array() ) {
                        $t['template'] = $template;
 
                $terms = get_object_term_cache($post->ID, $taxonomy);
-               if ( empty($terms) )
+               if ( false === $terms )
                        $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']);
 
                $links = array();
@@ -3112,7 +3137,7 @@ function get_the_taxonomies($post = 0, $args = array() ) {
  * @return array
  */
 function get_post_taxonomies($post = 0) {
-       $post =& get_post($post);
+       $post = get_post( $post );
 
        return get_object_taxonomies($post);
 }
@@ -3138,7 +3163,7 @@ function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
                return new WP_Error( 'invalid_object', __( 'Invalid object ID' ) );
 
        $object_terms = get_object_term_cache( $object_id, $taxonomy );
-       if ( empty( $object_terms ) )
+       if ( false === $object_terms )
                 $object_terms = wp_get_object_terms( $object_id, $taxonomy );
 
        if ( is_wp_error( $object_terms ) )
@@ -3211,16 +3236,8 @@ function get_ancestors($object_id = 0, $object_type = '') {
                        $ancestors[] = (int) $term->parent;
                        $term = get_term($term->parent, $object_type);
                }
-       } elseif ( null !== get_post_type_object( $object_type ) ) {
-               $object = get_post($object_id);
-               if ( ! is_wp_error( $object ) && isset( $object->ancestors ) && is_array( $object->ancestors ) )
-                       $ancestors = $object->ancestors;
-               else {
-                       while ( ! is_wp_error($object) && ! empty( $object->post_parent ) && ! in_array( $object->post_parent, $ancestors ) ) {
-                               $ancestors[] = (int) $object->post_parent;
-                               $object = get_post($object->post_parent);
-                       }
-               }
+       } elseif ( post_type_exists( $object_type ) ) {
+               $ancestors = get_post_ancestors($object_id);
        }
 
        return apply_filters('get_ancestors', $ancestors, $object_id, $object_type);
index fdf75f15ecd65d6b00fb86e91444664f9ec85852..7051f3452b67488573eafd582d4c35e36cfc4a83 100644 (file)
@@ -6,6 +6,10 @@
 if ( defined('WP_USE_THEMES') && WP_USE_THEMES )
        do_action('template_redirect');
 
+// Halt template load for HEAD requests. Performance bump. See #14348
+if ( 'HEAD' === $_SERVER['REQUEST_METHOD'] && apply_filters( 'exit_on_http_head', true ) )
+       exit();
+
 // Process feeds and trackbacks even if not using themes.
 if ( is_robots() ) :
        do_action('do_robots');
index 531b308d247037cea68234ead01f89be4656f296..d86a677fb604d66bbc9cd508c1e95f613a9fe963 100644 (file)
@@ -59,11 +59,11 @@ function get_404_template() {
  * @return string
  */
 function get_archive_template() {
-       $post_type = get_query_var( 'post_type' );
+       $post_types = get_query_var( 'post_type' );
 
        $templates = array();
 
-       if ( $post_type )
+       foreach ( (array) $post_types as $post_type )
                $templates[] = "archive-{$post_type}.php";
        $templates[] = 'archive.php';
 
@@ -82,8 +82,10 @@ function get_author_template() {
 
        $templates = array();
 
-       $templates[] = "author-{$author->user_nicename}.php";
-       $templates[] = "author-{$author->ID}.php";
+       if ( $author ) {
+               $templates[] = "author-{$author->user_nicename}.php";
+               $templates[] = "author-{$author->ID}.php";
+       }
        $templates[] = 'author.php';
 
        return get_query_template( 'author', $templates );
@@ -106,8 +108,10 @@ function get_category_template() {
 
        $templates = array();
 
-       $templates[] = "category-{$category->slug}.php";
-       $templates[] = "category-{$category->term_id}.php";
+       if ( $category ) {
+               $templates[] = "category-{$category->slug}.php";
+               $templates[] = "category-{$category->term_id}.php";
+       }
        $templates[] = 'category.php';
 
        return get_query_template( 'category', $templates );
@@ -130,8 +134,10 @@ function get_tag_template() {
 
        $templates = array();
 
-       $templates[] = "tag-{$tag->slug}.php";
-       $templates[] = "tag-{$tag->term_id}.php";
+       if ( $tag ) {
+               $templates[] = "tag-{$tag->slug}.php";
+               $templates[] = "tag-{$tag->term_id}.php";
+       }
        $templates[] = 'tag.php';
 
        return get_query_template( 'tag', $templates );
@@ -156,12 +162,14 @@ function get_tag_template() {
  */
 function get_taxonomy_template() {
        $term = get_queried_object();
-       $taxonomy = $term->taxonomy;
 
        $templates = array();
 
-       $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
-       $templates[] = "taxonomy-$taxonomy.php";
+       if ( $term ) {
+               $taxonomy = $term->taxonomy;
+               $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
+               $templates[] = "taxonomy-$taxonomy.php";
+       }
        $templates[] = 'taxonomy.php';
 
        return get_query_template( 'taxonomy', $templates );
@@ -280,7 +288,8 @@ function get_single_template() {
 
        $templates = array();
 
-       $templates[] = "single-{$object->post_type}.php";
+       if ( $object )
+               $templates[] = "single-{$object->post_type}.php";
        $templates[] = "single.php";
 
        return get_query_template( 'single', $templates );
@@ -303,15 +312,21 @@ function get_single_template() {
  */
 function get_attachment_template() {
        global $posts;
-       $type = explode('/', $posts[0]->post_mime_type);
-       if ( $template = get_query_template($type[0]) )
-               return $template;
-       elseif ( $template = get_query_template($type[1]) )
-               return $template;
-       elseif ( $template = get_query_template("$type[0]_$type[1]") )
-               return $template;
-       else
-               return get_query_template('attachment');
+
+       if ( ! empty( $posts ) && isset( $posts[0]->post_mime_type ) ) {
+               $type = explode( '/', $posts[0]->post_mime_type );
+
+               if ( ! empty( $type ) ) {
+                       if ( $template = get_query_template( $type[0] ) )
+                               return $template;
+                       elseif ( $template = get_query_template( $type[1] ) )
+                               return $template;
+                       elseif ( $template = get_query_template( "$type[0]_$type[1]" ) )
+                               return $template;
+               }
+       }
+
+       return get_query_template( 'attachment' );
 }
 
 /**
index de4c1e9e719a5e66dc716d1d2379b018f95962d0..eb74834cd3cbee4686e1d03e6d42f315d88e0596 100644 (file)
@@ -32,7 +32,7 @@ while( have_posts()) : the_post();
 ?>
 <h2 id="comments"><?php _e('Comments'); ?></h2>
 
-<p><a href="<?php echo get_post_comments_feed_link($post->ID); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.'); ?></a></p>
+<p><a href="<?php echo esc_url( get_post_comments_feed_link($post->ID) ); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.'); ?></a></p>
 
 <?php if ( pings_open() ) { ?>
 <p><?php printf(__('The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em>%s</em>'), get_trackback_url()); ?></p>
@@ -68,7 +68,7 @@ if ( post_password_required($post) ) {  // and it doesn't match the cookie
 
 <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
 <?php if ( $user_ID ) : ?>
-       <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out &raquo;</a>'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity, wp_logout_url(get_permalink())); ?></p>
+       <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out &raquo;</a>'), get_edit_user_link(), $user_identity, wp_logout_url(get_permalink())); ?></p>
 <?php else : ?>
        <p>
          <input type="text" name="author" id="author" class="textarea" value="<?php echo esc_attr($comment_author); ?>" size="28" tabindex="1" />
index 89a888c75d9c99cb91d85afd18b07f52f12a7e29..75a85ed46e1c59149dd7b9b5154629962c8accb8 100644 (file)
@@ -69,7 +69,7 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
 
 <?php if ( is_user_logged_in() ) : ?>
 
-<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php esc_attr_e('Log out of this account'); ?>"><?php _e('Log out &raquo;'); ?></a></p>
+<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.'), get_edit_user_link(), $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php esc_attr_e('Log out of this account'); ?>"><?php _e('Log out &raquo;'); ?></a></p>
 
 <?php else : ?>
 
index f449ae5025396c72e73d7531b55ae336a525ef21..d8c2419773d3e163bc1595de6f9ac435515999e1 100644 (file)
@@ -106,6 +106,18 @@ function wp_get_theme( $stylesheet = null, $theme_root = null ) {
        return new WP_Theme( $stylesheet, $theme_root );
 }
 
+/**
+ * Clears the cache held by get_theme_roots() and WP_Theme.
+ *
+ * @since 3.5.0
+ */
+function wp_clean_themes_cache() {
+       delete_site_transient('update_themes');
+       search_theme_directories( true );
+       foreach ( wp_get_themes( array( 'errors' => null ) ) as $theme )
+               $theme->cache_delete();
+}
+
 /**
  * Whether a child theme is in use.
  *
@@ -638,15 +650,17 @@ function preview_theme_ob_filter_callback( $matches ) {
 }
 
 /**
- * Switches current theme to new template and stylesheet names.
+ * Switches the theme.
+ *
+ * Accepts one argument: $stylesheet of the theme. It also accepts an additional function signature
+ * of two arguments: $template then $stylesheet. This is for backwards compatibility.
  *
  * @since 2.5.0
  * @uses do_action() Calls 'switch_theme' action, passing the new theme.
  *
- * @param string $template Template name
- * @param string $stylesheet Stylesheet name.
+ * @param string $stylesheet Stylesheet name
  */
-function switch_theme( $template, $stylesheet ) {
+function switch_theme( $stylesheet ) {
        global $wp_theme_directories, $sidebars_widgets;
 
        if ( is_array( $sidebars_widgets ) )
@@ -654,7 +668,13 @@ function switch_theme( $template, $stylesheet ) {
 
        $old_theme  = wp_get_theme();
        $new_theme = wp_get_theme( $stylesheet );
-       $new_name  = $new_theme->get('Name');
+
+       if ( func_num_args() > 1 ) {
+               $template = $stylesheet;
+               $stylesheet = func_get_arg( 1 );
+       } else {
+               $template = $new_theme->get_template();
+       }
 
        update_option( 'template', $template );
        update_option( 'stylesheet', $stylesheet );
@@ -662,8 +682,13 @@ function switch_theme( $template, $stylesheet ) {
        if ( count( $wp_theme_directories ) > 1 ) {
                update_option( 'template_root', get_raw_theme_root( $template, true ) );
                update_option( 'stylesheet_root', get_raw_theme_root( $stylesheet, true ) );
+       } else {
+               delete_option( 'template_root' );
+               delete_option( 'stylesheet_root' );
        }
 
+       $new_name  = $new_theme->get('Name');
+
        update_option( 'current_theme', $new_name );
 
        if ( is_admin() && false === get_option( 'theme_mods_' . $stylesheet ) ) {
@@ -694,17 +719,17 @@ function validate_current_theme() {
                return true;
 
        if ( get_template() != WP_DEFAULT_THEME && !file_exists(get_template_directory() . '/index.php') ) {
-               switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
+               switch_theme( WP_DEFAULT_THEME );
                return false;
        }
 
        if ( get_stylesheet() != WP_DEFAULT_THEME && !file_exists(get_template_directory() . '/style.css') ) {
-               switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
+               switch_theme( WP_DEFAULT_THEME );
                return false;
        }
 
        if ( is_child_theme() && ! file_exists( get_stylesheet_directory() . '/style.css' ) ) {
-               switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
+               switch_theme( WP_DEFAULT_THEME );
                return false;
        }
 
@@ -869,12 +894,7 @@ function get_header_image() {
        if ( is_random_header_image() )
                $url = get_random_header_image();
 
-       if ( is_ssl() )
-               $url = str_replace( 'http://', 'https://', $url );
-       else
-               $url = str_replace( 'https://', 'http://', $url );
-
-       return esc_url_raw( $url );
+       return esc_url_raw( set_url_scheme( $url ) );
 }
 
 /**
@@ -1008,7 +1028,30 @@ function get_uploaded_header_images() {
  * @return object
  */
 function get_custom_header() {
-       $data = is_random_header_image()? _get_random_header_data() : get_theme_mod( 'header_image_data' );
+       global $_wp_default_headers;
+
+       if ( is_random_header_image() ) {
+               $data = _get_random_header_data();
+       } else {
+               $data = get_theme_mod( 'header_image_data' );
+               if ( ! $data && current_theme_supports( 'custom-header', 'default-image' ) ) {
+                       $directory_args = array( get_template_directory_uri(), get_stylesheet_directory_uri() );
+                       $data = array();
+                       $data['url'] = $data['thumbnail_url'] = vsprintf( get_theme_support( 'custom-header', 'default-image' ), $directory_args );
+                       if ( ! empty( $_wp_default_headers ) ) {
+                               foreach ( (array) $_wp_default_headers as $default_header ) {
+                                       $url = vsprintf( $default_header['url'], $directory_args );
+                                       if ( $data['url'] == $url ) {
+                                               $data = $default_header;
+                                               $data['url'] = $url;
+                                               $data['thumbnail_url'] = vsprintf( $data['thumbnail_url'], $directory_args );
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       }
+
        $default = array(
                'url'           => '',
                'thumbnail_url' => '',
@@ -1103,7 +1146,7 @@ function background_color() {
  */
 function _custom_background_cb() {
        // $background is the saved custom image, or the default image.
-       $background = get_background_image();
+       $background = set_url_scheme( get_background_image() );
 
        // $color is the saved custom color.
        // A default has to be specified in style.css. It will not be printed here.
@@ -1446,6 +1489,8 @@ function _remove_theme_support( $feature ) {
 
        switch ( $feature ) {
                case 'custom-header' :
+                       if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) )
+                               break;
                        $support = get_theme_support( 'custom-header' );
                        if ( $support[0]['wp-head-callback'] )
                                remove_action( 'wp_head', $support[0]['wp-head-callback'] );
@@ -1454,6 +1499,8 @@ function _remove_theme_support( $feature ) {
                        break;
 
                case 'custom-background' :
+                       if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) )
+                               break;
                        $support = get_theme_support( 'custom-background' );
                        remove_action( 'wp_head', $support[0]['wp-head-callback'] );
                        remove_action( 'admin_menu', array( $GLOBALS['custom_background'], 'init' ) );
@@ -1669,7 +1716,7 @@ function wp_customize_support_script() {
                        request = true;
 <?php          endif; ?>
 
-                       b[c] = b[c].replace( rcs, '' );
+                       b[c] = b[c].replace( rcs, ' ' );
                        b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
                }());
        </script>
index 34573478ebc7b6c277df243bfc450eb0c8039b3d..b6205063f982f8e76ab4d360b998d9a38babbee0 100644 (file)
@@ -155,14 +155,14 @@ function wp_update_plugins() {
        // Check for update on a different schedule, depending on the page.
        switch ( current_filter() ) {
                case 'load-update-core.php' :
-                       $timeout = 60; // 1 min
+                       $timeout = MINUTE_IN_SECONDS;
                        break;
                case 'load-plugins.php' :
                case 'load-update.php' :
-                       $timeout = 3600; // 1 hour
+                       $timeout = HOUR_IN_SECONDS;
                        break;
                default :
-                       $timeout = 43200; // 12 hours
+                       $timeout = 12 * HOUR_IN_SECONDS;
        }
 
        $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
@@ -264,14 +264,14 @@ function wp_update_themes() {
        // Check for update on a different schedule, depending on the page.
        switch ( current_filter() ) {
                case 'load-update-core.php' :
-                       $timeout = 60; // 1 min
+                       $timeout = MINUTE_IN_SECONDS;
                        break;
                case 'load-themes.php' :
                case 'load-update.php' :
-                       $timeout = 3600; // 1 hour
+                       $timeout = HOUR_IN_SECONDS;
                        break;
                default :
-                       $timeout = 43200; // 12 hours
+                       $timeout = 12 * HOUR_IN_SECONDS;
        }
 
        $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time( ) - $last_update->last_checked );
@@ -279,8 +279,6 @@ function wp_update_themes() {
        if ( $time_not_changed ) {
                $theme_changed = false;
                foreach ( $checked as $slug => $v ) {
-                       $update_request->checked[ $slug ] = $v;
-
                        if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) )
                                $theme_changed = true;
                }
@@ -354,17 +352,17 @@ function wp_get_update_data() {
        }
 
        $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'];
-       $update_title = array();
+       $titles = array();
        if ( $counts['wordpress'] )
-               $update_title[] = sprintf(__('%d WordPress Update'), $counts['wordpress']);
+               $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] );
        if ( $counts['plugins'] )
-               $update_title[] = sprintf(_n('%d Plugin Update', '%d Plugin Updates', $counts['plugins']), $counts['plugins']);
+               $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] );
        if ( $counts['themes'] )
-               $update_title[] = sprintf(_n('%d Theme Update', '%d Theme Updates', $counts['themes']), $counts['themes']);
+               $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] );
 
-       $update_title = ! empty( $update_title ) ? esc_attr( implode( ', ', $update_title ) ) : '';
+       $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : '';
 
-       return array( 'counts' => $counts, 'title' => $update_title );
+       return apply_filters( 'wp_get_update_data', array( 'counts' => $counts, 'title' => $update_title ), $titles );
 }
 
 function _maybe_update_core() {
@@ -373,7 +371,7 @@ function _maybe_update_core() {
        $current = get_site_transient( 'update_core' );
 
        if ( isset( $current->last_checked ) &&
-               43200 > ( time() - $current->last_checked ) &&
+               12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) &&
                isset( $current->version_checked ) &&
                $current->version_checked == $wp_version )
                return;
@@ -392,7 +390,7 @@ function _maybe_update_core() {
  */
 function _maybe_update_plugins() {
        $current = get_site_transient( 'update_plugins' );
-       if ( isset( $current->last_checked ) && 43200 > ( time() - $current->last_checked ) )
+       if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) )
                return;
        wp_update_plugins();
 }
@@ -408,7 +406,7 @@ function _maybe_update_plugins() {
  */
 function _maybe_update_themes( ) {
        $current = get_site_transient( 'update_themes' );
-       if ( isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ) )
+       if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time( ) - $current->last_checked ) )
                return;
 
        wp_update_themes();
index 6b342c8576d046ca6fd1d65fb22b5239b1f24674..7bdc37cc76f51b576284f125dc3c7e9140dcf416 100644 (file)
@@ -84,33 +84,32 @@ function wp_authenticate_username_password($user, $username, $password) {
                return $error;
        }
 
-       $userdata = get_user_by('login', $username);
+       $user = get_user_by('login', $username);
 
-       if ( !$userdata )
+       if ( !$user )
                return new WP_Error('invalid_username', sprintf(__('<strong>ERROR</strong>: Invalid username. <a href="%s" title="Password Lost and Found">Lost your password</a>?'), wp_lostpassword_url()));
 
        if ( is_multisite() ) {
                // Is user marked as spam?
-               if ( 1 == $userdata->spam)
+               if ( 1 == $user->spam)
                        return new WP_Error('invalid_username', __('<strong>ERROR</strong>: Your account has been marked as a spammer.'));
 
                // Is a user's blog marked as spam?
-               if ( !is_super_admin( $userdata->ID ) && isset($userdata->primary_blog) ) {
-                       $details = get_blog_details( $userdata->primary_blog );
+               if ( !is_super_admin( $user->ID ) && isset($user->primary_blog) ) {
+                       $details = get_blog_details( $user->primary_blog );
                        if ( is_object( $details ) && $details->spam == 1 )
                                return new WP_Error('blog_suspended', __('Site Suspended.'));
                }
        }
 
-       $userdata = apply_filters('wp_authenticate_user', $userdata, $password);
-       if ( is_wp_error($userdata) )
-               return $userdata;
+       $user = apply_filters('wp_authenticate_user', $user, $password);
+       if ( is_wp_error($user) )
+               return $user;
 
-       if ( !wp_check_password($password, $userdata->user_pass, $userdata->ID) )
+       if ( !wp_check_password($password, $user->user_pass, $user->ID) )
                return new WP_Error( 'incorrect_password', sprintf( __( '<strong>ERROR</strong>: The password you entered for the username <strong>%1$s</strong> is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?' ),
                $username, wp_lostpassword_url() ) );
 
-       $user =  new WP_User($userdata->ID);
        return $user;
 }
 
@@ -166,10 +165,11 @@ function count_user_posts($userid) {
  * @since 3.0.0
  *
  * @param array $users Array of user IDs.
- * @param string|array $post_type Optional. Post type to check. Defaults to post.
+ * @param string $post_type Optional. Post type to check. Defaults to post.
+ * @param bool $public_only Optional. Only return counts for public posts.  Defaults to false.
  * @return array Amount of posts each user has written.
  */
-function count_many_users_posts( $users, $post_type = 'post' ) {
+function count_many_users_posts( $users, $post_type = 'post', $public_only = false ) {
        global $wpdb;
 
        $count = array();
@@ -177,7 +177,7 @@ function count_many_users_posts( $users, $post_type = 'post' ) {
                return $count;
 
        $userlist = implode( ',', array_map( 'absint', $users ) );
-       $where = get_posts_by_author_sql( $post_type );
+       $where = get_posts_by_author_sql( $post_type, true, null, $public_only );
 
        $result = $wpdb->get_results( "SELECT post_author, COUNT(*) FROM $wpdb->posts $where AND post_author IN ($userlist) GROUP BY post_author", ARRAY_N );
        foreach ( $result as $row ) {
@@ -192,24 +192,6 @@ function count_many_users_posts( $users, $post_type = 'post' ) {
        return $count;
 }
 
-/**
- * Check that the user login name and password is correct.
- *
- * @since 0.71
- * @todo xmlrpc only. Maybe move to xmlrpc.php.
- *
- * @param string $user_login User name.
- * @param string $user_pass User password.
- * @return bool False if does not authenticate, true if username and password authenticates.
- */
-function user_pass_ok($user_login, $user_pass) {
-       $user = wp_authenticate($user_login, $user_pass);
-       if ( is_wp_error($user) )
-               return false;
-
-       return true;
-}
-
 //
 // User option functions
 //
@@ -255,11 +237,9 @@ function get_user_option( $option, $user = 0, $deprecated = '' ) {
                _deprecated_argument( __FUNCTION__, '3.0' );
 
        if ( empty( $user ) )
-               $user = wp_get_current_user();
-       else
-               $user = new WP_User( $user );
+               $user = get_current_user_id();
 
-       if ( ! $user->exists() )
+       if ( ! $user = get_userdata( $user ) )
                return false;
 
        if ( $user->has_prop( $wpdb->prefix . $option ) ) // Blog specific
@@ -334,6 +314,15 @@ function delete_user_option( $user_id, $option_name, $global = false ) {
  */
 class WP_User_Query {
 
+       /**
+        * Query vars, after parsing
+        *
+        * @since 3.5.0
+        * @access public
+        * @var array
+        */
+       var $query_vars = array();
+
        /**
         * List of found user ids
         *
@@ -402,7 +391,7 @@ class WP_User_Query {
        function prepare_query() {
                global $wpdb;
 
-               $qv = &$this->query_vars;
+               $qv =$this->query_vars;
 
                if ( is_array( $qv['fields'] ) ) {
                        $qv['fields'] = array_unique( $qv['fields'] );
@@ -417,7 +406,7 @@ class WP_User_Query {
                        $this->query_fields = "$wpdb->users.ID";
                }
 
-               if ( $this->query_vars['count_total'] )
+               if ( $qv['count_total'] )
                        $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
 
                $this->query_from = "FROM $wpdb->users";
@@ -549,29 +538,64 @@ class WP_User_Query {
        function query() {
                global $wpdb;
 
-               if ( is_array( $this->query_vars['fields'] ) || 'all' == $this->query_vars['fields'] ) {
+               $qv =& $this->query_vars;
+
+               if ( is_array( $qv['fields'] ) || 'all' == $qv['fields'] ) {
                        $this->results = $wpdb->get_results("SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit");
                } else {
                        $this->results = $wpdb->get_col("SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit");
                }
 
-               if ( $this->query_vars['count_total'] )
+               if ( $qv['count_total'] )
                        $this->total_users = $wpdb->get_var( apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()' ) );
 
                if ( !$this->results )
                        return;
 
-               if ( 'all_with_meta' == $this->query_vars['fields'] ) {
+               if ( 'all_with_meta' == $qv['fields'] ) {
                        cache_users( $this->results );
 
                        $r = array();
                        foreach ( $this->results as $userid )
-                               $r[ $userid ] = new WP_User( $userid, '', $this->query_vars['blog_id'] );
+                               $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] );
 
                        $this->results = $r;
+               } elseif ( 'all' == $qv['fields'] ) {
+                       foreach ( $this->results as $key => $user ) {
+                               $this->results[ $key ] = new WP_User( $user );
+                       }
                }
        }
 
+       /**
+        * Retrieve query variable.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $query_var Query variable key.
+        * @return mixed
+        */
+       function get( $query_var ) {
+               if ( isset( $this->query_vars[$query_var] ) )
+                       return $this->query_vars[$query_var];
+
+               return null;
+       }
+
+       /**
+        * Set query variable.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $query_var Query variable key.
+        * @param mixed $value Query variable value.
+        */
+       function set( $query_var, $value ) {
+               $this->query_vars[$query_var] = $value;
+       }
+
        /*
         * Used internally to generate an SQL string for searching across multiple columns
         *
@@ -676,6 +700,9 @@ function get_blogs_of_user( $user_id, $all = false ) {
                $blogs[ $blog_id ]->path = '';
                $blogs[ $blog_id ]->site_id = 1;
                $blogs[ $blog_id ]->siteurl = get_option('siteurl');
+               $blogs[ $blog_id ]->archived = 0;
+               $blogs[ $blog_id ]->spam = 0;
+               $blogs[ $blog_id ]->deleted = 0;
                return $blogs;
        }
 
@@ -691,6 +718,9 @@ function get_blogs_of_user( $user_id, $all = false ) {
                                'path'        => $blog->path,
                                'site_id'     => $blog->site_id,
                                'siteurl'     => $blog->siteurl,
+                               'archived'    => 0,
+                               'spam'        => 0,
+                               'deleted'     => 0
                        );
                }
                unset( $keys[ $wpdb->base_prefix . 'capabilities' ] );
@@ -717,6 +747,9 @@ function get_blogs_of_user( $user_id, $all = false ) {
                                'path'        => $blog->path,
                                'site_id'     => $blog->site_id,
                                'siteurl'     => $blog->siteurl,
+                               'archived'    => 0,
+                               'spam'        => 0,
+                               'deleted'     => 0
                        );
                }
        }
@@ -920,33 +953,31 @@ function count_users($strategy = 'time') {
  * @global int $user_ID The ID of the user
  * @global string $user_email The email address of the user
  * @global string $user_url The url in the user's profile
- * @global string $user_pass_md5 MD5 of the user's password
  * @global string $user_identity The display name of the user
  *
  * @param int $for_user_id Optional. User ID to set up global data.
  */
 function setup_userdata($for_user_id = '') {
-       global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_pass_md5, $user_identity;
+       global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_identity;
 
        if ( '' == $for_user_id )
-               $user = wp_get_current_user();
-       else
-               $user = new WP_User($for_user_id);
-
-       $userdata   = null;
-       $user_ID    = (int) $user->ID;
-       $user_level = (int) isset($user->user_level) ? $user->user_level : 0;
-
-       if ( ! $user->exists() ) {
-               $user_login = $user_email = $user_url = $user_pass_md5 = $user_identity = '';
+               $for_user_id = get_current_user_id();
+       $user = get_userdata( $for_user_id );
+
+       if ( ! $user ) {
+               $user_ID = 0;
+               $user_level = 0;
+               $userdata = null;
+               $user_login = $user_email = $user_url = $user_identity = '';
                return;
        }
 
+       $user_ID    = (int) $user->ID;
+       $user_level = (int) $user->user_level;
        $userdata   = $user;
        $user_login = $user->user_login;
        $user_email = $user->user_email;
        $user_url   = $user->user_url;
-       $user_pass_md5 = md5( $user->user_pass );
        $user_identity = $user->display_name;
 }
 
@@ -1221,7 +1252,7 @@ function validate_username( $username ) {
  * 'ID' - An integer that will be used for updating an existing user.
  * 'user_pass' - A string that contains the plain text password for the user.
  * 'user_login' - A string that contains the user's username for logging in.
- * 'user_nicename' - A string that contains a nicer looking name for the user.
+ * 'user_nicename' - A string that contains a URL-friendly name for the user.
  *             The default is the user's username.
  * 'user_url' - A string containing the user's URL for the user's web site.
  * 'user_email' - A string containing the user's email address.
@@ -1245,13 +1276,18 @@ function validate_username( $username ) {
  * @uses do_action() Calls 'profile_update' hook when updating giving the user's ID
  * @uses do_action() Calls 'user_register' hook when creating a new user giving the user's ID
  *
- * @param array $userdata An array of user data.
+ * @param mixed $userdata An array of user data or a user object of type stdClass or WP_User.
  * @return int|WP_Error The newly created user's ID or a WP_Error object if the user could not be created.
  */
-function wp_insert_user($userdata) {
+function wp_insert_user( $userdata ) {
        global $wpdb;
 
-       extract($userdata, EXTR_SKIP);
+       if ( is_a( $userdata, 'stdClass' ) )
+               $userdata = get_object_vars( $userdata );
+       elseif ( is_a( $userdata, 'WP_User' ) )
+               $userdata = $userdata->to_array();
+
+       extract( $userdata, EXTR_SKIP );
 
        // Are we updating or creating?
        if ( !empty($ID) ) {
@@ -1274,7 +1310,7 @@ function wp_insert_user($userdata) {
                return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') );
 
        if ( !$update && username_exists( $user_login ) )
-               return new WP_Error('existing_user_login', __('This username is already registered.') );
+               return new WP_Error( 'existing_user_login', __( 'Sorry, that username already exists!' ) );
 
        if ( empty($user_nicename) )
                $user_nicename = sanitize_title( $user_login );
@@ -1289,11 +1325,7 @@ function wp_insert_user($userdata) {
        $user_email = apply_filters('pre_user_email', $user_email);
 
        if ( !$update && ! defined( 'WP_IMPORTING' ) && email_exists($user_email) )
-               return new WP_Error('existing_user_email', __('This email address is already registered.') );
-
-       if ( empty($display_name) )
-               $display_name = $user_login;
-       $display_name = apply_filters('pre_user_display_name', $display_name);
+               return new WP_Error( 'existing_user_email', __( 'Sorry, that email address is already used!' ) );
 
        if ( empty($nickname) )
                $nickname = $user_login;
@@ -1307,6 +1339,21 @@ function wp_insert_user($userdata) {
                $last_name = '';
        $last_name = apply_filters('pre_user_last_name', $last_name);
 
+       if ( empty( $display_name ) ) {
+               if ( $update )
+                       $display_name = $user_login;
+               elseif ( $first_name && $last_name )
+                       /* translators: 1: first name, 2: last name */
+                       $display_name = sprintf( _x( '%1$s %2$s', 'Display name based on first name and last name' ), $first_name, $last_name );
+               elseif ( $first_name )
+                       $display_name = $first_name;
+               elseif ( $last_name )
+                       $display_name = $last_name;
+               else
+                       $display_name = $user_login;
+       }
+       $display_name = apply_filters( 'pre_user_display_name', $display_name );
+
        if ( empty($description) )
                $description = '';
        $description = apply_filters('pre_user_description', $description);
@@ -1392,16 +1439,21 @@ function wp_insert_user($userdata) {
  * @see wp_insert_user() For what fields can be set in $userdata
  * @uses wp_insert_user() Used to update existing user or add new one if user doesn't exist already
  *
- * @param array $userdata An array of user data.
- * @return int The updated user's ID.
+ * @param mixed $userdata An array of user data or a user object of type stdClass or WP_User.
+ * @return int|WP_Error The updated user's ID or a WP_Error object if the user could not be updated.
  */
 function wp_update_user($userdata) {
+       if ( is_a( $userdata, 'stdClass' ) )
+               $userdata = get_object_vars( $userdata );
+       elseif ( is_a( $userdata, 'WP_User' ) )
+               $userdata = $userdata->to_array();
+
        $ID = (int) $userdata['ID'];
 
        // First, get all of the original fields
        $user_obj = get_userdata( $ID );
 
-       $user = get_object_vars( $user_obj->data );
+       $user = $user_obj->to_array();
 
        // Add additional custom fields
        foreach ( _get_additional_user_keys( $user_obj ) as $key ) {
@@ -1461,10 +1513,10 @@ function wp_create_user($username, $password, $email = '') {
 /**
  * Return a list of meta keys that wp_insert_user() is supposed to set.
  *
- * @access private
  * @since 3.3.0
+ * @access private
  *
- * @param object $user WP_User instance
+ * @param object $user WP_User instance.
  * @return array
  */
 function _get_additional_user_keys( $user ) {
@@ -1473,12 +1525,12 @@ function _get_additional_user_keys( $user ) {
 }
 
 /**
- * Set up the default contact methods
+ * Set up the default contact methods.
  *
+ * @since 2.9.0
  * @access private
- * @since
  *
- * @param object $user User data object (optional)
+ * @param object $user User data object (optional).
  * @return array $user_contactmethods Array of contact methods and their labels.
  */
 function _wp_get_user_contactmethods( $user = null ) {
index 7585793df7ea5594ce41b65fce68a83f2cd423d2..23e0e5804f1c610c5631335a9b8e23ebd8f23059 100644 (file)
@@ -116,7 +116,8 @@ function wp_is_mobile() {
                || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
                || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
                || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
-               || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) {
                        $is_mobile = true;
        } else {
                $is_mobile = false;
index c7c9e8c9fdd35fa420696e4c43631bd6726999a4..8e75188646978ec3034339d2abd689b8725f6653 100644 (file)
@@ -4,28 +4,21 @@
  *
  * @global string $wp_version
  */
-$wp_version = '3.4.2';
+$wp_version = '3.5';
 
 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 21707;
+$wp_db_version = 22441;
 
 /**
  * Holds the TinyMCE version
  *
  * @global string $tinymce_version
  */
-$tinymce_version = '349-21274';
-
-/**
- * Holds the cache manifest version
- *
- * @global string $manifest_version
- */
-$manifest_version = '20111113';
+$tinymce_version = '358-23156';
 
 /**
  * Holds the required PHP version
index 765bbffcfce17850a80c550a0ec86e7df801d546..2277fad192f230a6735b193e0a1f8b326906fdf5 100644 (file)
@@ -152,15 +152,15 @@ class WP_Widget {
        }
 
        function _get_display_callback() {
-               return array(&$this, 'display_callback');
+               return array($this, 'display_callback');
        }
 
        function _get_update_callback() {
-               return array(&$this, 'update_callback');
+               return array($this, 'update_callback');
        }
 
        function _get_form_callback() {
-               return array(&$this, 'form_callback');
+               return array($this, 'form_callback');
        }
 
        /** Generate the actual widget content.
@@ -317,7 +317,7 @@ class WP_Widget_Factory {
        var $widgets = array();
 
        function WP_Widget_Factory() {
-               add_action( 'widgets_init', array( &$this, '_register_widgets' ), 100 );
+               add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 );
        }
 
        function register($widget_class) {
index f418745929e79943ab48d10951a2da54b65ad716..391cfa4dc96fd6e027b539f059ac1245be20f18a 100644 (file)
@@ -88,7 +88,7 @@ class wpdb {
        /**
         * Count of rows returned by previous query
         *
-        * @since 1.2.0
+        * @since 0.71
         * @access private
         * @var int
         */
@@ -113,9 +113,9 @@ class wpdb {
        var $insert_id = 0;
 
        /**
-        * Saved result of the last query made
+        * Last query made
         *
-        * @since 1.2.0
+        * @since 0.71
         * @access private
         * @var array
         */
@@ -124,20 +124,29 @@ class wpdb {
        /**
         * Results of the last query made
         *
-        * @since 1.0.0
+        * @since 0.71
         * @access private
         * @var array|null
         */
        var $last_result;
 
+       /**
+        * MySQL result, which is either a resource or boolean.
+        *
+        * @since 0.71
+        * @access protected
+        * @var mixed
+        */
+       protected $result;
+
        /**
         * Saved info on the table column
         *
-        * @since 1.2.0
-        * @access private
+        * @since 0.71
+        * @access protected
         * @var array
         */
-       var $col_info;
+       protected $col_info;
 
        /**
         * Saved queries that were executed
@@ -155,7 +164,7 @@ class wpdb {
         * in a single database. The second reason is for possible
         * security precautions.
         *
-        * @since 0.71
+        * @since 2.5.0
         * @access private
         * @var string
         */
@@ -164,7 +173,7 @@ class wpdb {
        /**
         * Whether the database queries are ready to start executing.
         *
-        * @since 2.5.0
+        * @since 2.3.2
         * @access private
         * @var bool
         */
@@ -445,10 +454,46 @@ class wpdb {
         * Database Username
         *
         * @since 2.9.0
-        * @access private
+        * @access protected
+        * @var string
+        */
+       protected $dbuser;
+
+       /**
+        * Database Password
+        *
+        * @since 3.1.0
+        * @access protected
         * @var string
         */
-       var $dbuser;
+       protected $dbpassword;
+
+       /**
+        * Database Name
+        *
+        * @since 3.1.0
+        * @access protected
+        * @var string
+        */
+       protected $dbname;
+
+       /**
+        * Database Host
+        *
+        * @since 3.1.0
+        * @access protected
+        * @var string
+        */
+       protected $dbhost;
+
+       /**
+        * Database Handle
+        *
+        * @since 0.71
+        * @access protected
+        * @var string
+        */
+       protected $dbh;
 
        /**
         * A textual description of the last query/get_row/get_var call
@@ -489,7 +534,7 @@ class wpdb {
         * @param string $dbhost MySQL database host
         */
        function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {
-               register_shutdown_function( array( &$this, '__destruct' ) );
+               register_shutdown_function( array( $this, '__destruct' ) );
 
                if ( WP_DEBUG )
                        $this->show_errors();
@@ -515,6 +560,57 @@ class wpdb {
                return true;
        }
 
+       /**
+        * PHP5 style magic getter, used to lazy-load expensive data.
+        *
+        * @since 3.5.0
+        *
+        * @param string $name The private member to get, and optionally process
+        * @return mixed The private member
+        */
+       function __get( $name ) {
+               if ( 'col_info' == $name )
+                       $this->load_col_info();
+
+               return $this->$name;
+       }
+
+       /**
+        * Magic function, for backwards compatibility
+        *
+        * @since 3.5.0
+        *
+        * @param string $name  The private member to set
+        * @param mixed  $value The value to set
+        */
+       function __set( $name, $value ) {
+               $this->$name = $value;
+       }
+
+       /**
+        * Magic function, for backwards compatibility
+        *
+        * @since 3.5.0
+        *
+        * @param string $name  The private member to check
+        *
+        * @return bool If the member is set or not
+        */
+       function __isset( $name ) {
+               return isset( $this->$name );
+       }
+
+       /**
+        * Magic function, for backwards compatibility
+        *
+        * @since 3.5.0
+        *
+        * @param string $name  The private member to unset
+        */
+       function __unset( $name ) {
+               unset( $this->$name );
+       }
+
        /**
         * Set $this->charset and $this->collate
         *
@@ -850,7 +946,8 @@ class wpdb {
         * @return void
         */
        function escape_by_ref( &$string ) {
-               $string = $this->_real_escape( $string );
+               if ( ! is_float( $string ) )
+                       $string = $this->_real_escape( $string );
        }
 
        /**
@@ -890,7 +987,7 @@ class wpdb {
         * @return null|false|string Sanitized query string, null if there is no query, false if there is an error and string
         *      if there was something to prepare
         */
-       function prepare( $query = null ) { // ( $query, *$args )
+       function prepare( $query, $args ) {
                if ( is_null( $query ) )
                        return;
 
@@ -901,8 +998,9 @@ class wpdb {
                        $args = $args[0];
                $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
                $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
+               $query = preg_replace( '|(?<!%)%f|' , '%F', $query ); // Force floats to be locale unaware
                $query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
-               array_walk( $args, array( &$this, 'escape_by_ref' ) );
+               array_walk( $args, array( $this, 'escape_by_ref' ) );
                return @vsprintf( $query, $args );
        }
 
@@ -932,11 +1030,7 @@ class wpdb {
                else
                        $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s' ), $str, $this->last_query );
 
-               if ( function_exists( 'error_log' )
-                       && ( $log_file = @ini_get( 'error_log' ) )
-                       && ( 'syslog' == $log_file || @is_writable( $log_file ) )
-                       )
-                       @error_log( $error_str );
+               error_log( $error_str );
 
                // Are we showing errors?
                if ( ! $this->show_errors )
@@ -1023,6 +1117,9 @@ class wpdb {
                $this->last_result = array();
                $this->col_info    = null;
                $this->last_query  = null;
+
+               if ( is_resource( $this->result ) )
+                       mysql_free_result( $this->result );
        }
 
        /**
@@ -1034,10 +1131,13 @@ class wpdb {
 
                $this->is_mysql = true;
 
+               $new_link = defined( 'MYSQL_NEW_LINK' ) ? MYSQL_NEW_LINK : true;
+               $client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0;
+
                if ( WP_DEBUG ) {
-                       $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, true );
+                       $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
                } else {
-                       $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, true );
+                       $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
                }
 
                if ( !$this->dbh ) {
@@ -1104,30 +1204,23 @@ class wpdb {
                        return false;
                }
 
-               if ( preg_match( '/^\s*(create|alter|truncate|drop) /i', $query ) ) {
+               if ( preg_match( '/^\s*(create|alter|truncate|drop)\s/i', $query ) ) {
                        $return_val = $this->result;
-               } elseif ( preg_match( '/^\s*(insert|delete|update|replace) /i', $query ) ) {
+               } elseif ( preg_match( '/^\s*(insert|delete|update|replace)\s/i', $query ) ) {
                        $this->rows_affected = mysql_affected_rows( $this->dbh );
                        // Take note of the insert_id
-                       if ( preg_match( '/^\s*(insert|replace) /i', $query ) ) {
+                       if ( preg_match( '/^\s*(insert|replace)\s/i', $query ) ) {
                                $this->insert_id = mysql_insert_id($this->dbh);
                        }
                        // Return number of rows affected
                        $return_val = $this->rows_affected;
                } else {
-                       $i = 0;
-                       while ( $i < @mysql_num_fields( $this->result ) ) {
-                               $this->col_info[$i] = @mysql_fetch_field( $this->result );
-                               $i++;
-                       }
                        $num_rows = 0;
                        while ( $row = @mysql_fetch_object( $this->result ) ) {
                                $this->last_result[$num_rows] = $row;
                                $num_rows++;
                        }
 
-                       @mysql_free_result( $this->result );
-
                        // Log number of rows the query returned
                        // and return number of rows selected
                        $this->num_rows = $num_rows;
@@ -1455,6 +1548,22 @@ class wpdb {
                return null;
        }
 
+       /**
+        * Load the column metadata from the last query.
+        *
+        * @since 3.5.0
+        *
+        * @access protected
+        */
+       protected function load_col_info() {
+               if ( $this->col_info )
+                       return;
+
+               for ( $i = 0; $i < @mysql_num_fields( $this->result ); $i++ ) {
+                       $this->col_info[ $i ] = @mysql_fetch_field( $this->result, $i );
+               }
+       }
+
        /**
         * Retrieve column metadata from the last query.
         *
@@ -1465,6 +1574,8 @@ class wpdb {
         * @return mixed Column Results
         */
        function get_col_info( $info_type = 'name', $col_offset = -1 ) {
+               $this->load_col_info();
+
                if ( $this->col_info ) {
                        if ( $col_offset == -1 ) {
                                $i = 0;
@@ -1506,7 +1617,7 @@ class wpdb {
        /**
         * Wraps errors in a nice header and footer and dies.
         *
-        * Will not die if wpdb::$show_errors is true
+        * Will not die if wpdb::$show_errors is false.
         *
         * @since 1.5.0
         *
@@ -1547,13 +1658,34 @@ class wpdb {
         * Called when WordPress is generating the table scheme.
         *
         * @since 2.5.0
+        * @deprecated 3.5.0
+        * @deprecated Use wpdb::has_cap( 'collation' )
         *
         * @return bool True if collation is supported, false if version does not
         */
        function supports_collation() {
+               _deprecated_function( __FUNCTION__, '3.5', 'wpdb::has_cap( \'collation\' )' );
                return $this->has_cap( 'collation' );
        }
 
+       /**
+        * The database character collate.
+        *
+        * @since 3.5.0
+        *
+        * @return string The database character collate.
+        */
+       public function get_charset_collate() {
+               $charset_collate = '';
+
+               if ( ! empty( $this->charset ) )
+                       $charset_collate = "DEFAULT CHARACTER SET $this->charset";
+               if ( ! empty( $this->collate ) )
+                       $charset_collate .= " COLLATE $this->collate";
+
+               return $charset_collate;
+       }
+
        /**
         * Determine if a database supports a particular feature
         *
index 052bf133458f5c662fe760e1494ec05f75db88cd..65dd00743de144a0ee50010ec7de3d826019889b 100644 (file)
@@ -422,7 +422,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                $chars2 = count_chars($string2);
 
                // L1-norm of difference vector.
-               $difference = array_sum( array_map( array(&$this, 'difference'), $chars1, $chars2 ) );
+               $difference = array_sum( array_map( array($this, 'difference'), $chars1, $chars2 ) );
 
                // $string1 has zero length? Odd. Give huge penalty by not dividing.
                if ( !$string1 )
index 1372688f3a1cd0734488775b74592fbf1de73e6b..983558abd1db81fc7dca08a4e1e579f0ce98a061 100644 (file)
@@ -57,7 +57,7 @@ if ( file_exists( ABSPATH . 'wp-config.php') ) {
        $die  = __( "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started." ) . '</p>';
        $die .= '<p>' . __( "Need more help? <a href='http://codex.wordpress.org/Editing_wp-config.php'>We got it</a>." ) . '</p>';
        $die .= '<p>' . __( "You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ) . '</p>';
-       $die .= '<p><a href="' . $path . '" class="button">' . __( "Create a Configuration File" ) . '</a>';
+       $die .= '<p><a href="' . $path . '" class="button button-large">' . __( "Create a Configuration File" ) . '</a>';
 
        wp_die( $die, __( 'WordPress &rsaquo; Error' ) );
 }
index 50088db9e691d256cd912d72cf37ea0893946fd2..239e4a9c8329812022d9979a3258d8f7c46f0527 100644 (file)
 require( dirname(__FILE__) . '/wp-load.php' );
 
 // Redirect to https login if forced to use SSL
-if ( force_ssl_admin() && !is_ssl() ) {
+if ( force_ssl_admin() && ! is_ssl() ) {
        if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
-               wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+               wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
                exit();
        } else {
-               wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+               wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
                exit();
        }
 }
@@ -39,7 +39,7 @@ if ( force_ssl_admin() && !is_ssl() ) {
  * @param WP_Error $wp_error Optional. WordPress Error Object
  */
 function login_header($title = 'Log In', $message = '', $wp_error = '') {
-       global $error, $interim_login, $current_site;
+       global $error, $interim_login, $current_site, $action;
 
        // Don't index any of these forms
        add_action( 'login_head', 'wp_no_robots' );
@@ -86,9 +86,15 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') {
        if ( $interim_login )
                $login_header_url = '#';
 
+       $classes = array( 'login-action-' . $action, 'wp-core-ui' );
+       if ( wp_is_mobile() )
+               $classes[] = 'mobile';
+       if ( is_rtl() )
+               $classes[] = 'rtl';
+       $classes = apply_filters( 'login_body_class', $classes, $action );
        ?>
        </head>
-       <body class="login<?php if ( wp_is_mobile() ) echo ' mobile'; ?>">
+       <body class="login <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
        <div id="login">
                <h1><a href="<?php echo esc_url( $login_header_url ); ?>" title="<?php echo esc_attr( $login_header_title ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
        <?php
@@ -309,7 +315,7 @@ function register_new_user( $user_login, $user_email ) {
                $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) );
                $sanitized_user_login = '';
        } elseif ( username_exists( $sanitized_user_login ) ) {
-               $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ) );
+               $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ) );
        }
 
        // Check the e-mail address
@@ -361,13 +367,13 @@ nocache_headers();
 
 header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
 
-if ( defined('RELOCATE') ) { // Move flag is set
+if ( defined( 'RELOCATE' ) && RELOCATE ) { // Move flag is set
        if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) )
                $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
 
-       $schema = is_ssl() ? 'https://' : 'http://';
-       if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') )
-               update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) );
+       $url = dirname( set_url_scheme( 'http://' .  $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ) );
+       if ( $url != get_option( 'siteurl' ) )
+               update_option( 'siteurl', $url );
 }
 
 //Set a cookie now to see if they are supported by the browser.
@@ -390,7 +396,7 @@ case 'postpass' :
        }
 
        // 10 days
-       setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST['post_password'] ) ), time() + 864000, COOKIEPATH );
+       setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST['post_password'] ) ), time() + 10 * DAY_IN_SECONDS, COOKIEPATH );
 
        wp_safe_redirect( wp_get_referer() );
        exit();
@@ -432,11 +438,11 @@ case 'retrievepassword' :
 <form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
        <p>
                <label for="user_login" ><?php _e('Username or E-mail:') ?><br />
-               <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label>
+               <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" /></label>
        </p>
 <?php do_action('lostpassword_form'); ?>
        <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Get New Password'); ?>" tabindex="100" /></p>
+       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Get New Password'); ?>" /></p>
 </form>
 
 <p id="nav">
@@ -459,11 +465,14 @@ case 'rp' :
                exit;
        }
 
-       $errors = '';
+       $errors = new WP_Error();
+
+       if ( isset($_POST['pass1']) && $_POST['pass1'] != $_POST['pass2'] )
+               $errors->add( 'password_reset_mismatch', __( 'The passwords do not match.' ) );
+
+       do_action( 'validate_password_reset', $errors, $user );
 
-       if ( isset($_POST['pass1']) && $_POST['pass1'] != $_POST['pass2'] ) {
-               $errors = new WP_Error('password_reset_mismatch', __('The passwords do not match.'));
-       } elseif ( isset($_POST['pass1']) && !empty($_POST['pass1']) ) {
+       if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && !empty( $_POST['pass1'] ) ) {
                reset_password($user, $_POST['pass1']);
                login_header( __( 'Password Reset' ), '<p class="message reset-pass">' . __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a></p>' );
                login_footer();
@@ -492,7 +501,7 @@ case 'rp' :
        <p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
 
        <br class="clear" />
-       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Reset Password'); ?>" tabindex="100" /></p>
+       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Reset Password'); ?>" /></p>
 </form>
 
 <p id="nav">
@@ -509,7 +518,7 @@ break;
 case 'register' :
        if ( is_multisite() ) {
                // Multisite uses wp-signup.php
-               wp_redirect( apply_filters( 'wp_signup_location', site_url('wp-signup.php') ) );
+               wp_redirect( apply_filters( 'wp_signup_location', network_site_url('wp-signup.php') ) );
                exit;
        }
 
@@ -538,17 +547,17 @@ case 'register' :
 <form name="registerform" id="registerform" action="<?php echo esc_url( site_url('wp-login.php?action=register', 'login_post') ); ?>" method="post">
        <p>
                <label for="user_login"><?php _e('Username') ?><br />
-               <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
+               <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" /></label>
        </p>
        <p>
                <label for="user_email"><?php _e('E-mail') ?><br />
-               <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" tabindex="20" /></label>
+               <input type="text" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" /></label>
        </p>
 <?php do_action('register_form'); ?>
        <p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p>
        <br class="clear" />
        <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Register'); ?>" tabindex="100" /></p>
+       <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Register'); ?>" /></p>
 </form>
 
 <p id="nav">
@@ -671,16 +680,16 @@ default:
 <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
        <p>
                <label for="user_login"><?php _e('Username') ?><br />
-               <input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label>
+               <input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" /></label>
        </p>
        <p>
                <label for="user_pass"><?php _e('Password') ?><br />
-               <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" /></label>
+               <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" /></label>
        </p>
 <?php do_action('login_form'); ?>
-       <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"<?php checked( $rememberme ); ?> /> <?php esc_attr_e('Remember Me'); ?></label></p>
+       <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_attr_e('Remember Me'); ?></label></p>
        <p class="submit">
-               <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" />
+               <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Log In'); ?>" />
 <?php  if ( $interim_login ) { ?>
                <input type="hidden" name="interim-login" value="1" />
 <?php  } else { ?>
index 7fc3967b6a74ff7132f5849ce8942a8522435141..5685b3acf9576c52d1a042c8d96bf3cdad8fea6f 100644 (file)
@@ -30,7 +30,7 @@ if ( $last_checked )
 
 set_transient('mailserver_last_checked', true, WP_MAIL_INTERVAL);
 
-$time_difference = get_option('gmt_offset') * 3600;
+$time_difference = get_option('gmt_offset') * HOUR_IN_SECONDS;
 
 $phone_delim = '::';
 
index cb950184f8426d51101e6e21db3f23c3800110db..65485a841064227188f0325c5c748aed73d33ee1 100644 (file)
@@ -32,16 +32,12 @@ wp_check_php_mysql_versions();
 @ini_set( 'magic_quotes_runtime', 0 );
 @ini_set( 'magic_quotes_sybase',  0 );
 
-// Set default timezone in PHP 5.
-if ( function_exists( 'date_default_timezone_set' ) )
-       date_default_timezone_set( 'UTC' );
+// WordPress calculates offsets from UTC.
+date_default_timezone_set( 'UTC' );
 
 // Turn register_globals off.
 wp_unregister_GLOBALS();
 
-// Ensure these global variables do not exist so they do not interfere with WordPress.
-unset( $wp_filter, $cache_lastcommentmodified );
-
 // Standardize $_SERVER variables across setups.
 wp_fix_server_vars();
 
@@ -138,6 +134,7 @@ require( ABSPATH . WPINC . '/taxonomy.php' );
 require( ABSPATH . WPINC . '/update.php' );
 require( ABSPATH . WPINC . '/canonical.php' );
 require( ABSPATH . WPINC . '/shortcodes.php' );
+require( ABSPATH . WPINC . '/class-wp-embed.php' );
 require( ABSPATH . WPINC . '/media.php' );
 require( ABSPATH . WPINC . '/http.php' );
 require( ABSPATH . WPINC . '/class-http.php' );
@@ -232,7 +229,7 @@ $wp_the_query = new WP_Query();
  * @global object $wp_query
  * @since 1.5.0
  */
-$wp_query =& $wp_the_query;
+$wp_query = $wp_the_query;
 
 /**
  * Holds the WordPress Rewrite object for creating pretty URLs
@@ -255,6 +252,13 @@ $wp = new WP();
  */
 $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
 
+/**
+ * WordPress User Roles
+ * @global object $wp_roles
+ * @since 2.0.0
+ */
+$GLOBALS['wp_roles'] = new WP_Roles();
+
 do_action( 'setup_theme' );
 
 // Define the template related constants.
index 2cd93c82100311e785ec7a94299eba3f511e56a7..7d35d8659fd1e7fc45bd465cb9859f50a380ea1e 100644 (file)
@@ -23,7 +23,7 @@ if ( !is_multisite() ) {
 }
 
 if ( !is_main_site() ) {
-       wp_redirect( network_home_url( 'wp-signup.php' ) );
+       wp_redirect( network_site_url( 'wp-signup.php' ) );
        die();
 }
 
@@ -390,11 +390,7 @@ $current_user = wp_get_current_user();
 if ( $active_signup == 'none' ) {
        _e( 'Registration has been disabled.' );
 } elseif ( $active_signup == 'blog' && !is_user_logged_in() ) {
-       if ( is_ssl() )
-               $proto = 'https://';
-       else
-               $proto = 'http://';
-       $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode($proto . $_SERVER['HTTP_HOST'] . '/wp-signup.php' ));
+       $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode( network_site_url( 'wp-signup.php' ) ) );
        echo sprintf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url );
 } else {
        $stage = isset( $_POST['stage'] ) ?  $_POST['stage'] : 'default';
index 2d3822ca511b8513400c0dc73a122c332d4b7593..1998e4a8b00b834162f794e0f634f029b971cfe1 100644 (file)
@@ -42,7 +42,7 @@ header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
       <api name="Movable Type" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
       <api name="MetaWeblog" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
       <api name="Blogger" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
-      <api name="Atom" blogID="" preferred="false" apiLink="<?php echo site_url('wp-app.php/service', 'rpc') ?>" />
+      <?php do_action( 'xmlrpc_rsd_apis' ); ?>
     </apis>
   </service>
 </rsd>